diff --git a/100/arithmetic_geometric_mean.ml b/100/arithmetic_geometric_mean.ml index d5536040..de8339e7 100644 --- a/100/arithmetic_geometric_mean.ml +++ b/100/arithmetic_geometric_mean.ml @@ -13,7 +13,7 @@ prioritize_real();; let LEMMA_1 = prove (`!x n. x pow (n + 1) - (&n + &1) * x + &n = (x - &1) pow 2 * sum(1..n) (\k. &k * x pow (n - k))`, - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN GEN_TAC THEN INDUCT_TAC THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN GEN_TAC THEN INDUCT_TAC THEN REWRITE_TAC[SUM_CLAUSES_NUMSEG; ARITH_EQ; ADD_CLAUSES] THENL [REAL_ARITH_TAC; REWRITE_TAC[ARITH_RULE `1 <= SUC n`]] THEN SIMP_TAC[ARITH_RULE `k <= n ==> SUC n - k = SUC(n - k)`; SUB_REFL] THEN @@ -57,7 +57,7 @@ let LEMMA_3 = prove ASM_SIMP_TAC[REAL_LE_RDIV_EQ; REAL_POW_LT] THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[REAL_POW_ADD] THEN UNDISCH_TAC `~(b = &0)` THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let AGM = prove (`!n a. 1 <= n /\ (!i. 1 <= i /\ i <= n ==> &0 <= a(i)) diff --git a/100/ballot.ml b/100/ballot.ml index 3138eda4..3051d81a 100644 --- a/100/ballot.ml +++ b/100/ballot.ml @@ -42,7 +42,7 @@ let HAS_SIZE_FUNSPACE = prove ONCE_REWRITE_TAC[TAUT `(a /\ b /\ c) /\ d <=> d /\ a /\ b /\ c`] THEN REWRITE_TAC[PAIR_EQ; EXISTS_PAIR_THM; GSYM CONJ_ASSOC] THEN REWRITE_TAC[RIGHT_EXISTS_AND_THM; UNWIND_THM1] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN X_GEN_TAC `f:A->B` THEN EQ_TAC THENL [STRIP_TAC THEN MAP_EVERY EXISTS_TAC [`(f:A->B) x`; `\u. if u = x then @y. T else (f:A->B) u`] THEN @@ -54,7 +54,7 @@ let HAS_SIZE_FUNSPACE = prove ALL_TAC] THEN MATCH_MP_TAC HAS_SIZE_IMAGE_INJ THEN CONJ_TAC THENL [REWRITE_TAC[FORALL_PAIR_THM; IN_ELIM_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN ONCE_REWRITE_TAC[TAUT `(a /\ b) /\ d <=> d /\ a /\ b`] THEN REWRITE_TAC[PAIR_EQ; EXISTS_PAIR_THM; GSYM CONJ_ASSOC] THEN REWRITE_TAC[RIGHT_EXISTS_AND_THM; UNWIND_THM1] THEN @@ -179,7 +179,7 @@ let COUNTING_LEMMA = prove EXISTS_TAC `CARD {f | f IN (1..(n+1) --> {A,B}) /\ f(n+1) = A /\ P f} + CARD {f | f IN (1..(n+1) --> {A,B}) /\ f(n+1) = B /\ P f}` THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC CARD_UNION_EQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CARD_UNION_EQ THEN REWRITE_TAC[FINITE_COUNTINGS; EXTENSION; IN_INTER; IN_UNION] THEN REWRITE_TAC[IN_ELIM_THM; NOT_IN_EMPTY] THEN MESON_TAC[vote_CASES; vote_DISTINCT]; @@ -252,7 +252,7 @@ let ALL_COUNTINGS_SUC = prove SUBST1_TAC(ARITH_RULE `(a + 1) + (b + 1) = (a + b + 1) + 1`) THEN SUBST1_TAC(ARITH_RULE `(a + 1) + b = a + b + 1`) THEN ABBREV_TAC `n = a + b + 1` THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN GEN_REWRITE_TAC LAND_CONV [COUNTING_LEMMA] THEN REWRITE_TAC[] THEN BINOP_TAC THEN ONCE_REWRITE_TAC[COND_RAND] THEN ONCE_REWRITE_TAC[COND_RATOR] THEN @@ -270,7 +270,7 @@ let VALID_COUNTINGS_SUC = prove SUBST1_TAC(ARITH_RULE `(a + 1) + (b + 1) = (a + b + 1) + 1`) THEN SUBST1_TAC(ARITH_RULE `(a + 1) + b = a + b + 1`) THEN ABBREV_TAC `n = a + b + 1` THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN GEN_REWRITE_TAC LAND_CONV [COUNTING_LEMMA] THEN REWRITE_TAC[] THEN ONCE_REWRITE_TAC[COND_RAND] THEN ONCE_REWRITE_TAC[COND_RATOR] THEN REWRITE_TAC[vote_DISTINCT] THEN @@ -326,7 +326,7 @@ let VALID_COUNTINGS = prove ASM_SIMP_TAC[GSYM REAL_OF_NUM_EQ; GSYM REAL_OF_NUM_MUL; GSYM REAL_OF_NUM_ADD; GSYM REAL_OF_NUM_SUC; GSYM REAL_OF_NUM_SUB; REAL_OF_NUM_LE; LT_NZ; ARITH_RULE `~(a <= b) ==> b <= SUC a /\ SUC b <= a /\ SUC b <= SUC a`] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let BALLOT = prove (`!a b. &(valid_countings a b) = @@ -344,4 +344,4 @@ let BALLOT = prove ASM_SIMP_TAC[GSYM REAL_OF_NUM_EQ; GSYM REAL_OF_NUM_MUL; GSYM REAL_OF_NUM_ADD; GSYM REAL_OF_NUM_SUC; GSYM REAL_OF_NUM_SUB; ARITH_RULE `~(a <= b) ==> SUC b <= SUC a`] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; diff --git a/100/bernoulli.ml b/100/bernoulli.ml index 88c144c9..34385ea7 100644 --- a/100/bernoulli.ml +++ b/100/bernoulli.ml @@ -86,7 +86,7 @@ let DIFF_BERNPOLY = prove ASM_SIMP_TAC[GSYM REAL_OF_NUM_SUB; ARITH_RULE `k <= n ==> k <= n + 1`] THEN UNDISCH_TAC `k <= n:num` THEN REWRITE_TAC[GSYM REAL_OF_NUM_ADD; GSYM REAL_OF_NUM_LE] THEN - ABBREV_TAC `z = x pow (n - k)` THEN CONV_TAC REAL_FIELD);; + ABBREV_TAC `z = x pow (n - k)` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; (* ------------------------------------------------------------------------- *) (* Hence the key stepping recurrence. *) @@ -125,7 +125,7 @@ let RECURRENCE_BERNPOLY = prove REWRITE_TAC[real_pow; REAL_MUL_LZERO; REAL_SUB_RZERO; REAL_MUL_RID] THEN REWRITE_TAC[BERNOULLI; ADD1] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[ARITH; real_pow; REAL_MUL_LID] THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[REAL_ENTIRE; REAL_POW_EQ_0] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[REAL_ENTIRE; REAL_POW_EQ_0] THEN ASM_REWRITE_TAC[ADD_SUB]);; (* ------------------------------------------------------------------------- *) @@ -163,7 +163,7 @@ let SUM_CONV = let BINOM_CONV = let pth = prove (`a * b * x = FACT c ==> x = (FACT c) DIV (a * b)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC DIV_UNIQ THEN EXISTS_TAC `0` THEN CONJ_TAC THENL [POP_ASSUM MP_TAC THEN ARITH_TAC; POP_ASSUM MP_TAC THEN ONCE_REWRITE_TAC[GSYM CONTRAPOS_THM] THEN diff --git a/100/bertrand.ml b/100/bertrand.ml index ac8adce9..b18ce996 100644 --- a/100/bertrand.ml +++ b/100/bertrand.ml @@ -40,7 +40,7 @@ let ISQRT = new_definition let ISQRT_WORKS = prove (`!n. ISQRT(n) EXP 2 <= n /\ n < (ISQRT(n) + 1) EXP 2`, - GEN_TAC THEN REWRITE_TAC[ISQRT] THEN CONV_TAC SELECT_CONV THEN + GEN_TAC THEN REWRITE_TAC[ISQRT] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN SUBGOAL_THEN `(?m. m EXP 2 <= n) /\ (?a. !m. m EXP 2 <= n ==> m <= a)` MP_TAC THENL [ALL_TAC; @@ -97,10 +97,8 @@ let ISQRT_SUC = prove let LN_2_COMPOSITION = prove (`ln(&2) = &7 * ln(&1 + inv(&8)) - &2 * ln(&1 + inv(&24)) - &4 * ln(&1 + inv(&80))`, - CONV_TAC(GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4 - [GSYM LN_POW; GSYM LN_MUL; GSYM LN_DIV; REAL_POW_LT; real_div; - REAL_LT_ADD; REAL_LT_MUL; REAL_LT_INV_EQ; REAL_OF_NUM_LT; ARITH]) THEN - AP_TERM_TAC THEN CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "(GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4 [GSYM LN_POW; GSYM LN_MUL; GSYM LN_DIV; REAL_POW_LT; real_div; REAL_LT_ADD; REAL_LT_MUL; REAL_LT_INV_EQ; REAL_OF_NUM_LT; ARITH])") (GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4 [GSYM LN_POW; GSYM LN_MUL; GSYM LN_DIV; REAL_POW_LT; real_div; REAL_LT_ADD; REAL_LT_MUL; REAL_LT_INV_EQ; REAL_OF_NUM_LT; ARITH]) THEN + AP_TERM_TAC THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; (* ------------------------------------------------------------------------- *) (* Automatically process any ln(n) to allow us to use standard conversions. *) @@ -109,9 +107,9 @@ let LN_2_COMPOSITION = prove let LN_N_CONV = let pth = prove (`x = (&1 + inv(&8)) pow n * (x / (&1 + inv(&8)) pow n)`, - CONV_TAC REAL_RAT_REDUCE_CONV THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_DIV_LMUL THEN - MATCH_MP_TAC REAL_POW_NZ THEN CONV_TAC REAL_RAT_REDUCE_CONV) + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_DIV_LMUL THEN + MATCH_MP_TAC REAL_POW_NZ THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV) and qth = prove (`&0 < x ==> (ln((&1 + inv(&8)) pow n * x / (&1 + inv(&8)) pow n) = @@ -142,9 +140,9 @@ let LN_N_CONV = let LN_N2_CONV = let pth = prove (`x = &2 pow n * (x / &2 pow n)`, - CONV_TAC REAL_RAT_REDUCE_CONV THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_DIV_LMUL THEN - MATCH_MP_TAC REAL_POW_NZ THEN CONV_TAC REAL_RAT_REDUCE_CONV) + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_DIV_LMUL THEN + MATCH_MP_TAC REAL_POW_NZ THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV) and qth = prove (`&0 < x ==> (ln(&2 pow n * x / &2 pow n) = @@ -188,7 +186,7 @@ let FLOOR_DOUBLE_NUM = prove ALL_TAC] THEN REWRITE_TAC[GSYM REAL_ADD_LDISTRIB; GSYM REAL_MUL_ASSOC; real_div] THEN REWRITE_TAC[GSYM real_div; FLOOR_DOUBLE]] THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[GSYM FLOOR_UNIQUE] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[GSYM FLOOR_UNIQUE] THEN MP_TAC(SPEC `&n / &r` FLOOR) THEN SIMP_TAC[] THEN REPEAT STRIP_TAC THENL [MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&n / &r` THEN ASM_REWRITE_TAC[] THEN @@ -249,8 +247,7 @@ let LN_FACT_BOUNDS = prove REWRITE_TAC[ADD_AC]; ALL_TAC] THEN REWRITE_TAC[SUM_ADD] THEN - CONV_TAC(LAND_CONV(BINDER_CONV(RAND_CONV(RAND_CONV(LAND_CONV - (LAND_CONV num_CONV)))))) THEN + (CONV_TAC "(LAND_CONV(BINDER_CONV(RAND_CONV(RAND_CONV(LAND_CONV (LAND_CONV num_CONV))))))") (LAND_CONV(BINDER_CONV(RAND_CONV(RAND_CONV(LAND_CONV (LAND_CONV num_CONV)))))) THEN REWRITE_TAC[ADD1; SUM_REINDEX; SUM_CONST] THEN ONCE_REWRITE_TAC[REAL_ARITH `(a = b + c * &1) <=> (b = a - c)`] THEN DISCH_TAC THEN @@ -336,7 +333,7 @@ let APRIMEDIVISOR_PRIMEPOW = prove let APRIMEDIVISOR = prove (`!n. ~(n = 1) ==> prime(aprimedivisor n) /\ (aprimedivisor n) divides n`, GEN_TAC THEN DISCH_TAC THEN REWRITE_TAC[aprimedivisor] THEN - CONV_TAC SELECT_CONV THEN ASM_SIMP_TAC[PRIME_FACTOR]);; + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_SIMP_TAC[PRIME_FACTOR]);; let BIG_POWER_LEMMA = prove (`!m n. 2 <= m ==> ?k. n <= m EXP k`, @@ -869,7 +866,7 @@ let LN_FACT_DIFF_BOUNDS = prove <= &4 * ln(if n = 0 then &1 else &n) + &3`, REPEAT GEN_TAC THEN ASM_CASES_TAC `n = 0` THENL [ASM_SIMP_TAC[FACT; MULT_CLAUSES; LN_1; DIV_0; ARITH_EQ] THEN - REWRITE_TAC[REAL_MUL_LZERO] THEN CONV_TAC REAL_RAT_REDUCE_CONV; + REWRITE_TAC[REAL_MUL_LZERO] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN MP_TAC(SPECL [`n:num`; `2`] DIVISION) THEN ASM_REWRITE_TAC[ARITH_EQ] THEN MAP_EVERY ABBREV_TAC [`q = n DIV 2`; `r = n MOD 2`] THEN @@ -880,7 +877,7 @@ let LN_FACT_DIFF_BOUNDS = prove ASM_SIMP_TAC[ARITH_RULE `r < 2 ==> ((r = 0) <=> ~(r = 1))`] THEN DISCH_THEN SUBST_ALL_TAC THEN REWRITE_TAC[num_CONV `1`; FACT; MULT_CLAUSES] THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[LN_1] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[LN_1] THEN REWRITE_TAC[REAL_MUL_RZERO; REAL_SUB_LZERO; REAL_SUB_RZERO] THEN REWRITE_TAC[REAL_NEG_0; REAL_SUB_LZERO; REAL_ADD_LID; REAL_MUL_LID] THEN REWRITE_TAC[REAL_ABS_NEG] THEN @@ -1089,13 +1086,13 @@ let PSI_UBOUND_128 = prove let lemma = prove (`a <= b /\ l <= a /\ rest ==> l <= a /\ l <= b /\ rest`, MESON_TAC[REAL_LE_TRANS]) - and tac = time (CONV_TAC(LAND_CONV LN_N2_CONV THENC REALCALC_REL_CONV)) in + and tac = time ((CONV_TAC "(LAND_CONV LN_N2_CONV THENC REALCALC_REL_CONV)") (LAND_CONV LN_N2_CONV THENC REALCALC_REL_CONV)) in REWRITE_TAC[ARITH_RULE `n <= 128 <=> n < 129`] THEN - CONV_TAC EXPAND_CASES_CONV THEN REWRITE_TAC(PSI_LIST_300) THEN - REWRITE_TAC[LN_1] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "EXPAND_CASES_CONV") EXPAND_CASES_CONV THEN REWRITE_TAC(PSI_LIST_300) THEN + REWRITE_TAC[LN_1] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REPEAT ((MATCH_MP_TAC lemma THEN - CONV_TAC(LAND_CONV REAL_RAT_REDUCE_CONV) THEN + (CONV_TAC "(LAND_CONV REAL_RAT_REDUCE_CONV)") (LAND_CONV REAL_RAT_REDUCE_CONV) THEN GEN_REWRITE_TAC I [TAUT `T /\ a <=> a`]) ORELSE (CONJ_TAC THENL [tac THEN NO_TAC; ALL_TAC]) @@ -1110,7 +1107,7 @@ let PSI_UBOUND_128_LOG = prove GEN_TAC THEN DISCH_THEN(MP_TAC o MATCH_MP PSI_UBOUND_128) THEN MATCH_MP_TAC(REAL_ARITH `a <= b ==> x <= a ==> x <= b`) THEN MATCH_MP_TAC REAL_LE_RMUL THEN REWRITE_TAC[REAL_POS] THEN - CONV_TAC(ONCE_DEPTH_CONV LN_N2_CONV THENC REALCALC_REL_CONV));; + (CONV_TAC "(ONCE_DEPTH_CONV LN_N2_CONV THENC REALCALC_REL_CONV)") (ONCE_DEPTH_CONV LN_N2_CONV THENC REALCALC_REL_CONV));; (* ------------------------------------------------------------------------- *) (* Useful "overpowering" lemma. *) @@ -1159,8 +1156,8 @@ let DOUBLE_CASES_RULE th = [FIRST_ASSUM(MP_TAC o MATCH_MP th) THEN MATCH_MP_TAC(REAL_ARITH `a <= b ==> x <= a ==> x <= b`) THEN MATCH_MP_TAC REAL_LE_RMUL THEN REWRITE_TAC[REAL_POS] THEN - MATCH_MP_TAC REAL_LE_RMUL THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN - MATCH_MP_TAC LN_POS THEN CONV_TAC REAL_RAT_REDUCE_CONV; + MATCH_MP_TAC REAL_LE_RMUL THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC LN_POS THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN MP_TAC(SPEC `n:num` PSI_BOUNDS_INDUCT) THEN SUBGOAL_THEN `~(n = 0)` (fun th -> REWRITE_TAC[th]) THENL @@ -1181,8 +1178,8 @@ let DOUBLE_CASES_RULE th = EXISTS_TAC(mk_comb(rator(lhand w),`&n / &2`))) THEN CONJ_TAC THENL [MATCH_MP_TAC REAL_LE_LMUL THEN CONJ_TAC THENL - [MATCH_MP_TAC REAL_LE_MUL THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN - MATCH_MP_TAC LN_POS THEN CONV_TAC REAL_RAT_REDUCE_CONV; + [MATCH_MP_TAC REAL_LE_MUL THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC LN_POS THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN SIMP_TAC[REAL_LE_RDIV_EQ; REAL_OF_NUM_LT; ARITH] THEN REWRITE_TAC[REAL_OF_NUM_MUL; REAL_OF_NUM_LE] THEN @@ -1192,7 +1189,7 @@ let DOUBLE_CASES_RULE th = MATCH_MP_TAC(REAL_ARITH `logtm <= ((c - a * b) * l2) * n ==> (a * l2) * n * b <= (c * l2) * n - logtm`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SUBST1_TAC(REAL_ARITH `&n = &1 + (&n - &1)`) THEN FIRST_X_ASSUM(MP_TAC o MATCH_MP (ARITH_RULE `~(n <= b) ==> b + 1 <= n`)) THEN @@ -1200,7 +1197,7 @@ let DOUBLE_CASES_RULE th = DISCH_THEN(MP_TAC o MATCH_MP (REAL_ARITH `a <= n ==> a - &1 <= n - &1`)) THEN ABBREV_TAC `x = &n - &1` THEN - CONV_TAC(LAND_CONV NUM_REDUCE_CONV THENC REAL_RAT_REDUCE_CONV) THEN + (CONV_TAC "(LAND_CONV NUM_REDUCE_CONV THENC REAL_RAT_REDUCE_CONV)") (LAND_CONV NUM_REDUCE_CONV THENC REAL_RAT_REDUCE_CONV) THEN SPEC_TAC(`x:real`,`x:real`) THEN POP_ASSUM_LIST(K ALL_TAC) THEN MATCH_MP_TAC OVERPOWER_LEMMA THEN W(fun (asl,w) -> @@ -1214,9 +1211,9 @@ let DOUBLE_CASES_RULE th = let tm = mk_abs(`x:real`,rand(rator(rand(body(rand(lhand w)))))) in DISCH_TAC THEN EXISTS_TAC tm) THEN CONJ_TAC THENL - [CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_sub] THEN - CONV_TAC(ONCE_DEPTH_CONV LN_N2_CONV) THEN - CONV_TAC REALCALC_REL_CONV; + [(CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_sub] THEN + (CONV_TAC "(ONCE_DEPTH_CONV LN_N2_CONV)") (ONCE_DEPTH_CONV LN_N2_CONV) THEN + (CONV_TAC "REALCALC_REL_CONV") REALCALC_REL_CONV; ALL_TAC] THEN REWRITE_TAC[] THEN CONJ_TAC THENL [GEN_TAC THEN @@ -1229,14 +1226,14 @@ let DOUBLE_CASES_RULE th = `a <= x ==> inv(&1 + x) <= inv(&1 + a) /\ inv(&1 + a) <= b ==> inv(&1 + x) <= b`)) THEN CONJ_TAC THENL - [MATCH_MP_TAC REAL_LE_INV2 THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [MATCH_MP_TAC REAL_LE_INV2 THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN POP_ASSUM MP_TAC THEN REAL_ARITH_TAC; ALL_TAC] THEN SIMP_TAC[REAL_LE_RDIV_EQ; REAL_LT_DIV; REAL_OF_NUM_LT; ARITH] THEN GEN_REWRITE_TAC RAND_CONV [REAL_MUL_SYM] THEN SIMP_TAC[GSYM REAL_LE_LDIV_EQ; REAL_LT_DIV; REAL_OF_NUM_LT; ARITH] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN - CONV_TAC(ONCE_DEPTH_CONV LN_N2_CONV) THEN CONV_TAC REALCALC_REL_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "(ONCE_DEPTH_CONV LN_N2_CONV)") (ONCE_DEPTH_CONV LN_N2_CONV) THEN (CONV_TAC "REALCALC_REL_CONV") REALCALC_REL_CONV);; (* ------------------------------------------------------------------------- *) (* Bring it to the self-sustaining point. *) @@ -1276,7 +1273,7 @@ let PSI_BOUNDS_SUSTAINED_INDUCT = prove CONJ_TAC THENL [MATCH_MP_TAC REAL_LE_LMUL THEN CONJ_TAC THENL [MATCH_MP_TAC REAL_LE_MUL THEN ASM_REWRITE_TAC[] THEN - MATCH_MP_TAC LN_POS THEN CONV_TAC REAL_RAT_REDUCE_CONV; + MATCH_MP_TAC LN_POS THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN SIMP_TAC[REAL_LE_RDIV_EQ; REAL_OF_NUM_LT; ARITH] THEN REWRITE_TAC[REAL_OF_NUM_MUL; REAL_OF_NUM_LE] THEN @@ -1380,9 +1377,9 @@ let PSI_UBOUND_LOG = prove MP_TAC PSI_UBOUND_1024_LOG THEN SUBST1_TAC(SYM(NUM_REDUCE_CONV `2 EXP 10`)) THEN DISCH_THEN(MATCH_MP_TAC o MATCH_MP PSI_BOUNDS_SUSTAINED) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN - CONV_TAC(ONCE_DEPTH_CONV LN_N2_CONV) THEN - CONJ_TAC THEN CONV_TAC REALCALC_REL_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "(ONCE_DEPTH_CONV LN_N2_CONV)") (ONCE_DEPTH_CONV LN_N2_CONV) THEN + CONJ_TAC THEN (CONV_TAC "REALCALC_REL_CONV") REALCALC_REL_CONV);; let PSI_UBOUND_3_2 = prove (`!n. psi(n) <= &3 / &2 * &n`, @@ -1390,8 +1387,8 @@ let PSI_UBOUND_3_2 = prove EXISTS_TAC `(&4407 / &2048 * ln (&2)) * &n` THEN REWRITE_TAC[PSI_UBOUND_LOG] THEN MATCH_MP_TAC REAL_LE_RMUL THEN REWRITE_TAC[REAL_POS] THEN - CONV_TAC(ONCE_DEPTH_CONV LN_N2_CONV) THEN - CONV_TAC REALCALC_REL_CONV);; + (CONV_TAC "(ONCE_DEPTH_CONV LN_N2_CONV)") (ONCE_DEPTH_CONV LN_N2_CONV) THEN + (CONV_TAC "REALCALC_REL_CONV") REALCALC_REL_CONV);; (* ------------------------------------------------------------------------- *) (* Now get a lower bound. *) @@ -1402,15 +1399,15 @@ let PSI_LBOUND_3_5 = prove let lemma = prove (`a <= b /\ b <= l /\ rest ==> a <= l /\ b <= l /\ rest`, MESON_TAC[REAL_LE_TRANS]) - and tac = time (CONV_TAC(RAND_CONV LN_N2_CONV THENC REALCALC_REL_CONV)) in + and tac = time ((CONV_TAC "(RAND_CONV LN_N2_CONV THENC REALCALC_REL_CONV)") (RAND_CONV LN_N2_CONV THENC REALCALC_REL_CONV)) in GEN_TAC THEN ASM_CASES_TAC `n < 300` THENL [POP_ASSUM MP_TAC THEN SPEC_TAC(`n:num`,`n:num`) THEN - CONV_TAC EXPAND_CASES_CONV THEN + (CONV_TAC "EXPAND_CASES_CONV") EXPAND_CASES_CONV THEN REWRITE_TAC(PSI_LIST_300) THEN - REWRITE_TAC[LN_1; ARITH] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[LN_1; ARITH] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REPEAT ((MATCH_MP_TAC lemma THEN - CONV_TAC(LAND_CONV REAL_RAT_REDUCE_CONV) THEN + (CONV_TAC "(LAND_CONV REAL_RAT_REDUCE_CONV)") (LAND_CONV REAL_RAT_REDUCE_CONV) THEN GEN_REWRITE_TAC I [TAUT `T /\ a <=> a`]) ORELSE (CONJ_TAC THENL [tac THEN NO_TAC; ALL_TAC]) @@ -1426,8 +1423,8 @@ let PSI_LBOUND_3_5 = prove CONJ_TAC THENL [ALL_TAC; MATCH_MP_TAC REAL_LE_RMUL THEN REWRITE_TAC[REAL_POS] THEN - REWRITE_TAC[real_sub] THEN CONV_TAC(ONCE_DEPTH_CONV LN_N2_CONV) THEN - CONV_TAC REALCALC_REL_CONV] THEN + REWRITE_TAC[real_sub] THEN (CONV_TAC "(ONCE_DEPTH_CONV LN_N2_CONV)") (ONCE_DEPTH_CONV LN_N2_CONV) THEN + (CONV_TAC "REALCALC_REL_CONV") REALCALC_REL_CONV] THEN ABBREV_TAC `x = &n - &1` THEN SUBGOAL_THEN `&n = &1 + x` SUBST1_TAC THENL [EXPAND_TAC "x" THEN REAL_ARITH_TAC; ALL_TAC] THEN @@ -1449,9 +1446,9 @@ let PSI_LBOUND_3_5 = prove let tm = mk_abs(`x:real`,rand(rator(rand(body(rand(lhand w)))))) in DISCH_TAC THEN EXISTS_TAC tm) THEN CONJ_TAC THENL - [CONV_TAC REAL_RAT_REDUCE_CONV THEN - CONV_TAC(ONCE_DEPTH_CONV LN_N2_CONV) THEN - CONV_TAC REALCALC_REL_CONV; + [(CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "(ONCE_DEPTH_CONV LN_N2_CONV)") (ONCE_DEPTH_CONV LN_N2_CONV) THEN + (CONV_TAC "REALCALC_REL_CONV") REALCALC_REL_CONV; ALL_TAC] THEN REWRITE_TAC[] THEN CONJ_TAC THENL [GEN_TAC THEN @@ -1463,7 +1460,7 @@ let PSI_LBOUND_3_5 = prove SIMP_TAC[GSYM REAL_LE_RDIV_EQ; REAL_OF_NUM_LT; ARITH] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `inv(&1 + &299)` THEN CONJ_TAC THENL - [ALL_TAC; CONV_TAC REAL_RAT_REDUCE_CONV] THEN + [ALL_TAC; (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN MATCH_MP_TAC REAL_LE_INV2 THEN POP_ASSUM MP_TAC THEN REAL_ARITH_TAC);; @@ -1893,13 +1890,13 @@ let PSI_UBOUND_30 = prove let lemma = prove (`a <= b /\ l <= a /\ rest ==> l <= a /\ l <= b /\ rest`, MESON_TAC[REAL_LE_TRANS]) - and tac = time (CONV_TAC(LAND_CONV LN_N2_CONV THENC REALCALC_REL_CONV)) in + and tac = time ((CONV_TAC "(LAND_CONV LN_N2_CONV THENC REALCALC_REL_CONV)") (LAND_CONV LN_N2_CONV THENC REALCALC_REL_CONV)) in REWRITE_TAC[ARITH_RULE `n <= 30 <=> n < 31`] THEN - CONV_TAC EXPAND_CASES_CONV THEN REWRITE_TAC(PSI_LIST_300) THEN - REWRITE_TAC[LN_1] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "EXPAND_CASES_CONV") EXPAND_CASES_CONV THEN REWRITE_TAC(PSI_LIST_300) THEN + REWRITE_TAC[LN_1] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REPEAT ((MATCH_MP_TAC lemma THEN - CONV_TAC(LAND_CONV REAL_RAT_REDUCE_CONV) THEN + (CONV_TAC "(LAND_CONV REAL_RAT_REDUCE_CONV)") (LAND_CONV REAL_RAT_REDUCE_CONV) THEN GEN_REWRITE_TAC I [TAUT `T /\ a <=> a`]) ORELSE (CONJ_TAC THENL [tac THEN NO_TAC; ALL_TAC]) @@ -1918,7 +1915,7 @@ let THETA_LBOUND_1_2 = prove let lemma = prove (`a <= b /\ b <= l /\ rest ==> a <= l /\ b <= l /\ rest`, MESON_TAC[REAL_LE_TRANS]) - and tac = time (CONV_TAC(RAND_CONV LN_N2_CONV THENC REALCALC_REL_CONV)) in + and tac = time ((CONV_TAC "(RAND_CONV LN_N2_CONV THENC REALCALC_REL_CONV)") (RAND_CONV LN_N2_CONV THENC REALCALC_REL_CONV)) in REPEAT STRIP_TAC THEN ASM_CASES_TAC `n >= 900` THENL [MP_TAC(CONJUNCT2(SPEC `n:num` PSI_THETA)) THEN MP_TAC(SPEC `n:num` PSI_LBOUND_3_5) THEN @@ -1928,21 +1925,21 @@ let THETA_LBOUND_1_2 = prove ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN SIMP_TAC[GSYM REAL_LE_RDIV_EQ; REAL_OF_NUM_LT; ARITH] THEN REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&3 / &2 * &(ISQRT n)` THEN REWRITE_TAC[PSI_UBOUND_3_2] THEN GEN_REWRITE_TAC LAND_CONV [REAL_MUL_SYM] THEN SIMP_TAC[GSYM REAL_LE_RDIV_EQ; REAL_LT_DIV; REAL_OF_NUM_LT; ARITH] THEN REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SUBGOAL_THEN `&(ISQRT n) pow 2 <= (&n * &1 / &30) pow 2` MP_TAC THENL [ALL_TAC; ONCE_REWRITE_TAC[GSYM CONTRAPOS_THM] THEN REWRITE_TAC[REAL_NOT_LE] THEN DISCH_TAC THEN MATCH_MP_TAC REAL_POW_LT2 THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NUM_REDUCE_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN MATCH_MP_TAC REAL_LE_MUL THEN REWRITE_TAC[REAL_POS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&n` THEN CONJ_TAC THENL [REWRITE_TAC[REAL_OF_NUM_POW; REAL_OF_NUM_LE; ISQRT_WORKS]; ALL_TAC] THEN @@ -1952,19 +1949,19 @@ let THETA_LBOUND_1_2 = prove MATCH_MP_TAC REAL_LE_LMUL THEN REWRITE_TAC[REAL_POS] THEN SIMP_TAC[REAL_MUL_ASSOC; GSYM REAL_LE_LDIV_EQ; REAL_LT_DIV; REAL_OF_NUM_LT; ARITH] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_OF_NUM_LE] THEN UNDISCH_TAC `n >= 900` THEN ARITH_TAC; ALL_TAC] THEN ASM_CASES_TAC `n < 413` THENL [UNDISCH_TAC `5 <= n` THEN UNDISCH_TAC `n < 413` THEN SPEC_TAC(`n:num`,`n:num`) THEN POP_ASSUM_LIST(K ALL_TAC) THEN - CONV_TAC EXPAND_CASES_CONV THEN CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "EXPAND_CASES_CONV") EXPAND_CASES_CONV THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC(THETA_LIST 412) THEN - REWRITE_TAC[LN_1; ARITH] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[LN_1; ARITH] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REPEAT ((MATCH_MP_TAC lemma THEN - CONV_TAC(LAND_CONV REAL_RAT_REDUCE_CONV) THEN + (CONV_TAC "(LAND_CONV REAL_RAT_REDUCE_CONV)") (LAND_CONV REAL_RAT_REDUCE_CONV) THEN GEN_REWRITE_TAC I [TAUT `T /\ a <=> a`]) ORELSE (CONJ_TAC THENL [tac THEN NO_TAC; ALL_TAC]) @@ -1978,7 +1975,7 @@ let THETA_LBOUND_1_2 = prove ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN SIMP_TAC[GSYM REAL_LE_RDIV_EQ; REAL_OF_NUM_LT; ARITH] THEN REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&65 / &64 * &(ISQRT n)` THEN CONJ_TAC THENL [MATCH_MP_TAC PSI_UBOUND_30 THEN @@ -1991,14 +1988,14 @@ let THETA_LBOUND_1_2 = prove GEN_REWRITE_TAC LAND_CONV [REAL_MUL_SYM] THEN SIMP_TAC[GSYM REAL_LE_RDIV_EQ; REAL_LT_DIV; REAL_OF_NUM_LT; ARITH] THEN REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SUBGOAL_THEN `&(ISQRT n) pow 2 <= (&n * &16 / &325) pow 2` MP_TAC THENL [ALL_TAC; ONCE_REWRITE_TAC[GSYM CONTRAPOS_THM] THEN REWRITE_TAC[REAL_NOT_LE] THEN DISCH_TAC THEN MATCH_MP_TAC REAL_POW_LT2 THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NUM_REDUCE_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN MATCH_MP_TAC REAL_LE_MUL THEN REWRITE_TAC[REAL_POS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&n` THEN CONJ_TAC THENL [REWRITE_TAC[REAL_OF_NUM_POW; REAL_OF_NUM_LE; ISQRT_WORKS]; ALL_TAC] THEN @@ -2006,12 +2003,12 @@ let THETA_LBOUND_1_2 = prove `(a * b) * (a * b) = a * a * b * b`] THEN GEN_REWRITE_TAC LAND_CONV [GSYM REAL_MUL_RID] THEN MATCH_MP_TAC REAL_LE_LMUL THEN REWRITE_TAC[REAL_POS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SIMP_TAC[GSYM REAL_LE_LDIV_EQ; REAL_LT_DIV; REAL_OF_NUM_LT; ARITH] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&413` THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_OF_NUM_LE] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_OF_NUM_LE] THEN UNDISCH_TAC `~(n < 413)` THEN ARITH_TAC);; (* ========================================================================= *) @@ -2131,8 +2128,8 @@ let SUM_EXPAND_LEMMA = prove REWRITE_TAC[GSYM ADD1; ARITH_RULE `1 + n = SUC n`] THEN SIMP_TAC[DIV_REFL; NOT_SUC; sum; SUM_1] THEN REWRITE_TAC[REAL_ADD_SUB; mangoldt] THEN - CONV_TAC(ONCE_DEPTH_CONV PRIMEPOW_CONV) THEN - REWRITE_TAC[COND_ID] THEN CONV_TAC SYM_CONV THEN + (CONV_TAC "(ONCE_DEPTH_CONV PRIMEPOW_CONV)") (ONCE_DEPTH_CONV PRIMEPOW_CONV) THEN + REWRITE_TAC[COND_ID] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[REAL_ENTIRE] THEN DISJ2_TAC THEN REWRITE_TAC[ARITH_RULE `1 + n = SUC n`] THEN SIMP_TAC[DIV_REFL; NOT_SUC] THEN REWRITE_TAC(LN_1::PSI_LIST 1); @@ -2354,7 +2351,7 @@ let FACT_PSI_BOUND_2_3 = prove MP_TAC(SPECL [`n:num`; `2`] FACT_PSI_BOUND_EVEN) THEN MP_TAC(SPECL [`n:num`; `3`] FACT_PSI_BOUND_ODD) THEN REWRITE_TAC[ARITH] THEN - CONV_TAC(ONCE_DEPTH_CONV REAL_SUM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV REAL_SUM_CONV)") (ONCE_DEPTH_CONV REAL_SUM_CONV) THEN REWRITE_TAC[ARITH; REAL_ADD_LID; DIV_1] THEN REWRITE_TAC[REAL_POW_NEG; ARITH; REAL_POW_ONE; REAL_MUL_LID] THEN REAL_ARITH_TAC);; @@ -2374,13 +2371,13 @@ let PSI_DOUBLE_LEMMA = prove MATCH_MP_TAC(REAL_ARITH `a <= b ==> x <= a ==> x <= b`) THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&3 / &2 * &n / &3` THEN CONJ_TAC THENL - [MATCH_MP_TAC REAL_LE_LMUL THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [MATCH_MP_TAC REAL_LE_LMUL THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SIMP_TAC[REAL_LE_RDIV_EQ; REAL_OF_NUM_LT; ARITH] THEN REWRITE_TAC[REAL_OF_NUM_MUL; REAL_OF_NUM_LE] THEN MP_TAC(SPECL [`n:num`; `3`] DIVISION) THEN ARITH_TAC; ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_LE_REFL]]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_LE_REFL]]; ALL_TAC] THEN MP_TAC(SPEC `n:num` LN_FACT_DIFF_BOUNDS) THEN MATCH_MP_TAC(REAL_ARITH @@ -2391,8 +2388,8 @@ let PSI_DOUBLE_LEMMA = prove EXISTS_TAC `&n * &1 / &38` THEN CONJ_TAC THENL [ALL_TAC; MATCH_MP_TAC REAL_LE_LMUL THEN REWRITE_TAC[REAL_POS] THEN - SIMP_TAC[REAL_LE_SUB_LADD] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN - CONV_TAC(RAND_CONV LN_N2_CONV) THEN CONV_TAC REALCALC_REL_CONV] THEN + SIMP_TAC[REAL_LE_SUB_LADD] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "(RAND_CONV LN_N2_CONV)") (RAND_CONV LN_N2_CONV) THEN (CONV_TAC "REALCALC_REL_CONV") REALCALC_REL_CONV] THEN SUBST1_TAC(REAL_ARITH `&n = &1 + (&n - &1)`) THEN FIRST_X_ASSUM(MP_TAC o MATCH_MP (ARITH_RULE `n >= b ==> b <= n:num`)) THEN @@ -2400,7 +2397,7 @@ let PSI_DOUBLE_LEMMA = prove DISCH_THEN(MP_TAC o MATCH_MP (REAL_ARITH `a <= n ==> a - &1 <= n - &1`)) THEN ABBREV_TAC `x = &n - &1` THEN - CONV_TAC(LAND_CONV NUM_REDUCE_CONV THENC REAL_RAT_REDUCE_CONV) THEN + (CONV_TAC "(LAND_CONV NUM_REDUCE_CONV THENC REAL_RAT_REDUCE_CONV)") (LAND_CONV NUM_REDUCE_CONV THENC REAL_RAT_REDUCE_CONV) THEN SPEC_TAC(`x:real`,`x:real`) THEN POP_ASSUM_LIST(K ALL_TAC) THEN MATCH_MP_TAC OVERPOWER_LEMMA THEN W(fun (asl,w) -> @@ -2414,9 +2411,9 @@ let PSI_DOUBLE_LEMMA = prove let tm = mk_abs(`x:real`,rand(rator(rand(body(rand(lhand w)))))) in DISCH_TAC THEN EXISTS_TAC tm) THEN CONJ_TAC THENL - [CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_sub] THEN - CONV_TAC(ONCE_DEPTH_CONV LN_N2_CONV) THEN - CONV_TAC REALCALC_REL_CONV; + [(CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_sub] THEN + (CONV_TAC "(ONCE_DEPTH_CONV LN_N2_CONV)") (ONCE_DEPTH_CONV LN_N2_CONV) THEN + (CONV_TAC "REALCALC_REL_CONV") REALCALC_REL_CONV; ALL_TAC] THEN REWRITE_TAC[] THEN CONJ_TAC THENL [GEN_TAC THEN @@ -2429,10 +2426,10 @@ let PSI_DOUBLE_LEMMA = prove `a <= x ==> inv(&1 + x) <= inv(&1 + a) /\ inv(&1 + a) <= b ==> inv(&1 + x) <= b`)) THEN CONJ_TAC THENL - [MATCH_MP_TAC REAL_LE_INV2 THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [MATCH_MP_TAC REAL_LE_INV2 THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN POP_ASSUM MP_TAC THEN REAL_ARITH_TAC; ALL_TAC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; (* ------------------------------------------------------------------------- *) (* Hence show that theta changes (could get a lower bound like n/10). *) @@ -2456,7 +2453,7 @@ let THETA_DOUBLE_LEMMA = prove GEN_REWRITE_TAC LAND_CONV [REAL_MUL_SYM] THEN SIMP_TAC[GSYM REAL_LT_RDIV_EQ; REAL_LT_DIV; REAL_OF_NUM_LT; ARITH] THEN REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN SIMP_TAC[GSYM real_div; REAL_LT_RDIV_EQ; REAL_OF_NUM_LT; ARITH] THEN REWRITE_TAC[REAL_OF_NUM_MUL; REAL_OF_NUM_LT] THEN @@ -2612,8 +2609,8 @@ let PII_LBOUND = prove FIRST_X_ASSUM(REPEAT_TCL DISJ_CASES_THEN ASSUME_TAC o MATCH_MP (ARITH_RULE `3 <= n ==> (n = 3) \/ (n = 4) \/ 5 <= n`)) THEN ASM_REWRITE_TAC(PII_LIST 4) THENL - [CONV_TAC(ONCE_DEPTH_CONV LN_N2_CONV) THEN CONV_TAC REALCALC_REL_CONV; - CONV_TAC(ONCE_DEPTH_CONV LN_N2_CONV) THEN CONV_TAC REALCALC_REL_CONV; + [(CONV_TAC "(ONCE_DEPTH_CONV LN_N2_CONV)") (ONCE_DEPTH_CONV LN_N2_CONV) THEN (CONV_TAC "REALCALC_REL_CONV") REALCALC_REL_CONV; + (CONV_TAC "(ONCE_DEPTH_CONV LN_N2_CONV)") (ONCE_DEPTH_CONV LN_N2_CONV) THEN (CONV_TAC "REALCALC_REL_CONV") REALCALC_REL_CONV; ALL_TAC] THEN FIRST_ASSUM(MP_TAC o MATCH_MP THETA_LBOUND_1_2) THEN MATCH_MP_TAC(REAL_ARITH `x <= y ==> a <= x ==> a <= y`) THEN @@ -2632,12 +2629,12 @@ let PII_LBOUND = prove let PII_UBOUND_CASES_50 = prove (`!n. n < 50 ==> 3 <= n ==> ln(&n) * pii(n) <= &5 * &n`, - let tac = CONV_TAC(ONCE_DEPTH_CONV LN_N2_CONV THENC REALCALC_REL_CONV) in - CONV_TAC EXPAND_CASES_CONV THEN CONV_TAC NUM_REDUCE_CONV THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + let tac = (CONV_TAC "(ONCE_DEPTH_CONV LN_N2_CONV THENC REALCALC_REL_CONV)") (ONCE_DEPTH_CONV LN_N2_CONV THENC REALCALC_REL_CONV) in + (CONV_TAC "EXPAND_CASES_CONV") EXPAND_CASES_CONV THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC(PII_LIST 49) THEN SIMP_TAC[GSYM REAL_LE_RDIV_EQ; REAL_OF_NUM_LT; ARITH] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REPEAT(CONJ_TAC THENL [tac THEN NO_TAC; ALL_TAC]) THEN tac);; (* ------------------------------------------------------------------------- *) @@ -2659,7 +2656,7 @@ let PII_MONO = prove REPEAT STRIP_TAC THEN REWRITE_TAC[REAL_LE_ADDR] THEN MATCH_MP_TAC SUM_POS_GEN THEN GEN_TAC THEN REWRITE_TAC[] THEN COND_CASES_TAC THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let PII_POS = prove (`!n. &0 <= pii(n)`, @@ -2677,7 +2674,7 @@ let PII_CHANGE = prove MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&0` THEN CONJ_TAC THENL [ALL_TAC; MATCH_MP_TAC REAL_LE_MUL THEN REWRITE_TAC[REAL_POS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN MATCH_MP_TAC(REAL_ARITH `&0 <= a * (c - b) ==> a * (b - c) <= &0`) THEN MATCH_MP_TAC REAL_LE_MUL THEN ASM_SIMP_TAC[LN_POS; REAL_OF_NUM_LE; ARITH_RULE `1 <= n <=> ~(n = 0)`] THEN @@ -2718,7 +2715,7 @@ let PII_ISQRT_INDUCT = prove ASM_REWRITE_TAC[] THEN MATCH_MP_TAC(REAL_ARITH `a * p <= ls * p ==> ls * (p - ps) <= an ==> a * p <= an + ls * ps`) THEN MATCH_MP_TAC REAL_LE_RMUL THEN REWRITE_TAC[PII_POS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN SIMP_TAC[GSYM REAL_LE_RDIV_EQ; REAL_LT_DIV; REAL_OF_NUM_LT; ARITH] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `ln((&(ISQRT n) + &1) pow 2)` THEN CONJ_TAC THENL @@ -2733,7 +2730,7 @@ let PII_ISQRT_INDUCT = prove GEN_REWRITE_TAC LAND_CONV [REAL_MUL_SYM] THEN SIMP_TAC[GSYM REAL_LE_RDIV_EQ; REAL_OF_NUM_LT; ARITH] THEN REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(REAL_ARITH `a - b <= b * (d - &1) ==> a <= b * d`) THEN ASM_SIMP_TAC[GSYM LN_DIV; REAL_ARITH `&0 < x ==> &0 < x + &1`; REAL_OF_NUM_LT; ARITH_RULE `0 < n <=> ~(n = 0)`] THEN @@ -2741,7 +2738,7 @@ let PII_ISQRT_INDUCT = prove ASM_SIMP_TAC[REAL_MUL_RINV; REAL_OF_NUM_EQ; ARITH; REAL_MUL_LID] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `inv(&(ISQRT n))` THEN ASM_SIMP_TAC[LN_LE; REAL_POS; REAL_LE_INV_EQ] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN REWRITE_TAC[GSYM real_div] THEN SIMP_TAC[REAL_LE_RDIV_EQ; REAL_OF_NUM_LT; ARITH] THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN @@ -2751,7 +2748,7 @@ let PII_ISQRT_INDUCT = prove [REWRITE_TAC[REAL_OF_NUM_LE] THEN SUBGOAL_THEN `7 EXP 2 < (ISQRT n + 1) EXP 2` MP_TAC THENL [MATCH_MP_TAC LET_TRANS THEN EXISTS_TAC `n:num` THEN - REWRITE_TAC[ISQRT_WORKS] THEN CONV_TAC NUM_REDUCE_CONV THEN + REWRITE_TAC[ISQRT_WORKS] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN UNDISCH_TAC `50 <= n` THEN ARITH_TAC; ALL_TAC] THEN REWRITE_TAC[num_CONV `2`; EXP_MONO_LT_SUC] THEN ARITH_TAC; @@ -2770,9 +2767,9 @@ let PII_ISQRT_INDUCT = prove let tm = mk_abs(`x:real`,rand(rator(rand(body(rand(lhand w)))))) in DISCH_TAC THEN EXISTS_TAC tm) THEN CONJ_TAC THENL - [CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_sub] THEN - CONV_TAC(ONCE_DEPTH_CONV LN_N2_CONV) THEN - CONV_TAC REALCALC_REL_CONV; + [(CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_sub] THEN + (CONV_TAC "(ONCE_DEPTH_CONV LN_N2_CONV)") (ONCE_DEPTH_CONV LN_N2_CONV) THEN + (CONV_TAC "REALCALC_REL_CONV") REALCALC_REL_CONV; ALL_TAC] THEN REWRITE_TAC[] THEN CONJ_TAC THENL [GEN_TAC THEN @@ -2800,7 +2797,7 @@ let PII_UBOUND_5 = prove [REWRITE_TAC[REAL_OF_NUM_LE] THEN SUBGOAL_THEN `7 EXP 2 < (ISQRT n + 1) EXP 2` MP_TAC THENL [MATCH_MP_TAC LET_TRANS THEN EXISTS_TAC `n:num` THEN - REWRITE_TAC[ISQRT_WORKS] THEN CONV_TAC NUM_REDUCE_CONV THEN + REWRITE_TAC[ISQRT_WORKS] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN UNDISCH_TAC `50 <= n` THEN ARITH_TAC; ALL_TAC] THEN REWRITE_TAC[num_CONV `2`; EXP_MONO_LT_SUC] THEN ARITH_TAC; @@ -2823,19 +2820,19 @@ let PII_UBOUND_5 = prove MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&9 / &4 * (&3 / &2 * &n + &5 * &(ISQRT n))` THEN CONJ_TAC THENL - [MATCH_MP_TAC REAL_LE_LMUL THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [MATCH_MP_TAC REAL_LE_LMUL THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[REAL_LE_LADD]; ALL_TAC] THEN MATCH_MP_TAC(REAL_ARITH `i * (a * c) <= n * (d - a * b) ==> a * (b * n + c * i) <= d * n`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SIMP_TAC[GSYM REAL_LE_LDIV_EQ; REAL_LT_DIV; REAL_OF_NUM_LT; ARITH] THEN REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&(ISQRT n) * &7` THEN CONJ_TAC THENL [MATCH_MP_TAC REAL_LE_LMUL THEN REWRITE_TAC[REAL_POS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN REWRITE_TAC[REAL_OF_NUM_MUL; REAL_OF_NUM_LE] THEN MATCH_MP_TAC LE_TRANS THEN EXISTS_TAC `ISQRT n * ISQRT n` THEN CONJ_TAC THENL diff --git a/100/birthday.ml b/100/birthday.ml index 845e9f35..4a539b43 100644 --- a/100/birthday.ml +++ b/100/birthday.ml @@ -44,7 +44,7 @@ let HAS_SIZE_FUNSPACE = prove ONCE_REWRITE_TAC[TAUT `(a /\ b /\ c) /\ d <=> d /\ a /\ b /\ c`] THEN REWRITE_TAC[PAIR_EQ; EXISTS_PAIR_THM; GSYM CONJ_ASSOC] THEN REWRITE_TAC[RIGHT_EXISTS_AND_THM; UNWIND_THM1] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN X_GEN_TAC `f:A->B` THEN EQ_TAC THENL [STRIP_TAC THEN MAP_EVERY EXISTS_TAC [`(f:A->B) x`; `\u. if u = x then @y. T else (f:A->B) u`] THEN @@ -56,7 +56,7 @@ let HAS_SIZE_FUNSPACE = prove ALL_TAC] THEN MATCH_MP_TAC HAS_SIZE_IMAGE_INJ THEN CONJ_TAC THENL [REWRITE_TAC[FORALL_PAIR_THM; IN_ELIM_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN ONCE_REWRITE_TAC[TAUT `(a /\ b) /\ d <=> d /\ a /\ b`] THEN REWRITE_TAC[PAIR_EQ; EXISTS_PAIR_THM; GSYM CONJ_ASSOC] THEN REWRITE_TAC[RIGHT_EXISTS_AND_THM; UNWIND_THM1] THEN @@ -117,7 +117,7 @@ let HAS_SIZE_FUNSPACE_INJECTIVE = prove ONCE_REWRITE_TAC[TAUT `(a /\ b /\ c) /\ d <=> d /\ a /\ b /\ c`] THEN REWRITE_TAC[PAIR_EQ; EXISTS_PAIR_THM; GSYM CONJ_ASSOC] THEN REWRITE_TAC[RIGHT_EXISTS_AND_THM; UNWIND_THM1] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN X_GEN_TAC `f:A->B` THEN EQ_TAC THENL [REWRITE_TAC[IN_INSERT; IN_DELETE] THEN STRIP_TAC THEN MAP_EVERY EXISTS_TAC @@ -130,7 +130,7 @@ let HAS_SIZE_FUNSPACE_INJECTIVE = prove ALL_TAC] THEN MATCH_MP_TAC HAS_SIZE_IMAGE_INJ THEN CONJ_TAC THENL [REWRITE_TAC[FORALL_PAIR_THM; IN_ELIM_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN ONCE_REWRITE_TAC[TAUT `(a /\ b) /\ d <=> d /\ a /\ b`] THEN REWRITE_TAC[PAIR_EQ; EXISTS_PAIR_THM; GSYM CONJ_ASSOC] THEN REWRITE_TAC[RIGHT_EXISTS_AND_THM; UNWIND_THM1] THEN @@ -223,10 +223,10 @@ let BIRTHDAY_THM_EXPLICIT = prove REPEAT GEN_TAC THEN DISCH_TAC THEN FIRST_ASSUM(MP_TAC o MATCH_MP BIRTHDAY_THM) THEN FIRST_ASSUM(MP_TAC o MATCH_MP HAS_SIZE_FUNSPACE) THEN - CONV_TAC(ONCE_DEPTH_CONV NUM_SUB_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV NUM_SUB_CONV)") (ONCE_DEPTH_CONV NUM_SUB_CONV) THEN REPEAT(CHANGED_TAC (SIMP_TAC[FACT_DIV_SIMP; ARITH_LE; ARITH_LT] THEN - CONV_TAC(ONCE_DEPTH_CONV NUM_SUB_CONV))) THEN + (CONV_TAC "(ONCE_DEPTH_CONV NUM_SUB_CONV)") (ONCE_DEPTH_CONV NUM_SUB_CONV))) THEN SIMP_TAC[DIV_REFL; GSYM LT_NZ; FACT_LT] THEN REWRITE_TAC[HAS_SIZE] THEN REPEAT STRIP_TAC THEN ASM_REWRITE_TAC[] THEN - CONV_TAC NUM_REDUCE_CONV);; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV);; diff --git a/100/cayley_hamilton.ml b/100/cayley_hamilton.ml index c1c893a2..08a326bc 100644 --- a/100/cayley_hamilton.ml +++ b/100/cayley_hamilton.ml @@ -398,7 +398,7 @@ let MATRIC_CHARPOLY_DIFFERENCE = prove GEN_TAC THEN INDUCT_TAC THEN SIMP_TAC[MSUM_CLAUSES_NUMSEG; SUM_CLAUSES_NUMSEG; LE_0] THENL [EXISTS_TAC `(\i. mat 0):num->real^N^N` THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[MSUM_CLAUSES_NUMSEG] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[MSUM_CLAUSES_NUMSEG] THEN REWRITE_TAC[real_pow; MATRIX_MUL_LMUL; MATRIX_MUL_LZERO; mpow; REAL_MUL_RID; MATRIX_CMUL_RZERO; MATRIX_SUB_REFL]; FIRST_X_ASSUM(X_CHOOSE_TAC `B:num->real^N^N`) THEN diff --git a/100/ceva.ml b/100/ceva.ml index ce35d604..fc748986 100644 --- a/100/ceva.ml +++ b/100/ceva.ml @@ -43,7 +43,7 @@ let COLLINEAR = prove let lemma = prove (`~(y1 = &0) /\ x2 * y1 = x1 * y2 ==> ?c. x1 = c * y1 /\ x2 = c * y2`, STRIP_TAC THEN EXISTS_TAC `x1 / y1` THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD) in + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD) in REPEAT GEN_TAC THEN ASM_CASES_TAC `a:real^2 = b` THENL [ASM_REWRITE_TAC[REAL_SUB_REFL; REAL_MUL_RZERO; REAL_MUL_LZERO] THEN REWRITE_TAC[COLLINEAR_SING; COLLINEAR_2; INSERT_AC]; @@ -66,7 +66,7 @@ let COLLINEAR = prove VECTOR_SUB_COMPONENT; ARITH] THENL [ALL_TAC; ONCE_REWRITE_TAC[CONJ_SYM]] THEN FIRST_X_ASSUM(CONJUNCTS_THEN(REPEAT_TCL STRIP_THM_THEN SUBST1_TAC)) THEN - MATCH_MP_TAC lemma THEN REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD);; + MATCH_MP_TAC lemma THEN REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; (* ------------------------------------------------------------------------- *) (* More or less automatic proof of the main direction. *) @@ -86,7 +86,7 @@ let CEVA_WEAK = prove SIMP_TAC[dot; SUM_2; VECTOR_SUB_COMPONENT; DIMINDEX_2; VECTOR_ADD_COMPONENT; CART_EQ; FORALL_2; VECTOR_MUL_COMPONENT; ARITH] THEN FIRST_X_ASSUM(MP_TAC o check(is_neg o concl)) THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* More laborious proof of equivalence. *) @@ -121,7 +121,7 @@ let CEVA = prove FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE RAND_CONV [COLLINEAR]) THEN SIMP_TAC[dot; SUM_2; VECTOR_SUB_COMPONENT; DIMINDEX_2; FORALL_2; VECTOR_ADD_COMPONENT; CART_EQ; VECTOR_MUL_COMPONENT; ARITH] THEN - CONV_TAC REAL_RING] THEN + (CONV_TAC "REAL_RING") REAL_RING] THEN DISCH_TAC THEN REWRITE_TAC[VECTOR_ADD_LDISTRIB; VECTOR_MUL_ASSOC] THEN SUBGOAL_THEN `?u v w. w = (&1 - u) * (&1 - x) /\ @@ -147,19 +147,19 @@ let CEVA = prove REPEAT(MATCH_MP_TAC(TAUT `(a ==> b /\ c) /\ (a /\ b /\ c ==> d) ==> a ==> b /\ c /\ d`) THEN CONJ_TAC THENL - [CONV_TAC REAL_RING ORELSE CONV_TAC REAL_SOS; ALL_TAC]) THEN - CONV_TAC REAL_SOS; + [(CONV_TAC "REAL_RING") REAL_RING ORELSE (CONV_TAC "REAL_SOS") REAL_SOS; ALL_TAC]) THEN + (CONV_TAC "REAL_SOS") REAL_SOS; ALL_TAC] THEN RULE_ASSUM_TAC(REWRITE_RULE[COLLINEAR]) THEN ASM_CASES_TAC `x = &0` THENL [EXISTS_TAC `&1 - y / (&1 - x + x * y)` THEN REPEAT(FIRST_X_ASSUM(MP_TAC o check (not o is_neg o concl))) THEN - CONV_TAC REAL_FIELD; ALL_TAC] THEN + (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN EXISTS_TAC `&1 - (&1 - z) / (x + (&1 - x) * (&1 - z))` THEN SUBGOAL_THEN `~(x + (&1 - x) * (&1 - z) = &0)` MP_TAC THENL [ALL_TAC; REPEAT(FIRST_X_ASSUM(MP_TAC o check (not o is_neg o concl))) THEN - CONV_TAC REAL_FIELD] THEN + (CONV_TAC "REAL_FIELD") REAL_FIELD] THEN MATCH_MP_TAC(REAL_ARITH `z * (&1 - x) < &1 ==> ~(x + (&1 - x) * (&1 - z) = &0)`) THEN ASM_CASES_TAC `z = &0` THEN ASM_REWRITE_TAC[REAL_MUL_LZERO; REAL_LT_01] THEN @@ -182,11 +182,11 @@ let BETWEEN_SYM = prove let BETWEEN_METRICAL = prove (`!u v w:real^N. between v (u,w) <=> dist(u,v) + dist(v,w) = dist(u,w)`, - REPEAT GEN_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[BETWEEN_SYM] THEN REWRITE_TAC[BETWEEN_THM; dist] THEN REWRITE_TAC[VECTOR_ARITH `x % u + (&1 - x) % v = v + x % (u - v)`] THEN SUBST1_TAC(VECTOR_ARITH `u - w:real^N = (u - v) + (v - w)`) THEN - CONV_TAC(LAND_CONV SYM_CONV) THEN REWRITE_TAC[NORM_TRIANGLE_EQ] THEN + (CONV_TAC "(LAND_CONV SYM_CONV)") (LAND_CONV SYM_CONV) THEN REWRITE_TAC[NORM_TRIANGLE_EQ] THEN EQ_TAC THENL [ALL_TAC; STRIP_TAC THEN ASM_REWRITE_TAC[] THEN diff --git a/100/chords.ml b/100/chords.ml index 3ca66acb..3245ddec 100644 --- a/100/chords.ml +++ b/100/chords.ml @@ -62,4 +62,4 @@ let SEGMENT_CHORDS = prove ABBREV_TAC `rad = radius pow 2` THEN POP_ASSUM_LIST(K ALL_TAC) THEN SIMP_TAC[dot; SUM_2; VECTOR_SUB_COMPONENT; DIMINDEX_2; VECTOR_ADD_COMPONENT; CART_EQ; FORALL_2; VECTOR_MUL_COMPONENT; ARITH] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; diff --git a/100/circle.ml b/100/circle.ml index 76d15877..16c205a2 100644 --- a/100/circle.ml +++ b/100/circle.ml @@ -37,7 +37,7 @@ let AREA_UNIT_CBALL = prove [`\x. asn(x) + x * sqrt(&1 - x pow 2)`; `\x. &2 * sqrt(&1 - x pow 2)`; `-- &1`; `&1`] REAL_FUNDAMENTAL_THEOREM_OF_CALCULUS_INTERIOR) THEN - REWRITE_TAC[ASN_1; ASN_NEG_1] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[ASN_1; ASN_NEG_1] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[SQRT_0; REAL_MUL_RZERO; REAL_ADD_RID] THEN REWRITE_TAC[REAL_ARITH `x / &2 - --(x / &2) = x`] THEN DISCH_THEN MATCH_MP_TAC THEN CONJ_TAC THENL @@ -56,7 +56,7 @@ let AREA_UNIT_CBALL = prove REAL_ARITH_TAC; REWRITE_TAC[IN_REAL_INTERVAL; REAL_BOUNDS_LT] THEN REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_LID; REAL_POW_1; REAL_MUL_RID] THEN REWRITE_TAC[REAL_SUB_LZERO; REAL_MUL_RNEG; REAL_INV_MUL] THEN ASM_REWRITE_TAC[REAL_SUB_LT; ABS_SQUARE_LT_1] THEN @@ -129,9 +129,9 @@ let VOLUME_CBALL = prove REWRITE_TAC[] THEN ANTS_TAC THENL [CONJ_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RING; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RING") REAL_RING; MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - CONV_TAC REAL_RING]);; + (CONV_TAC "REAL_RING") REAL_RING]);; let VOLUME_BALL = prove (`!z:real^3 r. &0 <= r ==> measure(ball(z,r)) = &4 / &3 * pi * r pow 3`, diff --git a/100/combinations.ml b/100/combinations.ml index 5dd13d44..5a4ef103 100644 --- a/100/combinations.ml +++ b/100/combinations.ml @@ -31,14 +31,14 @@ let BINOM_FACT = prove INDUCT_TAC THEN REWRITE_TAC[FACT; ADD_CLAUSES; MULT_CLAUSES; BINOM_REFL] THEN INDUCT_TAC THEN REWRITE_TAC[ADD_CLAUSES; FACT; MULT_CLAUSES; binom] THEN FIRST_X_ASSUM(MP_TAC o SPEC `SUC k`) THEN POP_ASSUM MP_TAC THEN - REWRITE_TAC[ADD_CLAUSES; FACT; binom] THEN CONV_TAC NUM_RING);; + REWRITE_TAC[ADD_CLAUSES; FACT; binom] THEN (CONV_TAC "NUM_RING") NUM_RING);; let BINOM_EXPLICIT = prove (`!n k. binom(n,k) = if n < k then 0 else FACT(n) DIV (FACT(k) * FACT(n - k))`, REPEAT STRIP_TAC THEN COND_CASES_TAC THEN ASM_SIMP_TAC[BINOM_LT] THEN POP_ASSUM MP_TAC THEN REWRITE_TAC[NOT_LT; LE_EXISTS] THEN - STRIP_TAC THEN ASM_REWRITE_TAC[ADD_SUB2] THEN CONV_TAC SYM_CONV THEN + STRIP_TAC THEN ASM_REWRITE_TAC[ADD_SUB2] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC DIV_UNIQ THEN EXISTS_TAC `0` THEN SIMP_TAC[LT_MULT; FACT_LT; ADD_CLAUSES] THEN ONCE_REWRITE_TAC[ADD_SYM] THEN REWRITE_TAC[GSYM BINOM_FACT] THEN @@ -85,7 +85,7 @@ let NUMBER_OF_COMBINATIONS = prove s HAS_SIZE n ==> {t | t SUBSET s /\ t HAS_SIZE m} HAS_SIZE binom(n,m)`, MATCH_MP_TAC BINOM_INDUCT THEN REWRITE_TAC[binom] THEN REPEAT CONJ_TAC THENL - [REPEAT STRIP_TAC THEN CONV_TAC HAS_SIZE_CONV THEN + [REPEAT STRIP_TAC THEN (CONV_TAC "HAS_SIZE_CONV") HAS_SIZE_CONV THEN EXISTS_TAC `{}:A->bool` THEN SIMP_TAC[EXTENSION; IN_SING; IN_ELIM_THM] THEN REWRITE_TAC[NOT_IN_EMPTY; HAS_SIZE_0] THEN SET_TAC[]; SIMP_TAC[HAS_SIZE_0; SUBSET_EMPTY; HAS_SIZE_SUC] THEN SET_TAC[]; diff --git a/100/constructible.ml b/100/constructible.ml index 0712bbad..fdee8077 100644 --- a/100/constructible.ml +++ b/100/constructible.ml @@ -38,7 +38,7 @@ let STEP_LEMMA = prove a * u pow 2 + u pow 3 + b * u + c`; `B = s pow 2 * v pow 3 + &2 * a * u * v + &3 * u pow 2 * v + b * v`] THEN SUBGOAL_THEN `A + B * s = &0` ASSUME_TAC THENL - [REPEAT(FIRST_X_ASSUM(MP_TAC o SYM)) THEN CONV_TAC REAL_RING; ALL_TAC] THEN + [REPEAT(FIRST_X_ASSUM(MP_TAC o SYM)) THEN (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN ASM_CASES_TAC `(P:real->bool) s` THENL [ASM_MESON_TAC[]; ALL_TAC] THEN SUBGOAL_THEN `B = &0` ASSUME_TAC THENL [UNDISCH_TAC `~P(s:real)` THEN ONCE_REWRITE_TAC[GSYM CONTRAPOS_THM] THEN @@ -55,7 +55,7 @@ let STEP_LEMMA = prove ALL_TAC] THEN EXISTS_TAC `--(a + &2 * u)` THEN ASM_SIMP_TAC[] THEN REPEAT(FIRST_X_ASSUM(MP_TAC o check ((not) o is_forall o concl))) THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* Instantiate to square roots. *) @@ -317,7 +317,7 @@ let RADICAL_CANONICAL = prove [`Inverse(Multiplication (Constant(&2)) a)`; `Constant(&0)`] THEN ASM_REWRITE_TAC[value; radicals; wellformed] THEN REWRITE_TAC[RATIONAL_NUM; EMPTY_SUBSET; CONJ_ASSOC] THEN CONJ_TAC THENL - [UNDISCH_TAC `~(value a + value a = &0)` THEN CONV_TAC REAL_FIELD; + [UNDISCH_TAC `~(value a + value a = &0)` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; REPEAT(POP_ASSUM MP_TAC) THEN SET_TAC[]]; ALL_TAC] THEN STRIP_TAC THEN MAP_EVERY EXISTS_TAC @@ -330,7 +330,7 @@ let RADICAL_CANONICAL = prove ASM_REWRITE_TAC[value; wellformed; radicals; UNION_SUBSET] THEN UNDISCH_TAC `~(value b * sqrt (value r) = value a)` THEN UNDISCH_TAC `~(value e1 = &0)` THEN ASM_REWRITE_TAC[] THEN - FIRST_ASSUM(MP_TAC o MATCH_MP SQRT_POW_2) THEN CONV_TAC REAL_FIELD; + FIRST_ASSUM(MP_TAC o MATCH_MP SQRT_POW_2) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; REWRITE_TAC[TAUT `a \/ b ==> c <=> (a ==> c) /\ (b ==> c)`] THEN REWRITE_TAC[FORALL_AND_THM] THEN @@ -372,7 +372,7 @@ let RADICAL_CANONICAL = prove (Multiplication (Multiplication b1 b2) r)`; `Addition (Multiplication a1 b2) (Multiplication a2 b1)`] THEN ASM_REWRITE_TAC[value; wellformed; radicals] THEN CONJ_TAC THENL - [FIRST_ASSUM(MP_TAC o MATCH_MP SQRT_POW_2) THEN CONV_TAC REAL_RING; + [FIRST_ASSUM(MP_TAC o MATCH_MP SQRT_POW_2) THEN (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN MP_TAC(SPEC `r:expression` NOT_IN_OWN_RADICALS) THEN MP_TAC(SPECL [`e1:expression`; `r:expression`] RADICALS_SUBSET) THEN @@ -521,7 +521,7 @@ let RATIONAL_LOWEST_LEMMA = prove ASM_SIMP_TAC[ARITH_RULE `~(d = 0) /\ ~(d = 1) ==> 1 < d`] THEN DISCH_THEN(MP_TAC o SPEC `p':num`) THEN REPEAT(MATCH_MP_TAC MONO_EXISTS THEN GEN_TAC) THEN SIMP_TAC[] THEN - CONV_TAC NUM_RING);; + (CONV_TAC "NUM_RING") NUM_RING);; prioritize_real();; @@ -532,7 +532,7 @@ let RATIONAL_LOWEST = prove STRIP_TAC THEN MP_TAC(SPECL [`p:num`; `q:num`] RATIONAL_LOWEST_LEMMA) THEN ASM_REWRITE_TAC[] THEN REPEAT(MATCH_MP_TAC MONO_EXISTS THEN GEN_TAC) THEN UNDISCH_TAC `~(q = 0)` THEN SIMP_TAC[GSYM REAL_OF_NUM_EQ] THEN - REWRITE_TAC[GSYM REAL_OF_NUM_MUL] THEN CONV_TAC REAL_FIELD);; + REWRITE_TAC[GSYM REAL_OF_NUM_MUL] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let RATIONAL_ROOT_INTEGER = prove (`!a b c x. integer a /\ integer b /\ integer c /\ rational x /\ @@ -624,7 +624,7 @@ let RADICAL_LINEAR_EQUATION = prove REPEAT STRIP_TAC THEN SUBGOAL_THEN `~(a = &0) /\ x = --b / a` (fun th -> ASM_SIMP_TAC[th; RADICAL_RULES]) THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let RADICAL_SIMULTANEOUS_LINEAR_EQUATION = prove (`!a b c d e f x. @@ -638,7 +638,7 @@ let RADICAL_SIMULTANEOUS_LINEAR_EQUATION = prove x = (e * c - b * f) / (a * e - b * d) /\ y = (a * f - d * c) / (a * e - b * d)` STRIP_ASSUME_TAC THENL - [REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD; + [REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ASM_SIMP_TAC[RADICAL_RULES]]);; let RADICAL_QUADRATIC_EQUATION = prove @@ -659,7 +659,7 @@ let RADICAL_QUADRATIC_EQUATION = prove MP_TAC THENL [REWRITE_TAC[real_sub; REAL_ARITH `a + (b + c) = &0 <=> c = --(a + b)`] THEN REWRITE_TAC[REAL_EQ_NEG2] THEN MATCH_MP_TAC SQRT_CASES_LEMMA THEN - FIRST_X_ASSUM(MP_TAC o SYM) THEN CONV_TAC REAL_RING; + FIRST_X_ASSUM(MP_TAC o SYM) THEN (CONV_TAC "REAL_RING") REAL_RING; STRIP_TAC THENL [EXISTS_TAC `b - sqrt(b pow 2 - &4 * a * c)`; EXISTS_TAC `b + sqrt(b pow 2 - &4 * a * c)`] THEN @@ -684,9 +684,9 @@ let RADICAL_SIMULTANEOUS_LINEAR_QUADRATIC = prove (REPLICATE_TAC 3 (CONJ_TAC THENL [RADICAL_TAC THEN ASM_REWRITE_TAC[]; ALL_TAC]) THEN CONJ_TAC THENL - [REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_RING; ALL_TAC] THEN + [REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN REWRITE_TAC[REAL_SOS_EQ_0] THEN REPEAT(POP_ASSUM MP_TAC) THEN - CONV_TAC REAL_RING));; + (CONV_TAC "REAL_RING") REAL_RING));; let RADICAL_SIMULTANEOUS_QUADRATIC_QUADRATIC = prove (`!a b c d e f x. @@ -704,7 +704,7 @@ let RADICAL_SIMULTANEOUS_QUADRATIC_QUADRATIC = prove ASM_REWRITE_TAC[] THEN REPLICATE_TAC 3 (CONJ_TAC THENL [RADICAL_TAC THEN ASM_REWRITE_TAC[]; ALL_TAC]) THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_RING);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* Analytic criterion for constructibility. *) @@ -754,7 +754,7 @@ let RADICAL_LINE_LINE_INTERSECTION = prove `(c:real^2)$2 * (c$1 - (d:real^2)$1) - (c:real^2)$1 * (c$2 - d$2)`] THEN REPLICATE_TAC 6 (CONJ_TAC THENL [RADICAL_TAC THEN ASM_REWRITE_TAC[]; ALL_TAC]) THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_RING);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_RING") REAL_RING);; let RADICAL_LINE_CIRCLE_INTERSECTION = prove (`!a b c d e x. @@ -778,7 +778,7 @@ let RADICAL_LINE_CIRCLE_INTERSECTION = prove `a$2 * ((a:real^2)$1 - (b:real^2)$1) - a$1 * (a$2 - b$2)`] THEN REPLICATE_TAC 6 (CONJ_TAC THENL [RADICAL_TAC THEN ASM_REWRITE_TAC[]; ALL_TAC]) THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_RING);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_RING") REAL_RING);; let RADICAL_CIRCLE_CIRCLE_INTERSECTION = prove (`!a b c d e f x. @@ -804,7 +804,7 @@ let RADICAL_CIRCLE_CIRCLE_INTERSECTION = prove `((f:real^2)$1 - (e:real^2)$1) pow 2 + (f$2 - e$2) pow 2`] THEN REPLICATE_TAC 6 (CONJ_TAC THENL [RADICAL_TAC THEN ASM_REWRITE_TAC[]; ALL_TAC]) THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_RING);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* So constructible points have radical coordinates. *) @@ -854,7 +854,7 @@ let COS_TRIPLE = prove (`!x. cos(&3 * x) = &4 * cos(x) pow 3 - &3 * cos(x)`, GEN_TAC THEN REWRITE_TAC[REAL_ARITH `&3 * x = x + x + x`; SIN_ADD; COS_ADD] THEN - MP_TAC(SPEC `x:real` SIN_CIRCLE) THEN CONV_TAC REAL_RING);; + MP_TAC(SPEC `x:real` SIN_CIRCLE) THEN (CONV_TAC "REAL_RING") REAL_RING);; let COS_PI3 = prove (`cos(pi / &3) = &1 / &2`, @@ -880,7 +880,7 @@ let TRISECT_60_DEGREES_ALGEBRA = prove FIRST_X_ASSUM(CHOOSE_THEN SUBST1_TAC o REWRITE_RULE[integer]) THEN REPEAT_TCL DISJ_CASES_THEN SUBST1_TAC (ARITH_RULE `n = 0 \/ n = 1 \/ n = 2 + (n - 2)`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM REAL_OF_NUM_ADD] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM REAL_OF_NUM_ADD] THEN REWRITE_TAC[REAL_ARITH `(&2 + m) pow 2 - &3 = m pow 2 + &4 * m + &1`] THEN REWRITE_TAC[REAL_OF_NUM_ADD; REAL_OF_NUM_MUL; REAL_OF_NUM_POW; REAL_ABS_NUM; REAL_OF_NUM_EQ; MULT_EQ_1] THEN diff --git a/100/cosine.ml b/100/cosine.ml index 0a361fb1..e625bf56 100644 --- a/100/cosine.ml +++ b/100/cosine.ml @@ -150,7 +150,7 @@ let LAW_OF_SINES = prove a * b - a * b * x = c * d - c * d * y`] THEN REWRITE_TAC[GSYM REAL_POW_MUL; GSYM ANGLE] THEN REWRITE_TAC[REAL_POW_MUL; dist; NORM_POW_2] THEN - REWRITE_TAC[DOT_LSUB; DOT_RSUB; DOT_SYM] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[DOT_LSUB; DOT_RSUB; DOT_SYM] THEN (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* Hence the sum of the angles of a triangle. *) @@ -170,7 +170,7 @@ let TRIANGLE_ANGLE_SUM_LEMMA = prove REWRITE_TAC[COS_ADD; SIN_ADD; dist; NORM_SUB] THEN MAP_EVERY (fun t -> MP_TAC(SPEC t SIN_CIRCLE)) [`angle(B:real^N,A,C)`; `angle(A:real^N,B,C)`; `angle(B:real^N,C,A)`] THEN - REWRITE_TAC[COS_ADD; SIN_ADD; ANGLE_SYM] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[COS_ADD; SIN_ADD; ANGLE_SYM] THEN (CONV_TAC "REAL_RING") REAL_RING);; let COS_MINUS1_LEMMA = prove (`!x. cos(x) = -- &1 /\ &0 <= x /\ x < &3 * pi ==> x = pi`, @@ -179,7 +179,7 @@ let COS_MINUS1_LEMMA = prove (X_CHOOSE_THEN `nn:real` (CONJUNCTS_THEN2 ASSUME_TAC SUBST_ALL_TAC)) THEN REWRITE_TAC[GSYM SIN_EQ_0] THENL [MP_TAC(SPEC `x:real` SIN_CIRCLE) THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RING; + (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN SUBGOAL_THEN `?n. nn = &n` (X_CHOOSE_THEN `n:num` SUBST_ALL_TAC) THENL [FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [REAL_MUL_POS_LE]) THEN diff --git a/100/cubic.ml b/100/cubic.ml index 49dcd973..31befa99 100644 --- a/100/cubic.ml +++ b/100/cubic.ml @@ -16,7 +16,7 @@ let ccbrt = new_definition let CCBRT = prove (`!z. ccbrt(z) pow 3 = z`, GEN_TAC THEN REWRITE_TAC[ccbrt] THEN COND_CASES_TAC THEN - ASM_REWRITE_TAC[] THENL [CONV_TAC COMPLEX_RING; ALL_TAC] THEN + ASM_REWRITE_TAC[] THENL [(CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN REWRITE_TAC[COMPLEX_FIELD `z pow 3 = z * z * z:complex`; GSYM CEXP_ADD] THEN REWRITE_TAC[COMPLEX_FIELD `z / Cx(&3) + z / Cx(&3) + z / Cx(&3) = z`] THEN ASM_SIMP_TAC[CEXP_CLOG]);; @@ -85,7 +85,7 @@ let CUBIC = prove y pow 3 + Cx(&3) * p * y - Cx(&2) * q = Cx(&0)` SUBST1_TAC THENL [MATCH_MP_TAC CUBIC_REDUCTION THEN ASM_REWRITE_TAC[] THEN - EXPAND_TAC "y" THEN CONV_TAC COMPLEX_RING; + EXPAND_TAC "y" THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN ONCE_REWRITE_TAC[COMPLEX_RING `x = a - b <=> x + b = (a:complex)`] THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC CUBIC_BASIC THEN @@ -94,5 +94,5 @@ let CUBIC = prove ASM_REWRITE_TAC[] THEN REPEAT CONJ_TAC THENL [ASM_MESON_TAC[CSQRT]; ASM_MESON_TAC[CCBRT]; - MP_TAC COMPLEX_POW_II_2 THEN CONV_TAC COMPLEX_RING; + MP_TAC COMPLEX_POW_II_2 THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ASM_MESON_TAC[CSQRT]]);; diff --git a/100/derangements.ml b/100/derangements.ml index 24fa44a0..c8b94a72 100644 --- a/100/derangements.ml +++ b/100/derangements.ml @@ -297,11 +297,11 @@ let NUMBER_OF_DERANGEMENTS = prove (`!n s:A->bool. s HAS_SIZE n ==> {p | p deranges s} HAS_SIZE (derangements n)`, MATCH_MP_TAC DERANGEMENT_INDUCT THEN REWRITE_TAC[derangements] THEN REPEAT CONJ_TAC THENL - [CONV_TAC(ONCE_DEPTH_CONV HAS_SIZE_CONV) THEN REPEAT STRIP_TAC THEN + [(CONV_TAC "(ONCE_DEPTH_CONV HAS_SIZE_CONV)") (ONCE_DEPTH_CONV HAS_SIZE_CONV) THEN REPEAT STRIP_TAC THEN EXISTS_TAC `{}:A#A->bool` THEN ASM_REWRITE_TAC[DERANGEMENT_EMPTY; EXTENSION; IN_ELIM_THM] THEN REWRITE_TAC[NOT_IN_EMPTY; IN_SING] THEN MESON_TAC[MEMBER_NOT_EMPTY]; - CONV_TAC(ONCE_DEPTH_CONV HAS_SIZE_CONV) THEN REPEAT STRIP_TAC THEN + (CONV_TAC "(ONCE_DEPTH_CONV HAS_SIZE_CONV)") (ONCE_DEPTH_CONV HAS_SIZE_CONV) THEN REPEAT STRIP_TAC THEN ASM_REWRITE_TAC[DERANGEMENT_SING] THEN SET_TAC[]; ALL_TAC] THEN X_GEN_TAC `n:num` THEN STRIP_TAC THEN X_GEN_TAC `t:A->bool` THEN @@ -336,7 +336,7 @@ let NUMBER_OF_DERANGEMENTS = prove ABBREV_TAC `z = @z. p(x:A,z:A)` THEN SUBGOAL_THEN `(p:A#A->bool)(x:A,z:A)` STRIP_ASSUME_TAC THENL [REPEAT(FIRST_X_ASSUM(SUBST1_TAC o SYM)) THEN - CONV_TAC SELECT_CONV THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN REPEAT(POP_ASSUM MP_TAC) THEN REL_TAC; ALL_TAC] THEN SUBGOAL_THEN `z:A IN s` STRIP_ASSUME_TAC THENL @@ -415,7 +415,7 @@ let NUMBER_OF_DERANGEMENTS = prove REWRITE_TAC[LET_DEF; LET_END_DEF] THEN SUBGOAL_THEN `p(x:A,z:A) /\ p'(x:A,z':A)` STRIP_ASSUME_TAC THENL [REPEAT(FIRST_X_ASSUM(SUBST1_TAC o SYM)) THEN - CONJ_TAC THEN CONV_TAC SELECT_CONV THEN + CONJ_TAC THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN REPEAT(POP_ASSUM MP_TAC) THEN REL_TAC; ALL_TAC] THEN REPEAT(FIRST_X_ASSUM(K ALL_TAC o SYM)) THEN @@ -464,7 +464,7 @@ let NUMBER_OF_DERANGEMENTS = prove ABBREV_TAC `w = @w. q(x:A,w:A)` THEN SUBGOAL_THEN `(q:A#A->bool)(x:A,w:A)` STRIP_ASSUME_TAC THENL [REPEAT(FIRST_X_ASSUM(SUBST1_TAC o SYM)) THEN - CONV_TAC SELECT_CONV THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN REPEAT(POP_ASSUM MP_TAC) THEN REL_TAC; ALL_TAC] THEN SUBGOAL_THEN `w:A IN s` STRIP_ASSUME_TAC THENL @@ -503,10 +503,10 @@ let DERANGEMENTS = prove &(FACT n) * sum(0..n) (\k. --(&1) pow k / &(FACT k))`, MATCH_MP_TAC DERANGEMENT_INDUCT THEN REWRITE_TAC[ADD_EQ_0; ARITH_EQ] THEN REWRITE_TAC[derangements; SUM_1] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN X_GEN_TAC `n:num` THEN ASM_CASES_TAC `n = 0` THEN ASM_REWRITE_TAC[] THENL [ASM_REWRITE_TAC[derangements; ARITH; SUM_2; SUM_1] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN REWRITE_TAC[GSYM REAL_OF_NUM_MUL; GSYM REAL_OF_NUM_ADD] THEN DISCH_THEN(fun th -> REWRITE_TAC[th]) THEN @@ -517,7 +517,7 @@ let DERANGEMENTS = prove REWRITE_TAC[GSYM REAL_OF_NUM_SUC; GSYM REAL_OF_NUM_ADD] THEN MP_TAC(SPEC `n:num` FACT_LT) THEN UNDISCH_TAC `~(n = 0)` THEN REWRITE_TAC[GSYM LT_NZ; REAL_POW_NEG; GSYM REAL_OF_NUM_LT; REAL_POW_ONE] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; (* ------------------------------------------------------------------------- *) (* A more "explicit" formula. We could sharpen 1/2 to 0.3678794+epsilon *) @@ -533,10 +533,10 @@ let DERANGEMENTS_EXP = prove (ARITH_RULE `n < 5 ==> n = 0 \/ n = 1 \/ n = 2 \/ n = 3 \/ n = 4`)) THEN POP_ASSUM MP_TAC THEN REWRITE_TAC[ARITH] THEN REWRITE_TAC(map (num_CONV o mk_small_numeral) (1--5)) THEN - REWRITE_TAC[SUM_CLAUSES_NUMSEG] THEN CONV_TAC NUM_REDUCE_CONV THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[SUM_CLAUSES_NUMSEG] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `abs x < a <=> --a < x /\ x < a`] THEN - REWRITE_TAC[real_sub] THEN CONJ_TAC THEN CONV_TAC REALCALC_REL_CONV; + REWRITE_TAC[real_sub] THEN CONJ_TAC THEN (CONV_TAC "REALCALC_REL_CONV") REALCALC_REL_CONV; ALL_TAC] THEN MP_TAC(SPECL [`-- &1`; `n + 1`] MCLAURIN_EXP_LE) THEN SIMP_TAC[PSUM_SUM_NUMSEG; ADD_EQ_0; ARITH_EQ] THEN @@ -556,7 +556,7 @@ let DERANGEMENTS_EXP = prove UNDISCH_TAC `abs(u) <= abs(-- &1)` THEN REAL_ARITH_TAC; ALL_TAC] THEN MATCH_MP_TAC REAL_LTE_TRANS THEN EXISTS_TAC `&3` THEN CONJ_TAC THENL - [CONV_TAC REALCALC_REL_CONV; ALL_TAC] THEN + [(CONV_TAC "REALCALC_REL_CONV") REALCALC_REL_CONV; ALL_TAC] THEN UNDISCH_TAC `~(n < 5)` THEN REWRITE_TAC[NOT_LT; GSYM REAL_OF_NUM_LE] THEN REAL_ARITH_TAC);; @@ -569,7 +569,7 @@ let round = new_definition let ROUND_WORKS = prove (`!x. integer(round x) /\ round x - &1 / &2 <= x /\ x < round x + &1 / &2`, - GEN_TAC THEN REWRITE_TAC[round] THEN CONV_TAC SELECT_CONV THEN + GEN_TAC THEN REWRITE_TAC[round] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN EXISTS_TAC `floor(x + &1 / &2)` THEN MP_TAC(SPEC `x + &1 / &2` FLOOR) THEN SIMP_TAC[INTEGER_CLOSED] THEN REAL_ARITH_TAC);; diff --git a/100/desargues.ml b/100/desargues.ml index e0827fc1..4eee7d7c 100644 --- a/100/desargues.ml +++ b/100/desargues.ml @@ -285,7 +285,7 @@ let COLLINEAR_BRACKET = prove GEN_TAC THEN DISCH_THEN(MP_TAC o CONJUNCT1) THEN REWRITE_TAC[DET_3; orthogonal; DOT_3; VECTOR_3; CART_EQ; DIMINDEX_3; FORALL_3; VEC_COMPONENT] THEN - CONV_TAC REAL_RING; + (CONV_TAC "REAL_RING") REAL_RING; ASM_CASES_TAC `p1:point = p2` THENL [ASM_REWRITE_TAC[INSERT_AC; COLLINEAR_PAIR]; ALL_TAC] THEN POP_ASSUM MP_TAC THEN @@ -307,7 +307,7 @@ let BRACKET_SWAP,BRACKET_SHUFFLE = (CONJ_PAIR o prove) (`bracket[x;y;z] = --bracket[x;z;y] /\ bracket[x;y;z] = bracket[y;z;x] /\ bracket[x;y;z] = bracket[z;x;y]`, - REWRITE_TAC[bracket; DET_3; VECTOR_3] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[bracket; DET_3; VECTOR_3] THEN (CONV_TAC "REAL_RING") REAL_RING);; let BRACKET_SWAP_CONV = let conv = GEN_REWRITE_CONV I [BRACKET_SWAP] in @@ -379,7 +379,7 @@ let DESARGUES_DIRECT = prove ==> bracket[A';S;C'] * bracket[A';B';Q] = bracket[A';S;Q] * bracket[A';B';C'])` MP_TAC THENL - [REWRITE_TAC[bracket; DET_3; VECTOR_3] THEN CONV_TAC REAL_RING; + [REWRITE_TAC[bracket; DET_3; VECTOR_3] THEN (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN REPEAT(MATCH_MP_TAC(TAUT `(c ==> d ==> b ==> e) ==> ((a ==> b) /\ c ==> a /\ d ==> e)`)) THEN @@ -388,12 +388,12 @@ let DESARGUES_DIRECT = prove DISCH_THEN(MP_TAC o MATCH_MP (REAL_RING `a = b /\ x:real = y ==> a * x = b * y`))) THEN POP_ASSUM MP_TAC THEN REWRITE_TAC[BRACKET_SHUFFLE] THEN - CONV_TAC(ONCE_DEPTH_CONV BRACKET_SWAP_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV BRACKET_SWAP_CONV)") (ONCE_DEPTH_CONV BRACKET_SWAP_CONV) THEN REWRITE_TAC[GSYM REAL_MUL_ASSOC; REAL_MUL_LNEG; REAL_MUL_RNEG] THEN REWRITE_TAC[REAL_NEG_NEG; REAL_NEG_EQ_0] THEN DISCH_TAC THEN MATCH_MP_TAC(TAUT `!b. (a ==> b) /\ (b ==> c) ==> a ==> c`) THEN EXISTS_TAC `bracket[B;Q;S] * bracket[A';R;S] = bracket[B;R;S] * bracket[A';Q;S]` THEN - CONJ_TAC THENL [POP_ASSUM MP_TAC THEN CONV_TAC REAL_RING; ALL_TAC] THEN + CONJ_TAC THENL [POP_ASSUM MP_TAC THEN (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN FIRST_X_ASSUM(MP_TAC o CONJUNCT1) THEN - REWRITE_TAC[bracket; DET_3; VECTOR_3] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[bracket; DET_3; VECTOR_3] THEN (CONV_TAC "REAL_RING") REAL_RING);; diff --git a/100/descartes.ml b/100/descartes.ml index 2b8013f2..2b05ece9 100644 --- a/100/descartes.ml +++ b/100/descartes.ml @@ -50,7 +50,7 @@ let VARIATION_SPLIT = prove ==> variation s a = variation {i | i IN s /\ i <= n} a + variation {i | i IN s /\ n <= i} a`, REWRITE_TAC[variation] THEN REPEAT STRIP_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC CARD_UNION_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CARD_UNION_EQ THEN ASM_SIMP_TAC[VARIATION_SET_FINITE; FINITE_RESTRICT] THEN REWRITE_TAC[EXTENSION; FORALL_PAIR_THM] THEN CONJ_TAC THENL [REWRITE_TAC[IN_INTER; NOT_IN_EMPTY; IN_ELIM_PAIR_THM; IN_NUMSEG] THEN @@ -155,12 +155,12 @@ let ARTHAN_LEMMA = prove `~(n = 0) ==> n = 1 \/ 2 <= n`)) THENL [FIRST_X_ASSUM SUBST_ALL_TAC THEN EXISTS_TAC `1` THEN - CONV_TAC NUM_REDUCE_CONV THEN - CONV_TAC(ONCE_DEPTH_CONV NUMSEG_CONV) THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN + (CONV_TAC "(ONCE_DEPTH_CONV NUMSEG_CONV)") (ONCE_DEPTH_CONV NUMSEG_CONV) THEN REWRITE_TAC[VARIATION_2; OPPOSITE_SIGNS] THEN FIRST_X_ASSUM(fun th -> MP_TAC(SPEC `0` th) THEN MP_TAC(SPEC `1` th)) THEN SIMP_TAC[num_CONV `1`; SUM_CLAUSES_NUMSEG] THEN - CONV_TAC NUM_REDUCE_CONV THEN COND_CASES_TAC THEN REWRITE_TAC[] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN COND_CASES_TAC THEN REWRITE_TAC[] THEN ASM_ARITH_TAC; ALL_TAC] THEN SUBGOAL_THEN `?p. 1 < p /\ p <= n /\ ~(a p = &0)` MP_TAC THENL @@ -177,14 +177,14 @@ let ARTHAN_LEMMA = prove [X_GEN_TAC `m:num` THEN MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `sum(0..m+1) a` THEN CONJ_TAC THENL [SIMP_TAC[SUM_CLAUSES_LEFT; LE_0; ARITH_RULE `0 + 1 <= n + 1`] THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[REAL_ADD_ASSOC] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[REAL_ADD_ASSOC] THEN AP_TERM_TAC THEN REWRITE_TAC[ARITH_RULE `2 = 1 + 1`; SUM_OFFSET] THEN MATCH_MP_TAC SUM_EQ_NUMSEG THEN ARITH_TAC; ASM_REWRITE_TAC[]]; ABBREV_TAC `a':num->real = \m. if m = 1 then a 0 + a 1 else a m` THEN ASM_SIMP_TAC[ARITH_RULE `2 <= n ==> n - 1 + 1 = n /\ n - 1 - 1 + 1 = n - 1`] THEN - CONV_TAC NUM_REDUCE_CONV] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV] THEN SUBGOAL_THEN `variation (1..n) a' = variation {1,p} a' + variation (p..n) a /\ variation (0..n) a = variation {0,1,p} a + variation (p..n) a` @@ -216,7 +216,7 @@ let ARTHAN_LEMMA = prove FIRST_X_ASSUM(SUBST1_TAC o SYM o SPEC `i:num`) THEN ASM_SIMP_TAC[SUM_CLAUSES_LEFT; LE_0; ARITH_RULE `0 < i ==> 0 + 1 <= i`] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_REWRITE_TAC[REAL_ADD_ASSOC; REAL_ADD_LID] THEN MATCH_MP_TAC SUM_EQ_0_NUMSEG THEN REPEAT STRIP_TAC THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_ARITH_TAC; @@ -241,7 +241,7 @@ let ARTHAN_LEMMA = prove FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REAL_ARITH `~(ap = &0) ==> s = &0 ==> ~(s + ap = &0)`)) THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_ARITH_TAC; - BINOP_TAC THENL [ALL_TAC; CONV_TAC SYM_CONV] THEN + BINOP_TAC THENL [ALL_TAC; (CONV_TAC "SYM_CONV") SYM_CONV] THEN MATCH_MP_TAC VARIATION_SUBSET THEN REWRITE_TAC[SUBSET; IN_DIFF; IN_NUMSEG; IN_INSERT; NOT_IN_EMPTY] THEN (CONJ_TAC THENL [ASM_ARITH_TAC; REPEAT STRIP_TAC]) THEN @@ -255,25 +255,25 @@ let ARTHAN_LEMMA = prove CONJ_TAC THENL [ASM_ARITH_TAC; ALL_TAC] THEN FIRST_ASSUM(SUBST1_TAC o SYM o SPEC `1`) THEN SIMP_TAC[SUM_CLAUSES_NUMSEG; num_CONV `1`] THEN - CONV_TAC NUM_REDUCE_CONV THEN ASM_REWRITE_TAC[]; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_REWRITE_TAC[]; AP_THM_TAC THEN AP_TERM_TAC THEN MATCH_MP_TAC VARIATION_SUBSET THEN REWRITE_TAC[SUBSET; IN_DIFF; IN_NUMSEG; IN_INSERT; NOT_IN_EMPTY] THEN ARITH_TAC]; SUBGOAL_THEN `(b:num->real) 1 = a 0 + a 1` ASSUME_TAC THENL [FIRST_ASSUM(fun th -> GEN_REWRITE_TAC LAND_CONV [GSYM th]) THEN SIMP_TAC[num_CONV `1`; SUM_CLAUSES_NUMSEG] THEN - CONV_TAC NUM_REDUCE_CONV; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ALL_TAC]]] THEN - REPEAT(FIRST_X_ASSUM(MP_TAC o SPEC `0`)) THEN CONV_TAC NUM_REDUCE_CONV THEN + REPEAT(FIRST_X_ASSUM(MP_TAC o SPEC `0`)) THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[SUM_SING_NUMSEG] THEN DISCH_TAC THEN ASM_REWRITE_TAC[GSYM INT_OF_NUM_ADD] THEN ASM_SIMP_TAC[VARIATION_3; ARITH; OPPOSITE_SIGNS] THEN COND_CASES_TAC THEN REWRITE_TAC[VARIATION_2; OPPOSITE_SIGNS; REAL_LT_REFL] THEN - EXPAND_TAC "a'" THEN CONV_TAC NUM_REDUCE_CONV THEN + EXPAND_TAC "a'" THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_SIMP_TAC[ARITH_RULE `1 < p ==> ~(p = 1)`; REAL_LT_REFL] THEN REPEAT(COND_CASES_TAC THEN ASM_REWRITE_TAC[]) THEN - CONV_TAC NUM_REDUCE_CONV THEN - CONV_TAC(BINDER_CONV(RAND_CONV(RAND_CONV INT_POLY_CONV))) THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN + (CONV_TAC "(BINDER_CONV(RAND_CONV(RAND_CONV INT_POLY_CONV)))") (BINDER_CONV(RAND_CONV(RAND_CONV INT_POLY_CONV))) THEN REWRITE_TAC[INT_ARITH `x:int = y + --z <=> x + z = y`] THEN REWRITE_TAC[INT_OF_NUM_ADD; INT_OF_NUM_EQ] THEN ONCE_REWRITE_TAC[CONJ_SYM] THEN ASM_REWRITE_TAC[UNWIND_THM2] THEN @@ -486,7 +486,7 @@ let MULTIPLICITY_UNIQUE = prove ASM_MESON_TAC[REAL_CONTINUOUS_ON_EQ_REAL_CONTINUOUS_AT; REAL_OPEN_UNIV; IN_UNIV]]]]) in REPEAT STRIP_TAC THEN REWRITE_TAC[multiplicity] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SELECT_UNIQUE THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SELECT_UNIQUE THEN X_GEN_TAC `j:num` THEN EQ_TAC THEN ASM_SIMP_TAC[LEFT_IMP_EXISTS_THM] THENL [REPEAT GEN_TAC THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN @@ -507,7 +507,7 @@ let MULTIPLICITY_WORKS = prove !x. sum(0..n) (\i. a i * x pow i) = (x - r) pow multiplicity (\x. sum(0..n) (\i. a i * x pow i)) r * sum(0..m) (\i. b i * x pow i)`, - REWRITE_TAC[multiplicity] THEN CONV_TAC(ONCE_DEPTH_CONV SELECT_CONV) THEN + REWRITE_TAC[multiplicity] THEN (CONV_TAC "(ONCE_DEPTH_CONV SELECT_CONV)") (ONCE_DEPTH_CONV SELECT_CONV) THEN GEN_TAC THEN MATCH_MP_TAC num_WF THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN X_GEN_TAC `a:num->real` THEN ASM_CASES_TAC `(a:num->real) n = &0` THENL @@ -558,7 +558,7 @@ let MULTIPLICITY_OTHER_ROOT = prove ==> multiplicity (\x. (x - r) pow m * sum(0..n) (\i. a i * x pow i)) s = multiplicity (\x. sum(0..n) (\i. a i * x pow i)) s`, REPEAT GEN_TAC THEN DISCH_THEN(CONJUNCTS_THEN ASSUME_TAC) THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC MULTIPLICITY_UNIQUE THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MULTIPLICITY_UNIQUE THEN REWRITE_TAC[] THEN MP_TAC(ISPECL [`s:real`; `n:num`; `a:num->real`] MULTIPLICITY_WORKS) THEN @@ -736,7 +736,7 @@ let VARIATION_POSITIVE_ROOT_MULTIPLICITY_FACTOR = prove DISCH_TAC THEN SUBGOAL_THEN `multiplicity (\x. sum(0..n) (\i. a i * x pow i)) r = k` (fun th -> ASM_REWRITE_TAC[th]) THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC MULTIPLICITY_UNIQUE THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MULTIPLICITY_UNIQUE THEN MAP_EVERY EXISTS_TAC [`b:num->real`; `m:num`] THEN ASM_REWRITE_TAC[]);; (* ------------------------------------------------------------------------- *) @@ -827,7 +827,7 @@ let DESCARTES_RULE_OF_SIGNS = prove MATCH_MP_TAC NSUM_EQ THEN X_GEN_TAC `s:real` THEN REWRITE_TAC[IN_ELIM_THM] THEN STRIP_TAC THEN FIRST_X_ASSUM(fun t -> GEN_REWRITE_TAC (RAND_CONV o LAND_CONV) [t]) THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC MULTIPLICITY_OTHER_ROOT THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MULTIPLICITY_OTHER_ROOT THEN REWRITE_TAC[MESON[] `(?i. P i /\ Q i) <=> ~(!i. P i ==> ~Q i)`] THEN REPEAT STRIP_TAC THEN UNDISCH_TAC `~(sum (0..m) (\j. b j * r pow j) = &0)` THEN ASM_SIMP_TAC[] THEN diff --git a/100/dirichlet.ml b/100/dirichlet.ml index 62e80b1f..ca15f11e 100644 --- a/100/dirichlet.ml +++ b/100/dirichlet.ml @@ -44,7 +44,7 @@ let DECREASING_LOG_OVER_N = prove [X_GEN_TAC `w:complex` THEN STRIP_TAC THEN COMPLEX_DIFF_TAC THEN SUBGOAL_THEN `&0 < Re w` MP_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN ASM_CASES_TAC `w = Cx(&0)` THEN ASM_SIMP_TAC[RE_CX; REAL_LT_REFL] THEN - DISCH_TAC THEN UNDISCH_TAC `~(w = Cx(&0))` THEN CONV_TAC COMPLEX_FIELD; + DISCH_TAC THEN UNDISCH_TAC `~(w = Cx(&0))` THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; DISCH_THEN(X_CHOOSE_THEN `z:complex` (CONJUNCTS_THEN2 STRIP_ASSUME_TAC MP_TAC)) THEN SUBGOAL_THEN `&0 < &n /\ &0 < &n + &1` STRIP_ASSUME_TAC THENL @@ -76,7 +76,7 @@ let EXISTS_COMPLEX_ROOT_NONTRIVIAL = prove FIRST_ASSUM(ASSUME_TAC o MATCH_MP(ARITH_RULE `2 <= n ==> ~(n = 0)`)) THEN ASM_CASES_TAC `a = Cx(&0)` THENL [EXISTS_TAC `Cx(&0)` THEN ASM_REWRITE_TAC[COMPLEX_POW_ZERO] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN ASM_CASES_TAC `a = Cx(&1)` THENL [EXISTS_TAC `cexp(Cx(&2) * Cx pi * ii * Cx(&1 / &n))` THEN @@ -114,7 +114,7 @@ let DIRICHLET_CHARACTER_EQ_1 = prove (`!d c. dirichlet_character d c ==> c(1) = Cx(&1)`, REPEAT STRIP_TAC THEN FIRST_ASSUM(MP_TAC o MATCH_MP DIRICHLET_CHARACTER_MUL) THEN - DISCH_THEN(MP_TAC o repeat (SPEC `1`)) THEN CONV_TAC NUM_REDUCE_CONV THEN + DISCH_THEN(MP_TAC o repeat (SPEC `1`)) THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[COMPLEX_FIELD `a = a * a <=> a = Cx(&0) \/ a = Cx(&1)`] THEN ASM_SIMP_TAC[DIRICHLET_CHARACTER_EQ_0] THEN MESON_TAC[COPRIME_1; COPRIME_SYM]);; @@ -186,7 +186,7 @@ let DIRICHLET_CHARACTER_CHI_0 = prove REWRITE_TAC[dirichlet_character; chi_0] THEN REWRITE_TAC[NUMBER_RULE `coprime(n + d,d) <=> coprime(n,d)`; NUMBER_RULE `coprime(m * n,d) <=> coprime(m,d) /\ coprime(n,d)`] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let DIRICHLET_CHARACTER_EQ_PRINCIPAL = prove (`!d c. dirichlet_character d c @@ -216,8 +216,8 @@ let DIRICHLET_CHARACTER_1 = prove `x = x * x <=> x = Cx(&0) \/ x = Cx(&1)`] THEN DISCH_TAC THEN INDUCT_TAC THEN ASM_REWRITE_TAC[ADD1] THEN REPEAT(FIRST_X_ASSUM(MP_TAC o SPEC `0`)) THEN ASM_REWRITE_TAC[ARITH] THEN - CONV_TAC COMPLEX_RING; - DISCH_TAC THEN ASM_REWRITE_TAC[] THEN CONV_TAC COMPLEX_RING]);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; + DISCH_TAC THEN ASM_REWRITE_TAC[] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING]);; let DIRICHLET_CHARACTER_NONPRINCIPAL_NONTRIVIAL = prove (`!d c. dirichlet_character d c /\ ~(c = chi_0 d) @@ -226,7 +226,7 @@ let DIRICHLET_CHARACTER_NONPRINCIPAL_NONTRIVIAL = prove ASM_REWRITE_TAC[DIRICHLET_CHARACTER_0; TAUT `~(p /\ ~p)`] THEN ASM_CASES_TAC `d = 1` THEN ASM_REWRITE_TAC[DIRICHLET_CHARACTER_1; chi_0; FUN_EQ_THM; COPRIME_1] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; let DIRICHLET_CHARACTER_ZEROSUM = prove (`!d c. dirichlet_character d c /\ ~(c = chi_0 d) @@ -245,7 +245,7 @@ let DIRICHLET_CHARACTER_ZEROSUM = prove ==> vsum s f = vsum s g`) THEN EXISTS_TAC `{n | coprime(n,d) /\ n < d}` THEN REPEAT(CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN SIMP_TAC[SUBSET; IN_NUMSEG; LT_IMP_LE; IN_ELIM_THM] THEN CONJ_TAC THEN X_GEN_TAC `r:num` THENL [ASM_CASES_TAC `r = 0` THENL [ALL_TAC; ASM_ARITH_TAC] THEN @@ -291,7 +291,7 @@ let DIRICHLET_CHARACTER_SUM_MOD = prove FIRST_ASSUM(SUBST1_TAC o SYM o MATCH_MP DIRICHLET_CHARACTER_ZEROSUM) THEN MATCH_MP_TAC VSUM_EQ THEN REPEAT STRIP_TAC THEN REWRITE_TAC[] THEN MATCH_MP_TAC DIRICHLET_CHARACTER_CONG THEN EXISTS_TAC `d:num` THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NUMBER_RULE);; + ASM_REWRITE_TAC[] THEN (CONV_TAC "NUMBER_RULE") NUMBER_RULE);; (* ------------------------------------------------------------------------- *) (* Finiteness of the set of characters (later we could get size = phi(d)). *) @@ -541,13 +541,13 @@ let CHARACTER_EXTEND_FROM_SUBGROUP = prove CONJ_TAC THENL [ASM_MESON_TAC[COPRIME_EXP; COPRIME_SYM]; ALL_TAC] THEN UNDISCH_TAC `(x * a EXP k == y * a EXP (k + i)) (mod d)` THEN REWRITE_TAC[EXP_ADD] THEN UNDISCH_TAC `(y * z == 1) (mod d)` THEN - CONV_TAC NUMBER_RULE; + (CONV_TAC "NUMBER_RULE") NUMBER_RULE; ALL_TAC] THEN REWRITE_TAC[divides] THEN DISCH_THEN(X_CHOOSE_THEN `r:num` SUBST_ALL_TAC) THEN ASM_REWRITE_TAC[GSYM COMPLEX_POW_POW] THEN MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `f((y * (am EXP r) MOD d) MOD d):complex` THEN CONJ_TAC THENL - [AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN ASM_SIMP_TAC[CONG_MOD_LT] THEN + [AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ASM_SIMP_TAC[CONG_MOD_LT] THEN MATCH_MP_TAC CONG_TRANS THEN EXISTS_TAC `y * (a EXP m) EXP r` THEN CONJ_TAC THENL [MATCH_MP_TAC CONG_MULT THEN @@ -557,7 +557,7 @@ let CHARACTER_EXTEND_FROM_SUBGROUP = prove MATCH_MP_TAC CONG_MULT_LCANCEL THEN EXISTS_TAC `a EXP k` THEN CONJ_TAC THENL [ASM_MESON_TAC[COPRIME_EXP; COPRIME_SYM]; ALL_TAC] THEN UNDISCH_TAC `(x * a EXP k == y * a EXP (k + m * r)) (mod d)` THEN - REWRITE_TAC[EXP_ADD; EXP_EXP] THEN CONV_TAC NUMBER_RULE; + REWRITE_TAC[EXP_ADD; EXP_EXP] THEN (CONV_TAC "NUMBER_RULE") NUMBER_RULE; ALL_TAC] THEN ASM_SIMP_TAC[] THEN AP_TERM_TAC THEN SPEC_TAC(`r:num`,`s:num`) THEN INDUCT_TAC THEN @@ -568,7 +568,7 @@ let CHARACTER_EXTEND_FROM_SUBGROUP = prove ASM_SIMP_TAC[MULT_CLAUSES; MOD_LT] THEN UNDISCH_TAC `!x:num. x IN h ==> ~(f x = Cx (&0))` THEN DISCH_THEN(MP_TAC o SPEC `1`) THEN ASM_REWRITE_TAC[] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `f((am * (am EXP s) MOD d) MOD d):complex` THEN CONJ_TAC THENL @@ -597,7 +597,7 @@ let CHARACTER_EXTEND_FROM_SUBGROUP = prove UNDISCH_TAC `!x y. x IN h /\ y IN h ==> f ((x * y) MOD d) = f x * f y` THEN DISCH_THEN(MP_TAC o SPECL [`1`; `1`]) THEN ASM_SIMP_TAC[MULT_CLAUSES; MOD_LT] THEN - UNDISCH_TAC `~(z = Cx(&1))` THEN CONV_TAC COMPLEX_RING; + UNDISCH_TAC `~(z = Cx(&1))` THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; REWRITE_TAC[IN_ELIM_THM; IN_UNIV] THEN MAP_EVERY EXISTS_TAC [`1`; `0`] THEN ASM_SIMP_TAC[EXP; MULT_CLAUSES; MOD_LT]; @@ -665,7 +665,7 @@ let DIRICHLET_CHARACTER_DISCRIMINATOR = prove [ALL_TAC; EXISTS_TAC `chi_0 d` THEN ASM_REWRITE_TAC[DIRICHLET_CHARACTER_CHI_0; chi_0] THEN - CONV_TAC COMPLEX_RING] THEN + (CONV_TAC "COMPLEX_RING") COMPLEX_RING] THEN MP_TAC(ISPECL [`\n:num. Cx(&1)`; `{1}`; `n MOD d`; `d:num`] CHARACTER_EXTEND_FROM_SUBGROUP) THEN ASM_SIMP_TAC[IN_SING; IN_ELIM_THM; IN_DIFF] THEN ANTS_TAC THENL @@ -750,7 +750,7 @@ let DIRICHLET_CHARACTER_DISCRIMINATOR = prove REPEAT CONJ_TAC THEN X_GEN_TAC `x:num` THENL [REWRITE_TAC[NUMBER_RULE `coprime(x + d:num,d) <=> coprime(x,d)`] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN AP_TERM_TAC THEN - ASM_SIMP_TAC[GSYM CONG; LE_1] THEN CONV_TAC NUMBER_RULE; + ASM_SIMP_TAC[GSYM CONG; LE_1] THEN (CONV_TAC "NUMBER_RULE") NUMBER_RULE; COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_SIMP_TAC[COPRIME_MOD; DIVISION; LE_1]; @@ -1230,7 +1230,7 @@ let BOUNDED_DIRICHLET_MANGOLDT_PRINCIPAL_LEMMA = prove GEN_REWRITE_TAC RAND_CONV [GSYM REAL_MUL_RID] THEN ASM_SIMP_TAC[REAL_LE_LMUL_EQ; LOG_POS_LT; REAL_OF_NUM_LT] THEN SIMP_TAC[GSYM REAL_POW_INV; SUM_GP; REAL_INV_EQ_1; REAL_OF_NUM_EQ] THEN - COND_CASES_TAC THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + COND_CASES_TAC THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN COND_CASES_TAC THENL [ASM_ARITH_TAC; ALL_TAC] THEN ASM_SIMP_TAC[REAL_LE_LDIV_EQ; REAL_SUB_LT; REAL_LT_LDIV_EQ; REAL_MUL_LID; REAL_OF_NUM_LT; LE_1] THEN @@ -1265,7 +1265,7 @@ let BOUNDED_DIRICHLET_MANGOLDT_PRINCIPAL_LEMMA = prove REWRITE_TAC[TAUT `(if a then &0 else if b then x else &0) = (if ~a /\ b then x else &0)`] THEN SIMP_TAC[GSYM real_div; GSYM SUM_RESTRICT_SET; FINITE_NUMSEG] THEN - MATCH_MP_TAC REAL_EQ_IMP_LE THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC REAL_EQ_IMP_LE THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_EQ_GENERAL THEN EXISTS_TAC `\(p,k). p EXP k` THEN REWRITE_TAC[EXISTS_UNIQUE; EXISTS_PAIR_THM; FORALL_PAIR_THM] THEN REWRITE_TAC[IN_ELIM_PAIR_THM] THEN @@ -1354,7 +1354,7 @@ let AGM_SPECIAL = prove REWRITE_TAC[REAL_POW_POW] THEN ONCE_REWRITE_TAC[MULT_SYM] THEN SUBGOAL_THEN `2 * (n * (n + 1)) DIV 2 = n * (n + 1)` SUBST1_TAC THENL [SUBGOAL_THEN `EVEN(n * (n + 1))` MP_TAC THENL - [REWRITE_TAC[EVEN_ADD; EVEN_MULT; ARITH_EVEN] THEN CONV_TAC TAUT; + [REWRITE_TAC[EVEN_ADD; EVEN_MULT; ARITH_EVEN] THEN (CONV_TAC "TAUT") TAUT; SIMP_TAC[EVEN_EXISTS; LEFT_IMP_EXISTS_THM; DIV_MULT; ARITH]]; REWRITE_TAC[GSYM REAL_POW_POW] THEN DISCH_THEN(MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ_ALT] REAL_POW_LE2_REV)) THEN @@ -1487,7 +1487,7 @@ let LFUNCTION_NONZERO_REAL = prove REWRITE_TAC[GSYM COMPLEX_VEC_0; SUMMABLE_0] THEN ASM_SIMP_TAC[COMPLEX_VEC_0; COMPLEX_POW_ZERO; IN_FROM; ARITH_RULE `2 <= n ==> ~(n = 0)`] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN MATCH_MP_TAC SERIES_COMPARISON_COMPLEX THEN EXISTS_TAC `\n. Cx(&2 * norm(z:complex) pow n)` THEN @@ -1502,7 +1502,7 @@ let LFUNCTION_NONZERO_REAL = prove SIMP_TAC[REAL_MUL_LZERO; REAL_MUL_LID; REAL_ABS_POS; REAL_LE_MUL] THEN REWRITE_TAC[TAUT `(p ==> (if q then x else T)) <=> p /\ q ==> x`] THEN MP_TAC(SPECL [`norm(z:complex)`; `&1 / &2`] REAL_ARCH_POW_INV) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `N:num` THEN DISCH_TAC THEN X_GEN_TAC `n:num` THEN REWRITE_TAC[GE] THEN STRIP_TAC THEN REWRITE_TAC[REAL_ABS_MUL; REAL_ABS_NORM; REAL_ABS_NUM; REAL_ABS_POW] THEN @@ -1511,10 +1511,10 @@ let LFUNCTION_NONZERO_REAL = prove MATCH_MP_TAC REAL_LE_LMUL THEN SIMP_TAC[REAL_POW_LE; NORM_POS_LE] THEN REWRITE_TAC[COMPLEX_NORM_INV] THEN SUBST1_TAC(REAL_ARITH `&2 = inv(&1 / &2)`) THEN - MATCH_MP_TAC REAL_LE_INV2 THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_LE_INV2 THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(NORM_ARITH `norm(z) <= norm(w) - h ==> h <= norm(w - z)`) THEN - REWRITE_TAC[COMPLEX_NORM_CX] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[COMPLEX_NORM_CX] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `norm(z:complex) pow N` THEN ASM_SIMP_TAC[REAL_LT_IMP_LE] THEN REWRITE_TAC[COMPLEX_NORM_POW] THEN MATCH_MP_TAC REAL_POW_MONO_INV THEN @@ -1683,7 +1683,7 @@ let LFUNCTION_NONZERO_REAL = prove ALL_TAC] THEN MATCH_MP_TAC SUM_LE_NUMSEG THEN X_GEN_TAC `k:num` THEN STRIP_TAC THEN REWRITE_TAC[] THEN MATCH_MP_TAC REAL_LE_MUL2 THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL [MP_TAC(SPECL [`d:num`; `c:num->complex`; `p:num`; `k:num`] DIRICHLET_CHARACTER_DIVISORSUM_EQ_1) THEN ASM_SIMP_TAC[ETA_AX; RE_CX; REAL_LE_REFL]; @@ -1845,7 +1845,7 @@ let LFUNCTION_NONZERO_NONPRINCIPAL = prove (`{a,b,c} SUBSET s ==> FINITE s ==> !f. sum s f = sum (s DIFF {a,b,c}) f + sum {a,b,c} f`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_UNION_EQ THEN ASM_REWRITE_TAC[] THEN ASM SET_TAC[]) in GEN_TAC THEN ASM_CASES_TAC `d = 0` THENL [ASM_MESON_TAC[DIRICHLET_CHARACTER_0]; ALL_TAC] THEN @@ -1986,7 +1986,7 @@ let DIRICHLET_MANGOLDT = prove MP_TAC(SPECL [`d:num`; `l:num`] BOUNDED_SUM_OVER_DIRICHLET_CHARACTERS) THEN ANTS_TAC THENL [ASM_REWRITE_TAC[] THEN UNDISCH_TAC `(k * l == 1) (mod d)` THEN - CONV_TAC NUMBER_RULE; + (CONV_TAC "NUMBER_RULE") NUMBER_RULE; ALL_TAC] THEN MATCH_MP_TAC EQ_IMP THEN AP_TERM_TAC THEN MATCH_MP_TAC(SET_RULE @@ -2004,7 +2004,7 @@ let DIRICHLET_MANGOLDT = prove SIMP_TAC[VSUM_COMPLEX_RMUL; FINITE_DIRICHLET_CHARACTERS] THEN ASM_SIMP_TAC[DIRICHLET_CHARACTER_SUM_OVER_CHARACTERS] THEN SUBGOAL_THEN `(l * n == 1) (mod d) <=> (n == k) (mod d)` SUBST1_TAC THENL - [UNDISCH_TAC `(k * l == 1) (mod d)` THEN CONV_TAC NUMBER_RULE; + [UNDISCH_TAC `(k * l == 1) (mod d)` THEN (CONV_TAC "NUMBER_RULE") NUMBER_RULE; COND_CASES_TAC THEN ASM_REWRITE_TAC[COMPLEX_MUL_LZERO; COMPLEX_VEC_0]]);; let DIRICHLET_MANGOLDT_EXPLICIT = prove diff --git a/100/div3.ml b/100/div3.ml index 1a6bea26..3c90752f 100644 --- a/100/div3.ml +++ b/100/div3.ml @@ -10,7 +10,7 @@ let EXP_10_CONG_3 = prove INDUCT_TAC THEN REWRITE_TAC[EXP; CONG_REFL] THEN MATCH_MP_TAC CONG_TRANS THEN EXISTS_TAC `10 * 1` THEN CONJ_TAC THEN ASM_SIMP_TAC[CONG_MULT; CONG_REFL] THEN - SIMP_TAC[CONG; ARITH] THEN CONV_TAC NUM_REDUCE_CONV);; + SIMP_TAC[CONG; ARITH] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV);; let SUM_CONG_3 = prove (`!d n. (nsum(0..n) (\i. 10 EXP i * d(i)) == nsum(0..n) (\i. d i)) (mod 3)`, diff --git a/100/divharmonic.ml b/100/divharmonic.ml index 71e11e61..b88d0caf 100644 --- a/100/divharmonic.ml +++ b/100/divharmonic.ml @@ -8,7 +8,7 @@ let HARMONIC_DIVERGES = prove (`~(?s. !e. &0 < e ==> ?N. !n. N <= n ==> abs(sum(1..n) (\i. &1 / &i) - s) < e)`, STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o SPEC `&1 / &4`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN STRIP_TAC THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN STRIP_TAC THEN FIRST_ASSUM(MP_TAC o SPEC `N + 1`) THEN REWRITE_TAC[LE_ADD] THEN FIRST_X_ASSUM(MP_TAC o SPEC `(N + 1) + (N + 1)`) THEN ANTS_TAC THENL [ARITH_TAC; ALL_TAC] THEN @@ -21,7 +21,7 @@ let HARMONIC_DIVERGES = prove CONJ_TAC THENL [SIMP_TAC[SUM_CONST_NUMSEG; ARITH_RULE `(2 * x + 1) - (x + 1) = x`] THEN REWRITE_TAC[GSYM REAL_OF_NUM_MUL; GSYM REAL_OF_NUM_ADD] THEN - MP_TAC(SPEC `n:num` REAL_POS) THEN CONV_TAC REAL_FIELD; + MP_TAC(SPEC `n:num` REAL_POS) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; MATCH_MP_TAC SUM_LE_NUMSEG THEN REPEAT STRIP_TAC THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN MATCH_MP_TAC REAL_LE_INV2 THEN POP_ASSUM_LIST(MP_TAC o end_itlist CONJ) THEN @@ -45,7 +45,7 @@ let HARMONIC_LEMMA = prove (`!m. sum(1..2 EXP m) (\n. &1 / &n) >= &m / &2`, REWRITE_TAC[real_ge] THEN INDUCT_TAC THEN REWRITE_TAC[EXP; MULT_2; SUM_SING_NUMSEG] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SIMP_TAC[SUM_ADD_SPLIT; ARITH_RULE `1 <= 2 EXP m + 1`] THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (ARITH_RULE `a <= x ==> b - a <= y ==> b <= x + y`)) THEN @@ -57,7 +57,7 @@ let HARMONIC_LEMMA = prove REWRITE_TAC[GSYM REAL_OF_NUM_MUL] THEN MP_TAC(SPECL [`2`; `m:num`] EXP_EQ_0) THEN REWRITE_TAC[ARITH] THEN REWRITE_TAC[GSYM REAL_OF_NUM_EQ] THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; MATCH_MP_TAC SUM_LE_NUMSEG THEN REPEAT STRIP_TAC THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN MATCH_MP_TAC REAL_LE_INV2 THEN POP_ASSUM_LIST(MP_TAC o end_itlist CONJ) THEN diff --git a/100/e_is_transcendental.ml b/100/e_is_transcendental.ml index 65145464..619587f1 100644 --- a/100/e_is_transcendental.ml +++ b/100/e_is_transcendental.ml @@ -298,7 +298,7 @@ let SOD_POLYDIFF_THEOREM = prove( (ONCE_REWRITE_TAC [SODN_POLY_DIFF_COMM]) THEN (ONCE_REWRITE_TAC [SODN]) THEN (STRIP_TAC) THEN - (CONV_TAC (RAND_CONV (ONCE_REWRITE_CONV [NUMSEG_LENGTH_POLYDIFF_LEMMA]))) THEN + ((CONV_TAC "(RAND_CONV (ONCE_REWRITE_CONV [NUMSEG_LENGTH_POLYDIFF_LEMMA]))") (RAND_CONV (ONCE_REWRITE_CONV [NUMSEG_LENGTH_POLYDIFF_LEMMA]))) THEN (SPEC_TAC (`f:(real)list`,`f:(real)list`)) THEN (LIST_INDUCT_TAC) THENL [ (SIMP_TAC [poly_diff]) THEN @@ -308,7 +308,7 @@ let SOD_POLYDIFF_THEOREM = prove( ; (SIMP_TAC [LENGTH_POLY_DIFF]) THEN (SIMP_TAC [LENGTH;PRE]) THEN - (CONV_TAC (RAND_CONV (ONCE_REWRITE_CONV [SUC_ITERATE_POLYADD_LEMMA]))) THEN + ((CONV_TAC "(RAND_CONV (ONCE_REWRITE_CONV [SUC_ITERATE_POLYADD_LEMMA]))") (RAND_CONV (ONCE_REWRITE_CONV [SUC_ITERATE_POLYADD_LEMMA]))) THEN (SIMP_TAC [LENGTH;PRE]) THEN (SIMP_TAC [GSYM SODN]) THEN (ONCE_REWRITE_TAC [GSYM SODN]) THEN @@ -869,7 +869,7 @@ let PLANETMATH_EQN_4 = prove( (ONCE_REWRITE_TAC [GSYM new2]) THEN (BETA_TAC) THEN (ONCE_REWRITE_TAC [lem001]) THEN - (CONV_TAC ((RAND_CONV o ABS_CONV o RATOR_CONV o RAND_CONV o RATOR_CONV) (PURE_ONCE_REWRITE_CONV [lem6]))) THEN + ((CONV_TAC "((RAND_CONV o ABS_CONV o RATOR_CONV o RAND_CONV o RATOR_CONV) (PURE_ONCE_REWRITE_CONV [lem6]))") ((RAND_CONV o ABS_CONV o RATOR_CONV o RAND_CONV o RATOR_CONV) (PURE_ONCE_REWRITE_CONV [lem6]))) THEN (ONCE_REWRITE_TAC [REAL_ARITH `(A:real) + B - A = B`]) THEN (ONCE_REWRITE_TAC [REAL_ARITH `(EL 0 c) * (poly (SOD f) (&0)) = (EL 0 c) * (poly (SOD f) (&0)) * (&1)`]) THEN (ONCE_REWRITE_TAC [GSYM REAL_EXP_0]) THEN @@ -1208,7 +1208,7 @@ let JESSE_POW_LEMMA = prove( `(p:num) > 1 ==> !x.real_pow x p = x * (real_pow x (p-1))`, let c0 = UNDISCH (ARITH_RULE `(p:num) > 1 ==> p = SUC (p - 1) `) in STRIP_TAC THEN STRIP_TAC THEN - (CONV_TAC (RATOR_CONV (ONCE_REWRITE_CONV [c0]))) THEN + ((CONV_TAC "(RATOR_CONV (ONCE_REWRITE_CONV [c0]))") (RATOR_CONV (ONCE_REWRITE_CONV [c0]))) THEN (SIMP_TAC [real_pow]) ) let JESSE_REAL_ABS_LE = prove( @@ -1579,7 +1579,7 @@ let POLY_MUL_ITER_HD_FACTORIAL = prove( (ONCE_REWRITE_TAC [lem04]) THEN (ONCE_REWRITE_TAC [HD]) THEN (ASM_SIMP_TAC []) THEN (ONCE_REWRITE_TAC [FACT]) THEN (ONCE_REWRITE_TAC [GSYM REAL_OF_NUM_MUL]) THEN - (CONV_TAC (RATOR_CONV (ONCE_REWRITE_CONV [lem05]))) THEN REAL_ARITH_TAC + ((CONV_TAC "(RATOR_CONV (ONCE_REWRITE_CONV [lem05]))") (RATOR_CONV (ONCE_REWRITE_CONV [lem05]))) THEN REAL_ARITH_TAC ] ) let PLANETMATH_THM_5_1 = prove( @@ -1762,7 +1762,7 @@ let SATURDAY_LEMMA = prove( let lem06 = SIMP_RULE [UNDISCH (ARITH_RULE `p > 1 ==> ~(p = 0)`)] lem05 in let lem07 = GSYM (MP lem04 lem06) in (REPEAT STRIP_TAC) THEN - (CONV_TAC (RATOR_CONV (ONCE_REWRITE_CONV [GSYM REAL_MUL_LID]))) THEN + ((CONV_TAC "(RATOR_CONV (ONCE_REWRITE_CONV [GSYM REAL_MUL_LID]))") (RATOR_CONV (ONCE_REWRITE_CONV [GSYM REAL_MUL_LID]))) THEN (ONCE_REWRITE_TAC [lem07]) THEN (ONCE_REWRITE_TAC [real_div]) THEN (ONCE_REWRITE_TAC [REAL_ARITH `((x1:real) * x2) * x * (x3 * x4) = x * x1 * (x3 * (x2 * x4))`]) THEN @@ -2881,7 +2881,7 @@ let HAMMS_LEMMA = prove( let erica28 = UNDISCH (ARITH_RULE `n = PRE (LENGTH (c:(real)list)) ==> ((n > 0) <=> (LENGTH c) > 1)`) in let erica29 = UNDISCH (ONCE_REWRITE_RULE [erica28] (DISCH `n > 0` (erica25))) in let erica30 = UNDISCH (ONCE_REWRITE_RULE [erica28] (DISCH `n > 0` (erica21))) in - (CONV_TAC NNF_CONV) THEN + ((CONV_TAC "NNF_CONV") NNF_CONV) THEN (REPEAT STRIP_TAC) THEN (ASM_MESON_TAC [DISCH_ALL erica29;DISCH_ALL erica30]) ) diff --git a/100/euler.ml b/100/euler.ml index 65a2dbb3..0197b756 100644 --- a/100/euler.ml +++ b/100/euler.ml @@ -119,7 +119,7 @@ let FINITE_PARTITIONS_LEMMA = prove p IN {p | (!i. p i <= n) /\ (!i. m <= i ==> p i = 0)}}` (fun t -> ASM_SIMP_TAC[t; FINITE_IMAGE; FINITE_PRODUCT; FINITE_NUMSEG]) THEN REWRITE_TAC[EXTENSION; IN_ELIM_THM; IN_IMAGE; EXISTS_PAIR_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN X_GEN_TAC `p:num->num` THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN X_GEN_TAC `p:num->num` THEN EQ_TAC THENL [STRIP_TAC THEN MAP_EVERY EXISTS_TAC [`(p:num->num) m`; `\i:num. if i = m then 0 else p i`] THEN @@ -262,7 +262,7 @@ let NSUM_DISTINCT_OF_ODD = prove [GSYM BINARYSUM_BITSET] THEN REWRITE_TAC[binarysum] THEN REWRITE_TAC[GSYM NSUM_RMUL] THEN SIMP_TAC[NSUM_NSUM_PRODUCT; FINITE_BITSET; FINITE_NUMSEG] THEN - CONV_TAC SYM_CONV THEN ONCE_REWRITE_TAC[GSYM NSUM_SUPPORT] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[GSYM NSUM_SUPPORT] THEN REWRITE_TAC[support; NEUTRAL_ADD] THEN SUBGOAL_THEN `{x | x IN {i,j | i IN 1..n /\ j IN bitset(p i)} /\ @@ -270,7 +270,7 @@ let NSUM_DISTINCT_OF_ODD = prove {i,j | i IN 1..n /\ j IN bitset(p i)}` SUBST1_TAC THENL [REWRITE_TAC[EXTENSION; FORALL_PAIR_THM; IN_ELIM_PAIR_THM; IN_ELIM_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[IN_NUMSEG; EXP_EQ_0; MULT_EQ_0; ARITH] THEN MESON_TAC[ARITH_RULE `~(1 <= 0)`]; ALL_TAC] THEN @@ -286,14 +286,14 @@ let NSUM_DISTINCT_OF_ODD = prove MATCH_MP_TAC NSUM_EQ_GENERAL THEN EXISTS_TAC `\(i,b). 2 EXP b * i` THEN SIMP_TAC[FORALL_PAIR_THM; IN_ELIM_PAIR_THM] THEN - CONV_TAC(TOP_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[ARITH_RULE `(if p then 1 else 0) * x * y = (if p then x * y else 0)`] THEN GEN_REWRITE_TAC (RAND_CONV o TOP_DEPTH_CONV) [IN_ELIM_THM] THEN ONCE_REWRITE_TAC[TAUT `(a /\ b) /\ c <=> a /\ b /\ (b ==> c)`] THEN SIMP_TAC[] THEN REWRITE_TAC[EXISTS_UNIQUE_THM] THEN REWRITE_TAC[FORALL_PAIR_THM; EXISTS_PAIR_THM; IN_ELIM_PAIR_THM] THEN - CONV_TAC(TOP_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[IN_ELIM_THM; IN_NUMSEG] THEN SUBGOAL_THEN `!i j. j IN bitset(p i) ==> ODD i` ASSUME_TAC THENL [ASM_MESON_TAC[BITSET_0; NOT_IN_EMPTY]; ALL_TAC] THEN @@ -338,7 +338,7 @@ let ODD_OF_DISTINCT = prove FIRST_X_ASSUM(fun th -> GEN_REWRITE_TAC RAND_CONV [SYM th]) THEN AP_TERM_TAC THEN ABS_TAC THEN AP_THM_TAC THEN ASM_MESON_TAC[DISTINCT_OF_ODD_OF_DISTINCT]] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC NSUM_DISTINCT_OF_ODD THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC NSUM_DISTINCT_OF_ODD THEN REWRITE_TAC[ODD_ODD_OF_DISTINCT] THEN CONJ_TAC THENL [ASM_MESON_TAC[SUPPORT_ODD_OF_DISTINCT]; ALL_TAC] THEN X_GEN_TAC `i:num` THEN REWRITE_TAC[odd_of_distinct] THEN diff --git a/100/feuerbach.ml b/100/feuerbach.ml index 5d9eb907..7ed69788 100644 --- a/100/feuerbach.ml +++ b/100/feuerbach.ml @@ -36,7 +36,7 @@ let CIRCLES_TANGENT = prove REAL_FIELD `&0 < r1 /\ &0 < r2 ==> r1 / (r1 + r2) - &1 = --r2 / (r1 + r2)`] THEN ASM_SIMP_TAC[real_abs; REAL_LT_IMP_LE; REAL_LT_ADD] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; X_GEN_TAC `y:real^2` THEN STRIP_TAC THEN SUBGOAL_THEN `(y:real^2) IN segment[c1,c2]` MP_TAC THENL [ASM_REWRITE_TAC[GSYM BETWEEN_IN_SEGMENT; between] THEN @@ -53,7 +53,7 @@ let CIRCLES_TANGENT = prove REWRITE_TAC[VECTOR_ARITH `--(a % (x - y)):real^N = a % (y - x)`] THEN ASM_REWRITE_TAC[NORM_MUL; GSYM dist; real_abs] THEN DISCH_TAC THEN AP_TERM_TAC THEN AP_THM_TAC THEN AP_TERM_TAC THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD]; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]; ASM_CASES_TAC `r1:real = r2` THENL [ASM_MESON_TAC[REAL_SUB_REFL; DIST_EQ_0]; DISJ2_TAC] THEN SUBGOAL_THEN `r1 < r2` ASSUME_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN @@ -66,7 +66,7 @@ let CIRCLES_TANGENT = prove ASM_SIMP_TAC[REAL_ABS_DIV; REAL_ABS_NEG; REAL_FIELD `r1 < r2 ==> &1 - r2 / (r2 - r1) = --(r1 / (r2 - r1))`] THEN ASM_SIMP_TAC[real_abs; REAL_SUB_LE; REAL_LT_IMP_LE] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; X_GEN_TAC `y:real^2` THEN STRIP_TAC THEN SUBGOAL_THEN `(c1:real^2) IN segment[c2,y]` MP_TAC THENL [ASM_REWRITE_TAC[GSYM BETWEEN_IN_SEGMENT; between] THEN @@ -93,7 +93,7 @@ let CIRCLES_TANGENT = prove `y:real^2 = c + u % v % (y - c) <=> (&1 - u * v) % (y - c) = vec 0`] THEN DISJ1_TAC THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD]]);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]]);; (* ------------------------------------------------------------------------- *) (* Feuerbach's theorem *) @@ -148,7 +148,7 @@ let FEUERBACH = prove REWRITE_TAC[DOT_2; DOT_LSUB; DOT_RSUB] THEN SIMP_TAC[VECTOR_ADD_COMPONENT; VECTOR_SUB_COMPONENT; VEC_COMPONENT; VECTOR_MUL_COMPONENT; BASIS_COMPONENT; DIMINDEX_2; ARITH] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* As a little bonus, verify that the circle passing through the *) @@ -182,7 +182,7 @@ let NINE_POINT_CIRCLE_1 = prove REWRITE_TAC[DOT_2; DOT_LSUB; DOT_RSUB] THEN REWRITE_TAC[VECTOR_ADD_COMPONENT; VECTOR_SUB_COMPONENT; VECTOR_MUL_COMPONENT; VEC_COMPONENT] THEN - SIMP_TAC[] THEN CONV_TAC REAL_RING);; + SIMP_TAC[] THEN (CONV_TAC "REAL_RING") REAL_RING);; let NINE_POINT_CIRCLE_2 = prove (`!a b c:real^2 mbc mac mab fbc fac fab ncenter nradius. @@ -210,4 +210,4 @@ let NINE_POINT_CIRCLE_2 = prove REWRITE_TAC[DOT_2; DOT_LSUB; DOT_RSUB] THEN REWRITE_TAC[VECTOR_ADD_COMPONENT; VECTOR_SUB_COMPONENT; VECTOR_MUL_COMPONENT; VEC_COMPONENT] THEN - SIMP_TAC[] THEN CONV_TAC REAL_RING);; + SIMP_TAC[] THEN (CONV_TAC "REAL_RING") REAL_RING);; diff --git a/100/four_squares.ml b/100/four_squares.ml index ed6f94cf..01db34a4 100644 --- a/100/four_squares.ml +++ b/100/four_squares.ml @@ -162,7 +162,7 @@ let PRIME_4X = prove let PRIME_XYZ_NONZERO = prove (`prime(x EXP 2 + 4 * y * z) ==> 0 < x /\ 0 < y /\ 0 < z`, - CONV_TAC CONTRAPOS_CONV THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[DE_MORGAN_THM; ARITH_RULE `~(0 < x) = (x = 0)`] THEN DISCH_THEN(REPEAT_TCL DISJ_CASES_THEN SUBST1_TAC) THEN REWRITE_TAC[EXP_2; MULT_CLAUSES; ADD_CLAUSES; PRIME_SQUARE; PRIME_4X]);; @@ -398,7 +398,7 @@ let LAGRANGE_LEMMA_ODD = prove `((x EXP 2 + a) MOD p + (y EXP 2 + 0) MOD p + 1) MOD p = (x EXP 2 + y EXP 2 + a + 1) MOD p` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC MOD_EQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MOD_EQ THEN EXISTS_TAC `(x EXP 2 + a) DIV p + (y EXP 2) DIV p` THEN REWRITE_TAC[ADD_CLAUSES] THEN MATCH_MP_TAC(ARITH_RULE @@ -500,7 +500,7 @@ let REAL_POS_ABS_MIDDLE = prove [MP_TAC(REAL_RAT_REDUCE_CONV `&0 <= &1 / &2`) THEN REAL_ARITH_TAC; DISCH_THEN(SUBST1_TAC o SYM) THEN REWRITE_TAC[REAL_ARITH `n - &1 + a = n - (&1 - a)`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REAL_ARITH_TAC]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REAL_ARITH_TAC]);; let REAL_RAT_ABS_MIDDLE = prove (`!m n p. (abs(&m / &p - &n) = &1 / &2) @@ -548,15 +548,15 @@ let AUBREY_LEMMA_4 = prove SUBGOAL_THEN `(EVEN(n' + p' + q' + r') <=> EVEN(N)) \/ (EVEN(n' + p' + q' + r' + 1) <=> EVEN(N))` DISJ_CASES_TAC THENL - [REWRITE_TAC[EVEN_ADD; ARITH_EVEN] THEN CONV_TAC TAUT; + [REWRITE_TAC[EVEN_ADD; ARITH_EVEN] THEN (CONV_TAC "TAUT") TAUT; EXISTS_TAC `r':num` THEN DISJ2_TAC THEN ASM_REWRITE_TAC[] THEN REWRITE_TAC[REAL_ARITH `(a + b) - a = b`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; EXISTS_TAC `r' + 1` THEN DISJ2_TAC THEN ASM_REWRITE_TAC[] THEN REWRITE_TAC[REAL_ARITH `(a + b) - a = b`] THEN REWRITE_TAC[GSYM REAL_OF_NUM_ADD] THEN REWRITE_TAC[REAL_ARITH `(a + b) - (a + c) = b - c`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]; ALL_TAC] THEN MAP_EVERY (fun t -> MP_TAC(SPEC t REAL_NUM_ROUND)) [`&n / &m`; `&p / &m`; `&q / &m`; `&r / &m`] THEN @@ -573,7 +573,7 @@ let AUBREY_LEMMA_4 = prove EXISTS_TAC `(&1 / &2) pow 2` THEN ONCE_REWRITE_TAC[SYM(SPEC `a - b` REAL_POW2_ABS)] THEN ASM_SIMP_TAC[REAL_POW_LE2; REAL_ABS_POS; REAL_LE_DIV; REAL_POS] THEN - CONV_TAC(RAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[] THEN + (CONV_TAC "(RAND_CONV REAL_RAT_REDUCE_CONV)") (RAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[] THEN REWRITE_TAC[REAL_POW_2; REAL_ARITH `(a * a = b * b) <=> ((a + b) * (a - b) = &0)`] THEN REWRITE_TAC[REAL_ENTIRE] THEN @@ -773,7 +773,7 @@ let AUBREY_LEMMA_4 = prove REWRITE_TAC[GSYM REAL_SUB_LDISTRIB] THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_RID] THEN MESON_TAC[REAL_INTEGER_CLOSURES]; ALL_TAC] THEN EXISTS_TAC `1` THEN REWRITE_TAC[ARITH_EQ] THEN @@ -839,11 +839,11 @@ let LAGRANGE_REAL_NUM = prove MATCH_MP_TAC num_WF THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN ASM_CASES_TAC `n = 0` THENL [REPEAT(EXISTS_TAC `0`) THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN ASM_CASES_TAC `n = 1` THENL [EXISTS_TAC `1` THEN REPEAT(EXISTS_TAC `0`) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV; + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN FIRST_ASSUM(MP_TAC o MATCH_MP PRIME_FACTOR) THEN DISCH_THEN(X_CHOOSE_THEN `p:num` STRIP_ASSUME_TAC) THEN @@ -878,7 +878,7 @@ let LAGRANGE_REAL_NUM = prove DISCH_THEN(MP_TAC o SPEC `1 EXP 2 + 0 EXP 2`) THEN REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN MAP_EVERY X_GEN_TAC [`q:num`; `x:num`; `y:num`] THEN STRIP_TAC THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN MATCH_MP_TAC AUBREY_THM_4 THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN MATCH_MP_TAC AUBREY_THM_4 THEN SUBGOAL_THEN `q * p < p EXP 2` MP_TAC THENL [ASM_REWRITE_TAC[EXP_2; MULT_CLAUSES; ADD_CLAUSES] THEN MATCH_MP_TAC(ARITH_RULE @@ -917,7 +917,7 @@ let LAGRANGE_REAL_NUM = prove REWRITE_TAC[REAL_EQ_MUL_RCANCEL] THEN REWRITE_TAC[REAL_INV_EQ_0; REAL_POW_EQ_0; REAL_OF_NUM_EQ; ASSUME `~(q = 0)`] THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN MATCH_MP_TAC lemma THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN MATCH_MP_TAC lemma THEN REWRITE_TAC[REAL_OF_NUM_MUL] THEN MESON_TAC[REAL_INTEGER_CLOSURES]);; (* ------------------------------------------------------------------------- *) diff --git a/100/fourier.ml b/100/fourier.ml index edb41712..2c55d0d0 100644 --- a/100/fourier.ml +++ b/100/fourier.ml @@ -71,7 +71,7 @@ let SQUARE_INTEGRABLE_LSPACE = prove let SQUARE_INTEGRABLE_0 = prove (`!s. (\x. &0) square_integrable_on s`, REWRITE_TAC[square_integrable_on; REAL_MEASURABLE_ON_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_INTEGRABLE_0]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_INTEGRABLE_0]);; let SQUARE_INTEGRABLE_NEG_EQ = prove (`!f s. (\x. --(f x)) square_integrable_on s <=> f square_integrable_on s`, @@ -101,7 +101,7 @@ let SQUARE_INTEGRABLE_IMP_ABSOLUTELY_INTEGRABLE_PRODUCT = prove MP_TAC(ISPECL [`IMAGE lift s`; `&2`; `&2`; `lift o f o drop`; `lift o g o drop`] LSPACE_INTEGRABLE_PRODUCT) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[GSYM SQUARE_INTEGRABLE_LSPACE; REAL_INTEGRABLE_ON] THEN REWRITE_TAC[o_DEF; NORM_REAL; GSYM drop; LIFT_DROP; REAL_ABS_MUL]);; @@ -158,7 +158,7 @@ let SQUARE_INTEGRABLE_IMP_ABSOLUTELY_INTEGRABLE = prove MATCH_MP_TAC LSPACE_MONO THEN EXISTS_TAC `&2` THEN ASM_REWRITE_TAC[GSYM REAL_MEASURABLE_MEASURABLE; GSYM SQUARE_INTEGRABLE_LSPACE] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let SQUARE_INTEGRABLE_IMP_INTEGRABLE = prove (`!f s. f square_integrable_on s /\ real_measurable s @@ -183,7 +183,7 @@ let L2NORM_LNORM = prove RULE_ASSUM_TAC(REWRITE_RULE[square_integrable_on]) THEN ASM_SIMP_TAC[GSYM REAL_POW_2; REAL_INTEGRAL] THEN REWRITE_TAC[NORM_REAL; o_DEF; GSYM drop; LIFT_DROP; RPOW_POW] THEN - REWRITE_TAC[REAL_POW2_ABS] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[REAL_POW2_ABS] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(GSYM RPOW_SQRT) THEN MATCH_MP_TAC INTEGRAL_DROP_POS THEN REWRITE_TAC[FORALL_IN_IMAGE; LIFT_DROP; REAL_LE_POW_2] THEN @@ -228,7 +228,7 @@ let SCHWARTZ_INEQUALITY_STRONG = prove REPEAT STRIP_TAC THEN MP_TAC(ISPECL [`IMAGE lift s`; `&2`; `&2`; `lift o f o drop`; `lift o g o drop`] HOELDER_INEQUALITY) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[GSYM SQUARE_INTEGRABLE_LSPACE; GSYM L2NORM_LNORM] THEN MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] REAL_LE_TRANS) THEN REWRITE_TAC[l2product] THEN @@ -262,7 +262,7 @@ let L2NORM_TRIANGLE = prove REPEAT STRIP_TAC THEN MP_TAC(ISPECL [`IMAGE lift s`; `&2`; `lift o f o drop`; `lift o g o drop`] LNORM_TRIANGLE) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[GSYM SQUARE_INTEGRABLE_LSPACE; L2NORM_LNORM; SQUARE_INTEGRABLE_ADD] THEN REWRITE_TAC[o_DEF; LIFT_ADD]);; @@ -386,7 +386,7 @@ let L2_SUMMABLE = prove `&2`; `IMAGE lift s`; `t:num->bool`] LSPACE_SUMMABLE) THEN ASM_REWRITE_TAC[GSYM SQUARE_INTEGRABLE_LSPACE] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ANTS_TAC THENL + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ANTS_TAC THENL [UNDISCH_TAC `real_summable t (\i. l2norm s (f i))` THEN MATCH_MP_TAC EQ_IMP THEN REWRITE_TAC[real_summable; real_sums; REALLIM_SEQUENTIALLY] THEN @@ -426,7 +426,7 @@ let L2_COMPLETE = prove MP_TAC(ISPECL [`\n:num. lift o f n o drop`; `&2`; `IMAGE lift s`] RIESZ_FISCHER) THEN ASM_SIMP_TAC[GSYM SQUARE_INTEGRABLE_LSPACE] THEN ANTS_TAC THENL - [CONV_TAC REAL_RAT_REDUCE_CONV; + [(CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; DISCH_THEN(X_CHOOSE_THEN `g:real^1->real^1` MP_TAC) THEN SUBGOAL_THEN `g = (lift o (drop o g o lift) o drop)` SUBST1_TAC THENL [REWRITE_TAC[FUN_EQ_THM; o_DEF; LIFT_DROP]; ALL_TAC] THEN @@ -519,7 +519,7 @@ let ORTHONORMAL_OPTIMAL_PARTIAL_SUM = prove sum t (\i. orthonormal_coefficient s w f i * w i x)) <= l2norm s (\x. f(x) - sum t (\i. a i * w i x))`, REPEAT STRIP_TAC THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [L2NORM_LE; SQUARE_INTEGRABLE_SUM; ETA_AX; FINITE_NUMSEG; GSYM L2NORM_POW_2; SQUARE_INTEGRABLE_LMUL; SQUARE_INTEGRABLE_SUB] THEN ASM_SIMP_TAC[ORTHONORMAL_PARTIAL_SUM_DIFF] THEN @@ -670,7 +670,7 @@ let FOURIER_SERIES_L2_SUMMABLE_STRONG = prove REWRITE_TAC[] THEN AP_TERM_TAC THEN REWRITE_TAC[FUN_EQ_THM] THEN REAL_ARITH_TAC; ALL_TAC] THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [L2PRODUCT_RADD; SQUARE_INTEGRABLE_SUB; SQUARE_INTEGRABLE_SUM; FINITE_INTER; FINITE_NUMSEG; SQUARE_INTEGRABLE_LMUL; ETA_AX] THEN GEN_REWRITE_TAC LAND_CONV [GSYM REAL_ADD_LID] THEN @@ -718,7 +718,7 @@ let HAS_REAL_INTEGRAL_SIN_NX = prove REWRITE_TAC[REAL_SUB_REFL] THEN DISCH_THEN MATCH_MP_TAC THEN X_GEN_TAC `x:real` THEN DISCH_TAC THEN REAL_DIFF_TAC THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE RAND_CONV [GSYM REAL_OF_NUM_EQ]) THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let REAL_INTEGRABLE_SIN_CX = prove (`!c. (\x. sin(c * x)) real_integrable_on real_interval[--pi,pi]`, @@ -747,7 +747,7 @@ let HAS_REAL_INTEGRAL_COS_NX = prove X_GEN_TAC `x:real` THEN DISCH_TAC THEN REAL_DIFF_TAC THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE RAND_CONV [GSYM REAL_OF_NUM_EQ]) THEN - CONV_TAC REAL_FIELD]);; + (CONV_TAC "REAL_FIELD") REAL_FIELD]);; let REAL_INTEGRABLE_COS_CX = prove (`!c. (\x. cos(c * x)) real_integrable_on real_interval[--pi,pi]`, @@ -1188,7 +1188,7 @@ let REAL_INTEGRAL_TWEAK_ENDS = prove ANTS_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `N:num` THEN STRIP_TAC THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN - COND_CASES_TAC THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + COND_CASES_TAC THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(TAUT `F ==> p`) THEN SUBGOAL_THEN `inv(&n + &1) <= inv(&N)` MP_TAC THENL [ALL_TAC; ASM_REAL_ARITH_TAC] THEN @@ -1212,7 +1212,7 @@ let REAL_INTEGRAL_TWEAK_ENDS = prove ASM_REWRITE_TAC[] THEN REPEAT CONJ_TAC THENL [MP_TAC(REAL_ARITH `&0 < &n + &1`) THEN SIMP_TAC[REAL_LE_ADDR; REAL_LT_INV_EQ; REAL_LT_IMP_LE] THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; SUBGOAL_THEN `inv(&n + &1) < b - a` MP_TAC THENL [ALL_TAC; REAL_ARITH_TAC] THEN MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `inv(&M)` THEN @@ -1695,7 +1695,7 @@ let RIEMANN_LEBESGUE_SIN_HALF = prove (\x. cos(&n * x) * sin(&1 / &2 * x) * f x))` THEN CONJ_TAC THENL [MATCH_MP_TAC ALWAYS_EVENTUALLY THEN X_GEN_TAC `n:num` THEN - REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_INTEGRAL_ADD; MATCH_MP_TAC REALLIM_NULL_ADD THEN CONJ_TAC THENL [MATCH_MP_TAC RIEMANN_LEBESGUE_SIN; @@ -1765,7 +1765,7 @@ let FOURIER_SUM_0 = prove EXISTS_TAC `sum (2 * 0..2 * (n DIV 2) + 1) (\k. fourier_coefficient f k * trigonometric_set k (&0))` THEN CONJ_TAC THENL - [CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC SYM_CONV THEN + [(CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN REWRITE_TAC[IN_NUMSEG; SUBSET; LE_0] THEN CONJ_TAC THENL [ARITH_TAC; GEN_TAC] THEN @@ -2394,7 +2394,7 @@ let FOURIER_SUM_OFFSET_DIRICHLET_KERNEL = prove MP_TAC(ISPECL [`f:real->real`; `--pi`; `pi`; `t:real`] ABSOLUTELY_REAL_INTEGRABLE_PERIODIC_OFFSET) THEN ASM_REWRITE_TAC[REAL_ARITH `pi - --pi = &2 * pi`] THEN DISCH_TAC THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [GSYM REAL_MUL_ASSOC; GSYM REAL_INTEGRAL_RMUL; GSYM REAL_INTEGRAL_ADD; ABSOLUTELY_INTEGRABLE_COS_PRODUCT; ABSOLUTELY_INTEGRABLE_SIN_PRODUCT; @@ -2450,7 +2450,7 @@ let FOURIER_SUM_LIMIT_DIRICHLET_KERNEL = prove ASM_SIMP_TAC[FOURIER_SUM_OFFSET_DIRICHLET_KERNEL] THEN SUBGOAL_THEN `l = (l * pi) / pi` (fun th -> GEN_REWRITE_TAC (LAND_CONV o ONCE_DEPTH_CONV) [th]) - THENL [MP_TAC PI_POS THEN CONV_TAC REAL_FIELD; ALL_TAC] THEN + THENL [MP_TAC PI_POS THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN SIMP_TAC[real_div; REALLIM_RMUL_EQ; PI_NZ; REAL_INV_EQ_0] THEN REWRITE_TAC[REAL_MUL_AC]);; @@ -2519,7 +2519,7 @@ let SIMPLE_FOURIER_CONVERGENCE_PERIODIC = prove let REAL_SIN_X2_ZEROS = prove (`{x | sin(x / &2) = &0} = IMAGE (\n. &2 * pi * n) integer`, - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_ELIM_THM; SIN_EQ_0; REAL_ARITH `y / &2 = n * pi <=> &2 * pi * n = y`] THEN REWRITE_TAC[PI_NZ; REAL_RING @@ -2545,9 +2545,9 @@ let HOELDER_FOURIER_CONVERGENCE_PERIODIC = prove STRIP_ASSUME_TAC THENL [MP_TAC(REAL_DIFF_CONV `((\x. sin(x / &2)) has_real_derivative w) (atreal (&0))`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[COS_0; REAL_MUL_RID] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[COS_0; REAL_MUL_RID] THEN REWRITE_TAC[HAS_REAL_DERIVATIVE_ATREAL; REALLIM_ATREAL] THEN - DISCH_THEN(MP_TAC o SPEC `&1 / &4`) THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + DISCH_THEN(MP_TAC o SPEC `&1 / &4`) THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[SIN_0; REAL_SUB_RZERO] THEN DISCH_THEN (X_CHOOSE_THEN `e:real` (CONJUNCTS_THEN2 ASSUME_TAC (LABEL_TAC "*"))) THEN EXISTS_TAC `min d e:real` THEN ASM_REWRITE_TAC[REAL_LT_MIN] THEN @@ -2570,7 +2570,7 @@ let HOELDER_FOURIER_CONVERGENCE_PERIODIC = prove abs(inv(sin(x / &2) / x)) * abs(f(x + t) - f t) / abs(x)` SUBST1_TAC THENL [REWRITE_TAC[REAL_ABS_DIV; REAL_ABS_INV] THEN - UNDISCH_TAC `~(x = &0)` THEN CONV_TAC REAL_FIELD; + UNDISCH_TAC `~(x = &0)` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN MATCH_MP_TAC REAL_LE_MUL2 THEN SIMP_TAC[REAL_ABS_POS; REAL_LE_DIV] THEN CONJ_TAC THENL @@ -2646,7 +2646,7 @@ let HOELDER_FOURIER_CONVERGENCE_PERIODIC = prove MATCH_MP_TAC REAL_CONTINUOUS_ON_RPOW THEN ASM_REAL_ARITH_TAC; REWRITE_TAC[IN_REAL_INTERVAL] THEN REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN - MAP_EVERY UNDISCH_TAC [`&0 < a`; `&0 < x`] THEN CONV_TAC REAL_FIELD]; + MAP_EVERY UNDISCH_TAC [`&0 < a`; `&0 < x`] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]; DISCH_THEN(ASSUME_TAC o MATCH_MP HAS_REAL_INTEGRAL_INTEGRABLE)] THEN MATCH_MP_TAC NONNEGATIVE_ABSOLUTELY_REAL_INTEGRABLE THEN SIMP_TAC[RPOW_POS_LE; REAL_ABS_POS] THEN @@ -2852,7 +2852,7 @@ let FOURIER_SUM_LIMIT_DIRICHLET_KERNEL_HALF = prove GEN_REWRITE_TAC LAND_CONV [REALLIM_NULL] THEN ASM_SIMP_TAC[FOURIER_SUM_OFFSET_DIRICHLET_KERNEL_HALF] THEN REWRITE_TAC[real_div] THEN MATCH_MP_TAC REALLIM_NULL_RMUL_EQ THEN - MP_TAC PI_POS THEN CONV_TAC REAL_FIELD);; + MP_TAC PI_POS THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; (* ------------------------------------------------------------------------- *) (* Localization principle: convergence only depends on values "nearby". *) @@ -2952,7 +2952,7 @@ let RIEMANN_LOCALIZATION_INTEGRAL = prove REAL_DIFFERENTIABLE_TAC; SUBGOAL_THEN `{x | sin(x / &2) = &0} = IMAGE (\n. &2 * pi * n) integer` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_ELIM_THM; SIN_EQ_0; REAL_ARITH `y / &2 = n * pi <=> &2 * pi * n = y`] THEN REWRITE_TAC[PI_NZ; REAL_RING @@ -3127,7 +3127,7 @@ let FOURIER_SUM_LIMIT_SINE_PART = prove (`!x. abs(sin(x) - x) <= abs(x) pow 3`, GEN_TAC THEN MP_TAC(ISPECL [`0`; `Cx x`] TAYLOR_CSIN) THEN REWRITE_TAC[VSUM_CLAUSES_NUMSEG; GSYM CX_SIN] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[complex_pow; COMPLEX_POW_1; COMPLEX_DIV_1; IM_CX] THEN REWRITE_TAC[GSYM CX_MUL; GSYM CX_SUB; COMPLEX_NORM_CX; REAL_ABS_0] THEN REWRITE_TAC[REAL_EXP_0; REAL_MUL_LID] THEN REAL_ARITH_TAC) in @@ -3604,9 +3604,9 @@ let REAL_INTEGRAL_SIN_OVER_X_BOUND = prove REPEAT STRIP_TAC THEN ASM_CASES_TAC `x <= &1` THENL [ALL_TAC; ASM_MESON_TAC[SIN_BOUNDS; REAL_LE_TOTAL; REAL_LE_TRANS]] THEN MP_TAC(ISPECL [`1`; `Cx x`] TAYLOR_CSIN) THEN - CONV_TAC(TOP_DEPTH_CONV num_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV num_CONV)") (TOP_DEPTH_CONV num_CONV) THEN REWRITE_TAC[VSUM_CLAUSES_NUMSEG; GSYM CX_SIN] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[GSYM CX_POW; GSYM CX_MUL; GSYM CX_DIV; GSYM CX_NEG; GSYM CX_ADD; GSYM CX_SUB] THEN REWRITE_TAC[COMPLEX_NORM_CX; IM_CX; REAL_ABS_0; REAL_EXP_0] THEN @@ -3856,7 +3856,7 @@ let FOURIER_JORDAN_BOUNDED_VARIATION = prove ASM_SIMP_TAC[REAL_NOT_LT; REAL_LT_IMP_LE] THEN DISCH_THEN(X_CHOOSE_TAC `l':real`) THEN SUBGOAL_THEN `l':real = l` SUBST_ALL_TAC THENL - [CONV_TAC SYM_CONV THEN ONCE_REWRITE_TAC[GSYM REAL_SUB_0] THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[GSYM REAL_SUB_0] THEN MATCH_MP_TAC(ISPEC `atreal (&0) within {x | &0 <= x}` REALLIM_UNIQUE) THEN EXISTS_TAC `h:real->real` THEN ASM_REWRITE_TAC[] THEN CONJ_TAC THENL @@ -4170,7 +4170,7 @@ let FEJER_KERNEL = prove ASM_SIMP_TAC[SUB_ADD; GSYM REAL_OF_NUM_SUB; LE_1; SUB_0] THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE RAND_CONV [GSYM REAL_OF_NUM_EQ]) THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN ASM_CASES_TAC `sin(x / &2) = &0` THENL [ASM_REWRITE_TAC[REAL_POW_ZERO; ARITH_EQ; REAL_MUL_RZERO; real_div; @@ -4341,7 +4341,7 @@ let HAS_REAL_INTEGRAL_FEJER_KERNEL = prove THENL [ASM_SIMP_TAC[SUM_CONST_NUMSEG; SUB_ADD; LE_1; SUB_0] THEN FIRST_ASSUM(MP_TAC o GEN_REWRITE_RULE RAND_CONV [GSYM REAL_OF_NUM_EQ]) THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; REWRITE_TAC[real_div] THEN MATCH_MP_TAC HAS_REAL_INTEGRAL_RMUL THEN MATCH_MP_TAC HAS_REAL_INTEGRAL_SUM THEN REWRITE_TAC[FINITE_NUMSEG; HAS_REAL_INTEGRAL_DIRICHLET_KERNEL]]);; @@ -4357,7 +4357,7 @@ let HAS_REAL_INTEGRAL_FEJER_KERNEL_HALF = prove THENL [ASM_SIMP_TAC[SUM_CONST_NUMSEG; SUB_ADD; LE_1; SUB_0] THEN FIRST_ASSUM(MP_TAC o GEN_REWRITE_RULE RAND_CONV [GSYM REAL_OF_NUM_EQ]) THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; REWRITE_TAC[real_div] THEN MATCH_MP_TAC HAS_REAL_INTEGRAL_RMUL THEN MATCH_MP_TAC HAS_REAL_INTEGRAL_SUM THEN REWRITE_TAC[GSYM real_div] THEN REWRITE_TAC[FINITE_NUMSEG; HAS_REAL_INTEGRAL_DIRICHLET_KERNEL_HALF]]);; diff --git a/100/friendship.ml b/100/friendship.ml index ffc33cd1..227a8f4c 100644 --- a/100/friendship.ml +++ b/100/friendship.ml @@ -80,7 +80,7 @@ let EQUIVALENCE_UNIFORM_PARTITION = prove SUBGOAL_THEN `CARD(s) = CARD {y | y IN s /\ (R:A->A->bool) a y} + CARD {y | y IN s /\ ~(R a y)}` (fun th -> ASM_SIMP_TAC[th; DIVIDES_ADD; DIVIDES_REFL]) THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC CARD_UNION_EQ THEN ASM SET_TAC[]);; + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CARD_UNION_EQ THEN ASM SET_TAC[]);; (* ------------------------------------------------------------------------- *) (* With explicit restricted quantification. *) @@ -404,7 +404,7 @@ let CARD_PATHCYCLES_STEP = prove MESON_TAC[ARITH_RULE `i < k ==> i < k + 2`]] THEN REWRITE_TAC[FUN_EQ_THM] THEN X_GEN_TAC `i:num` THEN ASM_CASES_TAC `i = k + 1` THEN ASM_REWRITE_TAC[] THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SELECT_UNIQUE THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SELECT_UNIQUE THEN UNDISCH_TAC `path r (k + 2) (x:num->A)` THEN REWRITE_TAC[path] THEN DISCH_THEN(MP_TAC o CONJUNCT1) THEN DISCH_THEN(fun th -> MP_TAC(SPEC `k:num` th) THEN @@ -564,7 +564,7 @@ let FRIENDSHIP = prove {q | friend (x:person) q})` THEN CONJ_TAC THENL [ALL_TAC; MATCH_MP_TAC CARD_SUBSET THEN ASM SET_TAC[]] THEN - MATCH_MP_TAC EQ_IMP_LE THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC EQ_IMP_LE THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CARD_IMAGE_INJ THEN ASM_REWRITE_TAC[IN_ELIM_THM] THEN MAP_EVERY X_GEN_TAC [`u1:person`; `u2:person`] THEN STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o SPECL @@ -679,7 +679,7 @@ let FRIENDSHIP = prove RULE_ASSUM_TAC(CONV_RULE NUM_REDUCE_CONV) THEN SUBGOAL_THEN `(:person) HAS_SIZE 3` MP_TAC THENL [ASM_REWRITE_TAC[HAS_SIZE]; ALL_TAC] THEN - CONV_TAC(LAND_CONV HAS_SIZE_CONV) THEN REWRITE_TAC[NOT_EXISTS_THM] THEN + (CONV_TAC "(LAND_CONV HAS_SIZE_CONV)") (LAND_CONV HAS_SIZE_CONV) THEN REWRITE_TAC[NOT_EXISTS_THM] THEN MAP_EVERY X_GEN_TAC [`a:person`; `b:person`; `c:person`] THEN REWRITE_TAC[EXTENSION; IN_UNIV; IN_INSERT; NOT_IN_EMPTY] THEN STRIP_TAC THEN @@ -688,7 +688,7 @@ let FRIENDSHIP = prove EXISTS_TAC `a:person` THEN UNDISCH_TAC `!p:person. {q:person | friend p q} HAS_SIZE 2` THEN DISCH_THEN(MP_TAC o SPEC `a:person`) THEN ASM_REWRITE_TAC[] THEN - CONV_TAC(LAND_CONV HAS_SIZE_CONV) THEN + (CONV_TAC "(LAND_CONV HAS_SIZE_CONV)") (LAND_CONV HAS_SIZE_CONV) THEN REWRITE_TAC[EXTENSION; IN_ELIM_THM; IN_INSERT; NOT_IN_EMPTY] THEN REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN MAP_EVERY X_GEN_TAC [`x:person`; `y:person`] THEN diff --git a/100/heron.ml b/100/heron.ml index 2677749a..e7ada09c 100644 --- a/100/heron.ml +++ b/100/heron.ml @@ -32,11 +32,11 @@ let HERON = prove measure(convex hull {A,B,C}) = sqrt(s * (s - a) * (s - b) * (s - c))`, REPEAT GEN_TAC THEN REWRITE_TAC[LET_DEF; LET_END_DEF] THEN REWRITE_TAC[MEASURE_TRIANGLE] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SQRT_UNIQUE THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SQRT_UNIQUE THEN SIMP_TAC[REAL_LE_DIV; REAL_ABS_POS; REAL_POS] THEN REWRITE_TAC[REAL_POW_DIV; REAL_POW2_ABS] THEN REWRITE_TAC[dist; vector_norm] THEN REWRITE_TAC[dot; SUM_2; DIMINDEX_2] THEN SIMP_TAC[VECTOR_SUB_COMPONENT; ARITH; DIMINDEX_2] THEN SQRT_ELIM_TAC THEN SIMP_TAC[REAL_LE_SQUARE; REAL_LE_ADD] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; diff --git a/100/inclusion_exclusion.ml b/100/inclusion_exclusion.ml index 9e246c69..bd57139c 100644 --- a/100/inclusion_exclusion.ml +++ b/100/inclusion_exclusion.ml @@ -254,7 +254,7 @@ let CARD_SUBSETS_STEP = prove EXISTS_TAC `\u. (x:A) INSERT u` THEN ASM_SIMP_TAC[FINITE_SUBSETS_RESTRICT] THEN (CONJ_TAC THENL [ASM SET_TAC[]; ALL_TAC] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC CARD_UNION_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CARD_UNION_EQ THEN ASM_SIMP_TAC[FINITE_SUBSETS_RESTRICT; FINITE_INSERT] THEN CONJ_TAC THENL [REWRITE_TAC[EXTENSION; NOT_IN_EMPTY; IN_INTER] THEN REWRITE_TAC[TAUT `~(a /\ b) <=> b ==> ~a`; FORALL_IN_IMAGE] THEN @@ -301,7 +301,7 @@ let SUM_ALTERNATING_CANCELS = prove EXISTS_TAC `sum {x | x IN s /\ EVEN(f x)} (\x. (-- &1) pow (f x)) + sum {x:A | x IN s /\ ODD(f x)} (\x. (-- &1) pow (f x))` THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_UNION_EQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_UNION_EQ THEN ASM_SIMP_TAC[EXTENSION; IN_ELIM_THM; IN_INTER; IN_UNION; NOT_IN_EMPTY] THEN REWRITE_TAC[GSYM NOT_EVEN] THEN MESON_TAC[]; ALL_TAC] THEN @@ -319,7 +319,7 @@ let INCLUSION_EXCLUSION_SYMMETRIC = prove ==> g(s) = sum {t | t SUBSET s} (\t. (-- &1) pow (CARD t) * f(t))) ==> !s. FINITE s ==> f(s) = sum {t | t SUBSET s} (\t. (-- &1) pow (CARD t) * g(t))`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC EQ_TRANS THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `sum {t:A->bool | t SUBSET s} (\t. (-- &1) pow (CARD t) * sum {u | u IN {u | u SUBSET s} /\ u SUBSET t} @@ -367,7 +367,7 @@ let INCLUSION_EXCLUSION_MOBIUS = prove DISCH_THEN(MP_TAC o SPEC `s:A->bool`) THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(MP_TAC o AP_TERM `(*) ((-- &1) pow (CARD(s:A->bool)))`) THEN REWRITE_TAC[REAL_MUL_ASSOC; GSYM REAL_POW_ADD; GSYM MULT_2] THEN - REWRITE_TAC[GSYM REAL_POW_POW] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[GSYM REAL_POW_POW] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_POW_ONE; REAL_MUL_LID] THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[GSYM SUM_LMUL] THEN MATCH_MP_TAC SUM_EQ THEN X_GEN_TAC `u:A->bool` THEN REWRITE_TAC[IN_ELIM_THM; REAL_MUL_ASSOC] THEN diff --git a/100/independence.ml b/100/independence.ml index 3929b880..03a472a4 100644 --- a/100/independence.ml +++ b/100/independence.ml @@ -87,7 +87,7 @@ let DDIST_INCREASES_ONLINE = prove let DDIST_REFL = prove (`!x:real^N. ddist(x,x) = &0`, GEN_TAC THEN REWRITE_TAC[ddist; DIST_REFL; NORM_POW_2; NORM_LT_SQUARE] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let DDIST_SYM = prove (`!x y:real^N. ddist(x,y) = ddist(y,x)`, @@ -169,7 +169,7 @@ let DDIST_EQ_ORIGIN = prove norm x < &1 /\ norm y < &1 ==> (ddist(vec 0,x) = ddist(vec 0,y) <=> norm x = norm y)`, REPEAT STRIP_TAC THEN ASM_SIMP_TAC[ddist; NORM_0; REAL_LT_01] THEN - REWRITE_TAC[DOT_LZERO] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[DOT_LZERO] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_div; REAL_MUL_LID; REAL_EQ_INV2; REAL_ARITH `x - &1 = y - &1 <=> x = y`] THEN REWRITE_TAC[REAL_ARITH `&1 - x = &1 - y <=> x = y`; @@ -262,7 +262,7 @@ let KLEINIFY_POINCARIFY = prove REWRITE_TAC[REAL_POS; REAL_ARITH `&1 - x < &1 pow 2 <=> &0 < x`] THEN ASM_SIMP_TAC[REAL_POW_LT; COMPLEX_NORM_NZ]; SUBGOAL_THEN `sqrt(&1 - norm(x:real^2) pow 2) pow 2 = &1 - norm x pow 2` - MP_TAC THENL [MATCH_MP_TAC SQRT_POW_2; CONV_TAC REAL_FIELD]] THEN + MP_TAC THENL [MATCH_MP_TAC SQRT_POW_2; (CONV_TAC "REAL_FIELD") REAL_FIELD]] THEN ASM_SIMP_TAC[REAL_SUB_LE; ABS_SQUARE_LE_1; REAL_ABS_NORM; REAL_LT_IMP_LE]);; let POINCARIFY_KLEINIFY = prove @@ -294,7 +294,7 @@ let POINCARIFY_KLEINIFY = prove REWRITE_TAC[REAL_ARITH `&2 * x <= &1 * (&1 + x) <=> x <= &1`] THEN ASM_SIMP_TAC[ABS_SQUARE_LE_1; REAL_ABS_NORM; REAL_LT_IMP_LE] THEN SUBGOAL_THEN `~(&1 + norm(x:complex) pow 2 = &0)` MP_TAC THENL - [ALL_TAC; CONV_TAC REAL_FIELD] THEN + [ALL_TAC; (CONV_TAC "REAL_FIELD") REAL_FIELD] THEN MATCH_MP_TAC(REAL_ARITH `abs(x) < &1 ==> ~(&1 + x = &0)`) THEN ASM_REWRITE_TAC[REAL_ABS_POW; REAL_ABS_NORM; ABS_SQUARE_LT_1]);; @@ -339,7 +339,7 @@ let DDIST_KLEINIFY = prove REWRITE_TAC[NORM_POW_2; DOT_LSUB; DOT_RSUB; DOT_SYM] THEN REAL_ARITH_TAC]]]; REPEAT(POP_ASSUM MP_TAC) THEN - REWRITE_TAC[NORM_EQ_SQUARE; GSYM NORM_POW_2] THEN CONV_TAC REAL_FIELD]);; + REWRITE_TAC[NORM_EQ_SQUARE; GSYM NORM_POW_2] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]);; let DDIST_KLEINIFY_EQ = prove (`!w z w' z'. @@ -348,7 +348,7 @@ let DDIST_KLEINIFY_EQ = prove norm(w' - z') pow 2 * (&1 - norm w pow 2) * (&1 - norm z pow 2) ==> ddist(kleinify w,kleinify z) = ddist(kleinify w',kleinify z')`, SIMP_TAC[DDIST_KLEINIFY; NORM_EQ_SQUARE; GSYM NORM_POW_2; REAL_POS] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let NORM_KLEINIFY_MOEBIUS_LT = prove (`!w x. norm w < &1 /\ norm x < &1 @@ -659,12 +659,12 @@ let TARSKI_AXIOM_8_NONEUCLIDEAN = prove REWRITE_TAC[pbetween; EXISTS_DEST_PLANE; NORM_LT_SQUARE; NORM_POW_2] THEN MAP_EVERY (fun t -> EXISTS_TAC t THEN SIMP_TAC[DOT_LMUL; DOT_RMUL; DOT_BASIS_BASIS; DIMINDEX_2; ARITH] THEN - REWRITE_TAC[DOT_LZERO] THEN CONV_TAC REAL_RAT_REDUCE_CONV) + REWRITE_TAC[DOT_LZERO] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV) [`vec 0:real^2`; `(&1 / &2) % basis 1:real^2`; `(&1 / &2) % basis 2:real^2`] THEN REPEAT CONJ_TAC THEN DISCH_THEN(MP_TAC o MATCH_MP BETWEEN_IMP_COLLINEAR) THEN SIMP_TAC[COLLINEAR_3_2D; VECTOR_MUL_COMPONENT; VEC_COMPONENT; ARITH; - BASIS_COMPONENT; DIMINDEX_2] THEN CONV_TAC REAL_RAT_REDUCE_CONV);; + BASIS_COMPONENT; DIMINDEX_2] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; (* ------------------------------------------------------------------------- *) (* Axiom 9 (upper 2-dimensional axiom). *) @@ -707,7 +707,7 @@ let TARSKI_AXIOM_9_NONEUCLIDEAN = prove ==> (a * inv x * inv y - &1 = b * inv x * inv y - &1 <=> a = b)`] THEN ONCE_REWRITE_TAC[VECTOR_ARITH `--x:real^N = x <=> x = vec 0`] THEN REWRITE_TAC[COLLINEAR_3_2D; VECTOR_SUB_COMPONENT; DOT_2; GSYM DOT_EQ_0; - VECTOR_NEG_COMPONENT] THEN CONV_TAC REAL_RING]);; + VECTOR_NEG_COMPONENT] THEN (CONV_TAC "REAL_RING") REAL_RING]);; (* ------------------------------------------------------------------------- *) (* Axiom 10 (Euclidean axiom). *) @@ -730,10 +730,10 @@ let NOT_TARSKI_AXIOM_10_NONEUCLIDEAN = prove REWRITE_TAC[IMP_IMP] THEN DISCH_THEN(CONJUNCTS_THEN (MP_TAC o MATCH_MP BETWEEN_IMP_COLLINEAR)) THEN SIMP_TAC[COLLINEAR_3_2D; BASIS_COMPONENT; DIMINDEX_2; ARITH; VEC_COMPONENT; - VECTOR_MUL_COMPONENT] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + VECTOR_MUL_COMPONENT] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_SUB_LZERO; REAL_MUL_LZERO; REAL_MUL_RZERO; REAL_SUB_RZERO; REAL_ARITH `&0 = &1 / &2 * x <=> x = &0`] THEN - REWRITE_TAC[REAL_ENTIRE] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[REAL_ENTIRE] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MP_TAC(ISPECL [`x:real^2`; `1`] COMPONENT_LE_NORM) THEN MP_TAC(ISPECL [`y:real^2`; `2`] COMPONENT_LE_NORM) THEN SIMP_TAC[DIMINDEX_2; ARITH; BETWEEN_IN_SEGMENT; IN_SEGMENT] THEN @@ -760,12 +760,12 @@ let NOT_TARSKI_AXIOM_10_NONEUCLIDEAN = prove ALL_TAC]] THEN SIMP_TAC[NORM_LT_SQUARE; NORM_POW_2; DOT_LADD; DOT_RADD; DOT_LZERO; DOT_LMUL; DOT_RMUL; DOT_BASIS_BASIS; DIMINDEX_2; ARITH] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[BETWEEN_IN_SEGMENT; IN_SEGMENT] THEN REPEAT CONJ_TAC THENL [EXISTS_TAC `&5 / &12`; EXISTS_TAC `&1 / &2`; ALL_TAC] THEN SIMP_TAC[CART_EQ; DIMINDEX_2; FORALL_2; ARITH; BASIS_COMPONENT; VECTOR_ADD_COMPONENT; VECTOR_MUL_COMPONENT; VEC_COMPONENT] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; (* ------------------------------------------------------------------------- *) (* Axiom 11 (Continuity). *) diff --git a/100/isosceles.ml b/100/isosceles.ml index 9655a630..ca344fbc 100644 --- a/100/isosceles.ml +++ b/100/isosceles.ml @@ -123,7 +123,7 @@ let ISOSCELES_TRIANGLE_3 = prove `a:real = a' /\ b = b' ==> a + x + b = p ==> a' + x' + b' = p ==> x' = x`) THEN CONJ_TAC THENL [ALL_TAC; ASM_MESON_TAC[ANGLE_SYM]] THEN - CONV_TAC SYM_CONV THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN UNDISCH_TAC `angle(C:real^N,A,B) = angle (A,B,C)` THEN MATCH_MP_TAC EQ_IMP THEN BINOP_TAC THENL [MATCH_MP_TAC ANGLE_EQ_0_LEFT; diff --git a/100/lagrange.ml b/100/lagrange.ml index 7baff78e..1bfac6ed 100644 --- a/100/lagrange.ml +++ b/100/lagrange.ml @@ -204,7 +204,7 @@ let GROUP_LAGRANGE_COSETS = prove SUBGOAL_THEN `((coset:A->A->bool) a1 = coset a) /\ (coset a2 = coset a')` MP_TAC THENL - [CONJ_TAC THEN CONV_TAC SYM_CONV THEN FIRST_ASSUM MATCH_MP_TAC THEN + [CONJ_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_ASSUM MATCH_MP_TAC THEN ASM_SIMP_TAC[]; ALL_TAC] THEN DISCH_THEN(CONJUNCTS_THEN SUBST_ALL_TAC) THEN @@ -220,7 +220,7 @@ let GROUP_LAGRANGE_COSETS = prove SUBST1_TAC THENL [REWRITE_TAC[EXTENSION; IN_IMAGE; IN_ELIM_THM] THEN REWRITE_TAC[EXISTS_PAIR_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[PAIR_EQ] THEN REWRITE_TAC[CONJ_ASSOC; ONCE_REWRITE_RULE[CONJ_SYM] UNWIND_THM1] THEN ASM_MESON_TAC[]; @@ -229,7 +229,7 @@ let GROUP_LAGRANGE_COSETS = prove EXISTS_TAC `CARD {(a:A,x:A) | a IN q /\ x IN h}` THEN CONJ_TAC THENL [MATCH_MP_TAC CARD_IMAGE_INJ THEN CONJ_TAC THENL [REWRITE_TAC[FORALL_PAIR_THM; IN_ELIM_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[PAIR_EQ] THEN REPEAT GEN_TAC THEN REPEAT(DISCH_THEN(CONJUNCTS_THEN2 STRIP_ASSUME_TAC MP_TAC)) THEN ASM_REWRITE_TAC[] THEN ASM_MESON_TAC[]; diff --git a/100/leibniz.ml b/100/leibniz.ml index 1dde24cc..91860145 100644 --- a/100/leibniz.ml +++ b/100/leibniz.ml @@ -83,7 +83,7 @@ let SUMMABLE_LEIBNIZ = prove MATCH_MP_TAC SUMMABLE_ALTERNATING THEN REWRITE_TAC[] THEN REPEAT CONJ_TAC THENL [REWRITE_TAC[REAL_POW_ADD; REAL_POW_MUL; GSYM REAL_POW_POW] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_POW_ONE; real_div; REAL_MUL_LID; REAL_MUL_LNEG] THEN REWRITE_TAC[REAL_LE_LNEG; REAL_ADD_RID; REAL_LE_INV_EQ; REAL_POS]; GEN_TAC THEN REWRITE_TAC[REAL_ABS_DIV; REAL_ABS_POW; REAL_ABS_NEG] THEN @@ -226,7 +226,7 @@ let LEIBNIZ_PI = prove MATCH_MP_TAC(TAUT `a = b ==> a ==> b`) THEN REWRITE_TAC[ADD_SUB] THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[GSYM REAL_OF_NUM_ADD; GSYM REAL_OF_NUM_MUL] THEN - REWRITE_TAC[REAL_POW_ONE] THEN CONV_TAC REAL_FIELD; + REWRITE_TAC[REAL_POW_ONE] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN SUBGOAL_THEN `atn contl (&1)` MP_TAC THENL [MESON_TAC[DIFF_CONT; DIFF_ATN]; ALL_TAC] THEN diff --git a/100/lhopital.ml b/100/lhopital.ml index b0d100cf..e53f8c57 100644 --- a/100/lhopital.ml +++ b/100/lhopital.ml @@ -46,7 +46,7 @@ let MVT2 = prove (X_CHOOSE_TAC `f':real`) (X_CHOOSE_TAC `g':real`)) THEN MAP_EVERY EXISTS_TAC [`f':real`; `g':real`] THEN ASM_REWRITE_TAC[] THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN - CONV_TAC SYM_CONV THEN ONCE_REWRITE_TAC[GSYM REAL_SUB_0] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[GSYM REAL_SUB_0] THEN MATCH_MP_TAC DIFF_UNIQ THEN EXISTS_TAC `\x:real. f(x) * (g(b) - g(a)) - g(x) * (f(b) - f(a))` THEN EXISTS_TAC `z:real` THEN diff --git a/100/liouville.ml b/100/liouville.ml index dfae2f9d..1a12dc39 100644 --- a/100/liouville.ml +++ b/100/liouville.ml @@ -296,7 +296,7 @@ let LIOUVILLE_SUM_BOUND = prove SIMP_TAC[GSYM REAL_POW_SUB; REAL_OF_NUM_EQ; ARITH; FACT_MONO; LE_ADD] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&10 pow 1` THEN CONJ_TAC THENL [ALL_TAC; MATCH_MP_TAC REAL_POW_MONO] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM ADD1; FACT] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM ADD1; FACT] THEN MATCH_MP_TAC(ARITH_RULE `1 * x <= SUC n * x /\ ~(n * x = 0) ==> 1 <= SUC n * x - x`) THEN ASM_SIMP_TAC[LE_MULT_RCANCEL; MULT_EQ_0] THEN @@ -382,7 +382,7 @@ let TRANSCENDENTAL_LIOUVILLE = prove MAP_EVERY X_GEN_TAC [`m:num`; `c:real`] THEN REWRITE_TAC[DE_MORGAN_THM; real_gt; REAL_NOT_LT] THEN DISCH_TAC THEN MP_TAC(SPECL [`&10`; `&2 / c`] REAL_ARCH_POW) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_TAC `k:num`) THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_TAC `k:num`) THEN ABBREV_TAC `n = m + k + 1` THEN EXISTS_TAC `nsum(0..n-1) (\i. 10 EXP (FACT(n-1) - FACT i))` THEN EXISTS_TAC `10 EXP (FACT(n-1))` THEN REWRITE_TAC[EXP_EQ_0; ARITH] THEN diff --git a/100/minkowski.ml b/100/minkowski.ml index 261cbcee..023a8322 100644 --- a/100/minkowski.ml +++ b/100/minkowski.ml @@ -193,7 +193,7 @@ let MINKOWSKI = prove ASM_SIMP_TAC[VECTOR_MUL_COMPONENT; VECTOR_SUB_COMPONENT] THEN REWRITE_TAC[VECTOR_SUB; VECTOR_ADD_LDISTRIB] THEN FIRST_ASSUM(MATCH_MP_TAC o GEN_REWRITE_RULE I [convex]) THEN - ASM_SIMP_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV);; + ASM_SIMP_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; (* ------------------------------------------------------------------------- *) (* A slightly sharper variant for use when the set is also closed. *) @@ -216,7 +216,7 @@ let MINKOWSKI_COMPACT = prove DISCH_THEN(X_CHOOSE_TAC `a:real^N`) THEN SUBST1_TAC(VECTOR_ARITH `vec 0:real^N = inv(&2) % a + inv(&2) % --a`) THEN FIRST_X_ASSUM(MATCH_MP_TAC o GEN_REWRITE_RULE I [convex]) THEN - ASM_SIMP_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV; + ASM_SIMP_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN REPEAT STRIP_TAC THEN MP_TAC(ISPECL diff --git a/100/morley.ml b/100/morley.ml index 95a30382..69da3777 100644 --- a/100/morley.ml +++ b/100/morley.ml @@ -170,7 +170,7 @@ let ROTATE_EQ_REFLECT_PI_LEMMA = prove REWRITE_TAC[EULER; RE_MUL_II; IM_MUL_II; RE_CX; IM_CX; COS_NEG; SIN_NEG] THEN REWRITE_TAC[SIN_NPI; COS_NPI; REAL_EXP_NEG; REAL_EXP_0; CX_NEG] THEN REWRITE_TAC[COMPLEX_NEG_0; COMPLEX_MUL_RZERO; COMPLEX_ADD_RID] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[COMPLEX_MUL_LID]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[COMPLEX_MUL_LID]);; (* ------------------------------------------------------------------------- *) (* Algebraic characterization of equilateral triangle. *) @@ -184,7 +184,7 @@ let EQUILATERAL_TRIANGLE_ALGEBRAIC = prove REPEAT GEN_TAC THEN STRIP_TAC THEN REWRITE_TAC[dist] THEN SUBGOAL_THEN `C - A:complex = j * (B - C) /\ A - B = j pow 2 * (B - C)` (CONJUNCTS_THEN SUBST1_TAC) THENL - [REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC COMPLEX_RING; + [REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN SUBGOAL_THEN `norm(j pow 3) = &1` MP_TAC THENL [ASM_REWRITE_TAC[COMPLEX_NORM_CX; REAL_ABS_NUM]; @@ -200,30 +200,30 @@ let EQUILATERAL_TRIANGLE_ALGEBRAIC = prove let AFFINE_GROUP_ITER_3 = prove (`ITER 3 (\z. a * z + b) = (\z. a pow 3 * z + b * (Cx(&1) + a + a pow 2))`, REWRITE_TAC[TOP_DEPTH_CONV num_CONV `3`] THEN - REWRITE_TAC[ITER; FUN_EQ_THM] THEN CONV_TAC NUM_REDUCE_CONV THEN - CONV_TAC COMPLEX_RING);; + REWRITE_TAC[ITER; FUN_EQ_THM] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let AFFINE_GROUP_COMPOSE = prove (`(\z. a1 * z + b1) o (\z. a2 * z + b2) = (\z. (a1 * a2) * z + (b1 + a1 * b2))`, - REWRITE_TAC[o_THM; FUN_EQ_THM] THEN CONV_TAC COMPLEX_RING);; + REWRITE_TAC[o_THM; FUN_EQ_THM] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let AFFINE_GROUP_I = prove (`I = (\z. Cx(&1) * z + Cx(&0))`, - REWRITE_TAC[I_THM; FUN_EQ_THM] THEN CONV_TAC COMPLEX_RING);; + REWRITE_TAC[I_THM; FUN_EQ_THM] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let AFFINE_GROUP_EQ = prove (`!a b a' b. (\z. a * z + b) = (\z. a' * z + b') <=> a = a' /\ b = b'`, REPEAT GEN_TAC THEN EQ_TAC THEN SIMP_TAC[FUN_EQ_THM] THEN DISCH_TAC THEN FIRST_ASSUM(MP_TAC o SPEC `Cx(&0)`) THEN FIRST_X_ASSUM(MP_TAC o SPEC `Cx(&1)`) THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let AFFINE_GROUP_ROTATE_ABOUT = prove (`!a t. rotate_about a t = (\z. cexp(ii * Cx(t)) * z + (Cx(&1) - cexp(ii * Cx(t))) * a)`, REWRITE_TAC[rotate_about; FUN_EQ_THM; ROTATE2D_COMPLEX] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let ALGEBRAIC_LEMMA = prove (`!a1 a2 a3 b1 b2 b3 A B C. @@ -242,7 +242,7 @@ let ALGEBRAIC_LEMMA = prove REWRITE_TAC[AFFINE_GROUP_ITER_3; AFFINE_GROUP_COMPOSE; AFFINE_GROUP_I; AFFINE_GROUP_EQ] THEN REPEAT GEN_TAC THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THEN CONJ_TAC THENL - [REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC COMPLEX_RING; ALL_TAC] THEN + [REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN SUBGOAL_THEN `(a1 * a2 * a3) * a1 pow 2 * a2 * (a1 - a1 * a2 * a3) * (a2 - a1 * a2 * a3) * (a3 - a1 * a2 * a3) * @@ -257,7 +257,7 @@ let ALGEBRAIC_LEMMA = prove FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (COMPLEX_RING `s = Cx(&0) ==> s + t = Cx(&0) ==> t = Cx(&0)`)); REWRITE_TAC[COMPLEX_ENTIRE]] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC COMPLEX_FIELD);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; (* ------------------------------------------------------------------------- *) (* A tactic to avoid some duplication over cyclic permutations. *) @@ -410,7 +410,7 @@ let MORLEY = prove REWRITE_TAC[angle] THEN ONCE_REWRITE_TAC[VECTOR_ANGLE_SYM] THEN ASM_SIMP_TAC[VECTOR_ANGLE_ARG; COMPLEX_SUB_0]; ALL_TAC] THEN - CONV_TAC SYM_CONV THEN ONCE_REWRITE_TAC[REFLECT_ACROSS_SYM] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[REFLECT_ACROSS_SYM] THEN MATCH_MP_TAC ROTATE_EQ_REFLECT_PI_LEMMA THEN ASM_REWRITE_TAC[GSYM REAL_MUL_RNEG] THEN REWRITE_TAC[REAL_ARITH `&2 * a = &4 * pi + &2 * --c <=> diff --git a/100/pascal.ml b/100/pascal.ml index 00a702f5..b29aba4f 100644 --- a/100/pascal.ml +++ b/100/pascal.ml @@ -285,7 +285,7 @@ let COLLINEAR_BRACKET = prove GEN_TAC THEN DISCH_THEN(MP_TAC o CONJUNCT1) THEN REWRITE_TAC[DET_3; orthogonal; DOT_3; VECTOR_3; CART_EQ; DIMINDEX_3; FORALL_3; VEC_COMPONENT] THEN - CONV_TAC REAL_RING; + (CONV_TAC "REAL_RING") REAL_RING; ASM_CASES_TAC `p1:point = p2` THENL [ASM_REWRITE_TAC[INSERT_AC; COLLINEAR_PAIR]; ALL_TAC] THEN POP_ASSUM MP_TAC THEN @@ -327,7 +327,7 @@ let HOMOGENEOUS_CONIC_BRACKET = prove ONCE_REWRITE_TAC[IMP_CONJ] THEN REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN REPEAT GEN_TAC THEN DISCH_THEN(CONJUNCTS_THEN2 MP_TAC ASSUME_TAC) THEN ASM_REWRITE_TAC[IN_ELIM_THM; DET_3; VECTOR_3] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let PROJECTIVE_CONIC_BRACKET = prove (`!con p1 p2 p3 p4 p5 p6. @@ -399,7 +399,7 @@ let PASCAL_DIRECT = prove --bracket[x1;x5;x7] * bracket[x3;x5;x8]` THEN CONJ_TAC THENL [REPEAT(MATCH_MP_TAC MONO_AND THEN CONJ_TAC) THEN - REWRITE_TAC[bracket; DET_3; VECTOR_3] THEN CONV_TAC REAL_RING; + REWRITE_TAC[bracket; DET_3; VECTOR_3] THEN (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN REWRITE_TAC[IMP_CONJ] THEN REPEAT(ONCE_REWRITE_TAC[IMP_IMP] THEN @@ -412,7 +412,7 @@ let PASCAL_DIRECT = prove ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN ASM_REWRITE_TAC[REAL_EQ_MUL_LCANCEL] THEN FIRST_X_ASSUM(MP_TAC o CONJUNCT1) THEN - REWRITE_TAC[bracket; DET_3; VECTOR_3] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[bracket; DET_3; VECTOR_3] THEN (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* With longer but more intuitive non-degeneracy conditions, basically that *) @@ -458,7 +458,7 @@ let PASCAL = prove REPEAT CONJ_TAC THEN REPEAT(POP_ASSUM MP_TAC) THEN REWRITE_TAC[COLLINEAR_BRACKET; bracket; DET_3; VECTOR_3] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* Homogenization and hence mapping from affine to projective plane. *) @@ -501,7 +501,7 @@ let COLLINEAR_PROJECTIVIZE = prove EXISTS_TAC `det(vector[homogenize a; homogenize b; homogenize c]) = &0` THEN CONJ_TAC THENL [REWRITE_TAC[homogenize; DOT_2; VECTOR_SUB_COMPONENT; DET_3; VECTOR_3] THEN - CONV_TAC REAL_RING; + (CONV_TAC "REAL_RING") REAL_RING; MAP_EVERY (MP_TAC o C SPEC PARALLEL_PROJP_HOMOP) [`homogenize a`; `homogenize b`; `homogenize c`] THEN MAP_EVERY (MP_TAC o C SPEC HOMOGENIZE_NONZERO) @@ -510,7 +510,7 @@ let COLLINEAR_PROJECTIVIZE = prove [`projp(homogenize a)`; `projp(homogenize b)`; `projp(homogenize c)`] THEN REWRITE_TAC[parallel; cross; CART_EQ; DIMINDEX_3; FORALL_3; VECTOR_3; DET_3; VEC_COMPONENT] THEN - CONV_TAC REAL_RING]);; + (CONV_TAC "REAL_RING") REAL_RING]);; let AFFINE_PROJECTIVE_CONIC = prove (`!con. affine_conic con <=> ?con'. projective_conic con' /\ @@ -526,14 +526,14 @@ let AFFINE_PROJECTIVE_CONIC = prove ["a"; "b"; "c"; "d"; "e"; "f"] THEN REWRITE_TAC[RIGHT_EXISTS_AND_THM; UNWIND_THM2; GSYM CONJ_ASSOC] THEN REWRITE_TAC[IN_ELIM_THM; projectivize; o_THM] THEN - BINOP_TAC THENL [CONV_TAC TAUT; AP_TERM_TAC] THEN + BINOP_TAC THENL [(CONV_TAC "TAUT") TAUT; AP_TERM_TAC] THEN REWRITE_TAC[EXTENSION] THEN X_GEN_TAC `x:real^2` THEN MP_TAC(SPEC `x:real^2` HOMOGENIZE_NONZERO) THEN DISCH_THEN(MP_TAC o MATCH_MP PARALLEL_PROJP_HOMOP_EXPLICIT) THEN DISCH_THEN(X_CHOOSE_THEN `k:real` STRIP_ASSUME_TAC) THEN ASM_REWRITE_TAC[IN_ELIM_THM; VECTOR_MUL_COMPONENT] THEN REWRITE_TAC[homogenize; VECTOR_3] THEN - UNDISCH_TAC `~(k = &0)` THEN CONV_TAC REAL_RING);; + UNDISCH_TAC `~(k = &0)` THEN (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* Hence Pascal's theorem for the affine plane. *) @@ -591,7 +591,7 @@ let COLLINEAR_NOT_COCIRCULAR = prove REWRITE_TAC[GSYM DOT_CAUCHY_SCHWARZ_EQUAL; DOT_2] THEN REWRITE_TAC[dist; NORM_EQ_SQUARE; CART_EQ; DIMINDEX_2; FORALL_2; DOT_2; VECTOR_SUB_COMPONENT] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let PASCAL_AFFINE_CIRCLE = prove (`!c r x1 x2 x3 x4 x5 x6 x7 x8 x9:real^2. diff --git a/100/pick.ml b/100/pick.ml index c1a81d10..a04f04a8 100644 --- a/100/pick.ml +++ b/100/pick.ml @@ -99,7 +99,7 @@ let TRIANGLE_ADDITIVE_DECOMPOSITION = prove f(convex hull {d})`, REPEAT STRIP_TAC THEN FIRST_ASSUM(SUBST1_TAC o MATCH_MP TRIANGLE_DECOMPOSITION) THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [COMPACT_UNION; COMPACT_INTER; COMPACT_CONVEX_HULL; FINITE_IMP_COMPACT; FINITE_INSERT; FINITE_EMPTY; UNION_OVER_INTER] THEN @@ -485,7 +485,7 @@ let PICK_TRIANGLE_ALT = prove UNDISCH_TAC `~collinear{a:real^2,b,c}` THEN REWRITE_TAC[INSERT_AC]]); SIMP_TAC[CARD_CLAUSES; FINITE_INSERT; FINITE_EMPTY] THEN ASM_REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV]; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]; ALL_TAC] THEN SUBGOAL_THEN `?d:real^2. d IN convex hull {a, b, c} /\ integral_vector d /\ @@ -538,7 +538,7 @@ let PICK_TRIANGLE_ALT = prove SUBST1_TAC THENL [REWRITE_TAC[CONVEX_HULL_SING] THEN ASM SET_TAC[]; ALL_TAC] THEN SIMP_TAC[CARD_CLAUSES; FINITE_RULES; NOT_IN_EMPTY] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[SET_RULE `{x | x IN s /\ P x} = s INTER P`] THEN REWRITE_TAC[INSERT_AC] THEN REAL_ARITH_TAC);; @@ -600,7 +600,7 @@ let PICK_TRIANGLE = prove ASM_SIMP_TAC[CARD_SUBSET; SING_SUBSET; IN_ELIM_THM; ENDS_IN_SEGMENT; FINITE_BOUNDED_INTEGER_POINTS; BOUNDED_SEGMENT] THEN SIMP_TAC[NOT_IN_EMPTY; EMPTY_GSPEC; CARD_CLAUSES; FINITE_INSERT; - FINITE_EMPTY] THEN CONV_TAC NUM_REDUCE_CONV THEN + FINITE_EMPTY] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[SET_RULE `{x | x IN s /\ P x} = s INTER P`] THEN REWRITE_TAC[SEGMENT_CONVEX_HULL; INSERT_AC] THEN ARITH_TAC]);; @@ -899,7 +899,7 @@ let PARITY_LEMMA = prove `x + a % (y - x):real^N = (&1 - a) % x + a % y`] THEN EXISTS_TAC `min (&1 / &2) (e / &2 / norm(d - x:real^2))` THEN REWRITE_TAC[] THEN CONJ_TAC THENL [ALL_TAC; REAL_ARITH_TAC] THEN - REWRITE_TAC[REAL_LE_MIN] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[REAL_LE_MIN] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_LE_DIV; REAL_POS; NORM_POS_LE; REAL_LT_IMP_LE]; ASM_REWRITE_TAC[VECTOR_MUL_EQ_0; VECTOR_SUB_EQ; VECTOR_ARITH `x + a:real^N = x <=> a = vec 0`] THEN @@ -967,7 +967,7 @@ let PARITY_LEMMA = prove `x + a % (y - x):real^N = (&1 - a) % x + a % y`] THEN EXISTS_TAC `min (&1 / &2) (e / &2 / norm(c - x:real^2))` THEN REWRITE_TAC[] THEN CONJ_TAC THENL [ALL_TAC; REAL_ARITH_TAC] THEN - REWRITE_TAC[REAL_LE_MIN] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[REAL_LE_MIN] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_LE_DIV; REAL_POS; NORM_POS_LE; REAL_LT_IMP_LE]; ASM_REWRITE_TAC[VECTOR_MUL_EQ_0; VECTOR_SUB_EQ; VECTOR_ARITH `x + a:real^N = x <=> a = vec 0`] THEN @@ -1696,7 +1696,7 @@ let POLYGON_CHOP_IN_TWO = prove (!v. MEM v p ==> (b:real^2)$2 < (v:real^2)$2)` STRIP_ASSUME_TAC THENL [REPEAT STRIP_TAC THEN REWRITE_TAC[REAL_LT_LE] THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN CONJ_TAC THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[MEM] THEN ASM_MESON_TAC[]; ALL_TAC] THEN @@ -2574,7 +2574,7 @@ let POLYGON_CHOP_IN_TWO = prove CONJ_TAC THENL [EXISTS_TAC `min (&1 / &2) (e / &2 / norm (z - b:real^2))` THEN REPEAT CONJ_TAC THENL [ALL_TAC; REAL_ARITH_TAC; VECTOR_ARITH_TAC] THEN - REWRITE_TAC[REAL_LT_MIN] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[REAL_LT_MIN] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_HALF; REAL_LT_DIV; NORM_POS_LT; VECTOR_SUB_EQ]; REWRITE_TAC[VECTOR_ADD_COMPONENT; REAL_ADD_SUB] THEN MATCH_MP_TAC(REAL_ARITH @@ -2784,7 +2784,7 @@ let POLYGON_CHOP_IN_TWO = prove [ASM_REWRITE_TAC[] THEN SIMP_TAC[CARD_CLAUSES; FINITE_INSERT; FINITE_EMPTY] THEN ASM_REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY; DIMINDEX_2] THEN - CONV_TAC NUM_REDUCE_CONV; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ALL_TAC] THEN GEN_REWRITE_TAC LAND_CONV [EXTENSION] THEN REWRITE_TAC[AFFINE_HULL_3; IN_UNIV] THEN @@ -2884,7 +2884,7 @@ let POLYGON_CHOP_IN_TWO = prove (min (if rx:real = r then &1 / &2 else rx / abs(rx - r)) (if tx:real = t then &1 / &2 else tx / abs(tx - t)))` THEN REWRITE_TAC[REAL_LT_MIN; REAL_MIN_LT] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REPEAT CONJ_TAC THENL + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REPEAT CONJ_TAC THENL [ASM_CASES_TAC `r:real = rx` THENL [ASM_REWRITE_TAC[REAL_SUB_REFL; REAL_MUL_RZERO]; ALL_TAC] THEN MATCH_MP_TAC(REAL_ARITH `abs x <= a ==> x <= a`) THEN @@ -2893,9 +2893,9 @@ let POLYGON_CHOP_IN_TWO = prove `~(x = y) ==> &0 < abs(x - y)`] THEN MATCH_MP_TAC(REAL_ARITH `&0 <= a /\ &0 <= x /\ &0 <= b ==> abs(min a (min x b)) <= x`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN COND_CASES_TAC THEN ASM_SIMP_TAC[REAL_LE_DIV; REAL_ABS_POS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ASM_CASES_TAC `t:real = tx` THENL [ASM_REWRITE_TAC[REAL_SUB_REFL; REAL_MUL_RZERO]; ALL_TAC] THEN MATCH_MP_TAC(REAL_ARITH `abs x <= a ==> x <= a`) THEN @@ -2904,12 +2904,12 @@ let POLYGON_CHOP_IN_TWO = prove `~(x = y) ==> &0 < abs(x - y)`] THEN MATCH_MP_TAC(REAL_ARITH `&0 <= a /\ &0 <= x /\ &0 <= b ==> abs(min a (min b x)) <= x`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN COND_CASES_TAC THEN ASM_SIMP_TAC[REAL_LE_DIV; REAL_ABS_POS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; - COND_CASES_TAC THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; + COND_CASES_TAC THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_LT_DIV THEN ASM_REAL_ARITH_TAC; - COND_CASES_TAC THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + COND_CASES_TAC THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_LT_DIV THEN ASM_REAL_ARITH_TAC]; ALL_TAC] THEN MAP_EVERY EXISTS_TAC @@ -3624,7 +3624,7 @@ let PICK = prove integral_vector x} + CARD {x:real^2 | x IN segment[a,b] DIFF {a, b} /\ integral_vector x}` SUBST1_TAC THENL - [(CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + [((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [CARD_UNION_GEN; FINITE_BOUNDED_INTEGER_POINTS; FINITE_UNION; BOUNDED_INSIDE; BOUNDED_UNION; BOUNDED_SEGMENT; BOUNDED_PATH_IMAGE; BOUNDED_DIFF; PATH_POLYGONAL_PATH] THEN @@ -3650,7 +3650,7 @@ let PICK = prove REWRITE_TAC[SET_RULE `{x | x IN (s UNION t) /\ P x} = {x | x IN s /\ P x} UNION {x | x IN t /\ P x}`] THEN - (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [CARD_UNION_GEN; FINITE_BOUNDED_INTEGER_POINTS; BOUNDED_SEGMENT; BOUNDED_PATH_IMAGE; PATH_POLYGONAL_PATH; GSYM REAL_OF_NUM_SUB; INTER_SUBSET; CARD_SUBSET; ARITH_RULE `x:num <= y ==> x <= y + z`] THEN @@ -3689,7 +3689,7 @@ let PICK = prove ASM_MESON_TAC[PATHSTART_IN_PATH_IMAGE; PATHFINISH_IN_PATH_IMAGE]; ALL_TAC] THEN SIMP_TAC[CARD_CLAUSES; FINITE_INSERT; FINITE_EMPTY] THEN - ASM_REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY] THEN CONV_TAC NUM_REDUCE_CONV THEN + ASM_REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN MATCH_MP_TAC(REAL_ARITH `x = y + &2 ==> &2 * x + &2 = &2 * y + &2 + &2 + &2`) THEN REWRITE_TAC[SEGMENT_CLOSED_OPEN] THEN diff --git a/100/piseries.ml b/100/piseries.ml index 5bc84afb..8a85ebd1 100644 --- a/100/piseries.ml +++ b/100/piseries.ml @@ -21,7 +21,7 @@ let REAL_LE_1_POW2 = prove let REAL_LT_1_POW2 = prove (`!n. &1 < &2 pow n <=> ~(n = 0)`, GEN_TAC THEN ASM_CASES_TAC `n = 0` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SUBST1_TAC(SYM(REAL_RAT_REDUCE_CONV `&2 pow 0`)) THEN MATCH_MP_TAC REAL_POW_MONO_LT THEN REWRITE_TAC[REAL_OF_NUM_LT] THEN POP_ASSUM MP_TAC THEN ARITH_TAC);; @@ -44,11 +44,11 @@ let REAL_POW2_CLAUSES = prove REAL_OF_NUM_LE; REAL_OF_NUM_LT; ARITH; REAL_ARITH `&1 - x <= &1 <=> &0 <= x`] THEN GEN_TAC THEN ASM_CASES_TAC `n = 0` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `inv(&2 pow 1)` THEN ASM_SIMP_TAC[REAL_LE_INV2; REAL_POW_MONO; REAL_POW_LT; REAL_OF_NUM_LT; ARITH; REAL_OF_NUM_LE; ARITH_RULE `1 <= n <=> ~(n = 0)`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let REAL_INTEGER_CLOSURES = prove (`(!n. ?p. abs(&n) = &p) /\ @@ -111,7 +111,7 @@ let SUM_PERMUTE_0 = prove INDUCT_TAC THEN GEN_TAC THEN TRY(REWRITE_TAC[sum] THEN NO_TAC) THEN DISCH_TAC THEN GEN_TAC THEN FIRST_ASSUM(MP_TAC o SPEC `n:num`) THEN REWRITE_TAC[LESS_SUC_REFL] THEN - CONV_TAC(ONCE_DEPTH_CONV EXISTS_UNIQUE_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV EXISTS_UNIQUE_CONV)") (ONCE_DEPTH_CONV EXISTS_UNIQUE_CONV) THEN DISCH_THEN(CONJUNCTS_THEN2 MP_TAC ASSUME_TAC) THEN DISCH_THEN(X_CHOOSE_THEN `k:num` STRIP_ASSUME_TAC) THEN GEN_REWRITE_TAC RAND_CONV [sum] THEN REWRITE_TAC[ADD_CLAUSES] THEN @@ -124,7 +124,7 @@ let SUM_PERMUTE_0 = prove [MATCH_MP_TAC LT_TRANS THEN EXISTS_TAC `n:num` THEN ASM_REWRITE_TAC[LESS_SUC_REFL]; DISCH_THEN(fun th -> DISCH_THEN(MP_TAC o C MP th))] THEN - CONV_TAC(ONCE_DEPTH_CONV EXISTS_UNIQUE_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV EXISTS_UNIQUE_CONV)") (ONCE_DEPTH_CONV EXISTS_UNIQUE_CONV) THEN DISCH_THEN(X_CHOOSE_THEN `x:num` STRIP_ASSUME_TAC o CONJUNCT1) THEN CONJ_TAC THENL [DISJ_CASES_TAC(SPECL [`x:num`; `k:num`] LTE_CASES) THENL @@ -145,7 +145,7 @@ let SUM_PERMUTE_0 = prove RULE_ASSUM_TAC(REWRITE_RULE[LT_SUC]) THEN ASM_REWRITE_TAC[] THEN COND_CASES_TAC THEN REWRITE_TAC[] THEN UNDISCH_TAC `(k + d) < k:num` THEN - REWRITE_TAC[GSYM LE_SUC_LT] THEN CONV_TAC CONTRAPOS_CONV THEN + REWRITE_TAC[GSYM LE_SUC_LT] THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[GSYM NOT_LT; REWRITE_RULE[ADD_CLAUSES] LESS_ADD_SUC]; SUBST_ALL_TAC(ASSUME `(p:num->num) x = n`) THEN UNDISCH_TAC `y < n:num` THEN ASM_REWRITE_TAC[LT_REFL]]]; @@ -158,7 +158,7 @@ let SUM_PERMUTE_0 = prove ?!x. x < (SUC n) /\ (p x = y)` THEN DISCH_THEN(MP_TAC o SPEC `y:num`) THEN REWRITE_TAC[MATCH_MP LESS_SUC (ASSUME `y < n:num`)] THEN - CONV_TAC(ONCE_DEPTH_CONV EXISTS_UNIQUE_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV EXISTS_UNIQUE_CONV)") (ONCE_DEPTH_CONV EXISTS_UNIQUE_CONV) THEN DISCH_THEN(MP_TAC o SPECL [`if x1 < k then x1 else SUC x1`; `if x2 < k then x2 else SUC x2`] o CONJUNCT2) THEN ASM_REWRITE_TAC[] THEN @@ -168,11 +168,11 @@ let SUM_PERMUTE_0 = prove DISCH_THEN(fun th -> DISCH_THEN(MP_TAC o C MATCH_MP th)) THEN REPEAT COND_CASES_TAC THEN REWRITE_TAC[SUC_INJ] THENL [DISCH_THEN SUBST_ALL_TAC THEN UNDISCH_TAC `~(x2 < k:num)` THEN - CONV_TAC CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN REWRITE_TAC[] THEN MATCH_MP_TAC LT_TRANS THEN EXISTS_TAC `SUC x2` THEN ASM_REWRITE_TAC[LESS_SUC_REFL]; DISCH_THEN(SUBST_ALL_TAC o SYM) THEN UNDISCH_TAC `~(x1 < k:num)` THEN - CONV_TAC CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN REWRITE_TAC[] THEN MATCH_MP_TAC LT_TRANS THEN EXISTS_TAC `SUC x1` THEN ASM_REWRITE_TAC[LESS_SUC_REFL]]]]; DISCH_THEN(fun th -> FIRST_ASSUM(MP_TAC o C MATCH_MP th)) THEN @@ -242,8 +242,8 @@ let MCLAURIN_SIN = prove REWRITE_TAC[ARITH_EQ] THEN ABBREV_TAC `d = m MOD 4` THEN DISCH_THEN(CONJUNCTS_THEN2 SUBST1_TAC MP_TAC) THEN REWRITE_TAC[ADD1; GSYM ADD_ASSOC; MOD_MULT_ADD] THEN - SPEC_TAC(`d:num`,`d:num`) THEN CONV_TAC EXPAND_CASES_CONV THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[] THEN + SPEC_TAC(`d:num`,`d:num`) THEN (CONV_TAC "EXPAND_CASES_CONV") EXPAND_CASES_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[] THEN REPEAT CONJ_TAC THEN W(MP_TAC o DIFF_CONV o lhand o rator o snd) THEN SIMP_TAC[REAL_MUL_RID; REAL_NEG_NEG]; ALL_TAC] THEN @@ -263,8 +263,8 @@ let MCLAURIN_SIN = prove MP_TAC(SYM th)) THEN REWRITE_TAC[EVEN_ADD; EVEN_MULT; ARITH_EVEN] THEN UNDISCH_TAC `r MOD 4 < 4` THEN - SPEC_TAC(`r MOD 4`,`d:num`) THEN CONV_TAC EXPAND_CASES_CONV THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[] THEN + SPEC_TAC(`r MOD 4`,`d:num`) THEN (CONV_TAC "EXPAND_CASES_CONV") EXPAND_CASES_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[] THEN REWRITE_TAC[real_div; REAL_MUL_LZERO] THEN SIMP_TAC[ARITH_RULE `(x + 1) - 1 = x`; ARITH_RULE `(x + 3) - 1 = x + 2`; @@ -393,7 +393,7 @@ let COT_HALF_MULTIPLE = prove cot(pi * (x - &k) / &2 pow n)) / &2 pow (n + 1)`, DISCH_TAC THEN INDUCT_TAC THENL [REWRITE_TAC[EXP; real_pow; REAL_DIV_1; ADD_CLAUSES; REAL_POW_1] THEN - CONV_TAC(ONCE_DEPTH_CONV REAL_SUM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV REAL_SUM_CONV)") (ONCE_DEPTH_CONV REAL_SUM_CONV) THEN REWRITE_TAC[real_div; REAL_ADD_RID; REAL_SUB_RZERO; GSYM REAL_MUL_2] THEN REWRITE_TAC[AC REAL_MUL_AC `(a * b) * c = b * a * c`] THEN SIMP_TAC[REAL_MUL_RINV; REAL_MUL_RID; REAL_OF_NUM_EQ; ARITH_EQ]; @@ -434,7 +434,7 @@ let COT_HALF_MULTIPLE = prove BINOP_TAC THENL [ALL_TAC; REWRITE_TAC[real_pow; REAL_POW_ADD; REAL_INV_MUL; GSYM REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN SUBGOAL_THEN `!k. (x + &k) / &2 pow n + &1 = (x + &(2 EXP n + k)) / &2 pow n` (fun th -> ONCE_REWRITE_TAC[th]) THENL @@ -458,7 +458,7 @@ let COT_HALF_MULTIPLE = prove REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC; GSYM REAL_INV_MUL] THEN REWRITE_TAC[ONCE_REWRITE_RULE[REAL_MUL_SYM] (GSYM(CONJUNCT2 real_pow))] THEN REWRITE_TAC[SUM_ADD] THEN - CONV_TAC(ONCE_DEPTH_CONV (ALPHA_CONV `j:num`)) THEN + (CONV_TAC "(ONCE_DEPTH_CONV (ALPHA_CONV `j:num`))") (ONCE_DEPTH_CONV (ALPHA_CONV `j:num`)) THEN REWRITE_TAC[REAL_ADD_AC; ADD_AC]);; let COT_HALF_KNOPP = prove @@ -531,7 +531,7 @@ let COT_HALF_KNOPP = prove ONCE_REWRITE_TAC[ADD_SYM] THEN REWRITE_TAC[real_div; REAL_POW_ADD; REAL_INV_MUL; REAL_MUL_ASSOC] THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_RID]; ALL_TAC] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_RID]; ALL_TAC] THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[GSYM SUM_CMUL] THEN MATCH_MP_TAC SUM_EQ THEN X_GEN_TAC `k:num` THEN REWRITE_TAC[LE_0; ADD_CLAUSES] THEN STRIP_TAC THEN @@ -610,7 +610,7 @@ let SIN_ZERO_LEMMA = prove let NOT_INTEGER_LEMMA = prove (`~(x = &0) /\ abs(x) < &1 ==> ~(integer x)`, ONCE_REWRITE_TAC[GSYM REAL_ABS_ZERO] THEN - CONV_TAC CONTRAPOS_CONV THEN SIMP_TAC[integer; LEFT_IMP_EXISTS_THM] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN SIMP_TAC[integer; LEFT_IMP_EXISTS_THM] THEN GEN_TAC THEN DISCH_TAC THEN REWRITE_TAC[REAL_OF_NUM_EQ; REAL_OF_NUM_LT] THEN ARITH_TAC);; @@ -649,7 +649,7 @@ let SIN_EQ_LEMMA = prove ASSUME_TAC THENL [ALL_TAC; REPEAT STRIP_TAC THEN EQ_TAC THEN SIMP_TAC[] THEN - CONV_TAC CONTRAPOS_CONV THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[REAL_ARITH `~(x = y) <=> x < y \/ y < x`] THEN ASM_MESON_TAC[]] THEN REPEAT STRIP_TAC THEN @@ -778,9 +778,9 @@ let SIN_LINEAR_ABOVE = prove (`!x. abs(x) < &1 ==> abs(sin x) <= &2 * abs(x)`, REPEAT STRIP_TAC THEN MP_TAC(SPECL [`x:real`; `2`] MCLAURIN_SIN) THEN - CONV_TAC(ONCE_DEPTH_CONV REAL_SUM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV REAL_SUM_CONV)") (ONCE_DEPTH_CONV REAL_SUM_CONV) THEN REWRITE_TAC[real_pow; REAL_POW_1] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_DIV_1; REAL_MUL_LID; REAL_POW_1; REAL_ADD_LID] THEN MATCH_MP_TAC(REAL_ARITH `abs(a) <= abs(x) ==> abs(s - x) <= a ==> abs(s) <= &2 * abs(x)`) THEN @@ -788,19 +788,19 @@ let SIN_LINEAR_ABOVE = prove REWRITE_TAC[REAL_ABS_ABS] THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_MUL_LID] THEN MATCH_MP_TAC REAL_LE_RMUL THEN REWRITE_TAC[REAL_ABS_POS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&1 / &2 * &1` THEN - CONJ_TAC THENL [ALL_TAC; CONV_TAC REAL_RAT_REDUCE_CONV] THEN + CONJ_TAC THENL [ALL_TAC; (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN MATCH_MP_TAC REAL_LE_LMUL THEN ASM_SIMP_TAC[REAL_LT_IMP_LE] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let SIN_LINEAR_BELOW = prove (`!x. abs(x) < &2 ==> abs(sin x) >= abs(x) / &3`, REPEAT STRIP_TAC THEN MP_TAC(SPECL [`x:real`; `3`] MCLAURIN_SIN) THEN - CONV_TAC(ONCE_DEPTH_CONV REAL_SUM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV REAL_SUM_CONV)") (ONCE_DEPTH_CONV REAL_SUM_CONV) THEN REWRITE_TAC[real_pow; REAL_POW_1] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_DIV_1; REAL_MUL_LID; REAL_POW_1; REAL_ADD_LID] THEN REWRITE_TAC[REAL_MUL_LZERO; REAL_ADD_RID] THEN SIMP_TAC[real_ge; REAL_LE_LDIV_EQ; REAL_OF_NUM_LT; ARITH] THEN @@ -808,8 +808,8 @@ let SIN_LINEAR_BELOW = prove `&3 * abs(a) <= &2 * abs(x) ==> abs(s - x) <= a ==> abs(x) <= abs(s) * &3`) THEN REWRITE_TAC[REAL_ABS_MUL; REAL_ABS_POW; REAL_ABS_ABS; REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN - CONV_TAC(LAND_CONV(RAND_CONV(RAND_CONV num_CONV))) THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "(LAND_CONV(RAND_CONV(RAND_CONV num_CONV)))") (LAND_CONV(RAND_CONV(RAND_CONV num_CONV))) THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN REWRITE_TAC[real_pow; GSYM REAL_MUL_ASSOC] THEN MATCH_MP_TAC REAL_LE_LMUL THEN REWRITE_TAC[REAL_ABS_POS] THEN @@ -863,7 +863,7 @@ let KNOPP_TERM_BOUND_LEMMA = prove k * (k1 * k2) * x' * (p * p') * (q * q')`] THEN SIMP_TAC[REAL_INV_INV; REAL_MUL_RINV; REAL_ABS_ZERO; REAL_LT_IMP_NZ; REAL_POW2_CLAUSES; PI_POS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_RID; REAL_LE_REFL]; ALL_TAC] THEN GEN_REWRITE_TAC RAND_CONV [REAL_ABS_DIV] THEN GEN_REWRITE_TAC RAND_CONV [real_div] THEN @@ -886,7 +886,7 @@ let KNOPP_TERM_BOUND_LEMMA = prove SIMP_TAC[REAL_LE_RMUL_EQ; REAL_POW2_CLAUSES] THEN MATCH_MP_TAC(C MATCH_MP PI_APPROX_25_BITS (REAL_ARITH `abs(p - y) <= e ==> y + e <= a ==> p <= a`)) THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; MATCH_MP_TAC REAL_LE_INV2 THEN REWRITE_TAC[GSYM REAL_ABS_NZ; SIN_ZERO_LEMMA] THEN ASM_SIMP_TAC[NOT_INTEGER_DIV_POW2] THEN @@ -896,7 +896,7 @@ let KNOPP_TERM_BOUND_LEMMA = prove REAL_LT_LDIV_EQ; REAL_POW2_CLAUSES] THEN REWRITE_TAC[REAL_MUL_LID] THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN MATCH_MP_TAC REAL_LT_LCANCEL_IMP THEN EXISTS_TAC `abs(&6)` THEN - CONV_TAC (LAND_CONV REAL_RAT_REDUCE_CONV) THEN + (CONV_TAC "(LAND_CONV REAL_RAT_REDUCE_CONV)") (LAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[GSYM REAL_ABS_MUL; REAL_MUL_ASSOC] THEN MATCH_MP_TAC REAL_LTE_TRANS THEN EXISTS_TAC `abs(&k * pi)` THEN CONJ_TAC THENL @@ -917,7 +917,7 @@ let KNOPP_TERM_BOUND_LEMMA = prove SIMP_TAC[REAL_LE_LMUL_EQ; REAL_POW2_CLAUSES] THEN MATCH_MP_TAC(C MATCH_MP PI_APPROX_25_BITS (REAL_ARITH `abs(p - y) <= e ==> abs y + e <= a ==> abs p <= a`)) THEN - CONV_TAC REAL_RAT_REDUCE_CONV]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]);; let KNOPP_TERM_BOUND = prove (`~(integer x) /\ k < 2 EXP n /\ &6 * abs(x) < &k @@ -958,10 +958,10 @@ let SUMMABLE_INVERSE_SQUARES_LEMMA = prove (fun th -> REWRITE_TAC[th]) THENL [INDUCT_TAC THEN REWRITE_TAC[sum] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[ADD_CLAUSES] THEN REWRITE_TAC[REAL_ARITH `(&1 - a + b = &1 - c) <=> (b + c = a)`] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_MUL_LINV_UNIQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_MUL_LINV_UNIQ THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN REWRITE_TAC[REAL_INV_MUL; REAL_MUL_ASSOC; REAL_ADD_LDISTRIB] THEN SIMP_TAC[REAL_MUL_RINV; REAL_OF_NUM_EQ; ARITH_RULE `~(n + 1 = 0)`] THEN @@ -1065,9 +1065,9 @@ let SIN_X_RANGE = prove (`!x. abs(sin(x) - x) <= abs(x) pow 2 / &2`, GEN_TAC THEN MP_TAC(SPECL [`x:real`; `2`] MCLAURIN_SIN) THEN - CONV_TAC(ONCE_DEPTH_CONV REAL_SUM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV REAL_SUM_CONV)") (ONCE_DEPTH_CONV REAL_SUM_CONV) THEN REWRITE_TAC[ARITH; REAL_MUL_LZERO; REAL_ADD_LID; REAL_ADD_RID] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_DIV_1; REAL_POW_1; REAL_MUL_LID] THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN REWRITE_TAC[REAL_MUL_AC]);; @@ -1097,7 +1097,7 @@ let COT_X_LIMIT = prove [MP_TAC(SPEC `&0` DIFF_COS) THEN DISCH_THEN(MP_TAC o MATCH_MP DIFF_CONT) THEN REWRITE_TAC[contl; REAL_ADD_LID; COS_0] THEN - CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN REWRITE_TAC[]; ALL_TAC] THEN + (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN REWRITE_TAC[]; ALL_TAC] THEN DISCH_THEN(MP_TAC o C CONJ SIN_X_LIMIT) THEN DISCH_THEN(MP_TAC o C CONJ (REAL_ARITH `~(&1 = &0)`)) THEN REWRITE_TAC[GSYM CONJ_ASSOC] THEN @@ -1133,7 +1133,7 @@ let COT_LIMIT_LEMMA1 = prove DISCH_TAC THEN MP_TAC(SPEC `pi * x * inv(&2)` COT_LIMIT_LEMMA) THEN ASM_SIMP_TAC[REAL_ENTIRE; REAL_LT_IMP_NZ; PI_POS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_div; REAL_MUL_LID; GSYM REAL_MUL_ASSOC] THEN ONCE_REWRITE_TAC[AC REAL_MUL_AC `p * x * a * b * c = x * (p * (a * b)) * c`] THEN @@ -1172,7 +1172,7 @@ let COT_X_BOUND_LEMMA_POS = prove MP_TAC PI_APPROX_25_BITS THEN MATCH_MP_TAC(REAL_ARITH `&1 + e < a ==> abs(p - a) <= e ==> &1 < p`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV]; ALL_TAC] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]; ALL_TAC] THEN DISCH_THEN(X_CHOOSE_TAC `M:real`) THEN EXISTS_TAC `abs M + &2` THEN X_GEN_TAC `x:real` THEN STRIP_TAC THEN DISJ_CASES_TAC(SPECL [`abs x`; `d:real`] REAL_LTE_TOTAL) THENL @@ -1302,7 +1302,7 @@ let COT_PARTIAL_FRACTIONS = prove MATCH_MP_TAC REAL_LE_LMUL THEN REWRITE_TAC[REAL_ABS_POS] THEN GEN_REWRITE_TAC RAND_CONV [AC REAL_MUL_AC `a * b * c * d * e = b * c * d * a * e`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_AC; REAL_LE_REFL]; ALL_TAC] THEN SUBGOAL_THEN `!e. &0 < e @@ -1574,7 +1574,7 @@ let COT_PARTIAL_FRACTIONS = prove [UNDISCH_TAC `N1 + 1 <= n` THEN ARITH_TAC; ALL_TAC] THEN REWRITE_TAC[GSYM(REWRITE_RULE[REAL_EQ_SUB_LADD] SUM_DIFF)] THEN MATCH_MP_TAC(REAL_ARITH `(a = &2) ==> ((x + a) - &1 = &1 + x)`) THEN - CONV_TAC(ONCE_DEPTH_CONV REAL_SUM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV REAL_SUM_CONV)") (ONCE_DEPTH_CONV REAL_SUM_CONV) THEN REWRITE_TAC[REAL_POW_2; REAL_MUL_LZERO; REAL_SUB_RZERO] THEN REWRITE_TAC[GSYM REAL_POW_2] THEN REWRITE_TAC[real_div] THEN REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN @@ -1731,7 +1731,7 @@ let SER_SWAPDOUBLE_POS = prove [MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `sum (0,m) z` THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC SUM_LE THEN - CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN + (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN MATCH_MP_TAC REAL_LTE_TRANS THEN EXISTS_TAC `e / &2 + e / &2` THEN CONJ_TAC THENL [ALL_TAC; @@ -1756,7 +1756,7 @@ let SER_SWAPDOUBLE_POS = prove MATCH_MP_TAC(REAL_ARITH `a <= b ==> x <= a ==> x <= b`) THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `sum(0,M) (\n. e / (&2 * &(M + 1)))` THEN CONJ_TAC THENL - [MATCH_MP_TAC SUM_LE THEN CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN + [MATCH_MP_TAC SUM_LE THEN (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN ASM_SIMP_TAC[ADD_CLAUSES; REAL_LT_IMP_LE]; REWRITE_TAC[SUM_CONST; REAL_LE_REFL]]; ALL_TAC] THEN SUBGOAL_THEN `!m n. sum(0,m) (\i. (a:num->num->real) i n) <= l` @@ -1826,7 +1826,7 @@ let SER_SWAPDOUBLE_POS = prove MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `sum(0,m) z` THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC SUM_LE THEN ASM_REWRITE_TAC[] THEN - CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN + (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN MATCH_MP_TAC SEQ_SUM THEN X_GEN_TAC `m:num` THEN ASM_REWRITE_TAC[GSYM sums]; ALL_TAC] THEN REWRITE_TAC[sums; SEQ] THEN @@ -2051,7 +2051,7 @@ let TAN_COT_DOUBLE = prove SUBGOAL_THEN `~(sin x = &0)` ASSUME_TAC THENL [REWRITE_TAC[SIN_ZERO] THEN POP_ASSUM_LIST(MP_TAC o end_itlist CONJ) THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[DE_MORGAN_THM] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[DE_MORGAN_THM] THEN REWRITE_TAC[OR_EXISTS_THM] THEN REWRITE_TAC[TAUT `a /\ b \/ a /\ c <=> a /\ (b \/ c)`] THEN DISCH_THEN(X_CHOOSE_THEN `n:num` MP_TAC) THEN @@ -2072,7 +2072,7 @@ let TAN_COT_DOUBLE = prove [REWRITE_TAC[COS_ZERO] THEN MAP_EVERY UNDISCH_TAC [`abs x < pi / &2`; `&0 < abs x`] THEN REWRITE_TAC[IMP_IMP] THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[DE_MORGAN_THM] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[DE_MORGAN_THM] THEN REWRITE_TAC[OR_EXISTS_THM; NOT_EVEN] THEN REWRITE_TAC[TAUT `a /\ b \/ a /\ c <=> a /\ (b \/ c)`] THEN DISCH_THEN(X_CHOOSE_THEN `n:num` MP_TAC) THEN @@ -2091,7 +2091,7 @@ let TAN_COT_DOUBLE = prove [REWRITE_TAC[SIN_ZERO] THEN MAP_EVERY UNDISCH_TAC [`abs x < pi / &2`; `&0 < abs x`] THEN REWRITE_TAC[IMP_IMP] THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[DE_MORGAN_THM] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[DE_MORGAN_THM] THEN REWRITE_TAC[OR_EXISTS_THM] THEN REWRITE_TAC[TAUT `a /\ b \/ a /\ c <=> a /\ (b \/ c)`] THEN DISCH_THEN(X_CHOOSE_THEN `n:num` MP_TAC) THEN @@ -2107,7 +2107,7 @@ let TAN_COT_DOUBLE = prove DISCH_THEN(X_CHOOSE_THEN `m:num` SUBST1_TAC) THEN ASM_CASES_TAC `m = 0` THEN ASM_REWRITE_TAC[MULT_CLAUSES; REAL_MUL_LZERO; REAL_LT_REFL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISJ2_TAC THEN REWRITE_TAC[GSYM REAL_OF_NUM_MUL] THEN ONCE_REWRITE_TAC[AC REAL_MUL_AC `(a * b) * c = b * a * c`] THEN @@ -2380,13 +2380,13 @@ let TAN_DERIV_POWSER = prove REWRITE_TAC[REAL_ADD_LID; REAL_ADD_RID; REAL_MUL_RZERO; REAL_MUL_RID] THEN ASM_SIMP_TAC[TAN_POWSER]; ALL_TAC] THEN FIRST_ASSUM(MP_TAC o MATCH_MP TERMDIFF_ALT) THEN - REWRITE_TAC[ITER] THEN CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN + REWRITE_TAC[ITER] THEN (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN DISCH_THEN MATCH_MP_TAC THEN X_GEN_TAC `x:real` THEN DISCH_TAC THEN MATCH_MP_TAC DIFF_CHAIN_TAN_TANPOLYS THEN REWRITE_TAC[COS_ZERO] THEN UNDISCH_TAC `abs x < pi / &2` THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[DE_MORGAN_THM] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[DE_MORGAN_THM] THEN REWRITE_TAC[OR_EXISTS_THM; NOT_EVEN] THEN REWRITE_TAC[TAUT `a /\ b \/ a /\ c <=> a /\ (b \/ c)`] THEN DISCH_THEN(CHOOSE_THEN MP_TAC) THEN @@ -2445,7 +2445,7 @@ let HARMONICSUMS_TANNUMBER = prove ONCE_REWRITE_TAC[AC REAL_MUL_AC `a * b * c * d = (a * c * b) * d`] THEN REWRITE_TAC[real_div] THEN DISCH_TAC THEN ONCE_REWRITE_TAC[AC REAL_MUL_AC `(a * b * c) * d = a * (b * c) * d`] THEN - REWRITE_TAC[GSYM real_div] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[GSYM real_div] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_DIV_LMUL THEN MATCH_MP_TAC REAL_LT_IMP_NZ THEN MATCH_MP_TAC REAL_LT_MUL THEN REWRITE_TAC[REAL_OF_NUM_LT; ARITH] THEN MATCH_MP_TAC REAL_LT_MUL THEN REWRITE_TAC[REAL_OF_NUM_LT; FACT_LT] THEN @@ -2496,7 +2496,7 @@ let TANPOLY_ODD_EVEN = prove if EVEN n then --(poly (tanpoly n) x) else poly (tanpoly n) x)`, INDUCT_TAC THENL [REWRITE_TAC[EVEN; tanpoly] THEN - CONV_TAC(ONCE_DEPTH_CONV POLY_DIFF_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV POLY_DIFF_CONV)") (ONCE_DEPTH_CONV POLY_DIFF_CONV) THEN REWRITE_TAC[poly] THEN REAL_ARITH_TAC; ALL_TAC] THEN POP_ASSUM MP_TAC THEN REWRITE_TAC[EVEN] THEN ASM_CASES_TAC `EVEN n` THEN ASM_REWRITE_TAC[] THEN @@ -2532,7 +2532,7 @@ let TAYLOR_TAN_CONVERGES = prove ONCE_REWRITE_TAC[AC REAL_MUL_AC `a * b * c * a' * d * b' * e = (c * d * e) * ((a * a') * (b * b'))`] THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_MUL_RID] THEN AP_TERM_TAC THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_LID] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_LID] THEN MATCH_MP_TAC REAL_MUL_RINV THEN SIMP_TAC[REAL_ARITH `&1 < x ==> ~(x - &1 = &0)`; REAL_POW2_CLAUSES; ADD_EQ_0; ARITH_EQ]);; @@ -2562,7 +2562,7 @@ let TAYLOR_X_COT_CONVERGES = prove REWRITE_TAC[real_div; REAL_INV_MUL; GSYM REAL_MUL_ASSOC] THEN ONCE_REWRITE_TAC[REAL_ARITH `--(&2) * x * y * z * a = (&2 * y) * x * --a * z`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM REAL_INV_NEG; REAL_NEG_SUB; REAL_MUL_LID]);; (* ------------------------------------------------------------------------- *) @@ -2573,7 +2573,7 @@ let TANNUMBER_BOUND = prove (`!n. abs(tannumber n) <= &4 * &(FACT n) * (&2 / pi) pow (n + 1)`, GEN_TAC THEN DISJ_CASES_TAC(SPEC `n:num` EVEN_OR_ODD) THEN ASM_SIMP_TAC[TANNUMBER_EVEN; GSYM TANNUMBER_HARMONICSUMS] THEN - (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [REAL_ABS_NUM; REAL_LE_MUL; REAL_POW_LE; REAL_POS; REAL_LE_DIV; PI_POS; REAL_LT_IMP_LE] THEN REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC] THEN @@ -2620,7 +2620,7 @@ let TANNUMBER_BOUND = prove MATCH_MP_TAC(REWRITE_RULE[RIGHT_IMP_FORALL_THM] SER_OFFSET) THEN MATCH_MP_TAC SUMMABLE_INVERSE_POWERS THEN REWRITE_TAC[LE_REFL]; ALL_TAC] THEN - REWRITE_TAC[SUM_1; ADD_CLAUSES] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[SUM_1; ADD_CLAUSES] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `&1 + x <= &2 <=> x <= &1`] THEN SUBST1_TAC(MATCH_MP SUM_UNIQ SUMMABLE_INVERSE_SQUARES_LEMMA) THEN MATCH_MP_TAC SER_LE THEN REPEAT CONJ_TAC THENL @@ -2714,7 +2714,7 @@ let TAYLOR_TAN_BOUND_GENERAL = prove MP_TAC PI_APPROX_25_BITS THEN MATCH_MP_TAC(REAL_ARITH `b + e < a ==> abs(p - a) <= e ==> b < p`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV; ALL_TAC] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN DISCH_THEN(MP_TAC o MATCH_MP TAYLOR_TAN_CONVERGES) THEN DISCH_THEN(fun th -> ASSUME_TAC th THEN MP_TAC(MATCH_MP SUM_SUMMABLE th)) THEN @@ -2761,11 +2761,11 @@ let TAYLOR_TAN_BOUND_GENERAL = prove MP_TAC PI_APPROX_25_BITS THEN MATCH_MP_TAC(REAL_ARITH `b + e < a ==> abs(p - a) <= e ==> b < p`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV; ALL_TAC] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN SUBGOAL_THEN `~(&2 / pi * abs(x) = &1)` ASSUME_TAC THENL [UNDISCH_TAC `&2 / pi * abs x < &2 / &3` THEN ONCE_REWRITE_TAC[TAUT `a ==> ~b <=> b ==> ~a`] THEN - SIMP_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV; ALL_TAC] THEN + SIMP_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN GEN_REWRITE_TAC LAND_CONV [AC REAL_MUL_AC `(a * b) * c = (a * c) * b`] THEN MATCH_MP_TAC(REAL_ARITH `abs(x) <= a ==> x <= a`) THEN ONCE_REWRITE_TAC[REAL_ABS_MUL] THEN @@ -2783,7 +2783,7 @@ let TAYLOR_TAN_BOUND_GENERAL = prove MP_TAC PI_APPROX_25_BITS THEN MATCH_MP_TAC(REAL_ARITH `b + e <= a ==> abs(p - a) <= e ==> b <= abs p`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN REWRITE_TAC[REAL_ABS_MUL; REAL_ABS_NUM; GSYM REAL_MUL_ASSOC] THEN REWRITE_TAC[REAL_ARITH `&4 * x * y <= &12 * z <=> x * y <= z * &3`] THEN @@ -2795,7 +2795,7 @@ let TAYLOR_TAN_BOUND_GENERAL = prove MP_TAC PI_APPROX_25_BITS THEN MATCH_MP_TAC(REAL_ARITH `b + e <= a ==> abs(p - a) <= e ==> b <= abs p`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV; ALL_TAC] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN ASM_SIMP_TAC[GP_FINITE] THEN REWRITE_TAC[REAL_ABS_DIV] THEN ONCE_REWRITE_TAC[REAL_ABS_SUB] THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_MUL_LID] THEN @@ -2804,11 +2804,11 @@ let TAYLOR_TAN_BOUND_GENERAL = prove REWRITE_TAC[GSYM real_div] THEN CONJ_TAC THENL [MATCH_MP_TAC(REAL_ARITH `&0 <= x /\ x <= &1 ==> abs(&1 - x) <= &1`) THEN - (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) + ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) [REAL_POW_LE; REAL_LE_DIV; REAL_LE_MUL; REAL_POS; REAL_ABS_POS; PI_POS; REAL_LT_IMP_LE] THEN MATCH_MP_TAC REAL_POW_1_LE THEN - (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) + ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) [REAL_POW_LE; REAL_LE_DIV; REAL_LE_MUL; REAL_POS; REAL_ABS_POS; PI_POS; REAL_LT_IMP_LE] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&2 / pi * &1` THEN @@ -2818,16 +2818,16 @@ let TAYLOR_TAN_BOUND_GENERAL = prove MP_TAC PI_APPROX_25_BITS THEN MATCH_MP_TAC(REAL_ARITH `b + e <= a ==> abs(p - a) <= e ==> b <= &1 * p`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV; ALL_TAC] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN REWRITE_TAC[REAL_ABS_INV] THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_INV_INV] THEN MATCH_MP_TAC REAL_LE_INV2 THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(REAL_ARITH `x <= (&1 - a) * &1 ==> a <= abs(&1 - x)`) THEN MATCH_MP_TAC REAL_LE_MUL2 THEN ASM_REWRITE_TAC[REAL_ABS_POS] THEN SIMP_TAC[REAL_LE_DIV; REAL_POS; REAL_LT_IMP_LE; PI_POS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_div] THEN MATCH_MP_TAC REAL_LE_LMUL THEN REWRITE_TAC[REAL_POS] THEN MATCH_MP_TAC REAL_LE_INV2 THEN @@ -2835,7 +2835,7 @@ let TAYLOR_TAN_BOUND_GENERAL = prove MP_TAC PI_APPROX_25_BITS THEN MATCH_MP_TAC(REAL_ARITH `b + e <= a ==> abs(p - a) <= e ==> b <= p`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let TAYLOR_TAN_BOUND = prove (`!x n k. abs(x) <= inv(&2 pow k) @@ -2874,9 +2874,9 @@ let TAYLOR_TANX_BOUND = prove REWRITE_TAC[GSYM(CONJUNCT2 real_pow)] THEN REWRITE_TAC[ADD1; SPECL [`f:num->real`; `n:num`; `1`] SUM_OFFSET] THEN REWRITE_TAC[SUM_1] THEN - CONV_TAC(ONCE_DEPTH_CONV TANNUMBER_CONV) THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[real_pow] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_SUB_RZERO] THEN + (CONV_TAC "(ONCE_DEPTH_CONV TANNUMBER_CONV)") (ONCE_DEPTH_CONV TANNUMBER_CONV) THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[real_pow] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_SUB_RZERO] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&12 * (&2 / &3) pow ((n + 1) + 1) * abs(x) pow (n + 1)` THEN CONJ_TAC THENL @@ -2890,7 +2890,7 @@ let TAYLOR_TANX_BOUND = prove GEN_REWRITE_TAC RAND_CONV [AC REAL_MUL_AC `(a * b * c) * d = (a * b * d) * c`] THEN REWRITE_TAC[REAL_MUL_ASSOC] THEN MATCH_MP_TAC REAL_LE_LMUL THEN - (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) + ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) [REAL_LE_MUL; REAL_POW_LE; REAL_ABS_POS; REAL_LE_DIV; REAL_POS] THEN REWRITE_TAC[GSYM REAL_POW_POW] THEN ONCE_REWRITE_TAC[GSYM REAL_POW_INV] THEN @@ -2946,7 +2946,7 @@ let TAYLOR_COT_BOUND_GENERAL = prove ONCE_REWRITE_TAC[AC REAL_MUL_AC `x * a * y = a * x * y`] THEN REWRITE_TAC[GSYM(CONJUNCT2 real_pow)] THEN REWRITE_TAC[ADD1] THEN REWRITE_TAC[SUM_1; REAL_MUL_LZERO; REAL_SUB_RZERO; real_pow] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_SUB_RZERO] THEN SUBGOAL_THEN `abs(x) < pi` MP_TAC THENL [MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `&1` THEN @@ -2954,7 +2954,7 @@ let TAYLOR_COT_BOUND_GENERAL = prove MP_TAC PI_APPROX_25_BITS THEN MATCH_MP_TAC(REAL_ARITH `b + e < a ==> abs(p - a) <= e ==> b < p`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV; ALL_TAC] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN FIRST_ASSUM(MP_TAC o GEN_REWRITE_RULE I [REAL_ABS_NZ]) THEN REWRITE_TAC[IMP_IMP] THEN DISCH_THEN(MP_TAC o MATCH_MP TAYLOR_X_COT_CONVERGES) THEN @@ -3024,7 +3024,7 @@ let TAYLOR_COT_BOUND_GENERAL = prove REWRITE_TAC[REAL_ARITH `&4 * x <= &8 * y <=> x <= &2 * y`] THEN REWRITE_TAC[REAL_MUL_ASSOC] THEN MATCH_MP_TAC REAL_LE_RMUL THEN - (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) + ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) [REAL_POW_LE; REAL_LE_MUL; REAL_ABS_POS; REAL_POS; REAL_LT_IMP_LE; PI_POS; REAL_LE_INV_EQ] THEN GEN_REWRITE_TAC (RAND_CONV o LAND_CONV) [GSYM REAL_INV_INV] THEN @@ -3033,11 +3033,11 @@ let TAYLOR_COT_BOUND_GENERAL = prove SIMP_TAC[REAL_LT_MUL; REAL_LT_INV_EQ; REAL_OF_NUM_LT; ARITH; REAL_POW_LT] THEN REWRITE_TAC[GSYM ADD1; ADD_CLAUSES; real_pow] THEN - REWRITE_TAC[REAL_MUL_ASSOC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[REAL_MUL_ASSOC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `&1 * x <= &2 * x - &1 <=> &1 <= x`] THEN REWRITE_TAC[REAL_POW2_CLAUSES]; ALL_TAC] THEN REWRITE_TAC[GSYM REAL_POW_INV; GSYM REAL_POW_MUL] THEN - REWRITE_TAC[REAL_MUL_ASSOC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[REAL_MUL_ASSOC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `(&1 * x) * y = y * x`] THEN REWRITE_TAC[GSYM real_div] THEN GEN_REWRITE_TAC (LAND_CONV o ONCE_DEPTH_CONV) [REAL_POW_ADD] THEN @@ -3053,7 +3053,7 @@ let TAYLOR_COT_BOUND_GENERAL = prove REWRITE_TAC[REAL_POW_MUL; GSYM REAL_MUL_ASSOC] THEN GEN_REWRITE_TAC RAND_CONV [AC REAL_MUL_AC `a * b * c * d * e = (a * e) * d * b * c`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; ALL_TAC] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN SUBST1_TAC(SYM(REAL_RAT_REDUCE_CONV `&8 * &3 / &2`)) THEN GEN_REWRITE_TAC RAND_CONV [AC REAL_MUL_AC `(a * b) * c = (a * c) * b`] THEN @@ -3067,26 +3067,26 @@ let TAYLOR_COT_BOUND_GENERAL = prove REWRITE_TAC[real_div; REAL_ABS_MUL; REAL_ABS_ABS] THEN MATCH_MP_TAC REAL_LE_LMUL THEN REWRITE_TAC[REAL_ABS_POS] THEN REWRITE_TAC[REAL_ABS_INV] THEN - MATCH_MP_TAC REAL_LE_INV2 THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_LE_INV2 THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MP_TAC PI_APPROX_25_BITS THEN MATCH_MP_TAC(REAL_ARITH `b + e <= a ==> abs(p - a) <= e ==> b <= abs p`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV; ALL_TAC] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN SUBGOAL_THEN `abs(x) / pi < &1 / &3` ASSUME_TAC THENL [MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `&1 / pi` THEN ASM_SIMP_TAC[REAL_LE_DIV2_EQ; PI_POS] THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN MATCH_MP_TAC REAL_LT_INV2 THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MP_TAC PI_APPROX_25_BITS THEN MATCH_MP_TAC(REAL_ARITH `b + e < a ==> abs(p - a) <= e ==> b < p`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV; ALL_TAC] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN SUBGOAL_THEN `~(abs(x) / pi = &1)` ASSUME_TAC THENL [UNDISCH_TAC `abs x / pi < &1 / &3` THEN ONCE_REWRITE_TAC[TAUT `a ==> ~b <=> b ==> ~a`] THEN - SIMP_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV; ALL_TAC] THEN + SIMP_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN ASM_SIMP_TAC[GP_FINITE] THEN ONCE_REWRITE_TAC[REAL_ARITH `x - &1 = --(&1 - x)`] THEN REWRITE_TAC[real_div; REAL_INV_NEG; REAL_MUL_LNEG; REAL_MUL_RNEG] THEN @@ -3106,14 +3106,14 @@ let TAYLOR_COT_BOUND_GENERAL = prove MP_TAC PI_APPROX_25_BITS THEN MATCH_MP_TAC(REAL_ARITH `b + e <= a ==> abs(p - a) <= e ==> b <= &1 * p`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV; ALL_TAC] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_INV_INV] THEN REWRITE_TAC[REAL_ABS_INV] THEN MATCH_MP_TAC REAL_LE_INV2 THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM real_div] THEN FIRST_ASSUM(MATCH_MP_TAC o MATCH_MP (REAL_ARITH `x < a ==> b <= &1 - a ==> b <= abs(&1 - x)`)) THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let TAYLOR_COT_BOUND = prove (`!x n k. abs(x) <= inv(&2 pow k) /\ ~(x = &0) @@ -3137,7 +3137,7 @@ let TAYLOR_COT_BOUND = prove MATCH_MP_TAC REAL_POW_LE2 THEN SIMP_TAC[REAL_LE_MUL; REAL_LE_INV_EQ; REAL_POS; REAL_ABS_POS] THEN GEN_REWRITE_TAC LAND_CONV [REAL_MUL_SYM] THEN - MATCH_MP_TAC REAL_LE_LMUL THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_LE_LMUL THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[real_div; REAL_MUL_LID; REAL_POW_INV]);; let TAYLOR_COTX_BOUND = prove @@ -3160,9 +3160,9 @@ let TAYLOR_COTX_BOUND = prove REWRITE_TAC[ARITH_RULE `n + 2 = (n + 1) + 1`] THEN REWRITE_TAC[ADD1; SPECL [`f:num->real`; `n:num`; `1`] SUM_OFFSET] THEN REWRITE_TAC[SUM_1] THEN - CONV_TAC(ONCE_DEPTH_CONV TANNUMBER_CONV) THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[real_pow] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_SUB_RZERO] THEN + (CONV_TAC "(ONCE_DEPTH_CONV TANNUMBER_CONV)") (ONCE_DEPTH_CONV TANNUMBER_CONV) THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[real_pow] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_SUB_RZERO] THEN REWRITE_TAC[GSYM REAL_SUB_RDISTRIB] THEN SUBGOAL_THEN `abs(x) <= &1 /\ ~(x = &0)` MP_TAC THENL [ASM_REWRITE_TAC[] THEN MATCH_MP_TAC REAL_LE_TRANS THEN @@ -3178,15 +3178,15 @@ let TAYLOR_COTX_BOUND = prove REWRITE_TAC[GSYM REAL_MUL_ASSOC; GSYM REAL_POW_MUL; GSYM REAL_INV_MUL] THEN REWRITE_TAC[GSYM REAL_POW_POW; GSYM REAL_POW_MUL] THEN REWRITE_TAC[REAL_INV_MUL; REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN - MATCH_MP_TAC REAL_LE_LMUL THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_LE_LMUL THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM REAL_POW_INV] THEN MATCH_MP_TAC REAL_POW_LE2 THEN SIMP_TAC[REAL_LE_MUL; REAL_ABS_POS; REAL_LE_DIV; REAL_POS] THEN REWRITE_TAC[REAL_INV_MUL] THEN GEN_REWRITE_TAC RAND_CONV [REAL_MUL_SYM] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_LE_RMUL THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let TAYLOR_COTXX_BOUND = prove (`!x n k. abs(x) <= inv(&2 pow k) /\ ~(x = &0) @@ -3211,12 +3211,12 @@ let TAYLOR_COTXX_BOUND = prove REWRITE_TAC[REAL_POW2_THM; LE_0]; ALL_TAC] THEN DISCH_THEN(MP_TAC o SPEC `n - 1` o MATCH_MP TAYLOR_COT_BOUND_GENERAL) THEN ASM_CASES_TAC `n = 0` THENL - [ASM_REWRITE_TAC[] THEN CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[sum] THEN + [ASM_REWRITE_TAC[] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[sum] THEN REWRITE_TAC[real_pow; real_div; REAL_MUL_LZERO; REAL_SUB_RZERO] THEN REWRITE_TAC[GSYM real_div] THEN MATCH_MP_TAC(REAL_ARITH `a <= b ==> x <= a ==> x <= b`) THEN REWRITE_TAC[real_div; REAL_MUL_ASSOC; MULT_CLAUSES; REAL_INV_MUL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN SIMP_TAC[GSYM REAL_LE_LDIV_EQ; REAL_OF_NUM_LT; ARITH] THEN GEN_REWRITE_TAC LAND_CONV [GSYM REAL_INV_DIV] THEN @@ -3228,7 +3228,7 @@ let TAYLOR_COTXX_BOUND = prove MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `inv(&2 pow 0)` THEN REWRITE_TAC[REAL_POW2_THM; LE_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; ALL_TAC] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN SUBGOAL_THEN `n = (n - 1) + 1` MP_TAC THENL [UNDISCH_TAC `~(n = 0)` THEN ARITH_TAC; ALL_TAC] THEN DISCH_THEN(fun th -> GEN_REWRITE_TAC @@ -3254,7 +3254,7 @@ let TAYLOR_COTXX_BOUND = prove ASM_SIMP_TAC[REAL_MUL_RINV; REAL_MUL_RID]; ALL_TAC] THEN ONCE_REWRITE_TAC[ADD_SYM] THEN REWRITE_TAC[REAL_POW_ADD; REAL_INV_MUL; REAL_MUL_ASSOC; real_div] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN MATCH_MP_TAC REAL_LE_LMUL THEN REWRITE_TAC[REAL_POS] THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN GEN_REWRITE_TAC (LAND_CONV o LAND_CONV) [REAL_MUL_SYM] THEN diff --git a/100/platonic.ml b/100/platonic.ml index 306d04bf..24663568 100644 --- a/100/platonic.ml +++ b/100/platonic.ml @@ -106,7 +106,7 @@ let REAL_RAT5_MUL_CONV = let pth = prove (`(a1 + b1 * sqrt(&5)) * (a2 + b2 * sqrt(&5)) = (a1 * a2 + &5 * b1 * b2) + (a1 * b2 + a2 * b1) * sqrt(&5)`, - MP_TAC(ISPEC `&5` SQRT_POW_2) THEN CONV_TAC REAL_FIELD) in + MP_TAC(ISPEC `&5` SQRT_POW_2) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD) in REAL_RAT_MUL_CONV ORELSEC (BINOP_CONV REAL_RAT5_OF_RAT_CONV THENC GEN_REWRITE_CONV I [pth] THENC @@ -128,8 +128,8 @@ let REAL_RAT5_INV_CONV = SUBGOAL_THEN `a pow 2 - &5 * b pow 2 = (a + b * sqrt(&5)) * (a - b * sqrt(&5))` SUBST1_TAC THENL - [MP_TAC(SPEC `&5` SQRT_POW_2) THEN CONV_TAC REAL_FIELD; - REWRITE_TAC[REAL_ENTIRE; DE_MORGAN_THM] THEN CONV_TAC REAL_FIELD]) in + [MP_TAC(SPEC `&5` SQRT_POW_2) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; + REWRITE_TAC[REAL_ENTIRE; DE_MORGAN_THM] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]) in fun tm -> try REAL_RAT_INV_CONV tm with Failure _ -> let th1 = PART_MATCH (lhs o rand) pth tm in @@ -254,13 +254,13 @@ let STD_DODECAHEDRON = prove vector[-- &1 / &2 + -- &1 / &2 * sqrt(&5); &0; &1 / &2 + -- &1 / &2 * sqrt(&5)]}`, let golden_inverse = prove (`inv((&1 + sqrt(&5)) / &2) = -- &1 / &2 + &1 / &2 * sqrt(&5)`, - MP_TAC(ISPEC `&5` SQRT_POW_2) THEN CONV_TAC REAL_FIELD) in + MP_TAC(ISPEC `&5` SQRT_POW_2) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD) in REWRITE_TAC[std_dodecahedron] THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN REWRITE_TAC[golden_inverse] THEN REWRITE_TAC[REAL_ARITH `(&1 + s) / &2 = &1 / &2 + &1 / &2 * s`] THEN REWRITE_TAC[REAL_ARITH `--(a + b * sqrt(&5)) = --a + --b * sqrt(&5)`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[]);; let STD_ICOSAHEDRON = prove (`std_icosahedron = @@ -278,10 +278,10 @@ let STD_ICOSAHEDRON = prove vector[&1 / &2 + &1 / &2 * sqrt(&5); &0; -- &1], vector[-- &1 / &2 + -- &1 / &2 * sqrt(&5); &0; -- &1]}`, REWRITE_TAC[std_icosahedron] THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN REWRITE_TAC[REAL_ARITH `(&1 + s) / &2 = &1 / &2 + &1 / &2 * s`] THEN REWRITE_TAC[REAL_ARITH `--(a + b * sqrt(&5)) = --a + --b * sqrt(&5)`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[]);; (* ------------------------------------------------------------------------- *) (* Explicit computation of facets. *) @@ -316,7 +316,7 @@ let COMPUTE_FACES_2 = prove ==> &(CARD u):int = &3`) THEN CONJ_TAC THENL [ASM_MESON_TAC[AFF_DIM_AFFINE_HULL]; ASM_MESON_TAC[AFF_DIM_UNIQUE]]; ALL_TAC] THEN - CONV_TAC(LAND_CONV HAS_SIZE_CONV) THEN SIMP_TAC[LEFT_IMP_EXISTS_THM] THEN + (CONV_TAC "(LAND_CONV HAS_SIZE_CONV)") (LAND_CONV HAS_SIZE_CONV) THEN SIMP_TAC[LEFT_IMP_EXISTS_THM] THEN MAP_EVERY X_GEN_TAC [`x:real^3`; `y:real^3`; `z:real^3`] THEN REPEAT(DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC)) THEN DISCH_THEN SUBST_ALL_TAC THEN @@ -356,7 +356,7 @@ let COMPUTE_FACES_2 = prove ALL_TAC] THEN ASM_SIMP_TAC[AFF_DIM_AFFINE_INTER_HYPERPLANE; AFF_DIM_HYPERPLANE; AFFINE_HYPERPLANE; DIMINDEX_3] THEN - REPEAT(COND_CASES_TAC THEN CONV_TAC INT_REDUCE_CONV) THEN + REPEAT(COND_CASES_TAC THEN (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV) THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [SUBSET_HYPERPLANES]) THEN ASM_REWRITE_TAC[HYPERPLANE_EQ_EMPTY] THEN @@ -531,7 +531,7 @@ let COMPUTE_FACES_2 = prove ASM_SIMP_TAC[AFF_DIM_AFFINE_INDEPENDENT] THEN SIMP_TAC[CARD_CLAUSES; FINITE_INSERT; FINITE_EMPTY] THEN ASM_REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY; ARITH] THEN - CONV_TAC INT_REDUCE_CONV; + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV; MATCH_MP_TAC AFF_DIM_SUBSET THEN ASM_REWRITE_TAC[INSERT_SUBSET] THEN REWRITE_TAC[EMPTY_SUBSET] THEN REPEAT CONJ_TAC THEN MATCH_MP_TAC HULL_INC THEN @@ -571,10 +571,10 @@ let COMPUTE_FACES_2_STEP_1 = prove Q x y z) <=> (?y z. P y /\ P z /\ Q v y z) \/ (?x y z. P x /\ P y /\ P z /\ Q x y z))`) THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN REWRITE_TAC[VECTOR_SUB_REFL; CROSS_0] THEN CONJ_TAC THEN REPEAT GEN_TAC THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN MAP_EVERY (SUBST1_TAC o VEC3_RULE) [`(z - y) cross (x - y) = --((z - x) cross (y - x))`; `(y - x) cross (z - x) = --((z - x) cross (y - x))`] THEN @@ -614,9 +614,9 @@ let COMPUTE_FACES_2_STEP_2 = prove Q y z) <=> (?z. P z /\ Q u z) \/ (?y z. P y /\ P z /\ Q y z))`) THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN REWRITE_TAC[CROSS_REFL] THEN REPEAT GEN_TAC THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN SUBST1_TAC + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN SUBST1_TAC (VEC3_RULE `(x - v) cross (y - v) = --((y - v) cross (x - v))`) THEN REWRITE_TAC[VECTOR_NEG_EQ_0; DOT_LNEG; REAL_EQ_NEG2; REAL_LE_NEG2; real_ge] THEN REWRITE_TAC[DISJ_ACI]);; @@ -633,19 +633,18 @@ let COMPUTE_FACES_TAC = REWRITE_TAC[NOT_IN_EMPTY] THEN REWRITE_TAC[EXISTS_IN_INSERT; NOT_IN_EMPTY] THEN REWRITE_TAC[FORALL_IN_INSERT; NOT_IN_EMPTY] THEN - CONV_TAC(ONCE_DEPTH_CONV VECTOR3_SUB_CONV) THEN - CONV_TAC(ONCE_DEPTH_CONV VECTOR3_CROSS_CONV) THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN - CONV_TAC(ONCE_DEPTH_CONV VECTOR3_EQ_0_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV VECTOR3_SUB_CONV)") (ONCE_DEPTH_CONV VECTOR3_SUB_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV VECTOR3_CROSS_CONV)") (ONCE_DEPTH_CONV VECTOR3_CROSS_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV VECTOR3_EQ_0_CONV)") (ONCE_DEPTH_CONV VECTOR3_EQ_0_CONV) THEN REWRITE_TAC[real_ge] THEN - CONV_TAC(ONCE_DEPTH_CONV VECTOR3_DOT_CONV) THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN - CONV_TAC(ONCE_DEPTH_CONV REAL_RAT5_LE_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV VECTOR3_DOT_CONV)") (ONCE_DEPTH_CONV VECTOR3_DOT_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV REAL_RAT5_LE_CONV)") (ONCE_DEPTH_CONV REAL_RAT5_LE_CONV) THEN REWRITE_TAC[INSERT_AC] THEN REWRITE_TAC[DISJ_ACI] THEN REPEAT(CHANGED_TAC (ONCE_REWRITE_TAC[lemma] THEN - CONV_TAC(ONCE_DEPTH_CONV - (LAND_CONV VECTOR3_DOT_CONV THENC REAL_RAT5_EQ_CONV))) THEN + (CONV_TAC "(ONCE_DEPTH_CONV (LAND_CONV VECTOR3_DOT_CONV THENC REAL_RAT5_EQ_CONV))") (ONCE_DEPTH_CONV (LAND_CONV VECTOR3_DOT_CONV THENC REAL_RAT5_EQ_CONV))) THEN REWRITE_TAC[]) THEN REWRITE_TAC[INTER_EMPTY] THEN REWRITE_TAC[INSERT_AC] THEN REWRITE_TAC[DISJ_ACI];; @@ -803,7 +802,7 @@ let COMPUTE_FACES_1 = prove ==> &(CARD u):int = &2`) THEN CONJ_TAC THENL [ASM_MESON_TAC[AFF_DIM_AFFINE_HULL]; ASM_MESON_TAC[AFF_DIM_UNIQUE]]; ALL_TAC] THEN - CONV_TAC(LAND_CONV HAS_SIZE_CONV) THEN SIMP_TAC[LEFT_IMP_EXISTS_THM] THEN + (CONV_TAC "(LAND_CONV HAS_SIZE_CONV)") (LAND_CONV HAS_SIZE_CONV) THEN SIMP_TAC[LEFT_IMP_EXISTS_THM] THEN MAP_EVERY X_GEN_TAC [`x:real^3`; `y:real^3`] THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC SUBST_ALL_TAC) THEN MAP_EVERY EXISTS_TAC [`x:real^3`; `y:real^3`] THEN @@ -868,7 +867,7 @@ let COMPUTE_FACES_1 = prove ASM_CASES_TAC `{x:real^3 | a dot x = b} SUBSET {v | a' dot v = b'}` THEN ASM_REWRITE_TAC[] THENL [ALL_TAC; - REPEAT(COND_CASES_TAC THEN CONV_TAC INT_REDUCE_CONV) THEN + REPEAT(COND_CASES_TAC THEN (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV) THEN FIRST_X_ASSUM(MP_TAC o MATCH_MP (SET_RULE `s INTER t SUBSET u ==> !x. x IN s /\ x IN t ==> x IN u`)) THEN DISCH_THEN(MP_TAC o SPEC `x + n:real^3`) THEN @@ -1049,7 +1048,7 @@ let COMPUTE_FACES_1 = prove [MATCH_MP_TAC AFF_DIM_SUBSET THEN ASM SET_TAC[]; ALL_TAC] THEN ASM_SIMP_TAC[AFF_DIM_AFFINE_INTER_HYPERPLANE; AFFINE_HYPERPLANE; AFF_DIM_HYPERPLANE; DIMINDEX_3] THEN - REPEAT(COND_CASES_TAC THEN CONV_TAC INT_REDUCE_CONV) THEN + REPEAT(COND_CASES_TAC THEN (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV) THEN FIRST_X_ASSUM(MP_TAC o SPEC `x + n:real^3` o GEN_REWRITE_RULE I [SUBSET]) THEN ASM_SIMP_TAC[IN_ELIM_THM; DOT_RADD; REAL_EQ_ADD_LCANCEL_0; DOT_EQ_0] THEN @@ -1122,17 +1121,17 @@ let EDGES_PER_FACE_TAC th = (MESON[HAS_SIZE] `s HAS_SIZE n ==> CARD s = n`) THEN REPEAT (MATCH_MP_TAC CARD_EQ_LEMMA THEN REPEAT CONJ_TAC THENL - [CONV_TAC NUM_REDUCE_CONV THEN NO_TAC; + [(CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN NO_TAC; REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY; SEGMENT_EQ; DE_MORGAN_THM] THEN REPEAT CONJ_TAC THEN MATCH_MP_TAC(SET_RULE `~(a = c /\ b = d) /\ ~(a = d /\ b = c) /\ ~(a = b /\ c = d) ==> ~({a,b} = {c,d})`) THEN PURE_ONCE_REWRITE_TAC[GSYM VECTOR_SUB_EQ] THEN - CONV_TAC(ONCE_DEPTH_CONV VECTOR3_SUB_CONV) THEN - CONV_TAC(ONCE_DEPTH_CONV VECTOR3_EQ_0_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV VECTOR3_SUB_CONV)") (ONCE_DEPTH_CONV VECTOR3_SUB_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV VECTOR3_EQ_0_CONV)") (ONCE_DEPTH_CONV VECTOR3_EQ_0_CONV) THEN REWRITE_TAC[] THEN NO_TAC; ALL_TAC]) THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[CONJUNCT1 HAS_SIZE_CLAUSES];; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[CONJUNCT1 HAS_SIZE_CLAUSES];; let TETRAHEDRON_EDGES_PER_FACE = prove (`!f. f face_of std_tetrahedron /\ aff_dim(f) = &2 @@ -1195,14 +1194,14 @@ let POLYTOPE_3D_LEMMA = prove let POLYTOPE_FULLDIM_TAC = MATCH_MP_TAC POLYTOPE_3D_LEMMA THEN - CONV_TAC(ONCE_DEPTH_CONV VECTOR3_SUB_CONV) THEN - CONV_TAC(ONCE_DEPTH_CONV VECTOR3_CROSS_CONV) THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN CONJ_TAC THENL - [CONV_TAC(RAND_CONV VECTOR3_EQ_0_CONV) THEN REWRITE_TAC[]; - CONV_TAC(ONCE_DEPTH_CONV VECTOR3_DOT_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV VECTOR3_SUB_CONV)") (ONCE_DEPTH_CONV VECTOR3_SUB_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV VECTOR3_CROSS_CONV)") (ONCE_DEPTH_CONV VECTOR3_CROSS_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN CONJ_TAC THENL + [(CONV_TAC "(RAND_CONV VECTOR3_EQ_0_CONV)") (RAND_CONV VECTOR3_EQ_0_CONV) THEN REWRITE_TAC[]; + (CONV_TAC "(ONCE_DEPTH_CONV VECTOR3_DOT_CONV)") (ONCE_DEPTH_CONV VECTOR3_DOT_CONV) THEN REWRITE_TAC[EXISTS_IN_INSERT; NOT_IN_EMPTY] THEN - CONV_TAC(ONCE_DEPTH_CONV VECTOR3_DOT_CONV) THEN - CONV_TAC(ONCE_DEPTH_CONV REAL_RAT5_EQ_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV VECTOR3_DOT_CONV)") (ONCE_DEPTH_CONV VECTOR3_DOT_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV REAL_RAT5_EQ_CONV)") (ONCE_DEPTH_CONV REAL_RAT5_EQ_CONV) THEN REWRITE_TAC[]];; let STD_TETRAHEDRON_FULLDIM = prove @@ -1247,15 +1246,14 @@ let COMPUTE_EDGES_TAC defn fulldim facets = CONJ_TAC THEN DISCH_THEN(MP_TAC o AP_TERM `aff_dim:(real^3->bool)->int`) THEN ASM_REWRITE_TAC[fulldim; AFF_DIM_EMPTY] THEN - CONV_TAC INT_REDUCE_CONV]; + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV]; MATCH_MP_TAC MONO_EXISTS THEN REWRITE_TAC[facet_of] THEN - REWRITE_TAC[fulldim] THEN CONV_TAC INT_REDUCE_CONV THEN + REWRITE_TAC[fulldim] THEN (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN ASM_MESON_TAC[FACE_OF_FACE]]; REWRITE_TAC[facets] THEN REWRITE_TAC[TAUT `(a \/ b) /\ c <=> a /\ c \/ b /\ c`] THEN REWRITE_TAC[EXISTS_OR_THM; UNWIND_THM2] THEN - CONV_TAC(LAND_CONV(DEPTH_BINOP_CONV `\/` - (fun tm -> REWR_CONV (COMPUTE_EDGES_CONV(rand(rand(lhand tm)))) tm))) THEN + (CONV_TAC "(LAND_CONV(DEPTH_BINOP_CONV `\/` (fun tm -> REWR_CONV (COMPUTE_EDGES_CONV(rand(rand(lhand tm)))) tm)))") (LAND_CONV(DEPTH_BINOP_CONV `\/` (fun tm -> REWR_CONV (COMPUTE_EDGES_CONV(rand(rand(lhand tm)))) tm))) THEN REWRITE_TAC[INSERT_AC] THEN REWRITE_TAC[DISJ_ACI]];; let TETRAHEDRON_EDGES = prove @@ -1395,7 +1393,7 @@ let COMPUTE_VERTICES_TAC defn fulldim edges = CONJ_TAC THEN DISCH_THEN(MP_TAC o AP_TERM `aff_dim:(real^3->bool)->int`) THEN ASM_REWRITE_TAC[fulldim; AFF_DIM_EMPTY] THEN - CONV_TAC INT_REDUCE_CONV]; + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV]; REWRITE_TAC[facet_of] THEN DISCH_THEN(X_CHOOSE_THEN `f:real^3->bool` STRIP_ASSUME_TAC)] THEN MP_TAC(ISPECL [`f:real^3->bool`; `v:real^3->bool`] @@ -1412,12 +1410,12 @@ let COMPUTE_VERTICES_TAC defn fulldim edges = ASM_MESON_TAC[FACE_OF_FACE]; DISCH_THEN(MP_TAC o AP_TERM `aff_dim:(real^3->bool)->int`) THEN ASM_REWRITE_TAC[fulldim; AFF_DIM_EMPTY] THEN - CONV_TAC INT_REDUCE_CONV; + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV; DISCH_THEN(MP_TAC o AP_TERM `aff_dim:(real^3->bool)->int`) THEN ASM_REWRITE_TAC[fulldim; AFF_DIM_EMPTY] THEN - CONV_TAC INT_REDUCE_CONV]; + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV]; MATCH_MP_TAC MONO_EXISTS THEN REWRITE_TAC[facet_of] THEN - ASM_REWRITE_TAC[fulldim] THEN CONV_TAC INT_REDUCE_CONV THEN + ASM_REWRITE_TAC[fulldim] THEN (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN ASM_MESON_TAC[FACE_OF_FACE; FACE_OF_TRANS]]; REWRITE_TAC[edges] THEN REWRITE_TAC[TAUT `(a \/ b) /\ c <=> a /\ c \/ b /\ c`] THEN @@ -1531,25 +1529,25 @@ let EDGES_PER_VERTEX_TAC defn edges verts = `e = a /\ {x} face_of e <=> e = a /\ x extreme_point_of a`] THEN REWRITE_TAC[GSYM SEGMENT_CONVEX_HULL; EXTREME_POINT_OF_SEGMENT] THEN ONCE_REWRITE_TAC[GSYM VECTOR_SUB_EQ] THEN - CONV_TAC(ONCE_DEPTH_CONV VECTOR3_SUB_CONV) THEN - CONV_TAC(ONCE_DEPTH_CONV VECTOR3_EQ_0_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV VECTOR3_SUB_CONV)") (ONCE_DEPTH_CONV VECTOR3_SUB_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV VECTOR3_EQ_0_CONV)") (ONCE_DEPTH_CONV VECTOR3_EQ_0_CONV) THEN REWRITE_TAC[EMPTY_GSPEC; UNION_EMPTY] THEN REWRITE_TAC[SET_RULE `{x | x = a} = {a}`] THEN REWRITE_TAC[SET_RULE `{x} UNION s = x INSERT s`] THEN MATCH_MP_TAC (MESON[HAS_SIZE] `s HAS_SIZE n ==> CARD s = n`) THEN REPEAT (MATCH_MP_TAC CARD_EQ_LEMMA THEN REPEAT CONJ_TAC THENL - [CONV_TAC NUM_REDUCE_CONV THEN NO_TAC; + [(CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN NO_TAC; REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY; DE_MORGAN_THM; SEGMENT_EQ] THEN REPEAT CONJ_TAC THEN MATCH_MP_TAC(SET_RULE `~(a = c /\ b = d) /\ ~(a = d /\ b = c) /\ ~(a = b /\ c = d) ==> ~({a,b} = {c,d})`) THEN PURE_ONCE_REWRITE_TAC[GSYM VECTOR_SUB_EQ] THEN - CONV_TAC(ONCE_DEPTH_CONV VECTOR3_SUB_CONV) THEN - CONV_TAC(ONCE_DEPTH_CONV VECTOR3_EQ_0_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV VECTOR3_SUB_CONV)") (ONCE_DEPTH_CONV VECTOR3_SUB_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV VECTOR3_EQ_0_CONV)") (ONCE_DEPTH_CONV VECTOR3_EQ_0_CONV) THEN REWRITE_TAC[] THEN NO_TAC; ALL_TAC]) THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[CONJUNCT1 HAS_SIZE_CLAUSES];; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[CONJUNCT1 HAS_SIZE_CLAUSES];; let TETRAHEDRON_EDGES_PER_VERTEX = prove (`!v. v face_of std_tetrahedron /\ aff_dim(v) = &0 @@ -1614,7 +1612,7 @@ let SIZE_ZERO_DIMENSIONAL_FACES = prove SUBGOAL_THEN `{f | f face_of s /\ aff_dim f = &0} = IMAGE (\v:real^N. {v}) {v | v extreme_point_of s}` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[AFF_DIM_SING; FACE_OF_SING; IN_ELIM_THM] THEN REWRITE_TAC[AFF_DIM_EQ_0] THEN MESON_TAC[]; REPEAT STRIP_TAC THENL @@ -1654,9 +1652,9 @@ let PLATONIC_SOLIDS_LIMITS = prove [MP_TAC(ISPECL [`p:real^3->bool`; `e:real^3->bool`] POLYHEDRON_RIDGE_TWO_FACETS) THEN ASM_SIMP_TAC[POLYTOPE_IMP_POLYHEDRON] THEN ANTS_TAC THENL - [CONV_TAC INT_REDUCE_CONV THEN DISCH_THEN SUBST_ALL_TAC THEN + [(CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN DISCH_THEN SUBST_ALL_TAC THEN RULE_ASSUM_TAC(REWRITE_RULE[AFF_DIM_EMPTY]) THEN ASM_INT_ARITH_TAC; - CONV_TAC INT_REDUCE_CONV THEN REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN MAP_EVERY X_GEN_TAC [`f1:real^3->bool`; `f2:real^3->bool`] THEN STRIP_TAC THEN MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `CARD {f1:real^3->bool,f2}` THEN CONJ_TAC THENL @@ -1682,7 +1680,7 @@ let PLATONIC_SOLIDS_LIMITS = prove [ALL_TAC; ASM_MESON_TAC[AFFINE_INDEPENDENT_IMP_FINITE]] THEN REWRITE_TAC[INT_OF_NUM_EQ] THEN STRIP_TAC THEN SUBGOAL_THEN `(b:real^3->bool) HAS_SIZE 2` MP_TAC THENL - [ASM_REWRITE_TAC[HAS_SIZE]; CONV_TAC(LAND_CONV HAS_SIZE_CONV)] THEN + [ASM_REWRITE_TAC[HAS_SIZE]; (CONV_TAC "(LAND_CONV HAS_SIZE_CONV)") (LAND_CONV HAS_SIZE_CONV)] THEN REWRITE_TAC[COLLINEAR_AFFINE_HULL] THEN REPEAT(MATCH_MP_TAC MONO_EXISTS THEN GEN_TAC) THEN ASM_MESON_TAC[HULL_SUBSET]]; @@ -1721,17 +1719,17 @@ let PLATONIC_SOLIDS_LIMITS = prove ASSUME_TAC THENL [ASM_SIMP_TAC[SIZE_ZERO_DIMENSIONAL_FACES; POLYTOPE_IMP_POLYHEDRON] THEN MP_TAC(ISPEC `p:real^3->bool` POLYTOPE_VERTEX_LOWER_BOUND) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC INT_REDUCE_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN REWRITE_TAC[INT_OF_NUM_LE]; ALL_TAC] THEN SUBGOAL_THEN `4 <= CARD {f:real^3->bool | f face_of p /\ aff_dim f = &2}` ASSUME_TAC THENL [MP_TAC(ISPEC `p:real^3->bool` POLYTOPE_FACET_LOWER_BOUND) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC INT_REDUCE_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN ASM_REWRITE_TAC[INT_OF_NUM_LE; facet_of] THEN MATCH_MP_TAC EQ_IMP THEN AP_TERM_TAC THEN AP_TERM_TAC THEN GEN_REWRITE_TAC I [EXTENSION] THEN REWRITE_TAC[IN_ELIM_THM] THEN - CONV_TAC INT_REDUCE_CONV THEN GEN_TAC THEN EQ_TAC THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN GEN_TAC THEN EQ_TAC THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THEN ASM_MESON_TAC[INT_ARITH `~(&2:int = -- &1)`; AFF_DIM_EMPTY]; ALL_TAC] THEN @@ -1752,14 +1750,14 @@ let PLATONIC_SOLIDS_LIMITS = prove DISCH_THEN(fun th -> STRIP_ASSUME_TAC th THEN FIRST_X_ASSUM(SUBST1_TAC o SYM o C MATCH_MP th)) THEN MP_TAC(ISPEC `f:real^3->bool` POLYTOPE_FACET_LOWER_BOUND) THEN - ASM_REWRITE_TAC[facet_of] THEN CONV_TAC INT_REDUCE_CONV THEN + ASM_REWRITE_TAC[facet_of] THEN (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN ANTS_TAC THENL [ASM_MESON_TAC[FACE_OF_POLYTOPE_POLYTOPE]; ALL_TAC] THEN REWRITE_TAC[INT_OF_NUM_LE] THEN MATCH_MP_TAC EQ_IMP THEN AP_TERM_TAC THEN AP_TERM_TAC THEN GEN_REWRITE_TAC I [EXTENSION] THEN REWRITE_TAC[IN_ELIM_THM] THEN - CONV_TAC INT_REDUCE_CONV THEN X_GEN_TAC `e:real^3->bool` THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN X_GEN_TAC `e:real^3->bool` THEN EQ_TAC THEN ASM_CASES_TAC `e:real^3->bool = {}` THEN - ASM_SIMP_TAC[AFF_DIM_EMPTY] THEN CONV_TAC INT_REDUCE_CONV THENL + ASM_SIMP_TAC[AFF_DIM_EMPTY] THEN (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THENL [ASM_MESON_TAC[FACE_OF_TRANS; FACE_OF_IMP_SUBSET]; ASM_MESON_TAC[FACE_OF_FACE]]; ALL_TAC] THEN @@ -1820,7 +1818,7 @@ let PLATONIC_SOLIDS_LIMITS = prove ASM_SIMP_TAC[ARITH_RULE `3 <= m ==> (m <= 5 <=> m = 3 \/ m = 4 \/ m = 5)`] THEN STRIP_TAC THEN UNDISCH_TAC `E * 2 * (m + n) = m * n * (E + 2)` THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NUM_REDUCE_CONV THEN ASM_ARITH_TAC);; + ASM_REWRITE_TAC[] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_ARITH_TAC);; (* ------------------------------------------------------------------------- *) (* If-and-only-if version. *) @@ -2069,7 +2067,7 @@ let MATRIX_BY_CRAMER = prove x1$1 * y2$3 * z1$2 - x1$2 * y1$1 * z2$3 - x2$3 * y1$2 * z1$1) / d)`, - REPEAT GEN_TAC THEN CONV_TAC let_CONV THEN DISCH_TAC THEN + REPEAT GEN_TAC THEN (CONV_TAC "let_CONV") let_CONV THEN DISCH_TAC THEN ASM_SIMP_TAC[MATRIX_BY_CRAMER_LEMMA] THEN REWRITE_TAC[DET_3; CART_EQ] THEN SIMP_TAC[LAMBDA_BETA; DIMINDEX_3; ARITH; VECTOR_3] THEN @@ -2081,9 +2079,9 @@ let CONGRUENT_EDGES_TAC edges = REPEAT STRIP_TAC THEN ASM_REWRITE_TAC[GSYM SEGMENT_CONVEX_HULL] THEN MATCH_MP_TAC CONGRUENT_SEGMENTS THEN REWRITE_TAC[DIST_EQ] THEN REWRITE_TAC[dist; NORM_POW_2] THEN - CONV_TAC(ONCE_DEPTH_CONV VECTOR3_SUB_CONV) THEN - CONV_TAC(ONCE_DEPTH_CONV VECTOR3_DOT_CONV) THEN - CONV_TAC(ONCE_DEPTH_CONV REAL_RAT5_EQ_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV VECTOR3_SUB_CONV)") (ONCE_DEPTH_CONV VECTOR3_SUB_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV VECTOR3_DOT_CONV)") (ONCE_DEPTH_CONV VECTOR3_DOT_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV REAL_RAT5_EQ_CONV)") (ONCE_DEPTH_CONV REAL_RAT5_EQ_CONV) THEN REWRITE_TAC[];; let CONGRUENT_FACES_TAC facets = @@ -2109,13 +2107,13 @@ let CONGRUENT_FACES_TAC facets = [REWRITE_TAC[ORTHOGONAL_MATRIX; CART_EQ] THEN SIMP_TAC[transp; LAMBDA_BETA; matrix_mul; mat] THEN REWRITE_TAC[DIMINDEX_3; SUM_3; FORALL_3; VECTOR_3; ARITH] THEN - CONV_TAC(ONCE_DEPTH_CONV REAL_RAT5_MUL_CONV) THEN - CONV_TAC(DEPTH_CONV REAL_RAT5_ADD_CONV) THEN - CONV_TAC(ONCE_DEPTH_CONV REAL_RAT5_EQ_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV REAL_RAT5_MUL_CONV)") (ONCE_DEPTH_CONV REAL_RAT5_MUL_CONV) THEN + (CONV_TAC "(DEPTH_CONV REAL_RAT5_ADD_CONV)") (DEPTH_CONV REAL_RAT5_ADD_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV REAL_RAT5_EQ_CONV)") (ONCE_DEPTH_CONV REAL_RAT5_EQ_CONV) THEN REWRITE_TAC[] THEN NO_TAC; REWRITE_TAC[IMAGE_CLAUSES; MATRIX_VECTOR_MUL_3] THEN - CONV_TAC(ONCE_DEPTH_CONV REAL_RAT5_MUL_CONV) THEN - CONV_TAC(DEPTH_CONV REAL_RAT5_ADD_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV REAL_RAT5_MUL_CONV)") (ONCE_DEPTH_CONV REAL_RAT5_MUL_CONV) THEN + (CONV_TAC "(DEPTH_CONV REAL_RAT5_ADD_CONV)") (DEPTH_CONV REAL_RAT5_ADD_CONV) THEN REWRITE_TAC[INSERT_AC]]);; let TETRAHEDRON_CONGRUENT_EDGES = prove diff --git a/100/pnt.ml b/100/pnt.ml index da2e04c0..5efe4f4a 100644 --- a/100/pnt.ml +++ b/100/pnt.ml @@ -99,7 +99,7 @@ let NEARZETA_BOUND_LEMMA = prove SIMP_TAC[COMPLEX_POW_2; CPOW_ADD; CPOW_SUB; CPOW_N; COMPLEX_POW_1] THEN (SUBGOAL_THEN `~(z cpow s = Cx(&0))` MP_TAC THENL [ASM_REWRITE_TAC[CPOW_EQ_0]; UNDISCH_TAC `~(z = Cx(&0))`]) THEN - CONV_TAC COMPLEX_FIELD; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; ALL_TAC] THEN REWRITE_TAC[COMPLEX_NORM_MUL; COMPLEX_NORM_DIV; COMPLEX_NORM_POW] THEN REWRITE_TAC[real_div; REAL_MUL_ASSOC] THEN @@ -124,7 +124,7 @@ let NEARZETA_BOUND_LEMMA = prove REWRITE_TAC[NUMSEG_CONV `0..1`] THEN SIMP_TAC[VSUM_CLAUSES; FINITE_INSERT; FINITE_RULES] THEN REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY; ARITH] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[complex_pow; COMPLEX_POW_1; COMPLEX_DIV_1; COMPLEX_MUL_RID] THEN DISCH_THEN(MP_TAC o SPECL [`Cx(&n)`; `Cx(&n) + Cx(&1)`]) THEN REWRITE_TAC[ENDS_IN_SEGMENT; COMPLEX_NORM_CX; COMPLEX_ADD_SUB] THEN @@ -132,7 +132,7 @@ let NEARZETA_BOUND_LEMMA = prove REWRITE_TAC[REAL_ABS_NUM; REAL_POW_ONE; REAL_DIV_1; REAL_MUL_RID] THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[GSYM REAL_OF_NUM_ADD; CX_ADD; complex_div] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let NORM_CPOW_LOWERBOUND = prove (`!m s n. &m <= Re s /\ ~(n = 0) ==> &n pow m <= norm(Cx(&n) cpow s)`, @@ -227,7 +227,7 @@ let ZETADIFF_CONVERGES = prove ASM_REWRITE_TAC[] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&n` THEN ASM_SIMP_TAC[REAL_OF_NUM_LE] THEN ASM_SIMP_TAC[ARITH_RULE `N + 2 <= n ==> N <= n`] THEN - MATCH_MP_TAC REAL_EQ_IMP_LE THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC REAL_EQ_IMP_LE THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC EXP_LOG THEN REWRITE_TAC[REAL_OF_NUM_LT] THEN ASM_ARITH_TAC);; @@ -313,7 +313,7 @@ let COMPLEX_DERIVATIVE_ZETA_CONVERGES = prove [CONJ_TAC THENL [REWRITE_TAC[IN_FROM] THEN REPEAT STRIP_TAC THEN COMPLEX_DIFF_TAC THEN MATCH_MP_TAC(TAUT `(a ==> b) /\ a ==> a /\ b`) THEN - CONJ_TAC THENL [CONV_TAC COMPLEX_FIELD; ALL_TAC] THEN + CONJ_TAC THENL [(CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; ALL_TAC] THEN ASM_SIMP_TAC[CPOW_EQ_0; CX_INJ; REAL_OF_NUM_EQ; LE_1]; ALL_TAC] THEN POP_ASSUM(K ALL_TAC) THEN @@ -345,7 +345,7 @@ let COMPLEX_DERIVATIVE_ZETA_CONVERGES = prove FIRST_ASSUM(MP_TAC o SPEC `s:complex`) THEN SIMP_TAC[ASSUME `&1 < Re s`] THEN DISCH_THEN(MP_TAC o CONJUNCT1 o CONJUNCT2) THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC HAS_COMPLEX_DERIVATIVE_DERIVATIVE THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC HAS_COMPLEX_DERIVATIVE_DERIVATIVE THEN FIRST_ASSUM(MP_TAC o SPEC `s:complex`) THEN SIMP_TAC[ASSUME `&1 < Re s`] THEN DISCH_THEN(MP_TAC o CONJUNCT2 o CONJUNCT2) THEN MATCH_MP_TAC(REWRITE_RULE[TAUT `b /\ c /\ d ==> e <=> b /\ c ==> d ==> e`] @@ -382,7 +382,7 @@ let HOLOMORPHIC_NEARZETA_LEMMA = prove [MAP_EVERY X_GEN_TAC [`m:num`; `s:complex`] THEN REWRITE_TAC[IN_ELIM_THM; real_gt; from] THEN STRIP_TAC THEN COMPLEX_DIFF_TAC THEN MATCH_MP_TAC(TAUT `a /\ (a ==> b) ==> a /\ b`) THEN - CONJ_TAC THENL [ALL_TAC; CONV_TAC COMPLEX_FIELD] THEN + CONJ_TAC THENL [ALL_TAC; (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD] THEN ASM_REWRITE_TAC[CPOW_EQ_0; CX_INJ; REAL_OF_NUM_EQ] THEN ASM_ARITH_TAC; ALL_TAC] THEN X_GEN_TAC `s:complex` THEN REWRITE_TAC[IN_ELIM_THM; real_gt] THEN @@ -473,7 +473,7 @@ let HOLOMORPHIC_NEARZETA_STRONG = prove MATCH_MP_TAC HAS_COMPLEX_DERIVATIVE_TRANSFORM_AT THEN MAP_EVERY EXISTS_TAC [`g:complex->complex`; `Re z`] THEN ASM_SIMP_TAC[dist] THEN - X_GEN_TAC `w:complex` THEN DISCH_TAC THEN CONV_TAC SYM_CONV THEN + X_GEN_TAC `w:complex` THEN DISCH_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN MP_TAC(SPEC `w - z:complex` COMPLEX_NORM_GE_RE_IM) THEN REWRITE_TAC[RE_SUB] THEN ASM_REAL_ARITH_TAC; @@ -526,7 +526,7 @@ let NEARZETA_1 = prove SUBGOAL_THEN `~(m = 0)` ASSUME_TAC THENL [ASM_ARITH_TAC; ALL_TAC] THEN ASM_SIMP_TAC[CPOW_N; CX_INJ; REAL_OF_NUM_EQ; ADD_EQ_0; ARITH_EQ] THEN REWRITE_TAC[complex_pow] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let HOLOMORPHIC_ZETA = prove (`zeta holomorphic_on {s | Re(s) > &0 /\ ~(s = Cx(&1))}`, @@ -598,7 +598,7 @@ let EULER_PRODUCT_LEMMA = prove ABS_TAC THEN ASM_SIMP_TAC[SET_RULE `s INTER t = {} ==> t INTER u = (((s UNION t) INTER u) DIFF (s INTER u))`] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_DIFF THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_DIFF THEN REWRITE_TAC[FINITE_INTER_NUMSEG] THEN SET_TAC[]) in REWRITE_TAC[IMP_CONJ; RIGHT_FORALL_IMP_THM] THEN GEN_TAC THEN DISCH_TAC THEN MATCH_MP_TAC FINITE_INDUCT_STRONG THEN @@ -728,11 +728,11 @@ let ZETA_NONZERO_LEMMA = prove REPEAT STRIP_TAC THEN FIRST_ASSUM(MP_TAC o MATCH_MP EULER_PRODUCT_MULTIPLY) THEN REWRITE_TAC[LIM_SEQUENTIALLY] THEN DISCH_THEN(MP_TAC o SPEC `&1 / &2`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_THEN `n:num` (MP_TAC o SPEC `n:num`)) THEN ASM_REWRITE_TAC[COMPLEX_MUL_RZERO; LE_REFL] THEN REWRITE_TAC[dist; COMPLEX_SUB_LZERO; NORM_NEG; COMPLEX_NORM_CX] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let EULER_PRODUCT = prove (`!s. &1 < Re s @@ -795,7 +795,7 @@ let ZETA_1_NZ = prove SIMP_TAC[EXP_LOG; REAL_OF_NUM_LT; ARITH] THEN SUBGOAL_THEN `(&1 + &1 / &2) pow 2 <= exp(&1 / &2) pow 2` MP_TAC THENL [MATCH_MP_TAC REAL_POW_LE2 THEN - CONJ_TAC THENL [CONV_TAC REAL_RAT_REDUCE_CONV; ALL_TAC] THEN + CONJ_TAC THENL [(CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN REWRITE_TAC[REAL_EXP_LE_X]; ALL_TAC] THEN SIMP_TAC[GSYM REAL_EXP_N; REAL_DIV_LMUL; REAL_OF_NUM_EQ; ARITH] THEN @@ -982,7 +982,7 @@ let ZETA_NONZERO = prove SIMP_TAC[IN_ELIM_THM; REAL_CX; ZETA_MULTIPLE_BOUND] THEN MAP_EVERY EXISTS_TAC [`Cx(&3)`; `Cx(&2)`] THEN REWRITE_TAC[dist; GSYM CX_SUB; COMPLEX_NORM_CX; REAL_CX; RE_CX] THEN - CONV_TAC REAL_RAT_REDUCE_CONV] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN REWRITE_TAC[COMPLEX_MUL_ASSOC] THEN MATCH_MP_TAC LIM_COMPLEX_MUL THEN CONJ_TAC THENL [ALL_TAC; @@ -1055,7 +1055,7 @@ let NEARZETA_NONZERO = prove FIRST_ASSUM(MP_TAC o MATCH_MP ZETA_NONZERO) THEN REWRITE_TAC[zeta; genzeta] THEN COND_CASES_TAC THEN ASM_SIMP_TAC[NEARZETA_1; ARITH; CPOW_1] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC COMPLEX_FIELD);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; (* ------------------------------------------------------------------------- *) (* The logarithmic derivative of the zeta function. *) @@ -1072,7 +1072,7 @@ let NORM_CLOG_BOUND = prove REWRITE_TAC[COMPLEX_SUB_RZERO; CLOG_1] THEN DISCH_THEN MATCH_MP_TAC THEN ASM_REWRITE_TAC[CENTRE_IN_CBALL] THEN REWRITE_TAC[IN_CBALL] THEN ASM_REWRITE_TAC[dist; COMPLEX_SUB_LZERO; NORM_NEG] THEN - CONV_TAC REAL_RAT_REDUCE_CONV] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN REWRITE_TAC[CONVEX_CBALL; IN_CBALL; dist; COMPLEX_SUB_LZERO; NORM_NEG] THEN X_GEN_TAC `w:complex` THEN DISCH_TAC THEN CONJ_TAC THENL [COMPLEX_DIFF_TAC THEN @@ -1152,7 +1152,7 @@ let LOGZETA_EXISTS = prove REWRITE_TAC[RE_CX] THEN POP_ASSUM MP_TAC THEN REAL_ARITH_TAC; ALL_TAC] THEN DISCH_THEN(MP_TAC o SPEC `&1 / &2` o MATCH_MP SERIES_GOESTOZERO) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[EVENTUALLY_SEQUENTIALLY] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[EVENTUALLY_SEQUENTIALLY] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `N:num` THEN MATCH_MP_TAC MONO_FORALL THEN X_GEN_TAC `p:num` THEN DISCH_THEN(fun th -> @@ -1201,12 +1201,12 @@ let CEXP_LOGZETA = prove REWRITE_TAC[SET_RULE `{x | P x} INTER {x | Q x} = {x | P x /\ Q x}`] THEN MATCH_MP_TAC CPRODUCT_EQ THEN X_GEN_TAC `p:num` THEN REWRITE_TAC[IN_ELIM_THM; CEXP_NEG] THEN STRIP_TAC THEN - AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC CEXP_CLOG THEN + AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CEXP_CLOG THEN REWRITE_TAC[COMPLEX_SUB_0] THEN DISCH_THEN(MP_TAC o AP_TERM `norm:complex->real`) THEN ASM_SIMP_TAC[NORM_CPOW_REAL; REAL_CX; REAL_OF_NUM_LT; RE_CX; REAL_ABS_NUM; COMPLEX_NORM_INV; PRIME_IMP_NZ; LT_NZ; COMPLEX_NORM_CX; REAL_EXP_EQ_1] THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN REWRITE_TAC[GSYM REAL_EXP_0; GSYM REAL_EXP_NEG; REAL_EXP_INJ] THEN REWRITE_TAC[REAL_NEG_EQ_0; REAL_ENTIRE] THEN ASM_SIMP_TAC[REAL_ARITH `&1 < s ==> ~(s = &0)`] THEN @@ -1375,7 +1375,7 @@ let BOUND_LEMMA_2 = prove ASM_SIMP_TAC[REAL_LE_DIV; REAL_POW_LE; REAL_LT_IMP_LE] THEN ASM_SIMP_TAC[REAL_LE_LDIV_EQ; REAL_POW_LT] THEN ONCE_REWRITE_TAC[GSYM REAL_SUB_LE] THEN - CONV_TAC(RAND_CONV REAL_POLY_CONV) THEN + (CONV_TAC "(RAND_CONV REAL_POLY_CONV)") (RAND_CONV REAL_POLY_CONV) THEN REPEAT(MATCH_MP_TAC REAL_LE_ADD THEN CONJ_TAC) THEN REPEAT(MATCH_MP_TAC REAL_LE_MUL THEN CONJ_TAC) THEN ASM_SIMP_TAC[REAL_POS; REAL_POW_LE; REAL_LT_IMP_LE]);; @@ -1411,7 +1411,7 @@ let BOUND_LEMMA_3 = prove ALL_TAC] THEN SUBGOAL_THEN `~(Cx x = Cx(&0))` MP_TAC THENL [REWRITE_TAC[CX_INJ] THEN UNDISCH_TAC `&1 <= x` THEN REAL_ARITH_TAC; - CONV_TAC COMPLEX_FIELD]; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]; ALL_TAC] THEN MAP_EVERY X_GEN_TAC [`a:real`; `b:real`] THEN STRIP_TAC THEN @@ -1463,7 +1463,7 @@ let BOUND_LEMMA_3 = prove `2`; `n:num`] SUM_INTEGRAL_UBOUND_DECREASING) THEN ASM_REWRITE_TAC[] THEN ANTS_TAC THENL - [CONV_TAC REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL + [(CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL [X_GEN_TAC `u:complex` THEN STRIP_TAC THEN COMPLEX_DIFF_TAC THEN CONJ_TAC THENL [SUBGOAL_THEN `?y. u = Cx y` (CHOOSE_THEN SUBST_ALL_TAC) THENL @@ -1476,7 +1476,7 @@ let BOUND_LEMMA_3 = prove ALL_TAC] THEN SUBGOAL_THEN `~(Cx x = Cx(&0))` MP_TAC THENL [REWRITE_TAC[CX_INJ] THEN UNDISCH_TAC `&0 < x` THEN REAL_ARITH_TAC; - CONV_TAC COMPLEX_FIELD]; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]; ALL_TAC] THEN MAP_EVERY X_GEN_TAC [`a:real`; `b:real`] THEN STRIP_TAC THEN @@ -1493,7 +1493,7 @@ let BOUND_LEMMA_3 = prove ALL_TAC] THEN MATCH_MP_TAC(REAL_ARITH `x = y /\ &1 + u <= v ==> x <= u ==> &1 + y <= v`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[CPOW_1] THEN CONJ_TAC THENL [MATCH_MP_TAC SUM_EQ_NUMSEG THEN REWRITE_TAC[GSYM CX_SUB]; @@ -1578,7 +1578,7 @@ let BOUND_LEMMA_4 = prove SUM_INTEGRAL_UBOUND_DECREASING) THEN ASM_REWRITE_TAC[GSYM REAL_OF_NUM_ADD; REAL_ARITH `(x + &1) - &1 = x`] THEN ANTS_TAC THENL - [CONV_TAC REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL + [(CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL [X_GEN_TAC `u:complex` THEN STRIP_TAC THEN COMPLEX_DIFF_TAC THEN CONJ_TAC THENL [SUBGOAL_THEN `?y. u = Cx y` (CHOOSE_THEN SUBST_ALL_TAC) THENL @@ -1592,7 +1592,7 @@ let BOUND_LEMMA_4 = prove REWRITE_TAC[COMPLEX_RING `--x - Cx(&1) = --(x + Cx(&1))`] THEN SUBGOAL_THEN `~(Cx x = Cx(&0))` MP_TAC THENL [REWRITE_TAC[CX_INJ] THEN UNDISCH_TAC `&0 < x` THEN REAL_ARITH_TAC; - CONV_TAC COMPLEX_FIELD]; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]; ALL_TAC] THEN MAP_EVERY X_GEN_TAC [`a:real`; `b:real`] THEN STRIP_TAC THEN SUBGOAL_THEN `&0 < a /\ &0 < b` STRIP_ASSUME_TAC THENL @@ -1911,7 +1911,7 @@ let NEWMAN_INGHAM_THEOREM = prove MATCH_MP_TAC WINDING_NUMBER_LINEPATH_POS_LT THEN REWRITE_TAC[complex_mul; RE; IM; RE_SUB; RE_CNJ; IM_SUB; IM_CNJ; RE_CX; IM_CX] THEN - CONV_TAC(RAND_CONV REAL_POLY_CONV) THEN + (CONV_TAC "(RAND_CONV REAL_POLY_CONV)") (RAND_CONV REAL_POLY_CONV) THEN ASM_SIMP_TAC[REAL_LT_MUL; REAL_OF_NUM_LT; ARITH]]) THEN REWRITE_TAC[PATH_IMAGE_LINEPATH; segment; IN_ELIM_THM] THEN REWRITE_TAC[COMPLEX_EQ; RE_CMUL; RE_ADD; RE_CX; RE; @@ -1968,7 +1968,7 @@ let NEWMAN_INGHAM_THEOREM = prove MATCH_MP_TAC(REAL_ARITH `x < &1 /\ y < &1 ==> x + y < &2`) THEN CONJ_TAC THEN MATCH_MP_TAC WINDING_NUMBER_LT_1 THENL [EXISTS_TAC `--Cx(&1)`; EXISTS_TAC `Cx(&1)`] THEN - ASM_SIMP_TAC[] THEN (CONJ_TAC THENL [CONV_TAC COMPLEX_FIELD; ALL_TAC]) THEN + ASM_SIMP_TAC[] THEN (CONJ_TAC THENL [(CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; ALL_TAC]) THEN X_GEN_TAC `t:real` THEN DISCH_TAC THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (SET_RULE `s SUBSET t ==> ~(x IN t) ==> ~(x IN s)`)) THEN @@ -1997,7 +1997,7 @@ let NEWMAN_INGHAM_THEOREM = prove X_GEN_TAC `z:complex` THEN DISCH_TAC THEN ASM_CASES_TAC `z = Cx(&0)` THENL [ASM_MESON_TAC[]; ALL_TAC] THEN UNDISCH_TAC `~(z = Cx(&0))` THEN REWRITE_TAC[] THEN - ABBREV_TAC `wever = inv(Cx R pow 2)` THEN CONV_TAC COMPLEX_FIELD] THEN + ABBREV_TAC `wever = inv(Cx R pow 2)` THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD] THEN CONJ_TAC THENL [REWRITE_TAC[REAL_ARITH `abs(x) <= a <=> x >= --a /\ x <= a`] THEN REWRITE_TAC[SET_RULE `{x | P x /\ Q x} = {x | P x} INTER {x | Q x}`] THEN @@ -2090,7 +2090,7 @@ let NEWMAN_INGHAM_THEOREM = prove MATCH_MP_TAC(REAL_ARITH `x < &1 /\ y < &1 ==> x + y < &2`) THEN CONJ_TAC THEN MATCH_MP_TAC WINDING_NUMBER_LT_1 THENL [EXISTS_TAC `--Cx(&1)`; EXISTS_TAC `Cx(&1)`] THEN - ASM_SIMP_TAC[] THEN (CONJ_TAC THENL [CONV_TAC COMPLEX_FIELD; ALL_TAC]) THEN + ASM_SIMP_TAC[] THEN (CONJ_TAC THENL [(CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; ALL_TAC]) THEN X_GEN_TAC `t:real` THEN DISCH_TAC THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (SET_RULE `s SUBSET t ==> ~(x IN t) ==> ~(x IN s)`)) THEN @@ -2136,7 +2136,7 @@ let NEWMAN_INGHAM_THEOREM = prove X_GEN_TAC `z:complex` THEN DISCH_TAC THEN ASM_CASES_TAC `z = Cx(&0)` THENL [ASM_MESON_TAC[]; ALL_TAC] THEN UNDISCH_TAC `~(z = Cx(&0))` THEN REWRITE_TAC[] THEN - ABBREV_TAC `wever = inv(Cx R pow 2)` THEN CONV_TAC COMPLEX_FIELD] THEN + ABBREV_TAC `wever = inv(Cx R pow 2)` THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD] THEN CONJ_TAC THENL [ASM_MESON_TAC[HOLOMORPHIC_ON_SUBSET; SUBSET_UNIV]; ALL_TAC] THEN ASM_REWRITE_TAC[UNION_SUBSET] THEN CONJ_TAC THEN MATCH_MP_TAC(SET_RULE @@ -2306,7 +2306,7 @@ let NEWMAN_INGHAM_THEOREM = prove ANTS_TAC THENL [MAP_EVERY UNDISCH_TAC [`~(N = 0)`; `N + 1 <= n`] THEN ARITH_TAC; ALL_TAC] THEN - DISCH_THEN(SUBST1_TAC o SYM) THEN CONV_TAC SYM_CONV THEN + DISCH_THEN(SUBST1_TAC o SYM) THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_UNION THEN REWRITE_TAC[FINITE_NUMSEG; DISJOINT_NUMSEG] THEN ARITH_TAC; @@ -2422,7 +2422,7 @@ let NEWMAN_INGHAM_THEOREM = prove MATCH_MP_TAC(REAL_ARITH `a = b ==> x <= a ==> x <= b`) THEN REWRITE_TAC[COMPLEX_NORM_MUL; COMPLEX_NORM_CX; COMPLEX_NORM_II] THEN ASM_SIMP_TAC[REAL_ARITH `&0 < R ==> abs(--R) = R`; REAL_ABS_NUM] THEN - CONV_TAC REAL_FIELD] THEN + (CONV_TAC "REAL_FIELD") REAL_FIELD] THEN CONJ_TAC THENL [REPEAT(MATCH_MP_TAC REAL_LE_MUL THEN CONJ_TAC) THEN ASM_SIMP_TAC[REAL_LT_IMP_LE; REAL_LE_INV_EQ; REAL_EXP_POS_LE; @@ -2503,7 +2503,7 @@ let NEWMAN_INGHAM_THEOREM = prove REWRITE_TAC[COMPLEX_MUL_LID; COMPLEX_ADD_LID; COMPLEX_MUL_LNEG] THEN ASM_REWRITE_TAC[CX_INJ; REAL_OF_NUM_EQ] THEN SUBGOAL_THEN `~(clog(Cx(&N)) = Cx(&0))` MP_TAC THENL - [ALL_TAC; CONV_TAC COMPLEX_FIELD] THEN + [ALL_TAC; (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD] THEN ASM_SIMP_TAC[GSYM CX_LOG; REAL_OF_NUM_LT; LT_NZ; CX_INJ] THEN MATCH_MP_TAC REAL_LT_IMP_NZ THEN MATCH_MP_TAC LOG_POS_LT THEN ASM_REWRITE_TAC[REAL_OF_NUM_LT]; @@ -2557,7 +2557,7 @@ let NEWMAN_INGHAM_THEOREM = prove MATCH_MP HAS_INTEGRAL_AFFINITY) THEN REWRITE_TAC[IMAGE_AFFINITY_INTERVAL] THEN REWRITE_TAC[INTERVAL_EQ_EMPTY_1; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[VECTOR_MUL_LID; VECTOR_MUL_LNEG; VECTOR_NEG_0; VECTOR_ADD_LID; VECTOR_NEG_NEG; REAL_POW_ONE; REAL_INV_1] THEN REWRITE_TAC[VECTOR_ARITH `--x + y:real^1 = y - x`; VECTOR_SUB_REFL]] THEN @@ -2705,7 +2705,7 @@ let GENZETA_BOUND_LEMMA = prove REWRITE_TAC[COMPLEX_ENTIRE; complex_div] THEN MATCH_MP_TAC(TAUT `(a ==> b) /\ a ==> a /\ b`) THEN CONJ_TAC THENL - [UNDISCH_TAC `~(z = Cx(&0))` THEN CONV_TAC COMPLEX_FIELD; + [UNDISCH_TAC `~(z = Cx(&0))` THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; ASM_REWRITE_TAC[COMPLEX_INV_EQ_0; CPOW_EQ_0; COMPLEX_SUB_0] THEN REWRITE_TAC[CX_INJ] THEN ASM_REAL_ARITH_TAC]; ALL_TAC] THEN @@ -2967,7 +2967,7 @@ let NEARNEWMAN_EXISTS = prove EXISTS_TAC `&1 / &2 * log(&4)` THEN SIMP_TAC[REAL_ARITH `l <= &1 / &2 * x <=> &2 * l <= x`; GSYM LOG_POW; REAL_OF_NUM_LT; ARITH] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_LE_REFL] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_LE_REFL] THEN MATCH_MP_TAC REAL_LE_MUL2 THEN ASM_SIMP_TAC[REAL_LE_DIV; REAL_POS; LOG_POS; REAL_OF_NUM_LE; ARITH; LOG_MONO_LE_IMP; REAL_OF_NUM_LT; @@ -3031,7 +3031,7 @@ let COMPLEX_DERIVATIVE_ZETA = prove CONJ_TAC THENL [ALL_TAC; COMPLEX_DIFF_TAC THEN REPEAT(POP_ASSUM MP_TAC) THEN - CONV_TAC COMPLEX_FIELD] THEN + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD] THEN GEN_REWRITE_TAC LAND_CONV [GSYM COMPLEX_ADD_RID] THEN MATCH_MP_TAC HAS_COMPLEX_DERIVATIVE_ADD THEN REWRITE_TAC[HAS_COMPLEX_DERIVATIVE_CONST] THEN @@ -3101,7 +3101,7 @@ let ANALYTIC_ZETA_DERIVDIFF = prove ASM_REWRITE_TAC[REWRITE_RULE[GSYM FUN_EQ_THM] zeta; genzeta] THEN REWRITE_TAC[CPOW_1; COMPLEX_DIV_1] THEN FIRST_X_ASSUM(MP_TAC o SPEC `w:complex`) THEN ASM_REWRITE_TAC[] THEN - UNDISCH_TAC `~(w = Cx(&1))` THEN CONV_TAC COMPLEX_FIELD]);; + UNDISCH_TAC `~(w = Cx(&1))` THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]);; let ANALYTIC_NEWMAN_VARIANT = prove (`?c a. (\z. if z = Cx(&1) then a @@ -3145,7 +3145,7 @@ let ANALYTIC_NEWMAN_VARIANT = prove X_GEN_TAC `w:complex` THEN STRIP_TAC THEN REWRITE_TAC[newman] THEN GEN_REWRITE_TAC (funpow 4 RAND_CONV o ONCE_DEPTH_CONV) [zeta] THEN ASM_REWRITE_TAC[genzeta; CPOW_1; COMPLEX_DIV_1] THEN - UNDISCH_TAC `~(w = Cx(&1))` THEN CONV_TAC COMPLEX_FIELD; + UNDISCH_TAC `~(w = Cx(&1))` THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; SIMPLE_COMPLEX_ARITH_TAC]);; (* ------------------------------------------------------------------------- *) @@ -3717,7 +3717,7 @@ let REALLIM_NA_OVER_N = prove [MATCH_MP_TAC REALLIM_TRANSFORM_EVENTUALLY THEN EXISTS_TAC `\n:num. &1` THEN REWRITE_TAC[REALLIM_CONST] THEN REWRITE_TAC[EVENTUALLY_SEQUENTIALLY] THEN EXISTS_TAC `1` THEN - REWRITE_TAC[GSYM REAL_OF_NUM_LE] THEN CONV_TAC REAL_FIELD; + REWRITE_TAC[GSYM REAL_OF_NUM_LE] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; MATCH_MP_TAC REALLIM_NULL_LMUL THEN REWRITE_TAC[REALLIM_1_OVER_N]]);; let REALLIM_N_OVER_NA = prove @@ -3725,7 +3725,7 @@ let REALLIM_N_OVER_NA = prove GEN_TAC THEN ONCE_REWRITE_TAC[GSYM REAL_INV_DIV] THEN GEN_REWRITE_TAC LAND_CONV [GSYM REAL_INV_1] THEN MATCH_MP_TAC REALLIM_INV THEN - REWRITE_TAC[REALLIM_NA_OVER_N] THEN CONV_TAC REAL_RAT_REDUCE_CONV);; + REWRITE_TAC[REALLIM_NA_OVER_N] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let REALLIM_LOG1_OVER_LOG = prove (`((\n. log(&n + &1) / log(&n)) ---> &1) sequentially`, @@ -3737,7 +3737,7 @@ let REALLIM_LOG1_OVER_LOG = prove REAL_FIELD `&0 < x ==> (&1 + a / x = b / x <=> x + a = b)`] THEN ASM_SIMP_TAC[GSYM LOG_MUL; REAL_ARITH `&0 <= x ==> &0 < &1 + x`; REAL_LE_DIV; REAL_POS; REAL_ARITH `&2 <= x ==> &0 < x`] THEN - AP_TERM_TAC THEN POP_ASSUM MP_TAC THEN CONV_TAC REAL_FIELD; + AP_TERM_TAC THEN POP_ASSUM MP_TAC THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN GEN_REWRITE_TAC LAND_CONV [GSYM REAL_ADD_RID] THEN MATCH_MP_TAC REALLIM_ADD THEN REWRITE_TAC[REALLIM_CONST] THEN @@ -3760,7 +3760,7 @@ let REALLIM_LOG1_OVER_LOG = prove CONJ_TAC THENL [MP_TAC LOG_2_BOUNDS THEN REAL_ARITH_TAC; ALL_TAC] THEN SIMP_TAC[GSYM LOG_POW; REAL_OF_NUM_LT; ARITH] THEN MATCH_MP_TAC(REAL_ARITH `a <= b ==> a <= abs b`) THEN - MATCH_MP_TAC LOG_MONO_LE_IMP THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC LOG_MONO_LE_IMP THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_OF_NUM_LE] THEN ASM_ARITH_TAC);; let REALLIM_LOG_OVER_LOG1 = prove @@ -3768,7 +3768,7 @@ let REALLIM_LOG_OVER_LOG1 = prove ONCE_REWRITE_TAC[GSYM REAL_INV_DIV] THEN GEN_REWRITE_TAC LAND_CONV [GSYM REAL_INV_1] THEN MATCH_MP_TAC REALLIM_INV THEN - REWRITE_TAC[REALLIM_LOG1_OVER_LOG] THEN CONV_TAC REAL_RAT_REDUCE_CONV);; + REWRITE_TAC[REALLIM_LOG1_OVER_LOG] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let ADHOC_BOUND_LEMMA = prove (`!k. 1 <= k ==> abs((&k + &1) * (log(&k + &1) - log(&k)) - &1) @@ -3781,10 +3781,10 @@ let ADHOC_BOUND_LEMMA = prove `Cx(&k + &1)`; `Cx(&k)`; `1`] COMPLEX_TAYLOR_MVT) THEN REWRITE_TAC[ARITH; ADD_EQ_0] THEN - CONV_TAC(ONCE_DEPTH_CONV NUMSEG_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV NUMSEG_CONV)") (ONCE_DEPTH_CONV NUMSEG_CONV) THEN SIMP_TAC[VSUM_CLAUSES; FINITE_INSERT; FINITE_RULES] THEN REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY; ARITH] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[COMPLEX_DIV_1; complex_pow; COMPLEX_POW_1; COMPLEX_VEC_0] THEN REWRITE_TAC[GSYM CX_SUB; COMPLEX_ADD_RID; REAL_ARITH `k - (k + &1) = -- &1`] THEN @@ -3976,7 +3976,7 @@ let PNT = prove DISCH_THEN(MP_TAC o MATCH_MP REALLIM_MUL) THEN REWRITE_TAC[REAL_MUL_LID] THEN REWRITE_TAC[GSYM REAL_OF_NUM_ADD; GSYM REAL_ADD_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC EQ_IMP THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[FUN_EQ_THM; real_div; REAL_INV_MUL; REAL_INV_INV] THEN REWRITE_TAC[REAL_MUL_AC]] THEN @@ -3992,7 +3992,7 @@ let PNT = prove CONJ_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN MATCH_MP_TAC(TAUT `(a ==> b) /\ a ==> a /\ b`) THEN CONJ_TAC THENL [SUBGOAL_THEN `~(z = Cx(&0))` MP_TAC THENL - [ALL_TAC; CONV_TAC COMPLEX_FIELD] THEN + [ALL_TAC; (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD] THEN REWRITE_TAC[COMPLEX_EQ; RE_CX; IM_CX] THEN ASM_REAL_ARITH_TAC; ALL_TAC] THEN SUBGOAL_THEN `&0 < Re z` ASSUME_TAC THENL @@ -4065,7 +4065,7 @@ let PNT = prove MATCH_MP_TAC(MESON[] `(!n. P n ==> Q n) /\ ((!n. P n ==> R n) ==> s) ==> (!n. P n /\ Q n ==> R n) ==> s`) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL [X_GEN_TAC `n:num` THEN DISCH_TAC THEN CONJ_TAC THENL [X_GEN_TAC `z:complex` THEN REWRITE_TAC[IN_SEGMENT_CX_GEN] THEN RULE_ASSUM_TAC(REWRITE_RULE[GSYM REAL_OF_NUM_LE]) THEN @@ -4075,7 +4075,7 @@ let PNT = prove CONJ_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN MATCH_MP_TAC(TAUT `(a ==> b) /\ a ==> a /\ b`) THEN CONJ_TAC THENL [SUBGOAL_THEN `~(z + Cx(&1) = Cx(&0))` MP_TAC THENL - [ALL_TAC; CONV_TAC COMPLEX_FIELD] THEN + [ALL_TAC; (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD] THEN DISCH_THEN(MP_TAC o AP_TERM `Re`) THEN SIMP_TAC[RE_ADD; RE_CX] THEN ASM_REAL_ARITH_TAC; ALL_TAC] THEN @@ -4101,7 +4101,7 @@ let PNT = prove `x <= inv(&2) /\ y <= x ==> y + x <= &1 /\ &0 <= x - y`) THEN CONJ_TAC THEN MATCH_MP_TAC REAL_LE_INV2 THEN - CONV_TAC REAL_RAT_REDUCE_CONV THENL + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THENL [MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&4 * log(&2)` THEN CONJ_TAC THENL [MP_TAC LOG_2_BOUNDS THEN REAL_ARITH_TAC; ALL_TAC] THEN SIMP_TAC[GSYM LOG_POW; REAL_OF_NUM_LT; ARITH] THEN @@ -4126,7 +4126,7 @@ let PNT = prove REWRITE_TAC[GSYM(MATCH_MP SUM_COMBINE_R th)]) THEN FIRST_ASSUM(MP_TAC o CONJUNCT1 o C MATCH_MP (ASSUME `16 <= n`)) THEN REWRITE_TAC[GSYM CX_ADD; REAL_ARITH `(n + &1) + &1 = n + &2`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[GSYM CX_LOG; REAL_OF_NUM_LT; ARITH; REAL_ARITH `&0 < &n + &1 /\ &0 < &n + &2`] THEN REWRITE_TAC[GSYM CX_POW; GSYM CX_DIV; GSYM CX_SUB; RE_CX] THEN @@ -4139,7 +4139,7 @@ let PNT = prove REWRITE_TAC[REAL_MUL_LID] THEN DISCH_THEN(MP_TAC o SPEC `1` o MATCH_MP REAL_SEQ_OFFSET) THEN REWRITE_TAC[GSYM REAL_OF_NUM_ADD; GSYM REAL_ADD_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC EQ_IMP THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[FUN_EQ_THM; real_div; REAL_INV_MUL; REAL_INV_INV] THEN REWRITE_TAC[REAL_MUL_AC]; @@ -4162,7 +4162,7 @@ let PNT = prove REWRITE_TAC[GSYM(MATCH_MP SUM_COMBINE_R th)]) THEN FIRST_ASSUM(MP_TAC o CONJUNCT2 o C MATCH_MP (ASSUME `16 <= n`)) THEN REWRITE_TAC[GSYM CX_ADD; REAL_ARITH `(n + &1) + &1 = n + &2`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[GSYM CX_LOG; REAL_OF_NUM_LT; ARITH; REAL_ARITH `&0 < &n + &1 /\ &0 < &n + &2`] THEN REWRITE_TAC[GSYM CX_POW; GSYM CX_DIV; GSYM CX_SUB; RE_CX] THEN @@ -4176,7 +4176,7 @@ let PNT = prove REWRITE_TAC[GSYM REAL_OF_NUM_LE] THEN X_GEN_TAC `n:num` THEN REPEAT STRIP_TAC THEN SUBGOAL_THEN `&0 < log(&n + &1)` ASSUME_TAC THENL - [ALL_TAC; POP_ASSUM MP_TAC THEN CONV_TAC REAL_FIELD] THEN + [ALL_TAC; POP_ASSUM MP_TAC THEN (CONV_TAC "REAL_FIELD") REAL_FIELD] THEN MATCH_MP_TAC LOG_POS_LT THEN POP_ASSUM MP_TAC THEN REAL_ARITH_TAC; ALL_TAC] THEN MATCH_MP_TAC REALLIM_NULL_LMUL THEN diff --git a/100/polyhedron.ml b/100/polyhedron.ml index 8471f42c..a7356d38 100644 --- a/100/polyhedron.ml +++ b/100/polyhedron.ml @@ -267,7 +267,7 @@ let HYPERPLANE_CELL_CONVEX = prove REWRITE_TAC[GSYM INTERS_IMAGE] THEN MATCH_MP_TAC CONVEX_INTERS THEN REWRITE_TAC[FORALL_IN_IMAGE] THEN REWRITE_TAC[FORALL_PAIR_THM] THEN MAP_EVERY X_GEN_TAC [`a:real^N`; `b:real`] THEN DISCH_TAC THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN REWRITE_TAC[hyperplane_side] THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN REWRITE_TAC[hyperplane_side] THEN REPEAT_TCL DISJ_CASES_THEN SUBST1_TAC (SPEC `(a:real^N) dot c - b` REAL_SGN_CASES) THEN ASM_REWRITE_TAC[REAL_SGN_EQ] THEN @@ -541,7 +541,7 @@ let EULER_CHARACTERISTIC_CELLCOMPLEX_UNION = prove ==> euler_characteristic A (s UNION t) = euler_characteristic A s + euler_characteristic A t`, REPEAT STRIP_TAC THEN REWRITE_TAC[euler_characteristic] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_UNION_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_UNION_EQ THEN ASM_SIMP_TAC[FINITE_RESTRICT_HYPERPLANE_CELLS] THEN REWRITE_TAC[EXTENSION; IN_INTER; IN_ELIM_THM; NOT_IN_EMPTY; IN_UNION] THEN CONJ_TAC THEN X_GEN_TAC `c:real^N->bool` THENL @@ -778,7 +778,7 @@ let EULER_CHARACTERSTIC_LEMMA = prove REWRITE_TAC[TAUT `(a \/ b) /\ c <=> a /\ c \/ b /\ c`] THEN REWRITE_TAC[EXISTS_OR_THM; UNWIND_THM2; GSYM CONJ_ASSOC] THEN ONCE_REWRITE_TAC[INTER_COMM] THEN ASM_REWRITE_TAC[] THEN - REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY] THEN CONV_TAC TAUT; + REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY] THEN (CONV_TAC "TAUT") TAUT; ALL_TAC] THEN SIMP_TAC[SUM_CLAUSES; FINITE_INSERT; FINITE_EMPTY; IN_INSERT; NOT_IN_EMPTY] THEN @@ -929,7 +929,7 @@ let EULER_POLYHEDRAL_CONE = prove REWRITE_TAC[INTERS_INSERT; IN_INTER] THEN ASM_REWRITE_TAC[IN_ELIM_THM]; ASM_SIMP_TAC[REAL_LT_MIN; REAL_LT_DIV; REAL_MIN_LT] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[GSYM REAL_LE_RDIV_EQ] THEN REAL_ARITH_TAC]; UNDISCH_TAC `~((x:real^N) IN s)` THEN REWRITE_TAC[] THEN SUBGOAL_THEN `x:real^N = inv e % e % x` SUBST1_TAC THENL @@ -1313,7 +1313,7 @@ let EULER_POLYHEDRAL_CONE = prove ASM_CASES_TAC `(h:real^N->bool) IN H` THEN ASM_REWRITE_TAC[] THEN REPEAT_TCL DISJ_CASES_THEN ASSUME_TAC (SPEC `(fa:(real^N->bool)->real^N) h dot z` REAL_SGN_CASES) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_SGN_EQ] THEN SUBGOAL_THEN `?x:real^N. x IN c /\ x IN s` MP_TAC THENL [ASM_MESON_TAC[MEMBER_NOT_EMPTY; SUBSET; NONEMPTY_HYPERPLANE_CELL]; @@ -1513,7 +1513,7 @@ let EULER_POLYHEDRAL_CONE = prove ASM_SIMP_TAC[INTER_UNIV] THEN ASM_SIMP_TAC[RELATIVE_INTERIOR_INTERIOR] THEN DISCH_THEN(K ALL_TAC) THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[VECTOR_ARITH `--x:real^N = y <=> x = --y`; EXISTS_REFL] THEN X_GEN_TAC `x:real^N` THEN REWRITE_TAC[IN_INTERS; IN_ELIM_THM] THEN REWRITE_TAC[FORALL_IN_IMAGE; IN_DIFF; IN_UNIV] THEN @@ -1991,7 +1991,7 @@ let EULER_POINCARE_LEMMA = prove BINOP_TAC THEN AP_THM_TAC THEN AP_TERM_TAC THEN MAP_EVERY UNDISCH_TAC [`(&1 - u) * ca + u * cb = cx`; `~(cx = &0)`] THEN - CONV_TAC REAL_FIELD]; + (CONV_TAC "REAL_FIELD") REAL_FIELD]; FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [face_of]) THEN REPEAT(DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC)) THEN DISCH_THEN(MP_TAC o SPECL [`a:real^N`; `b:real^N`; `x:real^N`]) THEN @@ -2086,7 +2086,7 @@ let EULER_POINCARE_SPECIAL = prove MATCH_MP_TAC SUM_EQ_NUMSEG THEN X_GEN_TAC `d:num` THEN STRIP_TAC THEN REWRITE_TAC[] THEN AP_TERM_TAC THEN AP_TERM_TAC THEN GEN_REWRITE_TAC (RAND_CONV o RAND_CONV) [SIMPLE_IMAGE_GEN] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC CARD_IMAGE_INJ THEN CONJ_TAC THENL + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CARD_IMAGE_INJ THEN CONJ_TAC THENL [REWRITE_TAC[] THEN MATCH_MP_TAC(MESON[] `(!x y. Q x y ==> x = y) ==> (!x y. P x /\ P y /\ Q x y ==> x = y)`) THEN @@ -2164,7 +2164,7 @@ let EULER_POINCARE_FULL = prove ASM_SIMP_TAC[AFF_DIM_INJECTIVE_LINEAR_IMAGE] THEN REWRITE_TAC[IN_ELIM_THM] THEN GEN_REWRITE_TAC (RAND_CONV o RAND_CONV) [SIMPLE_IMAGE_GEN] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC CARD_IMAGE_INJ THEN CONJ_TAC THENL + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CARD_IMAGE_INJ THEN CONJ_TAC THENL [REWRITE_TAC[] THEN MATCH_MP_TAC(MESON[] `(!x y. Q x y ==> x = y) ==> (!x y. P x /\ P y /\ Q x y ==> x = y)`) THEN @@ -2187,7 +2187,7 @@ let EULER_RELATION = prove MP_TAC(ISPEC `p:real^3->bool` EULER_POINCARE_FULL) THEN ASM_REWRITE_TAC[DIMINDEX_3] THEN REWRITE_TAC[TOP_DEPTH_CONV num_CONV `3`; SUM_CLAUSES_NUMSEG] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_LID; REAL_MUL_LNEG] THEN SUBGOAL_THEN `{f:real^3->bool | f face_of p /\ aff_dim f = &3} = {p}` (fun th -> SIMP_TAC[th; NOT_IN_EMPTY; FINITE_EMPTY; CARD_CLAUSES]) diff --git a/100/primerecip.ml b/100/primerecip.ml index ad9d9dcc..22e8f787 100644 --- a/100/primerecip.ml +++ b/100/primerecip.ml @@ -48,19 +48,19 @@ let PRIMERECIP_HARMONIC_LBOUND = prove ALL_TAC] THEN CONJ_TAC THENL [REWRITE_TAC[ARITH; SUM_SING_NUMSEG] THEN - CONV_TAC(RAND_CONV SUM_CONV) THEN REWRITE_TAC[] THEN - CONV_TAC(ONCE_DEPTH_CONV PRIME_CONV) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "(RAND_CONV SUM_CONV)") (RAND_CONV SUM_CONV) THEN REWRITE_TAC[] THEN + (CONV_TAC "(ONCE_DEPTH_CONV PRIME_CONV)") (ONCE_DEPTH_CONV PRIME_CONV) THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[SYM(REAL_RAT_REDUCE_CONV `&2 pow 5`)] THEN SIMP_TAC[LN_POW; REAL_OF_NUM_LT; ARITH; real_div; REAL_INV_MUL] THEN REWRITE_TAC[REAL_MUL_ASSOC; REAL_MUL_RID] THEN - ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SIMP_TAC[GSYM REAL_LE_RDIV_EQ; REAL_LT_DIV; REAL_OF_NUM_LT; ARITH] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_INV_DIV] THEN - MATCH_MP_TAC REAL_LE_INV2 THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_LE_INV2 THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LN_2_COMPOSITION; real_div; real_sub] THEN - CONV_TAC REALCALC_REL_CONV; + (CONV_TAC "REALCALC_REL_CONV") REALCALC_REL_CONV; ALL_TAC] THEN X_GEN_TAC `n:num` THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN MATCH_MP_TAC(REAL_ARITH diff --git a/100/ptolemy.ml b/100/ptolemy.ml index 71af8d6f..480d641c 100644 --- a/100/ptolemy.ml +++ b/100/ptolemy.ml @@ -36,7 +36,7 @@ let DIST_SEGMENT_LEMMA = prove REWRITE_TAC[REAL_ARITH `(&2 * x - &2 * y) / &2 = x - y`] THEN REWRITE_TAC[SIN_SUB; SIN_DOUBLE; COS_DOUBLE] THEN MP_TAC(SPEC `a1 / &2` SIN_CIRCLE) THEN MP_TAC(SPEC `a2 / &2` SIN_CIRCLE) THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* Hence the overall theorem. *) @@ -66,4 +66,4 @@ let PTOLEMY = prove MAP_EVERY (fun t -> MP_TAC(SPEC t SIN_CIRCLE)) [`a / &2`; `b / &2`; `c / &2`; `d / &2`] THEN REWRITE_TAC[SIN_SUB; SIN_ADD; COS_ADD; SIN_PI; COS_PI] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; diff --git a/100/pythagoras.ml b/100/pythagoras.ml index f82bb696..f1733184 100644 --- a/100/pythagoras.ml +++ b/100/pythagoras.ml @@ -15,7 +15,7 @@ let PYTHAGORAS = prove orthogonal (A - B) (C - B) ==> norm(C - A) pow 2 = norm(B - A) pow 2 + norm(C - B) pow 2`, REWRITE_TAC[NORM_POW_2; orthogonal; DOT_LSUB; DOT_RSUB; DOT_SYM] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* A more explicit and laborious "componentwise" specifically for 2-vectors. *) @@ -27,4 +27,4 @@ let PYTHAGORAS = prove ==> norm(C - A) pow 2 = norm(B - A) pow 2 + norm(C - B) pow 2`, SIMP_TAC[NORM_POW_2; orthogonal; dot; SUM_2; DIMINDEX_2; VECTOR_SUB_COMPONENT; ARITH] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; diff --git a/100/quartic.ml b/100/quartic.ml index 6f399066..dc6d5311 100644 --- a/100/quartic.ml +++ b/100/quartic.ml @@ -13,7 +13,7 @@ let QUARTIC_1 = prove D pow 2 = &3 * a pow 2 / &4 - &2 * b + &2 * s /\ x = --a / &4 + R / &2 + D / &2 ==> x pow 4 + a * x pow 3 + b * x pow 2 + c * x + d = &0`, - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let QUARTIC_2 = prove (`y pow 3 - b * y pow 2 + (a * c - &4 * d) * y - @@ -24,7 +24,7 @@ let QUARTIC_2 = prove D pow 2 = &3 * a pow 2 / &4 - &2 * b + &2 * s /\ x = --a / &4 + R / &2 - D / &2 ==> x pow 4 + a * x pow 3 + b * x pow 2 + c * x + d = &0`, - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let QUARTIC_3 = prove (`y pow 3 - b * y pow 2 + (a * c - &4 * d) * y - @@ -35,7 +35,7 @@ let QUARTIC_3 = prove E pow 2 = &3 * a pow 2 / &4 - &2 * b - &2 * s /\ x = --a / &4 - R / &2 + E / &2 ==> x pow 4 + a * x pow 3 + b * x pow 2 + c * x + d = &0`, - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let QUARTIC_4 = prove (`y pow 3 - b * y pow 2 + (a * c - &4 * d) * y - @@ -46,7 +46,7 @@ let QUARTIC_4 = prove E pow 2 = &3 * a pow 2 / &4 - &2 * b - &2 * s /\ x = --a / &4 - R / &2 - E / &2 ==> x pow 4 + a * x pow 3 + b * x pow 2 + c * x + d = &0`, - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) @@ -62,7 +62,7 @@ let QUARTIC_1' = prove (&4 * a * b - &8 * c - a pow 3) / (&4 * R) /\ x = --a / &4 + R / &2 + D / &2 ==> x pow 4 + a * x pow 3 + b * x pow 2 + c * x + d = &0`, - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let QUARTIC_2' = prove (`y pow 3 - b * y pow 2 + (a * c - &4 * d) * y - @@ -73,7 +73,7 @@ let QUARTIC_2' = prove (&4 * a * b - &8 * c - a pow 3) / (&4 * R) /\ x = --a / &4 + R / &2 - D / &2 ==> x pow 4 + a * x pow 3 + b * x pow 2 + c * x + d = &0`, - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let QUARTIC_3' = prove (`y pow 3 - b * y pow 2 + (a * c - &4 * d) * y - @@ -84,7 +84,7 @@ let QUARTIC_3' = prove (&4 * a * b - &8 * c - a pow 3) / (&4 * R) /\ x = --a / &4 - R / &2 + E / &2 ==> x pow 4 + a * x pow 3 + b * x pow 2 + c * x + d = &0`, - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let QUARTIC_4' = prove (`y pow 3 - b * y pow 2 + (a * c - &4 * d) * y - @@ -95,7 +95,7 @@ let QUARTIC_4' = prove (&4 * a * b - &8 * c - a pow 3) / (&4 * R) /\ x = --a / &4 - R / &2 - E / &2 ==> x pow 4 + a * x pow 3 + b * x pow 2 + c * x + d = &0`, - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; (* ------------------------------------------------------------------------- *) (* Combine them. *) @@ -111,7 +111,7 @@ let QUARTIC_1 = prove (&4 * a * b - &8 * c - a pow 3) / (&4 * R)) /\ x = --a / &4 + R / &2 + D / &2 ==> x pow 4 + a * x pow 3 + b * x pow 2 + c * x + d = &0`, - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; (* ------------------------------------------------------------------------- *) (* A case split. *) @@ -131,7 +131,7 @@ let QUARTIC_1 = prove (x = --a / &4 + R / &2 + D / &2 \/ x = --a / &4 - R / &2 + E / &2) ==> x pow 4 + a * x pow 3 + b * x pow 2 + c * x + d = &0`, - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; (* ------------------------------------------------------------------------- *) (* More general case split. *) @@ -154,7 +154,7 @@ let QUARTIC_CASES = prove x = --a / &4 - R / &2 - E / &2) ==> x pow 4 + a * x pow 3 + b * x pow 2 + c * x + d = &0`, COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN POP_ASSUM MP_TAC THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; (* ------------------------------------------------------------------------- *) (* Even this works --- great, that's nearly what we wanted. *) @@ -177,7 +177,7 @@ let QUARTIC_CASES = prove x = --a / &4 - R / &2 + E / &2 \/ x = --a / &4 - R / &2 - E / &2)`, COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN POP_ASSUM MP_TAC THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; (* ------------------------------------------------------------------------- *) (* This is the automatic proof. *) @@ -199,4 +199,4 @@ let QUARTIC_CASES = prove x = --a / &4 + R / &2 - D / &2 \/ x = --a / &4 - R / &2 + E / &2 \/ x = --a / &4 - R / &2 - E / &2)`, - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; diff --git a/100/ramsey.ml b/100/ramsey.ml index df5013ea..387b1327 100644 --- a/100/ramsey.ml +++ b/100/ramsey.ml @@ -923,7 +923,7 @@ let INFINITE_MEMBER = prove( GEN_TAC THEN DISCH_TAC THEN SUBGOAL_THEN `~(s:A->bool = {})` MP_TAC THENL [UNDISCH_TAC `INFINITE (s:A->bool)` THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[] THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[INFINITE; FINITE_EMPTY]; REWRITE_TAC[EXTENSION; NOT_IN_EMPTY] THEN PURE_ONCE_REWRITE_TAC[NOT_FORALL_THM] THEN @@ -933,7 +933,7 @@ let INFINITE_CHOOSE = prove( `!s:A->bool. INFINITE(s) ==> ((@) s) IN s`, GEN_TAC THEN DISCH_THEN(MP_TAC o MATCH_MP INFINITE_MEMBER) THEN DISCH_THEN(MP_TAC o SELECT_RULE) THEN REWRITE_TAC[IN] THEN - CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN REWRITE_TAC[]);; + (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN REWRITE_TAC[]);; let INFINITE_DELETE = prove( `!(t:A->bool) x. INFINITE (t DELETE x) = INFINITE(t)`, @@ -975,7 +975,7 @@ let INFINITE_FINITE_CHOICE = prove( REWRITE_TAC[SUBSET] THEN RULE_ASSUM_TAC(REWRITE_RULE[SUBSET]) THEN GEN_TAC THEN DISCH_THEN(ANTE_RES_THEN MP_TAC) THEN - REWRITE_TAC[IN_DELETE] THEN CONV_TAC(EQT_INTRO o TAUT)]; + REWRITE_TAC[IN_DELETE] THEN (CONV_TAC "(EQT_INTRO o TAUT)") (EQT_INTRO o TAUT)]; MATCH_MP_TAC SIZE_INSERT THEN ASM_REWRITE_TAC[] THEN DISCH_TAC THEN UNDISCH_TAC `t SUBSET (s DELETE ((@) s:A))` THEN REWRITE_TAC[SUBSET; IN_DELETE] THEN @@ -999,7 +999,7 @@ let IMAGE_WOP_LEMMA = prove( DISCH_THEN(X_CHOOSE_THEN `m:num` (CONJUNCTS_THEN2 MP_TAC ASSUME_TAC)) THEN DISCH_THEN(X_CHOOSE_THEN `x:A` STRIP_ASSUME_TAC) THEN MAP_EVERY EXISTS_TAC [`m:num`; `u DELETE (x:A)`] THEN CONJ_TAC THENL - [ASM_REWRITE_TAC[] THEN CONV_TAC SYM_CONV THEN + [ASM_REWRITE_TAC[] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INSERT_DELETE THEN FIRST_ASSUM(SUBST1_TAC o SYM) THEN FIRST_ASSUM MATCH_ACCEPT_TAC; X_GEN_TAC `z:A` THEN REWRITE_TAC[IN_DELETE] THEN STRIP_TAC THEN @@ -1031,7 +1031,7 @@ let COLOURING_LEMMA = prove( DISJ_CASES_TAC THENL [UNDISCH_TAC `INFINITE(s:A->bool)` THEN REWRITE_TAC[INFINITE; GSYM DE_MORGAN_THM; GSYM FINITE_UNION] THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[] THEN DISCH_THEN(MATCH_MP_TAC o MATCH_MP SUBSET_FINITE) THEN REWRITE_TAC[SUBSET; IN_UNION] THEN REWRITE_TAC[IN_ELIM_THM] THEN @@ -1137,11 +1137,11 @@ let RAMSEY_LEMMA2 = prove( MP_TAC THENL [MATCH_MP_TAC num_INDUCTION THEN REPEAT STRIP_TAC THENL [ASM_REWRITE_TAC[SUBSET_REFL]; - FIRST_ASSUM(SUBST1_TAC o SPEC `0`) THEN CONV_TAC SELECT_CONV THEN + FIRST_ASSUM(SUBST1_TAC o SPEC `0`) THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN FIRST_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[]; MATCH_MP_TAC SUBSET_TRANS THEN EXISTS_TAC `f(n:num):A->bool` THEN CONJ_TAC THEN FIRST_ASSUM MATCH_ACCEPT_TAC; - FIRST_ASSUM(SUBST1_TAC o SPEC `SUC n`) THEN CONV_TAC SELECT_CONV THEN + FIRST_ASSUM(SUBST1_TAC o SPEC `SUC n`) THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN FIRST_ASSUM MATCH_MP_TAC THEN CONJ_TAC THEN TRY(FIRST_ASSUM MATCH_ACCEPT_TAC) THEN REPEAT STRIP_TAC THEN FIRST_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[] THEN @@ -1172,7 +1172,7 @@ let RAMSEY_LEMMA2 = prove( EXISTS_TAC `f(SUC n):A->bool` THEN ASM_REWRITE_TAC[]]; MATCH_MP_TAC SIZE_INSERT THEN ASM_REWRITE_TAC[] THEN UNDISCH_TAC `!n:num. ~(((@)(f n):A) IN (f(SUC n)))` THEN - DISCH_THEN(MP_TAC o SPEC `n:num`) THEN CONV_TAC CONTRAPOS_CONV THEN + DISCH_THEN(MP_TAC o SPEC `n:num`) THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[] THEN FIRST_ASSUM(MATCH_ACCEPT_TAC o REWRITE_RULE[SUBSET])]; REPEAT CONJ_TAC THEN TRY (FIRST_ASSUM MATCH_ACCEPT_TAC) THENL @@ -1240,7 +1240,7 @@ let RAMSEY_LEMMA3 = prove( DISCH_THEN(X_CHOOSE_THEN `n:num` (X_CHOOSE_THEN `v:A->bool` MP_TAC)) THEN DISCH_THEN STRIP_ASSUME_TAC THEN ASM_REWRITE_TAC[] THEN SUBGOAL_THEN `c = (col:num->num) n` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN FIRST_ASSUM MATCH_MP_TAC THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_ASSUM MATCH_MP_TAC THEN UNDISCH_TAC `u SUBSET (IMAGE (x:num->A) t)` THEN REWRITE_TAC[SUBSET; IN_IMAGE] THEN DISCH_THEN(MP_TAC o SPEC `(x:num->A) n`) THEN @@ -1255,7 +1255,7 @@ let RAMSEY_LEMMA3 = prove( [ASM_REWRITE_TAC[] THEN REWRITE_TAC[DELETE_INSERT] THEN REWRITE_TAC[EXTENSION; IN_DELETE; TAUT `(a <=> a /\ b) <=> a ==> b`] THEN - GEN_TAC THEN CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[] THEN + GEN_TAC THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[] THEN DISCH_THEN SUBST1_TAC THEN DISCH_THEN(ANTE_RES_THEN MP_TAC) THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(CHOOSE_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC)) THEN diff --git a/100/ratcountable.ml b/100/ratcountable.ml index df40ca78..88b2f300 100644 --- a/100/ratcountable.ml +++ b/100/ratcountable.ml @@ -27,7 +27,7 @@ let COUNTABLE_RATIONALS = prove CONJ_TAC THENL [REWRITE_TAC[LE_C; EXISTS_PAIR_THM; mul_c] THEN EXISTS_TAC `\(x,b). if b = 0 then x else --x` THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[IN_ELIM_THM; rational; IN_UNIV; PAIR_EQ] THEN MESON_TAC[REAL_ARITH `(abs(x) = a) ==> (x = a) \/ x = --a`]; ALL_TAC] THEN @@ -35,7 +35,7 @@ let COUNTABLE_RATIONALS = prove TRANS_TAC CARD_LE_TRANS `(UNIV *_c UNIV):num#num->bool` THEN CONJ_TAC THENL [REWRITE_TAC[LE_C; EXISTS_PAIR_THM; mul_c; IN_UNIV] THEN EXISTS_TAC `\(p,q). &p / &q` THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[IN_ELIM_THM; rational] THEN MESON_TAC[]; MESON_TAC[CARD_MUL_ABSORB_LE; CARD_LE_REFL; num_INFINITE]]);; diff --git a/100/realsuncountable.ml b/100/realsuncountable.ml index 565d44f7..471f1e82 100644 --- a/100/realsuncountable.ml +++ b/100/realsuncountable.ml @@ -216,7 +216,7 @@ let SUMINF_INJ_LEMMA = prove ASM_REWRITE_TAC[SUM_1; REAL_ADD_LID] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&2 / &2 pow (m + 1)` THEN REWRITE_TAC[SUM_BINSEQUENCE_UBOUND_LE] THEN - REWRITE_TAC[REAL_POW_ADD; REAL_POW_1] THEN CONV_TAC REAL_FIELD; + REWRITE_TAC[REAL_POW_ADD; REAL_POW_1] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [LE_EXISTS]) THEN DISCH_THEN(X_CHOOSE_THEN `r:num` SUBST_ALL_TAC) THEN @@ -230,7 +230,7 @@ let SUMINF_INJ_LEMMA = prove REWRITE_TAC[SUM_BINSEQUENCE_UBOUND_SHARP] THEN MATCH_MP_TAC(REAL_ARITH `a = b /\ d < c ==> a - c < b - d`) THEN CONJ_TAC THENL - [REWRITE_TAC[REAL_POW_ADD; REAL_POW_1] THEN CONV_TAC REAL_FIELD; + [REWRITE_TAC[REAL_POW_ADD; REAL_POW_1] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; MATCH_MP_TAC(REAL_FIELD `&0 < inv(x) ==> inv(x) < &2 / x`) THEN SIMP_TAC[REAL_LT_INV_EQ; REAL_POW_LT; REAL_OF_NUM_LT; ARITH]]);; diff --git a/100/reciprocity.ml b/100/reciprocity.ml index 587cd958..900508f0 100644 --- a/100/reciprocity.ml +++ b/100/reciprocity.ml @@ -69,7 +69,7 @@ let CARD_SUBCROSS_DETERMINATE = prove (`FINITE s /\ FINITE t /\ (!x. x IN s /\ p(x) ==> f(x) IN t) ==> CARD {(x:A),(y:B) | x IN s /\ y IN t /\ y = f x /\ p x} = CARD {x | x IN s /\ p(x)}`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CARD_IMAGE_INJ_EQ THEN EXISTS_TAC `\(x:A,y:B). x` THEN ASM_SIMP_TAC[FINITE_SUBCROSS; FORALL_PAIR_THM; EXISTS_UNIQUE_THM] THEN REWRITE_TAC[EXISTS_PAIR_THM; IN_ELIM_PAIR_THM] THEN @@ -406,7 +406,7 @@ let WILSON_LEMMA = prove (`!p. prime(p) ==> (FACT(p - 2) == 1) (mod p)`, REPEAT STRIP_TAC THEN ONCE_REWRITE_TAC[CONG_SYM] THEN FIRST_ASSUM(DISJ_CASES_THEN2 SUBST_ALL_TAC ASSUME_TAC o MATCH_MP PRIME_ODD) - THENL [CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC CONG_CONV; ALL_TAC] THEN + THENL [(CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "CONG_CONV") CONG_CONV; ALL_TAC] THEN MP_TAC(SPECL [`1`; `p:num`] QUADRATIC_RESIDUE_FACT) THEN ASM_MESON_TAC[is_quadratic_residue; COPRIME_SYM; COPRIME_1; CONG_REFL; EXP_ONE; CONG_SYM]);; @@ -423,7 +423,7 @@ let WILSON = prove DISCH_THEN(X_CHOOSE_THEN `p:num` STRIP_ASSUME_TAC) THEN FIRST_ASSUM(MP_TAC o MATCH_MP DIVIDES_LE) THEN ASM_CASES_TAC `n = 0` THEN ASM_REWRITE_TAC[] THENL - [ASM_REWRITE_TAC[CONG_MOD_0] THEN CONV_TAC NUM_REDUCE_CONV; ALL_TAC] THEN + [ASM_REWRITE_TAC[CONG_MOD_0] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ALL_TAC] THEN REWRITE_TAC[LE_LT] THEN ASM_CASES_TAC `n:num = p` THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(MP_TAC o MATCH_MP (ARITH_RULE `x < y ==> x <= y - 1`)) THEN ASM_SIMP_TAC[GSYM DIVIDES_FACT_PRIME] THEN @@ -447,7 +447,7 @@ let EULER_CRITERION = prove ==> (a EXP ((p - 1) DIV 2) == (if a is_quadratic_residue (mod p) then 1 else p - 1)) (mod p)`, REPEAT STRIP_TAC THEN FIRST_ASSUM(DISJ_CASES_THEN2 SUBST_ALL_TAC ASSUME_TAC o - MATCH_MP PRIME_ODD) THEN CONV_TAC NUM_REDUCE_CONV THEN + MATCH_MP PRIME_ODD) THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[COND_ID; EXP; CONG_REFL] THEN ASM_MESON_TAC[WILSON_LEMMA; WILSON_IMP; CONG_TRANS; CONG_SYM; QUADRATIC_RESIDUE_FACT; QUADRATIC_NONRESIDUE_FACT]);; @@ -600,7 +600,7 @@ let GAUSS_LEMMA_SYM = prove `CARD {x,y | x IN 1..r /\ y IN 1..s /\ y = (q * x) DIV p + 1 /\ r < (q * x) MOD p}` THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC CARD_SUBCROSS_DETERMINATE THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CARD_SUBCROSS_DETERMINATE THEN REWRITE_TAC[FINITE_NUMSEG; IN_NUMSEG; ARITH_RULE `1 <= x + 1`] THEN X_GEN_TAC `x:num` THEN STRIP_TAC THEN SUBGOAL_THEN `p * (q * x) DIV p + r < q * r` MP_TAC THENL @@ -665,7 +665,7 @@ let RECIPROCITY_SET_LEMMA = prove CARD(c:num#num->bool) + CARD(d:num#num->bool) = r * s` (fun th -> MP_TAC(AP_TERM `EVEN` th) THEN ASM_REWRITE_TAC[EVEN_ADD; GSYM NOT_EVEN; EVEN_MULT] THEN - CONV_TAC TAUT) THEN + (CONV_TAC "TAUT") TAUT) THEN SUBGOAL_THEN `FINITE(a:num#num->bool) /\ FINITE(b:num#num->bool) /\ FINITE(c:num#num->bool) /\ FINITE(d:num#num->bool)` diff --git a/100/stirling.ml b/100/stirling.ml index 7b396d03..625626ec 100644 --- a/100/stirling.ml +++ b/100/stirling.ml @@ -38,8 +38,8 @@ let LN_LIM_BOUND = prove ASM_SIMP_TAC[REAL_MUL_RINV; REAL_OF_NUM_EQ; ARITH; REAL_MUL_LID] THEN REWRITE_TAC[REAL_ABS_NEG; REAL_ABS_MUL] THEN ONCE_REWRITE_TAC[REAL_INV_MUL] THEN REWRITE_TAC[REAL_ABS_MUL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN - MATCH_MP_TAC REAL_LE_LMUL THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN + MATCH_MP_TAC REAL_LE_LMUL THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_MUL_LID] THEN MATCH_MP_TAC REAL_LE_RMUL THEN ASM_SIMP_TAC[real_div; REAL_MUL_LID; REAL_LE_INV_EQ; REAL_POS] THEN @@ -132,11 +132,11 @@ let STIRLING_DELTA_DERIV = prove W(fun (asl,w) -> MP_TAC(SPEC(rand w) (DIFF_CONV(lhand(rator w))))) THEN REWRITE_TAC[IMP_IMP] THEN ANTS_TAC THENL [REPEAT CONJ_TAC THEN TRY(MATCH_MP_TAC REAL_LT_DIV) THEN - POP_ASSUM MP_TAC THEN CONV_TAC REAL_FIELD; + POP_ASSUM MP_TAC THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[REAL_POW_2] THEN - POP_ASSUM MP_TAC THEN CONV_TAC REAL_FIELD);; + POP_ASSUM MP_TAC THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let STIRLING_DELTA_LIMIT = prove (`(\n. ln ((&n + &1) / &n) - &1 / (&n + &1 / &2)) --> &0`, @@ -190,7 +190,7 @@ let OTHER_DERIV_LEMMA = prove ALL_TAC] THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[REAL_POW_2] THEN - POP_ASSUM MP_TAC THEN CONV_TAC REAL_FIELD);; + POP_ASSUM MP_TAC THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let STIRLING_INCREASES = prove (`!n. ~(n = 0) @@ -252,8 +252,8 @@ let STIRLING_INCREASES = prove let STIRLING_UPPERBOUND = prove (`!n. stirling(SUC n) <= &1`, INDUCT_TAC THENL - [REWRITE_TAC[stirling] THEN CONV_TAC NUM_REDUCE_CONV THEN - REWRITE_TAC[LN_1] THEN CONV_TAC REAL_RAT_REDUCE_CONV; + [REWRITE_TAC[stirling] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN + REWRITE_TAC[LN_1] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `stirling(SUC n)` THEN ASM_REWRITE_TAC[] THEN @@ -270,8 +270,8 @@ let STIRLING_LOWERBOUND = prove REWRITE_TAC[real_div; REAL_MUL_LID; REAL_LE_INV_EQ] THEN REWRITE_TAC[REAL_OF_NUM_MUL; REAL_POS]] THEN SPEC_TAC(`n:num`,`n:num`) THEN INDUCT_TAC THENL - [REWRITE_TAC[stirling] THEN CONV_TAC NUM_REDUCE_CONV THEN - REWRITE_TAC[LN_1] THEN CONV_TAC REAL_RAT_REDUCE_CONV; + [REWRITE_TAC[stirling] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN + REWRITE_TAC[LN_1] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `stirling(SUC n) - &1 / (&12 * &(SUC n))` THEN @@ -320,7 +320,7 @@ let WALLIS_PARTS = prove `\x. sin(x)`; `&0`; `pi / &2`] INTEGRAL_BY_PARTS) THEN REWRITE_TAC[] THEN ANTS_TAC THENL [SIMP_TAC[REAL_LT_IMP_LE; PI_POS; REAL_LT_DIV; REAL_OF_NUM_LT; ARITH] THEN - CONV_TAC(ONCE_DEPTH_CONV INTEGRABLE_CONV) THEN REWRITE_TAC[] THEN + (CONV_TAC "(ONCE_DEPTH_CONV INTEGRABLE_CONV)") (ONCE_DEPTH_CONV INTEGRABLE_CONV) THEN REWRITE_TAC[] THEN CONJ_TAC THEN GEN_TAC THEN STRIP_TAC THEN DIFF_TAC THEN REWRITE_TAC[REAL_OF_NUM_ADD; ADD_SUB] THEN REAL_ARITH_TAC; ALL_TAC] THEN @@ -347,13 +347,13 @@ let WALLIS_PARTS = prove CONJ_TAC THENL [MATCH_MP_TAC INTEGRAL_CMUL; AP_TERM_TAC THEN MATCH_MP_TAC INTEGRAL_SUB] THEN - CONV_TAC(ONCE_DEPTH_CONV INTEGRABLE_CONV) THEN SIMP_TAC[PI2_LE]);; + (CONV_TAC "(ONCE_DEPTH_CONV INTEGRABLE_CONV)") (ONCE_DEPTH_CONV INTEGRABLE_CONV) THEN SIMP_TAC[PI2_LE]);; let WALLIS_PARTS' = prove (`!n. integral(&0,pi / &2) (\x. sin(x) pow (n + 2)) = (&n + &1) / (&n + &2) * integral(&0,pi / &2) (\x. sin(x) pow n)`, MP_TAC WALLIS_PARTS THEN MATCH_MP_TAC MONO_FORALL THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let WALLIS_0 = prove (`integral(&0,pi / &2) (\x. sin(x) pow 0) = pi / &2`, @@ -365,7 +365,7 @@ let WALLIS_1 = prove (`integral(&0,pi / &2) (\x. sin(x) pow 1) = &1`, MATCH_MP_TAC DEFINT_INTEGRAL THEN REWRITE_TAC[PI2_LE; REAL_POW_1] THEN MP_TAC(SPECL [`\x. --cos(x)`; `\x. sin x`; `&0`; `pi / &2`] FTC1) THEN - REWRITE_TAC[COS_0; COS_PI2] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[COS_0; COS_PI2] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN MATCH_MP_TAC THEN REWRITE_TAC[PI2_LE] THEN REPEAT STRIP_TAC THEN DIFF_TAC THEN REAL_ARITH_TAC);; @@ -373,7 +373,7 @@ let WALLIS_EVEN = prove (`!n. integral(&0,pi / &2) (\x. sin(x) pow (2 * n)) = (&(FACT(2 * n)) / (&2 pow n * &(FACT n)) pow 2) * pi / &2`, INDUCT_TAC THENL - [CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [(CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[WALLIS_0] THEN REAL_ARITH_TAC; ALL_TAC] THEN ASM_REWRITE_TAC[ARITH_RULE `2 * SUC n = 2 * n + 2`; WALLIS_PARTS'] THEN @@ -386,14 +386,14 @@ let WALLIS_EVEN = prove REWRITE_TAC[ARITH_RULE `2 * n + 2 = SUC(SUC(2 * n))`] THEN REWRITE_TAC[GSYM REAL_OF_NUM_SUC; REAL_POW_2; FACT; GSYM REAL_OF_NUM_MUL] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let WALLIS_ODD = prove (`!n. integral(&0,pi / &2) (\x. sin(x) pow (2 * n + 1)) = (&2 pow n * &(FACT n)) pow 2 / &(FACT(2 * n + 1))`, INDUCT_TAC THENL - [CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN - REWRITE_TAC[WALLIS_1] THEN CONV_TAC REAL_RAT_REDUCE_CONV; + [(CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[WALLIS_1] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN ASM_REWRITE_TAC[ARITH_RULE `2 * SUC n + 1 = (2 * n + 1) + 2`; WALLIS_PARTS'] THEN @@ -407,7 +407,7 @@ let WALLIS_ODD = prove REWRITE_TAC[GSYM REAL_OF_NUM_SUC; REAL_POW_2; FACT; GSYM REAL_OF_NUM_ADD; GSYM REAL_OF_NUM_MUL] THEN MP_TAC(SPEC `2 * n + 1` FACT_LT) THEN REWRITE_TAC[GSYM REAL_OF_NUM_LT] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let WALLIS_QUOTIENT = prove (`!n. integral(&0,pi / &2) (\x. sin(x) pow (2 * n)) / @@ -425,7 +425,7 @@ let WALLIS_QUOTIENT' = prove GEN_TAC THEN REWRITE_TAC[WALLIS_QUOTIENT] THEN GEN_REWRITE_TAC (LAND_CONV o LAND_CONV o RAND_CONV) [GSYM REAL_INV_DIV] THEN REWRITE_TAC[GSYM real_div] THEN MATCH_MP_TAC REAL_DIV_RMUL THEN - MP_TAC PI2_NZ THEN CONV_TAC REAL_FIELD);; + MP_TAC PI2_NZ THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let WALLIS_MONO = prove (`!m n. m <= n @@ -433,7 +433,7 @@ let WALLIS_MONO = prove <= integral(&0,pi / &2) (\x. sin(x) pow m)`, REWRITE_TAC[LE_EXISTS] THEN REPEAT STRIP_TAC THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC INTEGRAL_LE THEN - CONV_TAC(ONCE_DEPTH_CONV INTEGRABLE_CONV) THEN REWRITE_TAC[PI2_LE] THEN + (CONV_TAC "(ONCE_DEPTH_CONV INTEGRABLE_CONV)") (ONCE_DEPTH_CONV INTEGRABLE_CONV) THEN REWRITE_TAC[PI2_LE] THEN REPEAT STRIP_TAC THEN REWRITE_TAC[REAL_POW_ADD] THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_MUL_RID] THEN MATCH_MP_TAC REAL_LE_LMUL THEN CONJ_TAC THENL @@ -466,7 +466,7 @@ let WALLIS_BOUNDS = prove integral (&0,pi / &2) (\x. sin x pow (n + 2))` THEN CONJ_TAC THENL [REWRITE_TAC[WALLIS_PARTS'] THEN - MATCH_MP_TAC REAL_EQ_IMP_LE THEN CONV_TAC REAL_FIELD; + MATCH_MP_TAC REAL_EQ_IMP_LE THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN MATCH_MP_TAC REAL_LE_LMUL THEN SIMP_TAC[WALLIS_MONO; ARITH_RULE `n + 1 <= n + 2`] THEN @@ -485,7 +485,7 @@ let WALLIS = prove (`(\n. (&2 pow n * &(FACT n)) pow 4 / (&(FACT(2 * n)) * &(FACT(2 * n + 1)))) --> pi / &2`, ONCE_REWRITE_TAC[GSYM REAL_INV_DIV] THEN MATCH_MP_TAC SEQ_INV THEN - CONJ_TAC THENL [ALL_TAC; MP_TAC PI2_NZ THEN CONV_TAC REAL_FIELD] THEN + CONJ_TAC THENL [ALL_TAC; MP_TAC PI2_NZ THEN (CONV_TAC "REAL_FIELD") REAL_FIELD] THEN REWRITE_TAC[GSYM WALLIS_QUOTIENT'] THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_MUL_RID] THEN MATCH_MP_TAC SEQ_MUL THEN REWRITE_TAC[SEQ_CONST] THEN @@ -563,7 +563,7 @@ let STIRLING = prove ONCE_REWRITE_TAC[SEQ_SUC] THEN SIMP_TAC[GSYM LN_MUL; REAL_OF_NUM_LT; ARITH; LT_0] THEN REWRITE_TAC[GSYM SEQ_SUC] THEN - CONV_TAC(LAND_CONV(GEN_ALPHA_CONV `n:num`)) THEN + (CONV_TAC "(LAND_CONV(GEN_ALPHA_CONV `n:num`))") (LAND_CONV(GEN_ALPHA_CONV `n:num`)) THEN REWRITE_TAC[REAL_ARITH `((&4 * n + &2) * l + &1) - ((&2 * n + &1 / &2) * l + z) = (&2 * n + &3 / &2) * l + &1 - z`] THEN @@ -580,12 +580,12 @@ let STIRLING = prove SIMP_TAC[REAL_OF_NUM_LT; LT_0; REAL_FIELD `&0 < x ==> (&2 * x + &1) / (&2 * x) = &1 + &1 / (&2 * x)`] THEN REWRITE_TAC[GSYM SEQ_SUC] THEN - CONV_TAC(LAND_CONV(GEN_ALPHA_CONV `n:num`)) THEN + (CONV_TAC "(LAND_CONV(GEN_ALPHA_CONV `n:num`))") (LAND_CONV(GEN_ALPHA_CONV `n:num`)) THEN MP_TAC SEQ_SUBSEQ THEN REWRITE_TAC[RIGHT_IMP_FORALL_THM] THEN DISCH_THEN(MP_TAC o GENL [`f:num->real`; `l:real`] o SPECL [`f:num->real`; `l:real`; `2`; `0`]) THEN REWRITE_TAC[ADD_CLAUSES; ARITH; REAL_OF_NUM_MUL] THEN - DISCH_THEN MATCH_MP_TAC THEN CONV_TAC(LAND_CONV(GEN_ALPHA_CONV `n:num`)) THEN + DISCH_THEN MATCH_MP_TAC THEN (CONV_TAC "(LAND_CONV(GEN_ALPHA_CONV `n:num`))") (LAND_CONV(GEN_ALPHA_CONV `n:num`)) THEN REWRITE_TAC[REAL_ADD_RDISTRIB] THEN GEN_REWRITE_TAC RAND_CONV [REAL_ARITH `&1 = &1 + &3 / &2 * &0`] THEN MATCH_MP_TAC SEQ_ADD THEN REWRITE_TAC[LN_LIM_LEMMA] THEN diff --git a/100/thales.ml b/100/thales.ml index 1303c5e2..a953c265 100644 --- a/100/thales.ml +++ b/100/thales.ml @@ -42,7 +42,7 @@ let THALES = prove ABBREV_TAC `rad = radius pow 2` THEN POP_ASSUM_LIST(K ALL_TAC) THEN SIMP_TAC[dot; SUM_2; VECTOR_SUB_COMPONENT; DIMINDEX_2; VECTOR_ADD_COMPONENT; orthogonal; CART_EQ; FORALL_2; VECTOR_MUL_COMPONENT; ARITH] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* But for another natural version, we need to use the reals. *) @@ -62,7 +62,7 @@ let MIDPOINT = prove orthogonal; CART_EQ; FORALL_2; VECTOR_MUL_COMPONENT; ARITH] THEN DISCH_THEN(CONJUNCTS_THEN2 STRIP_ASSUME_TAC MP_TAC) THEN REPEAT(FIRST_X_ASSUM SUBST_ALL_TAC) THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_SOS);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_SOS") REAL_SOS);; (* ------------------------------------------------------------------------- *) (* Now we get a more natural formulation of Thales's theorem. *) @@ -84,4 +84,4 @@ let THALES = prove ABBREV_TAC `rad = radius pow 2` THEN POP_ASSUM_LIST(K ALL_TAC) THEN SIMP_TAC[dot; SUM_2; VECTOR_SUB_COMPONENT; DIMINDEX_2; VECTOR_ADD_COMPONENT; orthogonal; CART_EQ; FORALL_2; VECTOR_MUL_COMPONENT; ARITH] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; diff --git a/100/triangular.ml b/100/triangular.ml index 54777362..15422da6 100644 --- a/100/triangular.ml +++ b/100/triangular.ml @@ -22,7 +22,7 @@ let REAL_TRIANGLE = prove MATCH_MP_TAC(REAL_ARITH `&2 * x = y ==> x = y / &2`) THEN REWRITE_TAC[triangle; REAL_OF_NUM_MUL; REAL_OF_NUM_ADD; REAL_OF_NUM_EQ] THEN SUBGOAL_THEN `EVEN(n * (n + 1))` MP_TAC THENL - [REWRITE_TAC[EVEN_MULT; EVEN_ADD; ARITH] THEN CONV_TAC TAUT; + [REWRITE_TAC[EVEN_MULT; EVEN_ADD; ARITH] THEN (CONV_TAC "TAUT") TAUT; REWRITE_TAC[EVEN_EXISTS] THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THEN AP_TERM_TAC THEN MATCH_MP_TAC DIV_MULT THEN REWRITE_TAC[ARITH]]);; @@ -34,8 +34,8 @@ let TRIANGLE_FINITE_SUM = prove (`!n. sum(1..n) (\k. &1 / &(triangle k)) = &2 - &2 / (&n + &1)`, INDUCT_TAC THEN ASM_REWRITE_TAC[SUM_CLAUSES_NUMSEG; ARITH_EQ; ARITH_RULE `1 <= SUC n`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN - REWRITE_TAC[REAL_TRIANGLE; GSYM REAL_OF_NUM_SUC] THEN CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[REAL_TRIANGLE; GSYM REAL_OF_NUM_SUC] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; (* ------------------------------------------------------------------------- *) (* Hence limit. *) diff --git a/100/two_squares.ml b/100/two_squares.ml index 7977233f..180e4f37 100644 --- a/100/two_squares.ml +++ b/100/two_squares.ml @@ -161,7 +161,7 @@ let PRIME_4X = prove let PRIME_XYZ_NONZERO = prove (`prime(x EXP 2 + 4 * y * z) ==> 0 < x /\ 0 < y /\ 0 < z`, - CONV_TAC CONTRAPOS_CONV THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[DE_MORGAN_THM; ARITH_RULE `~(0 < x) = (x = 0)`] THEN DISCH_THEN(REPEAT_TCL DISJ_CASES_THEN SUBST1_TAC) THEN REWRITE_TAC[EXP_2; MULT_CLAUSES; ADD_CLAUSES; PRIME_SQUARE; PRIME_4X]);; diff --git a/100/wilson.ml b/100/wilson.ml index 3d7f34da..134ca107 100644 --- a/100/wilson.ml +++ b/100/wilson.ml @@ -108,7 +108,7 @@ let WILSON = prove ASM_CASES_TAC `p = 0` THENL [ASM_MESON_TAC[PRIME_0]; ALL_TAC] THEN ASM_CASES_TAC `p = 1` THENL [ASM_MESON_TAC[PRIME_1]; ALL_TAC] THEN ASM_CASES_TAC `p = 2` THENL - [ASM_REWRITE_TAC[] THEN CONV_TAC NUM_REDUCE_CONV THEN + [ASM_REWRITE_TAC[] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[CONG_REFL]; ALL_TAC] THEN SUBGOAL_THEN `FACT(p - 1) = FACT(p - 2) * (p - 1)` SUBST1_TAC THENL @@ -184,7 +184,7 @@ let WILSON_EQ = prove DISCH_THEN(X_CHOOSE_THEN `p:num` STRIP_ASSUME_TAC) THEN FIRST_ASSUM(MP_TAC o MATCH_MP DIVIDES_LE) THEN ASM_CASES_TAC `n = 0` THEN ASM_REWRITE_TAC[] THENL - [ASM_REWRITE_TAC[CONG_MOD_0] THEN CONV_TAC NUM_REDUCE_CONV; ALL_TAC] THEN + [ASM_REWRITE_TAC[CONG_MOD_0] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ALL_TAC] THEN REWRITE_TAC[LE_LT] THEN ASM_CASES_TAC `n:num = p` THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(MP_TAC o MATCH_MP (ARITH_RULE `x < y ==> x <= y - 1`)) THEN ASM_SIMP_TAC[GSYM DIVIDES_FACT_PRIME] THEN diff --git a/Arithmetic/arithprov.ml b/Arithmetic/arithprov.ml index ab308ff2..e7c5b97f 100644 --- a/Arithmetic/arithprov.ml +++ b/Arithmetic/arithprov.ml @@ -361,7 +361,7 @@ let AXIOM_FORMULA = prove (`!a. AXIOM a ==> ?p. a = gform p`, REWRITE_TAC[AXIOM; FREEFORM_THM; FREETERM_THM; FORM_THM; TERM_THM] THEN REPEAT STRIP_TAC THEN ASM_REWRITE_TAC[] THEN - CONV_TAC(BINDER_CONV SYM_CONV) THEN + (CONV_TAC "(BINDER_CONV SYM_CONV)") (BINDER_CONV SYM_CONV) THEN REWRITE_TAC[GFORM_CASES; GTERM_CASES; GTERM_CASES_ALT; GFORM_CASES_ALT] THEN MESON_TAC[NUMBER_DENUMBER]);; @@ -531,7 +531,7 @@ let ARITH_PROV = prove ==> !v n. holds v (arith_prov A n) <=> PROV Ax (termval v n)`, REPEAT GEN_TAC THEN DISCH_THEN(MP_TAC o MATCH_MP ARITH_PROV1) THEN DISCH_THEN(MP_TAC o MATCH_MP ARITH_RTC) THEN - CONV_TAC(TOP_DEPTH_CONV ETA_CONV) THEN DISCH_TAC THEN + (CONV_TAC "(TOP_DEPTH_CONV ETA_CONV)") (TOP_DEPTH_CONV ETA_CONV) THEN DISCH_TAC THEN ASM_REWRITE_TAC[arith_prov; HOLDS_FORMSUBST] THEN REWRITE_TAC[termval; valmod; o_DEF; TERMVAL_NUMERAL; ARITH_PAIR] THEN REWRITE_TAC[PROV]);; diff --git a/Arithmetic/definability.ml b/Arithmetic/definability.ml index 150fe288..431b0997 100644 --- a/Arithmetic/definability.ml +++ b/Arithmetic/definability.ml @@ -631,7 +631,7 @@ let ARITH_PRIMREC = prove REPEAT STRIP_TAC THEN FIRST_ASSUM(MP_TAC o MATCH_MP ARITH_PRIMRECSTEP) THEN DISCH_THEN(MP_TAC o MATCH_MP ARITH_RTC) THEN - CONV_TAC(TOP_DEPTH_CONV ETA_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV ETA_CONV)") (TOP_DEPTH_CONV ETA_CONV) THEN SIMP_TAC[arith_primrec; ARITH_PAIR; termval] THEN ASM_SIMP_TAC[PRIMREC_SIGMA]);; diff --git a/Arithmetic/derived.ml b/Arithmetic/derived.ml index 616c2324..82ea0253 100644 --- a/Arithmetic/derived.ml +++ b/Arithmetic/derived.ml @@ -608,7 +608,7 @@ let FORMSUBST_TWICE_GENERAL = prove ASM_CASES_TAC `x IN FVT(j(z:num))` THEN ASM_REWRITE_TAC[] THEN ASM_REWRITE_TAC[VALMOD] THEN ASM_MESON_TAC[safe_for]; ALL_TAC] THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THENL [SUBGOAL_THEN `{x' | ?y. (?y'. y' IN FV p /\ y IN FVT ((x |-> V x) i y')) /\ diff --git a/Arithmetic/fol.ml b/Arithmetic/fol.ml index 0dc0b0c3..08c1ee88 100644 --- a/Arithmetic/fol.ml +++ b/Arithmetic/fol.ml @@ -248,8 +248,8 @@ let AXIOMS_TRUE = prove (`!p. axiom p ==> true p`, MATCH_MP_TAC axiom_INDUCT THEN REWRITE_TAC[true_def] THEN REPEAT STRIP_TAC THEN REWRITE_TAC[holds] THENL - [CONV_TAC TAUT; - CONV_TAC TAUT; + [(CONV_TAC "TAUT") TAUT; + (CONV_TAC "TAUT") TAUT; SIMP_TAC[]; REWRITE_TAC[RIGHT_IMP_FORALL_THM] THEN REPEAT GEN_TAC THEN MATCH_MP_TAC EQ_IMP THEN @@ -269,9 +269,9 @@ let AXIOMS_TRUE = prove SIMP_TAC[termval]; SIMP_TAC[termval]; SIMP_TAC[termval]; - CONV_TAC TAUT; - CONV_TAC TAUT; - CONV_TAC TAUT; + (CONV_TAC "TAUT") TAUT; + (CONV_TAC "TAUT") TAUT; + (CONV_TAC "TAUT") TAUT; MESON_TAC[]]);; let THEOREMS_TRUE = prove @@ -439,7 +439,7 @@ let FORMSUBST_PROPERTIES = prove REPEAT(CONJ_TAC THENL [MESON_TAC[];ALL_TAC]) THEN CONJ_TAC THEN (MAP_EVERY X_GEN_TAC [`x:num`; `p:form`] THEN STRIP_TAC THEN REWRITE_TAC[AND_FORALL_THM] THEN X_GEN_TAC `i:num->term` THEN - LET_TAC THEN CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN + LET_TAC THEN (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN SUBGOAL_THEN `~(?y. y IN (FV(p) DELETE x) /\ z IN FVT(i y))` ASSUME_TAC THENL [EXPAND_TAC "z" THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN diff --git a/Arithmetic/godel.ml b/Arithmetic/godel.ml index ce3eac4c..da1be978 100644 --- a/Arithmetic/godel.ml +++ b/Arithmetic/godel.ml @@ -211,7 +211,7 @@ let SIGMAPI_FORMSUBST = prove DISCH_TAC THEN REWRITE_TAC[AND_FORALL_THM] THEN MAP_EVERY X_GEN_TAC [`i:num->term`; `n:num`; `b:bool`] THEN REWRITE_TAC[FV] THEN LET_TAC THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN REWRITE_TAC[SIGMAPI_CLAUSES] THEN ONCE_REWRITE_TAC[TAUT `((if p \/ q then x else y) ==> (if p \/ q' then x' else y')) <=> @@ -408,7 +408,7 @@ let HSENTENCE_FIX_STRONG = prove REWRITE_TAC[hsentence; true_def; HOLDS_FIXPOINT] THEN REPEAT STRIP_TAC THEN FIRST_ASSUM(MP_TAC o MATCH_MP ARITH_PROV) THEN - REWRITE_TAC[IN] THEN CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN + REWRITE_TAC[IN] THEN (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN DISCH_TAC THEN ASM_REWRITE_TAC[ARITH_PAIR; TERMVAL_NUMERAL] THEN REWRITE_TAC[termval; valmod; GSYM gform] THEN REWRITE_TAC[PROV_THM]);; diff --git a/Arithmetic/sigmacomplete.ml b/Arithmetic/sigmacomplete.ml index b56ae169..8d5a2864 100644 --- a/Arithmetic/sigmacomplete.ml +++ b/Arithmetic/sigmacomplete.ml @@ -31,7 +31,7 @@ let num_cases' = prove REPEAT STRIP_TAC THEN MP_TAC(SPEC `t:term` (MATCH_MP spec num_cases)) THEN REWRITE_TAC[formsubst] THEN - CONV_TAC(ONCE_DEPTH_CONV TERMSUBST_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV TERMSUBST_CONV)") (ONCE_DEPTH_CONV TERMSUBST_CONV) THEN REWRITE_TAC[FV; FVT; SET_RULE `({1} UNION {0}) DELETE 0 = {1} DIFF {0}`] THEN REWRITE_TAC[IN_DIFF; IN_SING; UNWIND_THM2; GSYM CONJ_ASSOC; ASSIGN] THEN REWRITE_TAC[ARITH_EQ] THEN LET_TAC THEN @@ -50,7 +50,7 @@ let num_cases' = prove REWRITE_TAC[iexists] THEN REWRITE_TAC[formsubst] THEN ASM_REWRITE_TAC[termsubst; ASSIGN] THEN MATCH_MP_TAC(MESON[imp_refl] `p = q ==> A |-- p --> q`) THEN - AP_THM_TAC THEN AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + AP_THM_TAC THEN AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC TERMSUBST_TRIVIAL THEN REWRITE_TAC[ASSIGN] THEN ASM_MESON_TAC[]]);; @@ -166,7 +166,7 @@ let not_suc_eq_0 = prove [ALL_TAC; REWRITE_TAC[canonize_clauses]] THEN SUBGOAL_THEN `{robinson} |-- ?? 0 (Suc(V 1) === Suc(V 0))` MP_TAC THENL [MATCH_MP_TAC exists_intro THEN EXISTS_TAC `V 1` THEN - CONV_TAC(RAND_CONV FORMSUBST_CONV) THEN REWRITE_TAC[axiom_eqrefl]; + (CONV_TAC "(RAND_CONV FORMSUBST_CONV)") (RAND_CONV FORMSUBST_CONV) THEN REWRITE_TAC[axiom_eqrefl]; MESON_TAC[iff_imp2; modusponens; spec_rule `Suc(V 1)` num_cases]]);; let not_suc_le_0 = prove @@ -237,7 +237,7 @@ let ATOM_LE_TRUE = prove [MP_TAC(itlist spec_rule [`numeral(m + n)`; `numeral m`] le_def) THEN MESON_TAC[iff_imp2]; MATCH_MP_TAC exists_intro THEN EXISTS_TAC `numeral n` THEN - CONV_TAC(RAND_CONV FORMSUBST_CONV) THEN + (CONV_TAC "(RAND_CONV FORMSUBST_CONV)") (RAND_CONV FORMSUBST_CONV) THEN REWRITE_TAC[SIGMA1_COMPLETE_ADD]]);; let ATOM_LT_TRUE = prove @@ -291,11 +291,11 @@ let num_cases_rule = prove MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] modusponens) THEN MATCH_MP_TAC imp_swap THEN GEN_REWRITE_TAC (funpow 3 RAND_CONV) [GSYM FORMSUBST_TRIV] THEN - CONV_TAC(funpow 3 RAND_CONV(SUBS_CONV[SYM(SPEC `x:num` ASSIGN_TRIV)])) THEN + (CONV_TAC "(funpow 3 RAND_CONV(SUBS_CONV[SYM(SPEC `x:num` ASSIGN_TRIV)]))") (funpow 3 RAND_CONV(SUBS_CONV[SYM(SPEC `x:num` ASSIGN_TRIV)])) THEN TRANS_TAC imp_trans `t === V x` THEN REWRITE_TAC[isubst; eq_sym]) in REPEAT GEN_TAC THEN GEN_REWRITE_TAC (RAND_CONV o RAND_CONV) [GSYM FORMSUBST_TRIV] THEN - CONV_TAC(RAND_CONV(SUBS_CONV[SYM(SPEC `x:num` ASSIGN_TRIV)])) THEN + (CONV_TAC "(RAND_CONV(SUBS_CONV[SYM(SPEC `x:num` ASSIGN_TRIV)]))") (RAND_CONV(SUBS_CONV[SYM(SPEC `x:num` ASSIGN_TRIV)])) THEN SUBGOAL_THEN `?z. ~(z = x) /\ ~(z IN VARS p)` STRIP_ASSUME_TAC THENL [EXISTS_TAC `VARIANT(x INSERT VARS p)` THEN REWRITE_TAC[GSYM DE_MORGAN_THM; GSYM IN_INSERT] THEN diff --git a/Complex/complex_grobner.ml b/Complex/complex_grobner.ml index 9784ee0e..cec45f67 100644 --- a/Complex/complex_grobner.ml +++ b/Complex/complex_grobner.ml @@ -459,14 +459,14 @@ let COMPLEX_ARITH = let pth0 = SIMPLE_COMPLEX_ARITH `(x = y) <=> (x - y = Cx(&0))` and pth1 = prove (`!x. ~(x = Cx(&0)) <=> ?z. z * x + Cx(&1) = Cx(&0)`, - CONV_TAC(time FULL_COMPLEX_QUELIM_CONV)) + (CONV_TAC "(time FULL_COMPLEX_QUELIM_CONV)") (time FULL_COMPLEX_QUELIM_CONV)) and pth2a = prove (`!x y u v. ~(x = y) \/ ~(u = v) <=> ?w z. w * (x - y) + z * (u - v) + Cx(&1) = Cx(&0)`, - CONV_TAC(time FULL_COMPLEX_QUELIM_CONV)) + (CONV_TAC "(time FULL_COMPLEX_QUELIM_CONV)") (time FULL_COMPLEX_QUELIM_CONV)) and pth2b = prove (`!x y. ~(x = y) <=> ?z. z * (x - y) + Cx(&1) = Cx(&0)`, - CONV_TAC(time FULL_COMPLEX_QUELIM_CONV)) + (CONV_TAC "(time FULL_COMPLEX_QUELIM_CONV)") (time FULL_COMPLEX_QUELIM_CONV)) and pth3 = TAUT `(p ==> F) ==> (~q <=> p) ==> q` in let GEN_PRENEX_CONV = GEN_REWRITE_CONV REDEPTH_CONV diff --git a/Complex/complex_transc.ml b/Complex/complex_transc.ml index 71dc8948..acc653bf 100644 --- a/Complex/complex_transc.ml +++ b/Complex/complex_transc.ml @@ -53,7 +53,7 @@ let CSQRT = prove REAL_POW_EQ_0; REAL_DIV_REFL] THEN REWRITE_TAC[real_div; REAL_MUL_LID; GSYM REAL_SUB_RDISTRIB] THEN REWRITE_TAC[REAL_ARITH `(m + r) - (m - r) = r * &2`] THEN - REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_RID]; ALL_TAC] THEN REWRITE_TAC[real_div] THEN ONCE_REWRITE_TAC[AC REAL_MUL_AC @@ -67,7 +67,7 @@ let CSQRT = prove REWRITE_TAC[REAL_ABS_MUL; REAL_ABS_INV; REAL_ABS_NUM] THEN ONCE_REWRITE_TAC[AC REAL_MUL_AC `&2 * (i * a') * a * h = i * (&2 * h) * a * a'`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_LID; GSYM real_div] THEN ASM_SIMP_TAC[REAL_DIV_REFL; REAL_ABS_ZERO; REAL_MUL_RID]);; @@ -90,7 +90,7 @@ let CEXP_0 = prove let CEXP_ADD = prove (`!w z. cexp(w + z) = cexp(w) * cexp(z)`, REWRITE_TAC[COMPLEX_EQ; cexp; complex_mul; complex_add; RE; IM; CX_DEF] THEN - REWRITE_TAC[REAL_EXP_ADD; SIN_ADD; COS_ADD] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[REAL_EXP_ADD; SIN_ADD; COS_ADD] THEN (CONV_TAC "REAL_RING") REAL_RING);; let CEXP_MUL = prove (`!n z. cexp(Cx(&n) * z) = cexp(z) pow n`, @@ -104,7 +104,7 @@ let CEXP_NONZERO = prove (`!z. ~(cexp z = Cx(&0))`, GEN_TAC THEN REWRITE_TAC[cexp; COMPLEX_ENTIRE; CX_INJ; REAL_EXP_NZ] THEN REWRITE_TAC[CX_DEF; RE; IM; COMPLEX_EQ] THEN - MP_TAC(SPEC `Im z` SIN_CIRCLE) THEN CONV_TAC REAL_RING);; + MP_TAC(SPEC `Im z` SIN_CIRCLE) THEN (CONV_TAC "REAL_RING") REAL_RING);; let CEXP_NEG_LMUL = prove (`!z. cexp(--z) * cexp(z) = Cx(&1)`, @@ -140,9 +140,9 @@ let CX_CSIN,CX_CCOS = (CONJ_PAIR o prove) REAL_MUL_LNEG; REAL_NEG_0; REAL_ADD_RID; complex_sub; SIN_NEG; COS_NEG; GSYM REAL_MUL_2; GSYM real_sub; complex_div; REAL_SUB_REFL; complex_inv; REAL_SUB_RNEG] THEN - CONJ_TAC THEN GEN_TAC THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + CONJ_TAC THEN GEN_TAC THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_RZERO] THEN - AP_TERM_TAC THEN AP_THM_TAC THEN AP_TERM_TAC THEN CONV_TAC REAL_RING);; + AP_TERM_TAC THEN AP_THM_TAC THEN AP_TERM_TAC THEN (CONV_TAC "REAL_RING") REAL_RING);; let CSIN_0 = prove (`csin(Cx(&0)) = Cx(&0)`, @@ -157,41 +157,41 @@ let CSIN_CIRCLE = prove GEN_TAC THEN REWRITE_TAC[csin; ccos] THEN MP_TAC(SPEC `ii * z` CEXP_NEG_LMUL) THEN MP_TAC COMPLEX_POW_II_2 THEN REWRITE_TAC[COMPLEX_MUL_LNEG] THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CSIN_ADD = prove (`!w z. csin(w + z) = csin(w) * ccos(z) + ccos(w) * csin(z)`, REPEAT GEN_TAC THEN REWRITE_TAC[csin; ccos; COMPLEX_ADD_LDISTRIB; CEXP_ADD] THEN - MP_TAC COMPLEX_POW_II_2 THEN CONV_TAC COMPLEX_FIELD);; + MP_TAC COMPLEX_POW_II_2 THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CCOS_ADD = prove (`!w z. ccos(w + z) = ccos(w) * ccos(z) - csin(w) * csin(z)`, REPEAT GEN_TAC THEN REWRITE_TAC[csin; ccos; COMPLEX_ADD_LDISTRIB; CEXP_ADD] THEN - MP_TAC COMPLEX_POW_II_2 THEN CONV_TAC COMPLEX_FIELD);; + MP_TAC COMPLEX_POW_II_2 THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CSIN_NEG = prove (`!z. csin(--z) = --(csin(z))`, REWRITE_TAC[csin; COMPLEX_MUL_LNEG; COMPLEX_MUL_RNEG; COMPLEX_NEG_NEG] THEN GEN_TAC THEN MP_TAC COMPLEX_POW_II_2 THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CCOS_NEG = prove (`!z. ccos(--z) = ccos(z)`, REWRITE_TAC[ccos; COMPLEX_MUL_LNEG; COMPLEX_MUL_RNEG; COMPLEX_NEG_NEG] THEN GEN_TAC THEN MP_TAC COMPLEX_POW_II_2 THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CSIN_DOUBLE = prove (`!z. csin(Cx(&2) * z) = Cx(&2) * csin(z) * ccos(z)`, REWRITE_TAC[COMPLEX_RING `Cx(&2) * x = x + x`; CSIN_ADD] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let CCOS_DOUBLE = prove (`!z. ccos(Cx(&2) * z) = (ccos(z) pow 2) - (csin(z) pow 2)`, REWRITE_TAC[COMPLEX_RING `Cx(&2) * x = x + x`; CCOS_ADD] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; (* ------------------------------------------------------------------------- *) (* Euler and de Moivre formulas. *) @@ -200,7 +200,7 @@ let CCOS_DOUBLE = prove let CEXP_EULER = prove (`!z. cexp(ii * z) = ccos(z) + ii * csin(z)`, REWRITE_TAC[ccos; csin] THEN MP_TAC COMPLEX_POW_II_2 THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let DEMOIVRE = prove (`!z n. (ccos z + ii * csin z) pow n = @@ -243,7 +243,7 @@ let COS_INTEGER_2PI = prove REWRITE_TAC[REAL_ARITH `pi * &n = &n * pi`; SIN_NPI; COS_NPI] THEN REWRITE_TAC[REAL_POW_POW] THEN ONCE_REWRITE_TAC[MULT_SYM] THEN REWRITE_TAC[GSYM REAL_POW_POW; REAL_POW_2] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_POW_ONE; REAL_SUB_RZERO]);; let SINCOS_PRINCIPAL_VALUE = prove @@ -258,7 +258,7 @@ let SINCOS_PRINCIPAL_VALUE = prove SIMP_TAC[REAL_DIV_LMUL; REAL_ENTIRE; REAL_OF_NUM_EQ; ARITH; REAL_LT_IMP_NZ; PI_POS; REAL_ARITH `a - (a - b - c):real = b + c`; SIN_ADD; COS_ADD] THEN SIMP_TAC[FLOOR_FRAC; SIN_INTEGER_2PI; COS_INTEGER_2PI] THEN - CONV_TAC REAL_RING]);; + (CONV_TAC "REAL_RING") REAL_RING]);; (* ------------------------------------------------------------------------- *) (* Complex logarithms (the conventional principal value). *) @@ -270,7 +270,7 @@ let clog = new_definition let CLOG_WORKS = prove (`!z. ~(z = Cx(&0)) ==> cexp(clog z) = z /\ --pi < Im(clog z) /\ Im(clog z) <= pi`, - GEN_TAC THEN DISCH_TAC THEN REWRITE_TAC[clog] THEN CONV_TAC SELECT_CONV THEN + GEN_TAC THEN DISCH_TAC THEN REWRITE_TAC[clog] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN REWRITE_TAC[cexp; EXISTS_COMPLEX] THEN EXISTS_TAC `ln(norm(z:complex))` THEN SUBGOAL_THEN `exp(ln(norm(z:complex))) = norm(z)` SUBST1_TAC THENL @@ -298,7 +298,7 @@ let unwinding = new_definition let COMPLEX_II_NZ = prove (`~(ii = Cx(&0))`, - MP_TAC COMPLEX_POW_II_2 THEN CONV_TAC COMPLEX_RING);; + MP_TAC COMPLEX_POW_II_2 THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let UNWINDING_2PI = prove (`Cx(&2 * pi) * ii * unwinding(z) = z - clog(cexp z)`, diff --git a/Complex/complexnumbers.ml b/Complex/complexnumbers.ml index 1877d9db..b8c02fcf 100644 --- a/Complex/complexnumbers.ml +++ b/Complex/complexnumbers.ml @@ -416,7 +416,7 @@ let COMPLEX_NORM_CX = prove let COMPLEX_ENTIRE = prove (`!x y. (x * y = Cx(&0)) <=> (x = Cx(&0)) \/ (y = Cx(&0))`, REWRITE_TAC[COMPLEX_EQ; complex_mul; RE; IM; CX_DEF; GSYM REAL_SOS_EQ_0] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* Powers. *) @@ -460,13 +460,13 @@ let COMPLEX_POW_MUL = prove let COMPLEX_POW_II_2 = prove (`ii pow 2 = --Cx(&1)`, REWRITE_TAC[ii; COMPLEX_POW_2; complex_mul; CX_DEF; RE; IM; complex_neg] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let COMPLEX_POW_EQ_0 = prove (`!x n. (x pow n = Cx(&0)) <=> (x = Cx(&0)) /\ ~(n = 0)`, GEN_TAC THEN INDUCT_TAC THEN ASM_REWRITE_TAC[NOT_SUC; complex_pow; COMPLEX_ENTIRE] THENL - [SIMPLE_COMPLEX_ARITH_TAC; CONV_TAC TAUT]);; + [SIMPLE_COMPLEX_ARITH_TAC; (CONV_TAC "TAUT") TAUT]);; (* ------------------------------------------------------------------------- *) (* Norms (aka "moduli"). *) @@ -534,7 +534,7 @@ let COMPLEX_NORM_INV = prove (r * r + i * i) * d * d:real`] THEN ASM_CASES_TAC `Re z * Re z + Im z * Im z = &0` THENL [ASM_REWRITE_TAC[REAL_INV_0; SQRT_0; REAL_MUL_LZERO]; ALL_TAC] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_MUL_RINV_UNIQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_MUL_RINV_UNIQ THEN SIMP_TAC[GSYM SQRT_MUL; REAL_LE_MUL; REAL_LE_INV_EQ; REAL_LE_ADD; REAL_LE_SQUARE] THEN ONCE_REWRITE_TAC[AC REAL_MUL_AC @@ -765,7 +765,7 @@ let COMPLEX_POLY_CONV = let COMPLEX_MUL_LINV = prove (`!z. ~(z = Cx(&0)) ==> (inv(z) * z = Cx(&1))`, REWRITE_TAC[complex_mul; complex_inv; RE; IM; COMPLEX_EQ; CX_DEF] THEN - REWRITE_TAC[GSYM REAL_SOS_EQ_0] THEN CONV_TAC REAL_FIELD);; + REWRITE_TAC[GSYM REAL_SOS_EQ_0] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let COMPLEX_MUL_RINV = prove (`!z. ~(z = Cx(&0)) ==> (z * inv(z) = Cx(&1))`, @@ -815,12 +815,12 @@ let COMPLEX_INV_MUL = prove ASM_REWRITE_TAC[COMPLEX_INV_0; COMPLEX_MUL_LZERO; COMPLEX_MUL_RZERO] THEN REPEAT(POP_ASSUM MP_TAC) THEN REWRITE_TAC[complex_mul; complex_inv; RE; IM; COMPLEX_EQ; CX_DEF] THEN - REWRITE_TAC[GSYM REAL_SOS_EQ_0] THEN CONV_TAC REAL_FIELD);; + REWRITE_TAC[GSYM REAL_SOS_EQ_0] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let COMPLEX_INV_1 = prove (`inv(Cx(&1)) = Cx(&1)`, REWRITE_TAC[complex_inv; CX_DEF; RE; IM] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_DIV_1]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_DIV_1]);; let COMPLEX_POW_INV = prove (`!x n. (inv x) pow n = inv(x pow n)`, @@ -834,7 +834,7 @@ let COMPLEX_INV_INV = prove POP_ASSUM MP_TAC THEN MAP_EVERY (fun t -> MP_TAC(SPEC t COMPLEX_MUL_RINV)) [`x:complex`; `inv(x):complex`] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; (* ------------------------------------------------------------------------- *) (* And also field procedure. *) @@ -885,28 +885,28 @@ let COMPLEX_POW_DIV = prove let COMPLEX_DIV_REFL = prove (`!x. ~(x = Cx(&0)) ==> (x / x = Cx(&1))`, - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COMPLEX_EQ_MUL_LCANCEL = prove (`!x y z. (x * y = x * z) <=> (x = Cx(&0)) \/ (y = z)`, - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COMPLEX_EQ_MUL_RCANCEL = prove (`!x y z. (x * z = y * z) <=> (x = y) \/ (z = Cx(&0))`, - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COMPLEX_MUL_RINV_UNIQ = prove (`!w z. w * z = Cx(&1) ==> inv w = z`, - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COMPLEX_MUL_LINV_UNIQ = prove (`!w z. w * z = Cx(&1) ==> inv z = w`, - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COMPLEX_DIV_LMUL = prove (`!w z. ~(z = Cx(&0)) ==> z * w / z = w`, - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COMPLEX_DIV_RMUL = prove (`!w z. ~(z = Cx(&0)) ==> w / z * z = w`, - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; diff --git a/Complex/cpoly.ml b/Complex/cpoly.ml index 5b84dc02..73cff0d4 100644 --- a/Complex/cpoly.ml +++ b/Complex/cpoly.ml @@ -331,7 +331,7 @@ let POLY_EXP_EQ_0 = prove REWRITE_TAC[poly_exp; poly; COMPLEX_MUL_RZERO; COMPLEX_ADD_RID; CX_INJ; REAL_OF_NUM_EQ; ARITH; NOT_SUC] THEN ASM_REWRITE_TAC[POLY_MUL; poly; COMPLEX_ENTIRE] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; let POLY_PRIME_EQ_0 = prove (`!a. ~(poly [a ; Cx(&1)] = poly [])`, @@ -355,7 +355,7 @@ let POLY_ZERO_LEMMA = prove [REWRITE_TAC[COMPLEX_ADD_LID]; DISCH_THEN(MP_TAC o SPEC `Cx(&0)`) THEN POP_ASSUM MP_TAC THEN SIMPLE_COMPLEX_ARITH_TAC] THEN - CONV_TAC CONTRAPOS_CONV THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_THEN(MP_TAC o REWRITE_RULE[lemma]) THEN DISCH_THEN(X_CHOOSE_THEN `N:num` (X_CHOOSE_TAC `i:num->complex`)) THEN MP_TAC(SPECL @@ -526,7 +526,7 @@ let POLY_ORDER_EXISTS = prove DISCH_THEN(X_CHOOSE_THEN `r:complex list` MP_TAC) THEN SPEC_TAC(`n:num`,`n:num`) THEN INDUCT_TAC THEN ASM_REWRITE_TAC[] THENL - [UNDISCH_TAC `~(poly s a = Cx(&0))` THEN CONV_TAC CONTRAPOS_CONV THEN + [UNDISCH_TAC `~(poly s a = Cx(&0))` THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[] THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[poly; poly_exp; POLY_MUL] THEN SIMPLE_COMPLEX_ARITH_TAC; REWRITE_TAC[] THEN ONCE_ASM_REWRITE_TAC[] THEN @@ -561,12 +561,12 @@ let ORDER = prove EQ_TAC THEN STRIP_TAC THENL [SUBGOAL_THEN `~(poly p = poly [])` ASSUME_TAC THENL [FIRST_ASSUM(UNDISCH_TAC o check is_neg o concl) THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[divides] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[divides] THEN DISCH_THEN SUBST1_TAC THEN EXISTS_TAC `[]:complex list` THEN REWRITE_TAC[FUN_EQ_THM; POLY_MUL; poly; COMPLEX_MUL_RZERO]; - ASM_REWRITE_TAC[] THEN CONV_TAC SYM_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SELECT_UNIQUE THEN REWRITE_TAC[]]; - ONCE_ASM_REWRITE_TAC[] THEN CONV_TAC SELECT_CONV] THEN + ONCE_ASM_REWRITE_TAC[] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV] THEN ASM_MESON_TAC[POLY_ORDER]);; let ORDER_THM = prove diff --git a/Complex/grobner_examples.ml b/Complex/grobner_examples.ml index 468e64db..1c83eec1 100644 --- a/Complex/grobner_examples.ml +++ b/Complex/grobner_examples.ml @@ -360,7 +360,7 @@ let det3 = new_definition let DET_TRANSPOSE = prove (`det3(a1,b1,c1,a2,b2,c2,a3,b3,c3) = det3(a1,a2,a3,b1,b2,b3,c1,c2,c3)`, - REWRITE_TAC[det3] THEN CONV_TAC(time COMPLEX_ARITH));; + REWRITE_TAC[det3] THEN (CONV_TAC "(time COMPLEX_ARITH)") (time COMPLEX_ARITH));; let sdet3 = new_definition `sdet3(p,q,r) = det3(FST p,SND p,Cx(&1), @@ -369,33 +369,33 @@ let sdet3 = new_definition let SDET3_PERMUTE_1 = prove (`sdet3(p,q,r) = sdet3(q,r,p)`, - REWRITE_TAC[sdet3; det3] THEN CONV_TAC(time COMPLEX_ARITH));; + REWRITE_TAC[sdet3; det3] THEN (CONV_TAC "(time COMPLEX_ARITH)") (time COMPLEX_ARITH));; let SDET3_PERMUTE_2 = prove (`sdet3(p,q,r) = --(sdet3(p,r,q))`, - REWRITE_TAC[sdet3; det3] THEN CONV_TAC(time COMPLEX_ARITH));; + REWRITE_TAC[sdet3; det3] THEN (CONV_TAC "(time COMPLEX_ARITH)") (time COMPLEX_ARITH));; let SDET_SUM = prove (`sdet3(p,q,r) - sdet3(t,q,r) - sdet3(p,t,r) - sdet3(p,q,t) = Cx(&0)`, - REWRITE_TAC[sdet3; det3] THEN CONV_TAC(time COMPLEX_ARITH));; + REWRITE_TAC[sdet3; det3] THEN (CONV_TAC "(time COMPLEX_ARITH)") (time COMPLEX_ARITH));; let SDET_CRAMER = prove (`sdet3(s,t,q) * sdet3(t,p,r) = sdet3(t,q,r) * sdet3(s,t,p) + sdet3(t,p,q) * sdet3(s,t,r)`, - REWRITE_TAC[sdet3; det3] THEN CONV_TAC(time COMPLEX_ARITH));; + REWRITE_TAC[sdet3; det3] THEN (CONV_TAC "(time COMPLEX_ARITH)") (time COMPLEX_ARITH));; let SDET_NZ = prove (`!p q r. ~(sdet3(p,q,r) = Cx(&0)) ==> ~(p = q) /\ ~(q = r) /\ ~(r = p)`, REWRITE_TAC[FORALL_PAIR_THM; PAIR_EQ; sdet3; det3] THEN - CONV_TAC(time COMPLEX_ARITH));; + (CONV_TAC "(time COMPLEX_ARITH)") (time COMPLEX_ARITH));; let SDET_LINCOMB = prove (`(FST p * sdet3(i,j,k) = FST i * sdet3(j,k,p) + FST j * sdet3(k,i,p) + FST k * sdet3(i,j,p)) /\ (SND p * sdet3(i,j,k) = SND i * sdet3(j,k,p) + SND j * sdet3(k,i,p) + SND k * sdet3(i,j,p))`, - REWRITE_TAC[sdet3; det3] THEN CONV_TAC(time COMPLEX_ARITH));; + REWRITE_TAC[sdet3; det3] THEN (CONV_TAC "(time COMPLEX_ARITH)") (time COMPLEX_ARITH));; (***** I'm not sure if this is true; there must be some sufficient degenerate conditions.... @@ -414,7 +414,7 @@ let th = prove xq,xq pow 2 + yq pow 2,Cx(&1), xr,xr pow 2 + yr pow 2,Cx(&1)) = Cx(&0)))`, REWRITE_TAC[det3] THEN - CONV_TAC(time COMPLEX_ARITH));; + (CONV_TAC "(time COMPLEX_ARITH)") (time COMPLEX_ARITH));; ***************) @@ -492,7 +492,7 @@ let (EXPAND_COORDS_TAC:tactic) = let PAIR_BETA_THM = prove (`(\(x,y). P x y) (a,b) = P a b`, - CONV_TAC(LAND_CONV GEN_BETA_CONV) THEN REFL_TAC);; + (CONV_TAC "(LAND_CONV GEN_BETA_CONV)") (LAND_CONV GEN_BETA_CONV) THEN REFL_TAC);; let GEOM_TAC = EXPAND_COORDS_TAC THEN @@ -511,7 +511,7 @@ let CENTROID = time prove is_midpoint f (a,b) /\ is_intersection m (b,e) (a,d) ==> collinear c f m`, - GEOM_TAC THEN CONV_TAC GROBNER_REAL_ARITH);; + GEOM_TAC THEN (CONV_TAC "GROBNER_REAL_ARITH") GROBNER_REAL_ARITH);; (* ------------------------------------------------------------------------- *) (* Gauss's theorem (Chou, example 15). *) @@ -526,7 +526,7 @@ let GAUSS = time prove is_midpoint m2 (a0,a2) /\ is_midpoint m3 (x,y) ==> collinear m1 m2 m3`, - GEOM_TAC THEN CONV_TAC GROBNER_REAL_ARITH);; + GEOM_TAC THEN (CONV_TAC "GROBNER_REAL_ARITH") GROBNER_REAL_ARITH);; (* ------------------------------------------------------------------------- *) (* Simson's theorem (Chou, example 288). *) @@ -550,7 +550,7 @@ let SIMSON = time prove ~(lengths_eq (a,c) (a,a)) /\ ~(lengths_eq (b,c) (a,a)) ==> collinear e f g`, - GEOM_TAC THEN CONV_TAC GROBNER_REAL_ARITH);; + GEOM_TAC THEN (CONV_TAC "GROBNER_REAL_ARITH") GROBNER_REAL_ARITH);; let SIMSON = time prove (`lengths_eq (O,a) (O,b) /\ @@ -564,7 +564,7 @@ let SIMSON = time prove collinear g a b /\ ~(a = b) /\ ~(a = c) /\ ~(a = d) /\ ~(b = c) /\ ~(b = d) /\ ~(c = d) ==> collinear e f g`, - GEOM_TAC THEN CONV_TAC GROBNER_REAL_ARITH);; + GEOM_TAC THEN (CONV_TAC "GROBNER_REAL_ARITH") GROBNER_REAL_ARITH);; let SIMSON = time prove (`lengths_eq (O,a) (O,b) /\ @@ -584,6 +584,6 @@ let SIMSON = time prove ~(isotropic (b,d)) /\ ~(isotropic (c,d)) ==> collinear e f g`, - GEOM_TAC THEN CONV_TAC GROBNER_REAL_ARITH);; + GEOM_TAC THEN (CONV_TAC "GROBNER_REAL_ARITH") GROBNER_REAL_ARITH);; ****************) diff --git a/Complex/quelim.ml b/Complex/quelim.ml index 70d03189..6ddb2eb8 100644 --- a/Complex/quelim.ml +++ b/Complex/quelim.ml @@ -172,7 +172,7 @@ let CONSTANT_DEGREE = prove [DISCH_THEN(ASSUME_TAC o GSYM o SPEC `Cx(&0)`) THEN SUBGOAL_THEN `degree [poly p (Cx(&0))] = 0` MP_TAC THENL [REWRITE_TAC[degree; normalize] THEN - COND_CASES_TAC THEN REWRITE_TAC[LENGTH] THEN CONV_TAC NUM_REDUCE_CONV; + COND_CASES_TAC THEN REWRITE_TAC[LENGTH] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ALL_TAC] THEN MATCH_MP_TAC(ARITH_RULE `(x = y) ==> (x = 0) ==> (y = 0)`) THEN MATCH_MP_TAC DEGREE_WELLDEF THEN @@ -639,7 +639,7 @@ let BASIC_QUELIM_CONV = REWRITE_TAC[LAST] THEN LIST_INDUCT_TAC THEN REWRITE_TAC[LAST; ALL; NOT_CONS_NIL] THEN POP_ASSUM MP_TAC THEN COND_CASES_TAC THEN ASM_SIMP_TAC[ALL] THEN - CONV_TAC TAUT) in + (CONV_TAC "TAUT") TAUT) in let APPLY_pth3 = PART_MATCH (lhand o rand) pth_3 in let POLY_EXP_DIVIDES_CONV = let pth_4 = prove @@ -734,7 +734,7 @@ let COMPLEX_QUELIM_CONV = REWRITE_TAC[poly]) and pth_2 = prove (`(p ==> (q <=> r)) ==> (p /\ q <=> p /\ r)`, - CONV_TAC TAUT) + (CONV_TAC "TAUT") TAUT) and zero_tm = `Cx(&0)` and true_tm = `T` in let ELIM_ZERO_RULE = GEN_REWRITE_RULE RAND_CONV [pth_0] diff --git a/Complex/quelim_examples.ml b/Complex/quelim_examples.ml index 8e5d0210..53406260 100644 --- a/Complex/quelim_examples.ml +++ b/Complex/quelim_examples.ml @@ -5,49 +5,49 @@ let th = time prove (`!x y. (x pow 2 = Cx(&2)) /\ (y pow 2 = Cx(&3)) ==> ((x * y) pow 2 = Cx(&6))`, - CONV_TAC FULL_COMPLEX_QUELIM_CONV);; + (CONV_TAC "FULL_COMPLEX_QUELIM_CONV") FULL_COMPLEX_QUELIM_CONV);; let th = time prove (`!x a. (a pow 2 = Cx(&2)) /\ (x pow 2 + a * x + Cx(&1) = Cx(&0)) ==> (x pow 4 + Cx(&1) = Cx(&0))`, - CONV_TAC FULL_COMPLEX_QUELIM_CONV);; + (CONV_TAC "FULL_COMPLEX_QUELIM_CONV") FULL_COMPLEX_QUELIM_CONV);; let th = time prove (`!a x. (a pow 2 = Cx(&2)) /\ (x pow 2 + a * x + Cx(&1) = Cx(&0)) ==> (x pow 4 + Cx(&1) = Cx(&0))`, - CONV_TAC FULL_COMPLEX_QUELIM_CONV);; + (CONV_TAC "FULL_COMPLEX_QUELIM_CONV") FULL_COMPLEX_QUELIM_CONV);; let th = time prove (`~(?a x y. (a pow 2 = Cx(&2)) /\ (x pow 2 + a * x + Cx(&1) = Cx(&0)) /\ (y * (x pow 4 + Cx(&1)) + Cx(&1) = Cx(&0)))`, - CONV_TAC FULL_COMPLEX_QUELIM_CONV);; + (CONV_TAC "FULL_COMPLEX_QUELIM_CONV") FULL_COMPLEX_QUELIM_CONV);; let th = time prove (`!x. ?y. x pow 2 = y pow 3`, - CONV_TAC FULL_COMPLEX_QUELIM_CONV);; + (CONV_TAC "FULL_COMPLEX_QUELIM_CONV") FULL_COMPLEX_QUELIM_CONV);; let th = time prove (`!x y z a b. (a + b) * (x - y + z) - (a - b) * (x + y + z) = Cx(&2) * (b * x + b * z - a * y)`, - CONV_TAC FULL_COMPLEX_QUELIM_CONV);; + (CONV_TAC "FULL_COMPLEX_QUELIM_CONV") FULL_COMPLEX_QUELIM_CONV);; let th = time prove (`!a b. ~(a = b) ==> ?x y. (y * x pow 2 = a) /\ (y * x pow 2 + x = b)`, - CONV_TAC FULL_COMPLEX_QUELIM_CONV);; + (CONV_TAC "FULL_COMPLEX_QUELIM_CONV") FULL_COMPLEX_QUELIM_CONV);; let th = time prove (`!a b c x y. (a * x pow 2 + b * x + c = Cx(&0)) /\ (a * y pow 2 + b * y + c = Cx(&0)) /\ ~(x = y) ==> (a * x * y = c) /\ (a * (x + y) + b = Cx(&0))`, - CONV_TAC FULL_COMPLEX_QUELIM_CONV);; + (CONV_TAC "FULL_COMPLEX_QUELIM_CONV") FULL_COMPLEX_QUELIM_CONV);; let th = time prove (`~(!a b c x y. (a * x pow 2 + b * x + c = Cx(&0)) /\ (a * y pow 2 + b * y + c = Cx(&0)) ==> (a * x * y = c) /\ (a * (x + y) + b = Cx(&0)))`, - CONV_TAC FULL_COMPLEX_QUELIM_CONV);; + (CONV_TAC "FULL_COMPLEX_QUELIM_CONV") FULL_COMPLEX_QUELIM_CONV);; (** geometric example from ``Algorithms for Computer Algebra'': right triangle where perp. bisector of hypotenuse passes through the @@ -60,7 +60,7 @@ let th = time prove (y_2 = Cx(&2) * y_4) /\ (y_1 * y_3 = y_2 * y_4) ==> (y_1 pow 2 = y_2 pow 2)`, - CONV_TAC FULL_COMPLEX_QUELIM_CONV);; + (CONV_TAC "FULL_COMPLEX_QUELIM_CONV") FULL_COMPLEX_QUELIM_CONV);; (** geometric example: gradient condition for two lines to be non-parallel. **) @@ -69,7 +69,7 @@ let th = time prove (`!a1 b1 c1 a2 b2 c2. ~(a1 * b2 = a2 * b1) ==> ?x y. (a1 * x + b1 * y = c1) /\ (a2 * x + b2 * y = c2)`, - CONV_TAC FULL_COMPLEX_QUELIM_CONV);; + (CONV_TAC "FULL_COMPLEX_QUELIM_CONV") FULL_COMPLEX_QUELIM_CONV);; (*********** Apparently takes too long @@ -79,7 +79,7 @@ let th = time prove (!z. (a * z pow 2 + b * z + c = Cx(&0)) ==> (z = x) \/ (z = y)) ==> (a * x * y = c) /\ (a * (x + y) + b = Cx(&0))`, - CONV_TAC FULL_COMPLEX_QUELIM_CONV);; + (CONV_TAC "FULL_COMPLEX_QUELIM_CONV") FULL_COMPLEX_QUELIM_CONV);; *************) @@ -95,7 +95,7 @@ let th = time prove (x2 - x0) pow 2 + (y2 - y0) pow 2) /\ ((x2 - x0) pow 2 + (y2 - y0) pow 2 = (x3 - x0) pow 2 + (y3 - y0) pow 2))`, - CONV_TAC FULL_COMPLEX_QUELIM_CONV);; + (CONV_TAC "FULL_COMPLEX_QUELIM_CONV") FULL_COMPLEX_QUELIM_CONV);; **************) @@ -110,7 +110,7 @@ let th = time prove ~(x = y)) <=> (a = Cx(&0)) /\ (b = Cx(&0)) /\ (c = Cx(&0)) \/ ~(a = Cx(&0)) /\ ~(b pow 2 = Cx(&4) * a * c)`, - CONV_TAC(LAND_CONV FULL_COMPLEX_QUELIM_CONV) THEN + (CONV_TAC "(LAND_CONV FULL_COMPLEX_QUELIM_CONV)") (LAND_CONV FULL_COMPLEX_QUELIM_CONV) THEN REWRITE_TAC[poly; COMPLEX_MUL_RZERO; COMPLEX_ADD_LID; COMPLEX_ADD_RID] THEN REWRITE_TAC[COMPLEX_ENTIRE; CX_INJ; REAL_OF_NUM_EQ; ARITH] THEN ASM_CASES_TAC `a = Cx(&0)` THEN @@ -127,7 +127,7 @@ let th = time prove `b * b * Cx (&1) + a * c * Cx(--(&4)) = Cx(--(&1)) * (Cx(&4) * a * c - b * b)`] THEN REWRITE_TAC[COMPLEX_ENTIRE; COMPLEX_SUB_0; CX_INJ] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_CASES_TAC `b = Cx(&0)` THEN ASM_REWRITE_TAC[] THEN ASM_CASES_TAC `c = Cx(&0)` THEN ASM_REWRITE_TAC[] THEN REWRITE_TAC[COMPLEX_POW_2; COMPLEX_MUL_RZERO; COMPLEX_MUL_LZERO] THEN @@ -146,7 +146,7 @@ let th = time prove ~(x = y)) <=> (a = Cx(&0)) /\ (b = Cx(&0)) /\ (c = Cx(&0)) \/ ~(a = Cx(&0)) /\ ~(b pow 2 = Cx(&4) * a * c)`, - CONV_TAC FULL_COMPLEX_QUELIM_CONV);; + (CONV_TAC "FULL_COMPLEX_QUELIM_CONV") FULL_COMPLEX_QUELIM_CONV);; ****) @@ -168,7 +168,7 @@ let th = prove ((x2 - x0') pow 2 + (y2 - y0') pow 2 = (x3 - x0') pow 2 + (y3 - y0') pow 2) ==> (x0 = x0') /\ (y0 = y0'))`, - CONV_TAC FULL_COMPLEX_QUELIM_CONV);; + (CONV_TAC "FULL_COMPLEX_QUELIM_CONV") FULL_COMPLEX_QUELIM_CONV);; *************) diff --git a/Examples/borsuk.ml b/Examples/borsuk.ml index 09551e90..8dad8bc9 100644 --- a/Examples/borsuk.ml +++ b/Examples/borsuk.ml @@ -81,7 +81,7 @@ let THEOREM_1 = prove SUBGOAL_THEN `cexp(h z) = k z /\ cexp(h(--z:complex)) = k(--z)` (CONJUNCTS_THEN SUBST1_TAC) THENL - [CONJ_TAC THEN CONV_TAC SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN + [CONJ_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_SIMP_TAC[dist; IN_CBALL; COMPLEX_SUB_LZERO; NORM_NEG; REAL_LE_REFL]; ALL_TAC] THEN REWRITE_TAC[EULER; RE_MUL_CX; IM_MUL_CX; RE_II; IM_II; COMPLEX_ADD_RID; @@ -96,7 +96,7 @@ let THEOREM_1 = prove REWRITE_TAC[COMPLEX_NEG_SUB] THEN BINOP_TAC THEN AP_TERM_TAC THEN SIMP_TAC[CART_EQ; FORALL_3; VECTOR_3; VECTOR_NEG_COMPONENT; DIMINDEX_3; ARITH; RE_NEG; IM_NEG; NORM_NEG; REAL_NEG_NEG] THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[SQRT_0; REAL_NEG_0]]; ALL_TAC] THEN REWRITE_TAC[CEXP_EQ; CX_MUL] THEN diff --git a/Examples/brunn_minkowski.ml b/Examples/brunn_minkowski.ml index 1da2ec05..45473b2c 100644 --- a/Examples/brunn_minkowski.ml +++ b/Examples/brunn_minkowski.ml @@ -147,7 +147,7 @@ let BRUNN_MINKOWSKI_ELEMENTARY = prove `(d1:(real^N->bool)->bool) HAS_SIZE 1 /\ (d2:(real^N->bool)->bool) HAS_SIZE 1` MP_TAC THENL [ASM_REWRITE_TAC[HAS_SIZE]; ALL_TAC] THEN - CONV_TAC(LAND_CONV(BINOP_CONV HAS_SIZE_CONV)) THEN + (CONV_TAC "(LAND_CONV(BINOP_CONV HAS_SIZE_CONV))") (LAND_CONV(BINOP_CONV HAS_SIZE_CONV)) THEN DISCH_THEN(CONJUNCTS_THEN2 (X_CHOOSE_THEN `u:real^N->bool` SUBST_ALL_TAC) (X_CHOOSE_THEN `v:real^N->bool` SUBST_ALL_TAC)) THEN @@ -272,7 +272,7 @@ let BRUNN_MINKOWSKI_ELEMENTARY = prove [FIRST_ASSUM(MATCH_MP_TAC o MATCH_MP CHOOSE_SUBSET o MATCH_MP DIVISION_OF_FINITE) THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN - CONV_TAC(LAND_CONV(ONCE_DEPTH_CONV HAS_SIZE_CONV)) THEN + (CONV_TAC "(LAND_CONV(ONCE_DEPTH_CONV HAS_SIZE_CONV))") (LAND_CONV(ONCE_DEPTH_CONV HAS_SIZE_CONV)) THEN REWRITE_TAC[RIGHT_AND_EXISTS_THM] THEN ONCE_REWRITE_TAC[SWAP_EXISTS_THM] THEN DISCH_THEN(X_CHOOSE_THEN `i:real^N->bool` MP_TAC) THEN @@ -686,7 +686,7 @@ let BRUNN_MINKOWSKI_ELEMENTARY = prove measure (s INTER {x:real^N | x$k >= &0}) / measure s` THEN ASM_SIMP_TAC[MEASURE_EMPTY; REAL_EQ_RDIV_EQ] THEN REWRITE_TAC[real_div; REAL_MUL_LZERO] THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN ASM_SIMP_TAC[REAL_LT_IMP_NZ]; + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN ASM_SIMP_TAC[REAL_LT_IMP_NZ]; REWRITE_TAC[division_of] THEN MAP_EVERY EXPAND_TAC ["dl"; "dr"] THEN ONCE_REWRITE_TAC[SET_RULE `{f x |x| x IN s /\ ~(f x = a)} = @@ -779,7 +779,7 @@ let BRUNN_MINKOWSKI_ELEMENTARY = prove measure (s INTER {x:real^N | x$k <= &0}) / measure s` THEN ASM_SIMP_TAC[MEASURE_EMPTY; REAL_EQ_RDIV_EQ] THEN REWRITE_TAC[real_div; REAL_MUL_LZERO] THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN ASM_SIMP_TAC[REAL_LT_IMP_NZ]; + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN ASM_SIMP_TAC[REAL_LT_IMP_NZ]; REWRITE_TAC[division_of] THEN MAP_EVERY EXPAND_TAC ["dl"; "dr"] THEN ONCE_REWRITE_TAC[SET_RULE `{f x |x| x IN s /\ ~(f x = a)} = @@ -868,7 +868,7 @@ let BRUNN_MINKOWSKI_ELEMENTARY = prove CLOSED_HALFSPACE_COMPONENT_LE; CLOSED_HALFSPACE_COMPONENT_GE] THEN ASM_MESON_TAC[ELEMENTARY_COMPACT]; ALL_TAC] THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [REAL_LE_ROOT; DIMINDEX_NONZERO; REAL_LE_ADD; ROOT_POS_LE; MEASURE_POS_LE; MEASURABLE_INTER_HALFSPACE_LE; MEASURABLE_INTER_HALFSPACE_GE; REAL_ARITH `&0 <= x <=> x >= &0`] THEN @@ -993,7 +993,7 @@ let BRUNN_MINKOWSKI_OPEN = prove EXISTS_TAC `min (measure(s:real^N->bool)) (measure(t:real^N->bool))` THEN ASM_SIMP_TAC[REAL_LT_MIN; IN_ELIM_THM; REAL_SUB_RZERO; MEASURE_OPEN_POS_LT] THEN - REPEAT STRIP_TAC THEN BINOP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN BINOP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_ROOT_RPOW THEN REWRITE_TAC[DIMINDEX_NONZERO] THEN ASM_REAL_ARITH_TAC; ASM_SIMP_TAC[REAL_ROOT_RPOW; MEASURE_OPEN_POS_LT; DIMINDEX_NONZERO; @@ -1245,7 +1245,7 @@ let BRUNN_MINKOWSKI_COMPACT = prove x IN {x + d | x IN s /\ d IN ball(vec 0,e)} /\ y IN {y + d | y IN t /\ d IN ball(vec 0,e)}})` THEN REWRITE_TAC[] THEN REPEAT CONJ_TAC THENL - [ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + [ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [REAL_ROOT_RPOW; DIMINDEX_NONZERO; MEASURE_POS_LE; MEASURABLE_COMPACT; MEASURABLE_OPEN; BOUNDED_SUMS; OPEN_SUMS; COMPACT_IMP_BOUNDED; BOUNDED_BALL; OPEN_BALL] THEN @@ -1253,7 +1253,7 @@ let BRUNN_MINKOWSKI_COMPACT = prove REWRITE_TAC[REAL_LE_INV_EQ; REAL_POS] THEN MATCH_MP_TAC MEASURE_SUMS_COMPACT_EPSILON THEN ASM_REWRITE_TAC[]; REWRITE_TAC[lemma1] THEN MATCH_MP_TAC lemma2 THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 6) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 6) [REAL_ROOT_RPOW; DIMINDEX_NONZERO; MEASURE_POS_LE; MEASURABLE_COMPACT; MEASURABLE_OPEN; BOUNDED_SUMS; OPEN_SUMS; COMPACT_SUMS; COMPACT_IMP_BOUNDED; BOUNDED_BALL; OPEN_BALL] THEN @@ -1335,7 +1335,7 @@ let BRUNN_MINKOWSKI_MEASURABLE = prove EXISTS_TAC `min (measure(s:real^N->bool)) (measure(t:real^N->bool))` THEN ASM_SIMP_TAC[REAL_LT_MIN; IN_ELIM_THM; REAL_SUB_RZERO; MEASURE_OPEN_POS_LT] THEN - REPEAT STRIP_TAC THEN BINOP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN BINOP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_ROOT_RPOW THEN REWRITE_TAC[DIMINDEX_NONZERO] THEN ASM_REAL_ARITH_TAC; ASM_SIMP_TAC[REAL_ROOT_RPOW; MEASURE_OPEN_POS_LT; DIMINDEX_NONZERO; diff --git a/Examples/cooper.ml b/Examples/cooper.ml index 54cc4bca..10f01283 100644 --- a/Examples/cooper.ml +++ b/Examples/cooper.ml @@ -240,7 +240,7 @@ let MINUSINF_LEMMA = prove let MINUSINF_REPEATS = prove (`!p c d x. alldivide d p ==> (interp x (minusinf p) <=> interp (x + c * d) (minusinf p))`, - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN MATCH_MP_TAC cform_INDUCT THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN MATCH_MP_TAC cform_INDUCT THEN SIMP_TAC[interp; minusinf; alldivide] THEN ONCE_REWRITE_TAC[INT_ARITH `(x + d) + y = (x + y) + d`] THEN MESON_TAC[DIVIDES_LMUL; DIVIDES_ADD_REVL; DIVIDES_ADD]);; @@ -497,7 +497,7 @@ let INT_LE_CONV,INT_LT_CONV, (--(&m) < &n <=> ~((m = 0) /\ (n = 0)))`, REWRITE_TAC[pth_le1; pth_le2a; pth_le2b; pth_le3; GSYM NOT_LE; GSYM INT_NOT_LE] THEN - CONV_TAC TAUT) in + (CONV_TAC "TAUT") TAUT) in let INT_LT_CONV = FIRST_CONV [GEN_REWRITE_CONV I [pth_lt1]; GEN_REWRITE_CONV I [pth_lt2a; pth_lt2b] THENC NUM_LT_CONV; @@ -508,7 +508,7 @@ let INT_LE_CONV,INT_LT_CONV, (--(&m) >= --(&n) <=> m <= n) /\ (--(&m) >= &n <=> (m = 0) /\ (n = 0))`, REWRITE_TAC[pth_le1; pth_le2a; pth_le2b; pth_le3; INT_GE] THEN - CONV_TAC TAUT) in + (CONV_TAC "TAUT") TAUT) in let INT_GE_CONV = FIRST_CONV [GEN_REWRITE_CONV I [pth_ge1]; GEN_REWRITE_CONV I [pth_ge2a; pth_ge2b] THENC NUM_LE_CONV; @@ -519,7 +519,7 @@ let INT_LE_CONV,INT_LT_CONV, (--(&m) > --(&n) <=> m < n) /\ (&m > --(&n) <=> ~((m = 0) /\ (n = 0)))`, REWRITE_TAC[pth_lt1; pth_lt2a; pth_lt2b; pth_lt3; INT_GT] THEN - CONV_TAC TAUT) in + (CONV_TAC "TAUT") TAUT) in let INT_GT_CONV = FIRST_CONV [GEN_REWRITE_CONV I [pth_gt1]; GEN_REWRITE_CONV I [pth_gt2a; pth_gt2b] THENC NUM_LT_CONV; @@ -531,7 +531,7 @@ let INT_LE_CONV,INT_LT_CONV, ((&m = --(&n)) <=> (m = 0) /\ (n = 0))`, REWRITE_TAC[GSYM INT_LE_ANTISYM; GSYM LE_ANTISYM] THEN REWRITE_TAC[pth_le1; pth_le2a; pth_le2b; pth_le3; LE; LE_0] THEN - CONV_TAC TAUT) in + (CONV_TAC "TAUT") TAUT) in let INT_EQ_CONV = FIRST_CONV [GEN_REWRITE_CONV I [pth_eq1a; pth_eq1b] THENC NUM_EQ_CONV; GEN_REWRITE_CONV I [pth_eq2a; pth_eq2b] THENC NUM2_EQ_CONV] in @@ -821,7 +821,7 @@ let ADJUSTCOEFF_CONV = SIMP_TAC[divides; GSYM INT_MUL_ASSOC; INT_EQ_MUL_LCANCEL]) and pth_eq = prove (`~(d = &0) ==> ((&0 = e) <=> (&0 = d * e))`, - DISCH_TAC THEN CONV_TAC(BINOP_CONV SYM_CONV) THEN + DISCH_TAC THEN (CONV_TAC "(BINOP_CONV SYM_CONV)") (BINOP_CONV SYM_CONV) THEN ASM_REWRITE_TAC[INT_ENTIRE]) and pth_lt_pos = prove (`&0 < d ==> (&0 < e <=> &0 < d * e)`, diff --git a/Examples/dickson.ml b/Examples/dickson.ml index 54761906..b393b884 100644 --- a/Examples/dickson.ml +++ b/Examples/dickson.ml @@ -32,7 +32,7 @@ let MINIMAL_BAD_SEQUENCE = prove ASSUME_TAC THENL [ALL_TAC; EXISTS_TAC `x:num->A` THEN ASM_MESON_TAC[]] THEN MATCH_MP_TAC num_WF THEN X_GEN_TAC `n:num` THEN FIRST_X_ASSUM(fun th -> DISCH_TAC THEN SUBST1_TAC(SPEC `n:num` th)) THEN - CONV_TAC SELECT_CONV THEN REWRITE_TAC[LEFT_AND_EXISTS_THM] THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN REWRITE_TAC[LEFT_AND_EXISTS_THM] THEN REWRITE_TAC[TAUT `(p /\ q /\ r) /\ s <=> r /\ p /\ q /\ s`] THEN ONCE_REWRITE_TAC[SWAP_EXISTS_THM] THEN REWRITE_TAC[UNWIND_THM1] THEN REWRITE_TAC[CONJ_ASSOC] THEN MATCH_MP_TAC MINIMIZING_CHOICE THEN diff --git a/Examples/division_algebras.ml b/Examples/division_algebras.ml index aa55e767..25ef2984 100644 --- a/Examples/division_algebras.ml +++ b/Examples/division_algebras.ml @@ -69,7 +69,7 @@ let DIVISION_ALGEBRA = prove MAP_EVERY X_GEN_TAC [`v:real^N`; `c:real`] THEN ASM_CASES_TAC `v:real^N = vec 0` THEN ASM_REWRITE_TAC[IN_SPHERE_0; NORM_0; o_THM] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN DISCH_THEN(MP_TAC o CONJUNCT2) THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(MP_TAC o CONJUNCT2) THEN SUBGOAL_THEN `?w. v = (m:real^N->real^N->real^N) (basis 1) w` (CHOOSE_THEN SUBST_ALL_TAC) THENL [ASM_MESON_TAC[]; ALL_TAC] THEN SUBGOAL_THEN `~(w:real^N = vec 0)` ASSUME_TAC THENL @@ -140,12 +140,12 @@ let COMMUTATIVE_DIVISION_ALGEBRA_GEN = prove `vec 0:real^N`] DISTANCE_ATTAINS_INF) THEN REWRITE_TAC[EXISTS_IN_IMAGE; FORALL_IN_IMAGE; IMAGE_EQ_EMPTY] THEN REWRITE_TAC[IN_SPHERE_0; SPHERE_EQ_EMPTY; DIST_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ANTS_TAC THENL + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ANTS_TAC THENL [ASM_MESON_TAC[CONTINUOUS_ON_SUBSET; SUBSET_UNIV; COMPACT_IMP_CLOSED; COMPACT_CONTINUOUS_IMAGE; COMPACT_SPHERE]; DISCH_THEN(X_CHOOSE_THEN `a:real^N` MP_TAC)] THEN ASM_CASES_TAC `a:real^N = vec 0` THEN - ASM_REWRITE_TAC[NORM_0] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[NORM_0] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN STRIP_TAC THEN SUBGOAL_THEN `&0 < norm((f:real^N->real^N) a)` ASSUME_TAC THENL [ASM_MESON_TAC[NORM_POS_LT; NORM_EQ_0]; ALL_TAC] THEN @@ -216,7 +216,7 @@ let COMMUTATIVE_DIVISION_ALGEBRA_GEN = prove SUBGOAL_THEN `x:real^N = vec 0 \/ y + --(&1) % z:real^N = vec 0` MP_TAC THENL - [ALL_TAC; ASM_REWRITE_TAC[] THEN CONV_TAC VECTOR_ARITH] THEN + [ALL_TAC; ASM_REWRITE_TAC[] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN RULE_ASSUM_TAC(REWRITE_RULE[linear]) THEN ASM_REWRITE_TAC[] THEN REWRITE_TAC[VECTOR_ARITH @@ -251,7 +251,7 @@ let COMMUTATIVE_DIVISION_ALGEBRA_GEN = prove RULE_ASSUM_TAC(REWRITE_RULE[bilinear; linear]) THEN EXPAND_TAC "f" THEN REWRITE_TAC[] THEN ASM_REWRITE_TAC[VECTOR_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[VECTOR_MUL_LID; SUBSPACE_MUL; VECTOR_ARITH `x = --(&1) % x <=> x:real^N = vec 0`]]);; @@ -394,7 +394,7 @@ let ASSOCIATIVE_DIVISION_ALGEBRA = prove SUBGOAL_THEN `dim(C:real^N->bool) = 2` ASSUME_TAC THENL [EXPAND_TAC "C" THEN REWRITE_TAC[DIM_INSERT; DIM_SPAN] THEN ASM_REWRITE_TAC[SPAN_EMPTY; DIM_EMPTY; IN_SING] THEN - CONV_TAC NUM_REDUCE_CONV; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ALL_TAC] THEN SUBGOAL_THEN `!x y:real^N. x IN C /\ y IN C ==> m x y IN C` ASSUME_TAC THENL [REWRITE_TAC[IMP_CONJ; RIGHT_FORALL_IMP_THM] THEN EXPAND_TAC "C" THEN @@ -408,7 +408,7 @@ let ASSOCIATIVE_DIVISION_ALGEBRA = prove EXPAND_TAC "C" THEN SIMP_TAC[SPAN_SUPERSET; IN_INSERT] THEN MATCH_MP_TAC(TAUT `(~p ==> F) ==> p`) THEN DISCH_TAC THEN REMOVE_THEN "*" (MP_TAC o SPEC `{m j j:real^N,j,e}`) THEN - ASM_REWRITE_TAC[DIM_INSERT; DIM_SING] THEN CONV_TAC NUM_REDUCE_CONV THEN + ASM_REWRITE_TAC[DIM_INSERT; DIM_SING] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[IMP_CONJ; RIGHT_FORALL_IMP_THM] THEN REWRITE_TAC[FORALL_IN_INSERT; NOT_IN_EMPTY] THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN @@ -427,7 +427,7 @@ let ASSOCIATIVE_DIVISION_ALGEBRA = prove ASSUME_TAC THENL [EXPAND_TAC "k" THEN ASM_REWRITE_TAC[] THEN EXPAND_TAC "k" THEN REWRITE_TAC[VECTOR_ADD_LDISTRIB; VECTOR_MUL_ASSOC] THEN - CONV_TAC VECTOR_ARITH; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN SUBGOAL_THEN `(k:real^N) IN C` ASSUME_TAC THENL [ASM_MESON_TAC[]; ALL_TAC] THEN @@ -485,7 +485,7 @@ let ASSOCIATIVE_DIVISION_ALGEBRA = prove REMOVE_THEN "*" (MP_TAC o SPEC `{k:real^N,i,e}`) THEN REWRITE_TAC[DIM_INSERT] THEN ASM_REWRITE_TAC[] THEN ASM_REWRITE_TAC[SPAN_EMPTY; IN_SING; DIM_EMPTY] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[IMP_CONJ; RIGHT_FORALL_IMP_THM] THEN REWRITE_TAC[FORALL_IN_INSERT; NOT_IN_EMPTY] THEN ASM_REWRITE_TAC[]; @@ -496,7 +496,7 @@ let ASSOCIATIVE_DIVISION_ALGEBRA = prove [MAP_EVERY EXPAND_TAC ["C"; "D"] THEN REWRITE_TAC[subspace; IN_ELIM_THM] THEN ASM_REWRITE_TAC[] THEN REWRITE_TAC[VECTOR_ARITH `--x:real^N = y <=> x = --y`] THEN - SIMP_TAC[] THEN CONV_TAC VECTOR_ARITH; + SIMP_TAC[] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; MP_TAC(ASSUME `subspace(D:real^N->bool)`) THEN REWRITE_TAC[subspace] THEN STRIP_TAC] THEN MP_TAC(ISPECL [`C:real^N->bool`; `D:real^N->bool`] @@ -517,13 +517,13 @@ let ASSOCIATIVE_DIVISION_ALGEBRA = prove X_GEN_TAC `x:real^N` THEN REWRITE_TAC[IN_ELIM_THM] THEN EXISTS_TAC `inv(&2) % (x + --(&1) % m i (m x i)):real^N` THEN EXISTS_TAC `inv(&2) % (x + m i (m x i)):real^N` THEN - CONJ_TAC THENL [ALL_TAC; CONV_TAC VECTOR_ARITH] THEN + CONJ_TAC THENL [ALL_TAC; (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH] THEN CONJ_TAC THEN MATCH_MP_TAC SPAN_MUL THEN MATCH_MP_TAC SPAN_SUPERSET THEN MAP_EVERY EXPAND_TAC ["C"; "D"] THEN REWRITE_TAC[IN_ELIM_THM] THEN ASM_REWRITE_TAC[VECTOR_NEG_MINUS1] THEN UNDISCH_THEN `!x y z. (m:real^N->real^N->real^N) (m x y) z = m x (m y z)` (fun th -> REWRITE_TAC[GSYM th]) THEN - ASM_REWRITE_TAC[VECTOR_NEG_MINUS1] THEN CONV_TAC VECTOR_ARITH; + ASM_REWRITE_TAC[VECTOR_NEG_MINUS1] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN ASM_CASES_TAC `dim(D:real^N->bool) = 0` THEN ASM_SIMP_TAC[ADD_CLAUSES; IN_INSERT] THEN DISCH_TAC THEN @@ -542,7 +542,7 @@ let ASSOCIATIVE_DIVISION_ALGEBRA = prove SUBGOAL_THEN `k:real^N = vec 0 \/ x + --(&1) % y:real^N = vec 0` MP_TAC THENL [FIRST_X_ASSUM MATCH_MP_TAC; ALL_TAC] THEN - ASM_REWRITE_TAC[] THEN CONV_TAC VECTOR_ARITH; + ASM_REWRITE_TAC[] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN SUBGOAL_THEN `D = IMAGE ((m:real^N->real^N->real^N) k) C` (fun th -> ASM_SIMP_TAC[th; DIM_INJECTIVE_LINEAR_IMAGE]) THEN @@ -559,7 +559,7 @@ let ASSOCIATIVE_DIVISION_ALGEBRA = prove ASM_SIMP_TAC[VECTOR_NEG_MINUS1] THEN ASSUME_TAC th) THEN SIMP_TAC[] THEN ASM_SIMP_TAC[] THEN REPEAT STRIP_TAC THEN - CONV_TAC VECTOR_ARITH; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN MATCH_MP_TAC(SET_RULE `IMAGE f c SUBSET d /\ IMAGE f d SUBSET c /\ diff --git a/Examples/gcdrecurrence.ml b/Examples/gcdrecurrence.ml index 1ae08965..ad26576d 100644 --- a/Examples/gcdrecurrence.ml +++ b/Examples/gcdrecurrence.ml @@ -115,7 +115,7 @@ let GCD_MERSENNE = prove MATCH_MP_TAC INT_GCD_RECURRENCE THEN MAP_EVERY EXISTS_TAC [`&3`; `-- &2`] THEN REWRITE_TAC[INT_POW_ADD; INT_LE_SUB_LADD] THEN - CONV_TAC INT_REDUCE_CONV THEN REPEAT CONJ_TAC THENL + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN REPEAT CONJ_TAC THENL [REWRITE_TAC[GSYM(INT_REDUCE_CONV `&2 * &2 - &1`)] THEN SPEC_TAC(`&2`,`t:int`) THEN INTEGER_TAC; INT_ARITH_TAC; @@ -146,7 +146,7 @@ let FIB_EQ_0 = prove MATCH_MP_TAC num_INDUCTION THEN REWRITE_TAC[fib; ARITH_RULE `SUC(SUC n) = n + 2`; ADD_EQ_0] THEN SIMP_TAC[ADD1; ADD_EQ_0; ARITH_EQ] THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[fib; ARITH_EQ]);; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[fib; ARITH_EQ]);; let FIB_INCREASES_LE = prove (`!m n. m <= n ==> fib m <= fib n`, @@ -187,7 +187,7 @@ let DIVIDES_FIB = prove [MP_TAC(SPECL [`gcd(m:num,n)`; `m:num`] FIB_INCREASES_LT) THEN ASM_ARITH_TAC; ASM_CASES_TAC `gcd(m,n) = 1` THENL [ASM_REWRITE_TAC[]; ASM_ARITH_TAC] THEN - DISCH_TAC THEN CONV_TAC(LAND_CONV SYM_CONV) THEN + DISCH_TAC THEN (CONV_TAC "(LAND_CONV SYM_CONV)") (LAND_CONV SYM_CONV) THEN REWRITE_TAC[FIB_EQ_1; fib] THEN ASM_ARITH_TAC]);; (* ------------------------------------------------------------------------- *) diff --git a/Examples/inverse_bug_puzzle_miz3.ml b/Examples/inverse_bug_puzzle_miz3.ml index ece5e80e..7c543caa 100644 --- a/Examples/inverse_bug_puzzle_miz3.ml +++ b/Examples/inverse_bug_puzzle_miz3.ml @@ -26,7 +26,7 @@ loadt "miz3/miz3.ml";; new_type_abbrev("triple",`:real^2#real^2#real^2`);; default_prover := ("ya prover", - fun thl -> REWRITE_TAC thl THEN CONV_TAC (HOL_BY thl));; + fun thl -> REWRITE_TAC thl THEN (CONV_TAC "(HOL_BY thl)") (HOL_BY thl));; horizon := 0;; timeout := 500;; @@ -35,7 +35,7 @@ let VEC2_TAC = SIMP_TAC[CART_EQ; LAMBDA_BETA; FORALL_2; SUM_2; DIMINDEX_2; VECTOR_2; vector_add; vec; dot; orthogonal; basis; vector_neg; vector_sub; vector_mul; ARITH] THEN - CONV_TAC REAL_RING;; + (CONV_TAC "REAL_RING") REAL_RING;; let COLLINEAR_3_2Dzero = thm `; !y z:real^2. collinear{vec 0,y,z} <=> @@ -246,7 +246,7 @@ let ORIENTED_AREA_COLLINEAR_CONG = thm `; let A B C A' B' C' be real^2; assume oriented_area (A,B,C) = oriented_area (A',B',C') [H1]; thus collinear {A,B,C} <=> collinear {A',B',C'} - by H1, REWRITE_TAC[COLLINEAR_3_2D; oriented_area] THEN CONV_TAC REAL_RING; + by H1, REWRITE_TAC[COLLINEAR_3_2D; oriented_area] THEN (CONV_TAC "REAL_RING") REAL_RING; `;; let Basic2move_THM = thm `; diff --git a/Examples/inverse_bug_puzzle_tac.ml b/Examples/inverse_bug_puzzle_tac.ml index ce8f15ef..076f4f26 100644 --- a/Examples/inverse_bug_puzzle_tac.ml +++ b/Examples/inverse_bug_puzzle_tac.ml @@ -82,7 +82,7 @@ let VEC2_TAC = SIMP_TAC[CART_EQ; LAMBDA_BETA; FORALL_2; SUM_2; DIMINDEX_2; VECTOR_2; vector_add; vec; dot; orthogonal; basis; vector_neg; vector_sub; vector_mul; ARITH] THEN - CONV_TAC REAL_RING;; + (CONV_TAC "REAL_RING") REAL_RING;; let COLLINEAR_3_2Dzero = prove (`!y z:real^2. collinear{vec 0,y,z} <=> @@ -247,7 +247,7 @@ let ORIENTED_AREA_COLLINEAR_CONG = prove (`! A B C A' B' C. oriented_area (A,B,C) = oriented_area (A',B',C') ==> (collinear {A,B,C} <=> collinear {A',B',C'})`, - REWRITE_TAC[COLLINEAR_3_2D; oriented_area] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[COLLINEAR_3_2D; oriented_area] THEN (CONV_TAC "REAL_RING") REAL_RING);; let Basic2move_THM = prove (`! A B C A'. ~collinear {A,B,C} /\ ~collinear {B,A,A'} ==> diff --git a/Examples/lagrange_lemma.ml b/Examples/lagrange_lemma.ml index 7f2155a3..b39bd3e9 100644 --- a/Examples/lagrange_lemma.ml +++ b/Examples/lagrange_lemma.ml @@ -15,7 +15,7 @@ let LAGRANGE_4 = time prove (((((x1*y2) + (x2*y1)) + (x3*y4)) - (x4*y3)) pow 2) + (((((x1*y3) - (x2*y4)) + (x3*y1)) + (x4*y2)) pow 2) + (((((x1*y4) + (x2*y3)) - (x3*y2)) + (x4*y1)) pow 2)`, - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let LAGRANGE_8 = time prove (`(p1 pow 2 + q1 pow 2 + r1 pow 2 + s1 pow 2 + t1 pow 2 + u1 pow 2 + v1 pow 2 + w1 pow 2) * @@ -28,7 +28,7 @@ let LAGRANGE_8 = time prove (p1 * u2 + q1 * t2 - r1 * w2 + s1 * v2 - t1 * q2 + u1 * p2 - v1 * s2 + w1 * r2) pow 2 + (p1 * v2 + q1 * w2 + r1 * t2 - s1 * u2 - t1 * r2 + u1 * s2 + v1 * p2 - w1 * q2) pow 2 + (p1 * w2 - q1 * v2 + r1 * u2 + s1 * t2 - t1 * s2 - u1 * r2 + v1 * q2 + w1 * p2) pow 2`, - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* Or we can just use REAL_ARITH, which is also reasonably fast. *) diff --git a/Examples/lucas_lehmer.ml b/Examples/lucas_lehmer.ml index 98ef1361..cf04ded7 100644 --- a/Examples/lucas_lehmer.ml +++ b/Examples/lucas_lehmer.ml @@ -55,7 +55,7 @@ let LLSEQ_CLOSEDFORM = prove MATCH_MP_TAC(REAL_ARITH `&0 <= x ==> &1 <= &2 + x`) THEN SIMP_TAC[SQRT_POS_LE; REAL_POS]; MATCH_MP_TAC REAL_POW_LE THEN REWRITE_TAC[REAL_SUB_LE] THEN - MATCH_MP_TAC REAL_LE_LSQRT THEN CONV_TAC REAL_RAT_REDUCE_CONV]; + MATCH_MP_TAC REAL_LE_LSQRT THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]; ALL_TAC] THEN CONJ_TAC THENL [ASM_CASES_TAC `p = 1` THENL [ASM_REWRITE_TAC[MOD_1]; ALL_TAC] THEN @@ -71,8 +71,8 @@ let LLSEQ_CLOSEDFORM = prove `(x + y) pow 2 = x pow 2 + y pow 2 + &2 * x * y`] THEN REWRITE_TAC[REAL_ARITH `(&2 + s) * (&2 - s) = &4 - s pow 2`] THEN REWRITE_TAC[REAL_SQRT_POW_2; REAL_ABS_NUM; GSYM REAL_POW_POW] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN - REWRITE_TAC[REAL_POW_ONE] THEN CONV_TAC REAL_RING]);; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[REAL_POW_ONE] THEN (CONV_TAC "REAL_RING") REAL_RING]);; (* ------------------------------------------------------------------------- *) (* The main Lucas-Lehmer theorem. *) @@ -129,7 +129,7 @@ let LUCAS_LEHMER = prove MAP_EVERY EXISTS_TAC [`2 * a + 3 * b`; `2 * b + a`] THEN REWRITE_TAC[GSYM REAL_OF_NUM_MUL; GSYM REAL_OF_NUM_ADD] THEN MP_TAC(SPEC `&3` SQRT_POW_2) THEN REWRITE_TAC[REAL_POS] THEN - CONV_TAC REAL_RING]; + (CONV_TAC "REAL_RING") REAL_RING]; ALL_TAC] THEN SUBGOAL_THEN `!x y. ((&2 + sqrt(&3)) * x == (&2 + sqrt(&3)) * y) equiv <=> @@ -153,7 +153,7 @@ let LUCAS_LEHMER = prove ASM_SIMP_TAC[INTEGER_CLOSED] THEN FIRST_X_ASSUM(MP_TAC o SYM) THEN MP_TAC(SPEC `&3` SQRT_POW_2) THEN REWRITE_TAC[REAL_POS] THEN - CONV_TAC REAL_RING; + (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN SUBGOAL_THEN `((&2 + sqrt(&3)) pow (2 EXP (p - 1)) == -- &1) equiv` @@ -170,7 +170,7 @@ let LUCAS_LEHMER = prove REWRITE_TAC[GSYM REAL_POW_MUL; GSYM REAL_POW_2; REAL_POW_POW] THEN REWRITE_TAC[REAL_ARITH `(&2 + s) * (&2 - s) = &4 - s pow 2`] THEN REWRITE_TAC[REAL_SQRT_POW_2; REAL_ABS_NUM] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_POW_ONE] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_POW_ONE] THEN REWRITE_TAC[GSYM(CONJUNCT2 EXP)] THEN ASM_SIMP_TAC[ARITH_RULE `2 <= p ==> SUC(p - 2) = p - 1`] THEN SUBGOAL_THEN @@ -198,9 +198,9 @@ let LUCAS_LEHMER = prove EXISTS_TAC `&q * (a pow 2 + &3 * b pow 2) - &2 * a` THEN EXISTS_TAC `&2 * a * b * &q - &2 * b` THEN REPEAT(CONJ_TAC THENL [ASM_MESON_TAC[INTEGER_CLOSED]; ALL_TAC]) THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN MP_TAC(SPEC `&3` SQRT_POW_2) THEN REWRITE_TAC[REAL_POS] THEN - CONV_TAC REAL_RING; + (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN SUBGOAL_THEN `?k. 0 < k /\ k <= 2 EXP p - 1 /\ @@ -294,9 +294,9 @@ let LUCAS_LEHMER_RULE = ==> llseq (2 EXP p - 1) (SUC n) = r`, REWRITE_TAC[llseq] THEN ASM_CASES_TAC `p = 0` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[LT] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[LT] THEN ASM_CASES_TAC `p = 1` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN SIMP_TAC[MOD_1; ARITH_RULE `r < 1 <=> r = 0`] THEN REPEAT STRIP_TAC THEN MATCH_MP_TAC MOD_UNIQ THEN EXISTS_TAC `q + 1` THEN ASM_REWRITE_TAC[EXP_2] THEN @@ -308,7 +308,7 @@ let LUCAS_LEHMER_RULE = ==> x + y - 1 - 2 = u + (v - w + z) + r`) THEN REWRITE_TAC[LE_MULT_LCANCEL; LE_EXP; EXP_EQ_0; ARITH_RULE `1 <= n <=> ~(n = 0)`] THEN - CONV_TAC NUM_REDUCE_CONV THEN ASM_ARITH_TAC) + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_ARITH_TAC) and pconv_tt = GEN_REWRITE_CONV I [TAUT `T /\ T <=> T`] and p_tm = `p:num` and n_tm = `n:num` and m_tm = `m:num` and q_tm = `q:num` and r_tm = `r:num` in diff --git a/Examples/machin.ml b/Examples/machin.ml index f6bb5f08..ab451bfd 100644 --- a/Examples/machin.ml +++ b/Examples/machin.ml @@ -12,7 +12,7 @@ let REAL_LE_1_POW2 = prove let REAL_LT_1_POW2 = prove (`!n. &1 < &2 pow n <=> ~(n = 0)`, GEN_TAC THEN ASM_CASES_TAC `n = 0` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SUBST1_TAC(SYM(REAL_RAT_REDUCE_CONV `&2 pow 0`)) THEN MATCH_MP_TAC REAL_POW_MONO_LT THEN REWRITE_TAC[REAL_OF_NUM_LT] THEN POP_ASSUM MP_TAC THEN ARITH_TAC);; @@ -35,11 +35,11 @@ let REAL_POW2_CLAUSES = prove REAL_OF_NUM_LE; REAL_OF_NUM_LT; ARITH; REAL_ARITH `&1 - x <= &1 <=> &0 <= x`] THEN GEN_TAC THEN ASM_CASES_TAC `n = 0` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `inv(&2 pow 1)` THEN ASM_SIMP_TAC[REAL_LE_INV2; REAL_POW_MONO; REAL_POW_LT; REAL_OF_NUM_LT; ARITH; REAL_OF_NUM_LE; ARITH_RULE `1 <= n <=> ~(n = 0)`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let REAL_POW2_THM = prove (`&0 < &2 pow n /\ @@ -53,7 +53,7 @@ let REAL_POW2_THM = prove SUBGOAL_THEN `!m n. &2 pow m <= &2 pow n <=> m <= n` ASSUME_TAC THENL [REPEAT GEN_TAC THEN EQ_TAC THEN SIMP_TAC[REAL_POW_MONO; REAL_OF_NUM_LE; ARITH] THEN - CONV_TAC CONTRAPOS_CONV THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN SIMP_TAC[REAL_NOT_LE; REAL_NOT_LT; REAL_POW_MONO_LT; REAL_OF_NUM_LT; NOT_LE; ARITH]; ALL_TAC] THEN ASM_REWRITE_TAC[GSYM REAL_NOT_LE] THEN REWRITE_TAC[GSYM NOT_LE] THEN @@ -61,7 +61,7 @@ let REAL_POW2_THM = prove (fun th -> ASM_REWRITE_TAC[th]) THEN REPEAT GEN_TAC THEN EQ_TAC THEN SIMP_TAC[REAL_LE_INV2; REAL_POW2_CLAUSES] THEN - CONV_TAC CONTRAPOS_CONV THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN SIMP_TAC[REAL_NOT_LE; REAL_LT_INV2; REAL_POW2_CLAUSES]);; (* ------------------------------------------------------------------------- *) @@ -191,7 +191,7 @@ let REAL_ATN_POWSER_DIFFS_SUM = prove (\n. --(x pow 2) pow n)` SUBST1_TAC THENL [ABS_TAC THEN - CONV_TAC(LAND_CONV(LAND_CONV(RAND_CONV(TOP_DEPTH_CONV num_CONV)))) THEN + (CONV_TAC "(LAND_CONV(LAND_CONV(RAND_CONV(TOP_DEPTH_CONV num_CONV))))") (LAND_CONV(LAND_CONV(RAND_CONV(TOP_DEPTH_CONV num_CONV)))) THEN REWRITE_TAC[sum; diffs; ADD_CLAUSES; EVEN_MULT; ARITH_EVEN; EVEN] THEN REWRITE_TAC[REAL_ADD_LID; REAL_ADD_RID; REAL_MUL_LZERO; REAL_MUL_RZERO] THEN @@ -305,7 +305,7 @@ let REAL_ATN_POWSER = prove MP_TAC THENL [MATCH_MP_TAC(REAL_ARITH `(a = &0) /\ (b = &0) ==> (a - b = &0)`) THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_UNIQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_UNIQ THEN MP_TAC(SPEC `&0` GP) THEN REWRITE_TAC[REAL_ABS_NUM; REAL_OF_NUM_LT; ARITH] THEN DISCH_THEN(MP_TAC o SPEC `&0` o MATCH_MP SER_CMUL) THEN @@ -313,7 +313,7 @@ let REAL_ATN_POWSER = prove MATCH_MP_TAC(TAUT `(a = b) ==> a ==> b`) THEN AP_THM_TAC THEN AP_TERM_TAC THEN ABS_TAC THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[REAL_MUL_LZERO] THEN - CONV_TAC SYM_CONV THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[REAL_ENTIRE; REAL_POW_EQ_0] THEN ASM_MESON_TAC[EVEN]; GEN_REWRITE_TAC (LAND_CONV o RAND_CONV) [GSYM TAN_0] THEN MATCH_MP_TAC TAN_ATN THEN @@ -329,7 +329,7 @@ let REAL_ATN_POWSER = prove `~(x = &0) ==> &0 < x \/ x < &0`)) THENL [DISCH_THEN(MP_TAC o SPECL [`&0`; `x:real`]); - CONV_TAC(RAND_CONV SYM_CONV) THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN DISCH_THEN(MP_TAC o SPECL [`x:real`; `&0`])] THEN (REWRITE_TAC[] THEN DISCH_THEN MATCH_MP_TAC THEN ASM_REWRITE_TAC[] THEN @@ -381,10 +381,10 @@ let MCLAURIN_ATN_SIMPLE = prove GEN_REWRITE_TAC RAND_CONV [GSYM REAL_INV_INV] THEN MATCH_MP_TAC REAL_LE_INV2 THEN ONCE_REWRITE_TAC[REAL_ARITH `a <= &1 - b <=> b <= &1 - a`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `inv(&2 pow k)` THEN ASM_REWRITE_TAC[] THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN - MATCH_MP_TAC REAL_LE_INV2 THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_LE_INV2 THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN GEN_REWRITE_TAC LAND_CONV [GSYM REAL_POW_1] THEN ASM_SIMP_TAC[REAL_POW_MONO; REAL_OF_NUM_LE; ARITH; ARITH_RULE `~(k = 0) ==> 1 <= k`]] THEN @@ -402,7 +402,7 @@ let MCLAURIN_ATN_SIMPLE = prove MATCH_MP_TAC REAL_LE_RMUL THEN SIMP_TAC[REAL_POW_LE; REAL_ABS_POS] THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_INV_1] THEN - MATCH_MP_TAC REAL_LE_INV2 THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_LE_INV2 THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_OF_NUM_LE; ARITH_RULE `1 <= n <=> ~(n = 0)`] THEN ASM_MESON_TAC[EVEN]; ALL_TAC] THEN MATCH_MP_TAC REAL_LE_TRANS THEN @@ -433,22 +433,22 @@ let MCLAURIN_ATN_APPROX = prove ASM_REWRITE_TAC[] THEN MATCH_MP_TAC(REAL_ARITH `abs(y) + d <= e ==> abs(x - y) <= d ==> abs(x) <= e`) THEN - CONV_TAC(ONCE_DEPTH_CONV REAL_SUM_CONV) THEN - REWRITE_TAC[real_pow; REAL_POW_1] THEN CONV_TAC NUM_REDUCE_CONV THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "(ONCE_DEPTH_CONV REAL_SUM_CONV)") (ONCE_DEPTH_CONV REAL_SUM_CONV) THEN + REWRITE_TAC[real_pow; REAL_POW_1] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_div; REAL_MUL_LID; REAL_INV_1; REAL_ADD_LID] THEN SUBGOAL_THEN `abs(x) <= inv(&2)` ASSUME_TAC THENL [MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `inv(&2 pow k)` THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC REAL_LE_INV2 THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN GEN_REWRITE_TAC LAND_CONV [GSYM REAL_POW_1] THEN ASM_SIMP_TAC[REAL_POW_MONO; REAL_OF_NUM_LE; ARITH; ARITH_RULE `~(k = 0) ==> 1 <= k`]; ALL_TAC] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `inv(&2) + &2 * inv(&2) pow 2` THEN - CONV_TAC(RAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[REAL_POW_1] THEN + (CONV_TAC "(RAND_CONV REAL_RAT_REDUCE_CONV)") (RAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[REAL_POW_1] THEN MATCH_MP_TAC REAL_LE_ADD2 THEN ASM_REWRITE_TAC[] THEN ASM_SIMP_TAC[REAL_LE_LMUL_EQ; REAL_OF_NUM_LT; ARITH; REAL_POW_LE2; REAL_OF_NUM_LE; REAL_ABS_POS]; @@ -531,7 +531,7 @@ let ATN_ADD = prove REPEAT STRIP_TAC THEN SUBGOAL_THEN `tan(atn(x) + atn(y)) = (x + y) / (&1 - x * y)` MP_TAC THENL [ASM_SIMP_TAC[ATN_TAN; TAN_ADD; COS_ATN_NZ; TAN_ADD_ATN_SIDECOND]; - DISCH_THEN(SUBST1_TAC o SYM) THEN CONV_TAC SYM_CONV THEN + DISCH_THEN(SUBST1_TAC o SYM) THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ASM_SIMP_TAC[TAN_ATN; REAL_ARITH `abs(x) < e ==> --e < x /\ x < e`]]);; let ATN_ADD_SMALL_LEMMA_POS = prove @@ -539,7 +539,7 @@ let ATN_ADD_SMALL_LEMMA_POS = prove ==> atn(x) + atn(y) < pi / &2`, REPEAT STRIP_TAC THEN REWRITE_TAC[GSYM REAL_LT_SUB_LADD] THEN SUBGOAL_THEN `pi / &2 - atn y = atn(tan(pi / &2 - atn y))` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC TAN_ATN THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC TAN_ATN THEN MATCH_MP_TAC(REAL_ARITH `&0 < x /\ x < a ==> --a < a - x /\ a - x < a`) THEN REWRITE_TAC[ATN_BOUNDS] THEN @@ -745,9 +745,9 @@ let pi_approx_rule,PI_APPROX_RULE = REWRITE_TAC[GSYM REAL_ABS_MUL] THEN REWRITE_TAC[REAL_ABS_INV; REAL_ABS_POW; REAL_ABS_NUM] THEN REWRITE_TAC[GSYM REAL_INV_MUL; GSYM REAL_POW_ADD] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_SUB_LDISTRIB; REAL_ADD_LDISTRIB; REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN GEN_REWRITE_TAC (LAND_CONV o RAND_CONV o LAND_CONV) [REAL_MUL_SYM] THEN REWRITE_TAC[GSYM real_div; MACHINLIKE_1] THEN @@ -757,7 +757,7 @@ let pi_approx_rule,PI_APPROX_RULE = GEN_REWRITE_TAC (LAND_CONV o ONCE_DEPTH_CONV) [ADD_SYM] THEN REWRITE_TAC[REAL_POW_ADD; REAL_INV_MUL; REAL_MUL_ASSOC] THEN SIMP_TAC[GSYM REAL_ADD_RDISTRIB; REAL_LE_RMUL_EQ; REAL_POW2_CLAUSES] THEN - CONV_TAC REAL_RAT_REDUCE_CONV) in + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV) in let pi_approx_rule p = let q1 = p + 5 and q2 = p + 6 in @@ -801,7 +801,7 @@ let pi_approx_binary_rule,PI_APPROX_BINARY_RULE = LE_REFL; ARITH_RULE `~(SUC p <= p)`; ARITH_RULE `SUC p - p = 1`; SUB_REFL] THEN UNDISCH_TAC `abs (&2 pow p * r - a) <= inv (&2)` THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV) + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV) and num_2 = Int 2 in let pi_approx_binary_rule p = let ppow = power_num num_2 (Int p) in diff --git a/Examples/mangoldt.ml b/Examples/mangoldt.ml index 90c42a34..e949c40a 100644 --- a/Examples/mangoldt.ml +++ b/Examples/mangoldt.ml @@ -44,8 +44,8 @@ let LOG_2_BOUNDS = prove MP_TAC(SPEC `inv(&2)` REAL_EXP_BOUND_LEMMA); GEN_REWRITE_TAC RAND_CONV [GSYM LOG_EXP] THEN MP_TAC(SPEC `&1` REAL_EXP_LE_X)] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC EQ_IMP THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC LOG_MONO_LE THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC EQ_IMP THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC LOG_MONO_LE THEN REWRITE_TAC[REAL_EXP_POS_LT; REAL_OF_NUM_LT; ARITH]);; let LOG_LE_REFL = prove @@ -78,7 +78,7 @@ let LOG_FACT_BOUNDS = prove [REAL_ARITH_TAC; ALL_TAC] THEN ASM_CASES_TAC `x = Cx(&0)` THEN ASM_REWRITE_TAC[RE_CX] THENL [REAL_ARITH_TAC; - UNDISCH_TAC `~(x = Cx(&0))` THEN CONV_TAC COMPLEX_FIELD]; + UNDISCH_TAC `~(x = Cx(&0))` THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]; FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM LT_NZ]) THEN REWRITE_TAC[GSYM REAL_OF_NUM_LT] THEN ASM_REAL_ARITH_TAC]; @@ -92,20 +92,20 @@ let LOG_FACT_BOUNDS = prove FIRST_ASSUM(DISJ_CASES_TAC o MATCH_MP (ARITH_RULE `~(n = 0) ==> n = 1 \/ 2 <= n`)) THENL - [ASM_REWRITE_TAC[] THEN CONV_TAC(ONCE_DEPTH_CONV NUMSEG_CONV) THEN + [ASM_REWRITE_TAC[] THEN (CONV_TAC "(ONCE_DEPTH_CONV NUMSEG_CONV)") (ONCE_DEPTH_CONV NUMSEG_CONV) THEN REWRITE_TAC[LOG_1; SUM_CLAUSES] THEN REAL_ARITH_TAC; ALL_TAC] THEN MP_TAC(ISPECL[`\z. clog(z)`; `\z. z * clog z - z`; `2`; `n:num`] SUM_INTEGRAL_LBOUND_INCREASING) THEN REWRITE_TAC[] THEN ANTS_TAC THENL [CONJ_TAC THENL [POP_ASSUM MP_TAC THEN ARITH_TAC; ALL_TAC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL [REWRITE_TAC[IN_SEGMENT_CX_GEN] THEN REPEAT STRIP_TAC THENL [COMPLEX_DIFF_TAC THEN CONJ_TAC THEN UNDISCH_TAC `&1 <= Re x` THENL [REAL_ARITH_TAC; ALL_TAC] THEN ASM_CASES_TAC `x = Cx(&0)` THEN ASM_REWRITE_TAC[RE_CX] THENL [REAL_ARITH_TAC; - UNDISCH_TAC `~(x = Cx(&0))` THEN CONV_TAC COMPLEX_FIELD]; + UNDISCH_TAC `~(x = Cx(&0))` THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]; FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM REAL_OF_NUM_LE]) THEN ASM_REAL_ARITH_TAC]; MAP_EVERY X_GEN_TAC [`a:real`; `b:real`] THEN STRIP_TAC THEN @@ -113,13 +113,13 @@ let LOG_FACT_BOUNDS = prove [ASM_REAL_ARITH_TAC; ALL_TAC] THEN ASM_SIMP_TAC[GSYM CX_LOG; RE_CX; LOG_MONO_LE_IMP]]; ALL_TAC]] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(REAL_ARITH `y <= x /\ a <= b ==> x <= a ==> y <= b`) THEN ASM_SIMP_TAC[GSYM CX_LOG; SUM_EQ_NUMSEG; REAL_OF_NUM_LT; LE_1; CLOG_1; ARITH_RULE `2 <= n ==> 0 < n`; RE_CX; REAL_ARITH `&0 < &n + &1`; REAL_EQ_IMP_LE] THEN REWRITE_TAC[GSYM CX_MUL; GSYM CX_SUB; GSYM CX_ADD; RE_CX] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_SUB_RNEG] THENL + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_SUB_RNEG] THENL [REWRITE_TAC[REAL_ARITH `(n + &1) * l' - (n + &1) + &1 <= (n * l - n + &1) + k * l <=> (n + &1) * l' <= (n + k) * l + &1`] THEN @@ -143,7 +143,7 @@ let LOG_FACT_BOUNDS = prove REWRITE_TAC[REAL_OF_NUM_LE; REAL_OF_NUM_LT] THEN ASM_ARITH_TAC; ALL_TAC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_LID] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_LID] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `log(&2)` THEN REWRITE_TAC[LOG_2_BOUNDS] THEN MATCH_MP_TAC LOG_MONO_LE_IMP THEN REWRITE_TAC[REAL_OF_NUM_LE; REAL_OF_NUM_LE] THEN ASM_ARITH_TAC; @@ -203,7 +203,7 @@ let LOG_MANGOLDT_SUM = prove MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `sum ({d | d divides a} UNION {d | d divides b}) (\d. mangoldt d)` THEN - CONJ_TAC THEN CONV_TAC SYM_CONV THENL + CONJ_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THENL [MATCH_MP_TAC SUM_UNION_NONZERO THEN REWRITE_TAC[IN_INTER] THEN ASM_SIMP_TAC[FINITE_DIVISORS; ARITH_RULE `1 < n ==> ~(n = 0)`] THEN REWRITE_TAC[IN_ELIM_THM] THEN ASM_MESON_TAC[coprime; MANGOLDT_1]; @@ -235,7 +235,7 @@ let MANGOLDT = prove (\d. mangoldt d * (if d divides m then &1 else &0)))` THEN CONJ_TAC THENL [MATCH_MP_TAC SUM_EQ_NUMSEG THEN X_GEN_TAC `m:num` THEN - STRIP_TAC THEN REWRITE_TAC[] THEN CONV_TAC SYM_CONV THEN + STRIP_TAC THEN REWRITE_TAC[] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_EQ_SUPERSET THEN ASM_SIMP_TAC[LE_1; FINITE_DIVISORS; IN_ELIM_THM; REAL_MUL_RZERO; REAL_MUL_RID; SUBSET; IN_NUMSEG] THEN @@ -256,7 +256,7 @@ let PSI_BOUND_INDUCT = prove REPEAT STRIP_TAC THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `sum (n+1..2 * n) (\d. mangoldt d)` THEN CONJ_TAC THENL [MATCH_MP_TAC REAL_EQ_IMP_LE THEN REWRITE_TAC[REAL_EQ_SUB_RADD] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_UNION_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_UNION_EQ THEN ONCE_REWRITE_TAC[UNION_COMM] THEN REWRITE_TAC[FINITE_NUMSEG] THEN ASM_SIMP_TAC[NUMSEG_COMBINE_R; ARITH_RULE `~(n = 0) ==> 1 <= n + 1 /\ n <= 2 * n`] THEN @@ -381,7 +381,7 @@ let MERTENS_LEMMA = prove [MATCH_MP_TAC(REAL_ARITH `&1 <= x ==> abs(x - &1) <= x`) THEN REWRITE_TAC[REAL_OF_NUM_LE] THEN ASM_ARITH_TAC; ALL_TAC] THEN - REWRITE_TAC[GSYM SUM_SUB_NUMSEG] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[GSYM SUM_SUB_NUMSEG] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ONCE_REWRITE_TAC[REAL_ARITH `n * i / x:real = i * n / x`] THEN REWRITE_TAC[GSYM REAL_SUB_LDISTRIB] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `sum(1..n) (\i. mangoldt i)` THEN CONJ_TAC THENL @@ -400,7 +400,7 @@ let MERTENS_LEMMA = prove ALL_TAC] THEN MATCH_MP_TAC(REAL_ARITH `x <= (k - &2) * n /\ l <= n ==> x <= k * n - &2 * l`) THEN - ASM_SIMP_TAC[LOG_LE_REFL] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_SIMP_TAC[LOG_LE_REFL] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[PSI_BOUND]);; let MERTENS_MANGOLDT_VERSUS_LOG = prove @@ -462,7 +462,7 @@ let MERTENS_MANGOLDT_VERSUS_LOG = prove REWRITE_TAC[real_div; REAL_ENTIRE] THEN DISJ1_TAC THEN REWRITE_TAC[mangoldt] THEN ASM_MESON_TAC[GE]; ALL_TAC] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_UNION_EQ THEN CONJ_TAC THENL + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_UNION_EQ THEN CONJ_TAC THENL [MATCH_MP_TAC FINITE_SUBSET THEN EXISTS_TAC `0..n` THEN REWRITE_TAC[SUBSET; IN_ELIM_THM; FINITE_NUMSEG; IN_NUMSEG; LE_0] THEN MESON_TAC[]; @@ -535,7 +535,7 @@ let MERTENS_MANGOLDT_VERSUS_LOG = prove ALL_TAC] THEN MATCH_MP_TAC REAL_EQ_IMP_LE THEN FIRST_ASSUM(MP_TAC o MATCH_MP PRIME_GE_2) THEN - REWRITE_TAC[GSYM REAL_OF_NUM_LE] THEN CONV_TAC REAL_FIELD; + REWRITE_TAC[GSYM REAL_OF_NUM_LE] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `sum (2..n) (\p. log(&p) / (&p * (&p - &1)))` THEN @@ -559,7 +559,7 @@ let MERTENS_MANGOLDT_VERSUS_LOG = prove ASM_CASES_TAC `n < 2` THENL [RULE_ASSUM_TAC(REWRITE_RULE[GSYM NUMSEG_EMPTY]); RULE_ASSUM_TAC(REWRITE_RULE[NOT_LT])] THEN - ASM_SIMP_TAC[SUM_CLAUSES] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_SIMP_TAC[SUM_CLAUSES] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[SUM_CLAUSES_LEFT; ARITH] THEN MATCH_MP_TAC(REAL_ARITH `x <= &1 /\ y <= e - &1 ==> x + y <= e`) THEN @@ -567,12 +567,12 @@ let MERTENS_MANGOLDT_VERSUS_LOG = prove ASM_CASES_TAC `n < 3` THENL [RULE_ASSUM_TAC(REWRITE_RULE[GSYM NUMSEG_EMPTY]); RULE_ASSUM_TAC(REWRITE_RULE[NOT_LT])] THEN - ASM_SIMP_TAC[SUM_CLAUSES] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_SIMP_TAC[SUM_CLAUSES] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MP_TAC(ISPECL [`\z. clog(z) / (z - Cx(&1)) pow 2`; `\z. clog(z - Cx(&1)) - clog(z) - clog(z) / (z - Cx(&1))`; `3`; `n:num`] SUM_INTEGRAL_UBOUND_DECREASING) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN ANTS_TAC THENL + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ANTS_TAC THENL [CONJ_TAC THENL [REWRITE_TAC[IN_SEGMENT_CX_GEN] THEN X_GEN_TAC `z:complex` THEN STRIP_TAC THENL @@ -580,7 +580,7 @@ let MERTENS_MANGOLDT_VERSUS_LOG = prove ASM_SIMP_TAC[RE_SUB; RE_CX; REAL_SUB_LT] THEN ASM_SIMP_TAC[REAL_ARITH `&2 <= x ==> &1 < x /\ &0 < x`] THEN SUBGOAL_THEN `~(z = Cx(&0)) /\ ~(z = Cx(&1))` MP_TAC THENL - [ALL_TAC; CONV_TAC COMPLEX_FIELD] THEN + [ALL_TAC; (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD] THEN REPEAT STRIP_TAC THEN UNDISCH_TAC `&2 <= Re z` THEN ASM_REWRITE_TAC[RE_CX] THEN REAL_ARITH_TAC; RULE_ASSUM_TAC(REWRITE_RULE[GSYM REAL_OF_NUM_LE]) THEN @@ -598,9 +598,9 @@ let MERTENS_MANGOLDT_VERSUS_LOG = prove STRIP_TAC THENL [ALL_TAC; ASM_REAL_ARITH_TAC] THEN COMPLEX_DIFF_TAC THEN REWRITE_TAC[GSYM CONJ_ASSOC] THEN CONJ_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN SUBGOAL_THEN `~(z = Cx(&0)) /\ ~(z = Cx(&1))` MP_TAC THENL - [ALL_TAC; CONV_TAC COMPLEX_FIELD] THEN + [ALL_TAC; (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD] THEN CONJ_TAC THEN DISCH_THEN SUBST_ALL_TAC THEN REPEAT(POP_ASSUM MP_TAC) THEN REWRITE_TAC[RE_CX; IM_CX] THEN REAL_ARITH_TAC; @@ -637,13 +637,13 @@ let MERTENS_MANGOLDT_VERSUS_LOG = prove REWRITE_TAC[LOG_2_BOUNDS] THEN MATCH_MP_TAC LOG_MONO_LE_IMP THEN ASM_REAL_ARITH_TAC; ALL_TAC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(REAL_ARITH `x = y /\ a <= b ==> x <= a ==> y <= b`) THEN CONJ_TAC THENL [MATCH_MP_TAC SUM_EQ_NUMSEG; ALL_TAC] THEN ASM_SIMP_TAC[GSYM CX_SUB; GSYM CX_LOG; GSYM CX_DIV; REAL_SUB_LT; ARITH; RE_CX; REAL_OF_NUM_LT; ARITH_RULE `3 <= n ==> 0 < n /\ 1 < n`; GSYM CX_POW] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LOG_1; REAL_ARITH `a - (&0 - x - x / &1) = a + &2 * x`] THEN MATCH_MP_TAC(REAL_ARITH `a <= e - &2 /\ x <= &1 ==> a + &2 * x <= e`) THEN @@ -662,7 +662,7 @@ let MERTENS = prove FIRST_ASSUM(MP_TAC o MATCH_MP MERTENS_LEMMA) THEN MATCH_MP_TAC(REAL_ARITH `abs(s1 - s2) <= k - e ==> abs(s1 - l) <= e ==> abs(s2 - l) <= k`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SUBGOAL_THEN `{p | prime p /\ p <= n} = {p | prime p /\ p IN 1..n}` SUBST1_TAC THENL [REWRITE_TAC[EXTENSION; IN_ELIM_THM; IN_NUMSEG] THEN diff --git a/Examples/misiurewicz.ml b/Examples/misiurewicz.ml index 84b88859..79fe7303 100644 --- a/Examples/misiurewicz.ml +++ b/Examples/misiurewicz.ml @@ -90,7 +90,7 @@ let LEMMA_2a = prove ASM_REWRITE_TAC[COS_ABS] THEN ANTS_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] REAL_LE_TRANS) THEN - REWRITE_TAC[COS_PI3] THEN CONV_TAC REAL_RAT_REDUCE_CONV] THEN + REWRITE_TAC[COS_PI3] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN ABBREV_TAC `x = Re z - log(&2)` THEN FIRST_ASSUM(SUBST1_TAC o MATCH_MP (REAL_ARITH `z - l:real = x ==> z = x + l`)) THEN @@ -119,7 +119,7 @@ let LEMMA_2b = prove SIMP_TAC[real_abs; SIN_POS_PI_LE; REAL_ARITH `&0 <= x /\ x <= pi / &3 ==> x <= pi`] THEN REPEAT STRIP_TAC THEN MP_TAC(SPECL [`0`; `Cx x`] TAYLOR_CSIN) THEN - REWRITE_TAC[VSUM_SING_NUMSEG] THEN CONV_TAC NUM_REDUCE_CONV THEN + REWRITE_TAC[VSUM_SING_NUMSEG] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[IM_CX; REAL_ABS_NUM; REAL_EXP_0; GSYM CX_SIN] THEN REWRITE_TAC[complex_pow; COMPLEX_POW_1] THEN REWRITE_TAC[GSYM CX_DIV; GSYM CX_POW; GSYM CX_MUL; GSYM CX_SUB; @@ -133,7 +133,7 @@ let LEMMA_2b = prove ASM_SIMP_TAC[REAL_POW_LE2; REAL_ARITH `(pi / &3) pow 2 <= a <=> pi pow 2 <= &9 * a`] THEN TRANS_TAC REAL_LE_TRANS `(&16 / &5) pow 2` THEN - CONJ_TAC THENL [ALL_TAC; CONV_TAC REAL_RAT_REDUCE_CONV] THEN + CONJ_TAC THENL [ALL_TAC; (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN MATCH_MP_TAC REAL_POW_LE2 THEN MP_TAC PI_APPROX_32 THEN REAL_ARITH_TAC; ALL_TAC] THEN SUBGOAL_THEN `!n. &0 < abs(Im(ITER n cexp z))` ASSUME_TAC THENL @@ -144,7 +144,7 @@ let LEMMA_2b = prove SIMP_TAC[ADD1; real_ge; REAL_NOT_LE; REAL_ABS_NUM] THEN DISCH_TAC THEN REPEAT(MATCH_MP_TAC REAL_LT_MUL THEN CONJ_TAC) THEN ASM_REWRITE_TAC[GSYM REAL_ABS_NZ; REAL_EXP_POS_LT] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN SUBGOAL_THEN `?N. !n. N <= n @@ -177,7 +177,7 @@ let LEMMA_2b = prove UNDISCH_TAC `!n. abs(Im(ITER n cexp z)) <= pi / &3` THEN MP_TAC(SPECL [`&2`; `pi / &3 / abs(Im (ITER N cexp z))`] REAL_ARCH_POW) THEN - ASM_SIMP_TAC[REAL_LT_LDIV_EQ] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_SIMP_TAC[REAL_LT_LDIV_EQ] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_TAC `d:num`) THEN DISCH_THEN(MP_TAC o SPEC `N + d:num`) THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REAL_ARITH @@ -543,7 +543,7 @@ let LEMMA_5 = prove REWRITE_TAC[REAL_EXP_MONO_LE] THEN ASM_REAL_ARITH_TAC]; MATCH_MP_TAC REAL_LE_LMUL THEN REWRITE_TAC[REAL_EXP_POS_LE] THEN SUBST1_TAC(SYM SQRT_1) THEN MATCH_MP_TAC SQRT_MONO_LE THEN - CONV_TAC REAL_RAT_REDUCE_CONV]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]; ALL_TAC] THEN SUBGOAL_THEN `!n. IMAGE (ITER n cexp) v INTER frontier {z | abs (Im z) <= &2 * pi} = {}` @@ -1161,7 +1161,7 @@ let THEOREM = prove REWRITE_TAC[REAL_EXP_MONO_LE] THEN ASM_REAL_ARITH_TAC]; MATCH_MP_TAC REAL_LE_LMUL THEN REWRITE_TAC[REAL_EXP_POS_LE] THEN SUBST1_TAC(SYM SQRT_1) THEN MATCH_MP_TAC SQRT_MONO_LE THEN - CONV_TAC REAL_RAT_REDUCE_CONV]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]; ALL_TAC] THEN SUBGOAL_THEN `INFINITE {n | ~(IMAGE (ITER n cexp) v SUBSET {z | abs(Im z) <= &2 * pi}) /\ diff --git a/Examples/multiwf.ml b/Examples/multiwf.ml index d9e6d169..9173af0b 100644 --- a/Examples/multiwf.ml +++ b/Examples/multiwf.ml @@ -51,7 +51,7 @@ let mdiff = new_definition let MEXTENSION = prove (`(M = N) = !a. multiplicity M a = multiplicity N a`, - REWRITE_TAC[GSYM FUN_EQ_THM] THEN CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN + REWRITE_TAC[GSYM FUN_EQ_THM] THEN (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN MESON_TAC[multiset_tybij]);; (* ------------------------------------------------------------------------- *) @@ -78,7 +78,7 @@ let MUNION = prove (`multiplicity (M munion N) a = multiplicity M a + multiplicity N a`, REWRITE_TAC[munion] THEN MATCH_MP_TAC MULTIPLICITY_MULTISET THEN REWRITE_TAC[UNION_NONZERO; FINITE_UNION] THEN SIMP_TAC[multiset_tybij] THEN - CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN REWRITE_TAC[multiset_tybij]);; + (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN REWRITE_TAC[multiset_tybij]);; let MDIFF = prove (`multiplicity (M mdiff N) (a:A) = multiplicity M a - multiplicity N a`, @@ -86,7 +86,7 @@ let MDIFF = prove REWRITE_TAC[] THEN MATCH_MP_TAC FINITE_SUBSET THEN EXISTS_TAC `{a:A | ~(multiplicity M a = 0)}` THEN SIMP_TAC[SUBSET; IN_ELIM_THM; multiset_tybij] THEN - CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN REWRITE_TAC[multiset_tybij] THEN + (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN REWRITE_TAC[multiset_tybij] THEN ARITH_TAC);; (* ------------------------------------------------------------------------- *) @@ -186,7 +186,7 @@ let MULTISET_INDUCT = prove GEN_TAC THEN DISCH_THEN MATCH_MP_TAC THEN EXISTS_TAC `{a:A | ~(multiplicity M a = 0)}` THEN REWRITE_TAC[SUBSET_REFL; multiset_tybij] THEN - CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN REWRITE_TAC[multiset_tybij]);; + (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN REWRITE_TAC[multiset_tybij]);; (* ========================================================================= *) (* Part 2: Transcription of Tobias's paper. *) diff --git a/Examples/pell.ml b/Examples/pell.ml index c34de65a..49e47300 100644 --- a/Examples/pell.ml +++ b/Examples/pell.ml @@ -96,7 +96,7 @@ let SQRT_LINEAR_EQ = prove DISCH_THEN SUBST_ALL_TAC THEN UNDISCH_TAC `(&u - &x) pow 2 = &0 pow 2` THEN UNDISCH_TAC `(&y - &v) pow 2 = &0 pow 2` THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_POW_EQ_0; ARITH_EQ; REAL_SUB_0] THEN SIMP_TAC[REAL_OF_NUM_EQ]]);; @@ -504,7 +504,7 @@ let SOLUTIONS_INDUCTION = prove [MATCH_MP_TAC REAL_LTE_ADD THEN CONJ_TAC THENL [REWRITE_TAC[REAL_OF_NUM_LT; LT_NZ] THEN DISCH_THEN SUBST_ALL_TAC THEN UNDISCH_TAC `0 EXP 2 = (a EXP 2 - 1) * v EXP 2 + 1` THEN - DISCH_THEN(MP_TAC o SYM) THEN CONV_TAC NUM_REDUCE_CONV THEN + DISCH_THEN(MP_TAC o SYM) THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[ADD_EQ_0; ARITH_EQ]; ALL_TAC] THEN MATCH_MP_TAC REAL_LE_MUL THEN REWRITE_TAC[REAL_POS] THEN ASM_SIMP_TAC[REAL_OF_NUM_LE; SQRT_POS_LE; REAL_POW_LE_1; @@ -819,7 +819,7 @@ let BINOMIAL_TRIVIALITY = prove &(((n + 1) * (n + 2)) DIV 2) * &x pow n * &y pow 2 * &d + &p * &y pow 3 + &q * &y pow 3 * sqrt(&d)`, GEN_TAC THEN GEN_TAC THEN GEN_TAC THEN INDUCT_TAC THENL - [REPEAT(EXISTS_TAC `0`) THEN CONV_TAC NUM_REDUCE_CONV THEN + [REPEAT(EXISTS_TAC `0`) THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[REAL_POW_1; real_pow; REAL_MUL_LZERO; REAL_ADD_RID] THEN REWRITE_TAC[REAL_MUL_LID] THEN REWRITE_TAC[REAL_POW_2] THEN REWRITE_TAC[REAL_ARITH @@ -839,7 +839,7 @@ let BINOMIAL_TRIVIALITY = prove REWRITE_TAC[GSYM(CONJUNCT2 real_pow)] THEN REWRITE_TAC[ARITH_RULE `SUC(n + m) = n + SUC m`] THEN REWRITE_TAC[ARITH_RULE `SUC n + m = n + SUC m`] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `&n * x + x = (&n + &1) * x`] THEN REWRITE_TAC[REAL_OF_NUM_ADD; ARITH_RULE `(n + 2) + 1 = n + 3`] THEN REWRITE_TAC[GSYM REAL_ADD_ASSOC; GSYM REAL_MUL_ASSOC; REAL_EQ_LADD] THEN @@ -853,7 +853,7 @@ let BINOMIAL_TRIVIALITY = prove &(((n + 2) * (n + 3)) DIV 2)` SUBST1_TAC THENL [REWRITE_TAC[REAL_OF_NUM_ADD; REAL_OF_NUM_EQ] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC DIV_UNIQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC DIV_UNIQ THEN EXISTS_TAC `0` THEN REWRITE_TAC[ARITH; ADD_CLAUSES] THEN REWRITE_TAC[ARITH_RULE `(n + 2) * (n + 3) = n * n + 5 * n + 6`] THEN REWRITE_TAC[ARITH_RULE @@ -861,7 +861,7 @@ let BINOMIAL_TRIVIALITY = prove REWRITE_TAC[ARITH_RULE `n * n + 3 * n + 2 = (n + 1) * (n + 2)`] THEN SUBGOAL_THEN `EVEN((n + 1) * (n + 2))` MP_TAC THENL [REWRITE_TAC[EVEN_MULT; EVEN_ADD; ARITH_EVEN] THEN - CONV_TAC(EQT_INTRO o TAUT); ALL_TAC] THEN + (CONV_TAC "(EQT_INTRO o TAUT)") (EQT_INTRO o TAUT); ALL_TAC] THEN SIMP_TAC[EVEN_EXISTS; LEFT_IMP_EXISTS_THM] THEN SIMP_TAC[DIV_MULT; ARITH_EQ]; ALL_TAC] THEN REWRITE_TAC[REAL_EQ_LADD] THEN REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN @@ -1314,7 +1314,7 @@ let XY_GCD_LEMMA = prove MATCH_MP_TAC EQ_IMP THEN BINOP_TAC THENL [EXPAND_TAC "n" THEN ASM_SIMP_TAC[ADDITION_FORMULA_POS] THEN GEN_REWRITE_TAC LAND_CONV [GCD_SYM] THEN MATCH_MP_TAC GCD_EQ THEN - X_GEN_TAC `d:num` THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC(TAUT + X_GEN_TAC `d:num` THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC(TAUT `(a ==> (b <=> c)) ==> (a /\ b <=> a /\ c)`) THEN DISCH_TAC THEN MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `d divides (X a (q * m) * Y a r)` THEN CONJ_TAC THENL @@ -2145,7 +2145,7 @@ let XY_EXP = prove REWRITE_TAC[IMP_IMP] THEN DISCH_THEN(MP_TAC o MATCH_MP (REAL_ARITH `abs(x - a) < e1 /\ abs(x - b) < e2 ==> abs(a - b) < e1 + e2`)) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(MP_TAC o MATCH_MP (REAL_ARITH `abs(a - b) < &1 ==> a + &1 <= b \/ (a = b) \/ b + &1 <= a ==> (a = b)`)) THEN @@ -2246,14 +2246,14 @@ let DIOPH_Y = prove [ASM_CASES_TAC `y = 0` THENL [ASM_REWRITE_TAC[Y_0_TRIV; ARITH_EQ] THEN ARITH_TAC; ALL_TAC] THEN ASM_CASES_TAC `k = 0` THEN ASM_REWRITE_TAC[Y_CLAUSES; ARITH_EQ] THEN - ASM_REWRITE_TAC[ARITH_EQ] THEN CONV_TAC NUM_REDUCE_CONV THEN + ASM_REWRITE_TAC[ARITH_EQ] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[MULT_CLAUSES; ADD_CLAUSES] THEN REWRITE_TAC[EXP_2; MULT_EQ_1] THEN REWRITE_TAC[Y_0] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN REWRITE_TAC[EQ_SYM_EQ]; ALL_TAC] THEN ASM_REWRITE_TAC[ARITH_EQ] THEN ASM_CASES_TAC `k = 0` THEN ASM_REWRITE_TAC[Y_CLAUSES] THENL - [REWRITE_TAC[EQ_SYM_EQ] THEN CONV_TAC(EQT_INTRO o TAUT); ALL_TAC] THEN + [REWRITE_TAC[EQ_SYM_EQ] THEN (CONV_TAC "(EQT_INTRO o TAUT)") (EQT_INTRO o TAUT); ALL_TAC] THEN ASM_CASES_TAC `a = 1` THEN ASM_REWRITE_TAC[Y_DEGENERATE] THENL [REWRITE_TAC[EQ_SYM_EQ]; ALL_TAC] THEN ASM_CASES_TAC `y = 0` THEN ASM_SIMP_TAC[Y_EQ_0] THEN diff --git a/Examples/polylog.ml b/Examples/polylog.ml index e3556c54..2156bfc0 100644 --- a/Examples/polylog.ml +++ b/Examples/polylog.ml @@ -81,7 +81,7 @@ let MAGIC_DERIVATIVE = prove UNDISCH_TAC `abs(x) < &1` THEN REAL_ARITH_TAC]; ALL_TAC] THEN STRIP_TAC THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_RZERO; REAL_MUL_LZERO; REAL_MUL_LID; REAL_MUL_RID; REAL_SUB_RZERO; REAL_SUB_LZERO; REAL_SUB_REFL; REAL_ADD_LID; REAL_ADD_RID] THEN @@ -188,7 +188,7 @@ let MAGIC_DERIVATIVE = prove REWRITE_TAC[REAL_POW_2] THEN REAL_ARITH_TAC; ALL_TAC] THEN REWRITE_TAC[REAL_ENTIRE; DE_MORGAN_THM] THEN STRIP_TAC THEN REWRITE_TAC[GSYM REAL_POW_2; GSYM(CONJUNCT2 real_pow)] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN SUBST1_TAC(SPECL [`x pow 4`; `&1`] REAL_ADD_SYM) THEN REWRITE_TAC[real_div; REAL_ARITH `a + b + c1 * c2 * x + x * d - x * e = @@ -215,8 +215,8 @@ let MAGIC_DERIVATIVE = prove --(&2) * x12 * other * ((p2 + p1) * (m2 - m1) * m' + (m2 - m1) * (p2 + p1) * p')`] THEN ASM_SIMP_TAC[REAL_MUL_RINV] THEN - CONV_TAC(TOP_DEPTH_CONV num_CONV) THEN - REWRITE_TAC[real_pow] THEN CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "(TOP_DEPTH_CONV num_CONV)") (TOP_DEPTH_CONV num_CONV) THEN + REWRITE_TAC[real_pow] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REAL_ARITH_TAC);; let POLYLOG_CONVERGES = prove @@ -314,7 +314,7 @@ let POLYLOG_DERIVATIVE = prove REWRITE_TAC[SUM_1] THEN REWRITE_TAC[real_div; REAL_MUL_LZERO; REAL_MUL_RZERO; REAL_ADD_LID] THEN REWRITE_TAC[GSYM real_div] THEN - CONV_TAC(LAND_CONV(ONCE_DEPTH_CONV(ALPHA_CONV `n:num`))) THEN + (CONV_TAC "(LAND_CONV(ONCE_DEPTH_CONV(ALPHA_CONV `n:num`)))") (LAND_CONV(ONCE_DEPTH_CONV(ALPHA_CONV `n:num`))) THEN REWRITE_TAC[ADD_SUB] THEN REWRITE_TAC[ADD1] THEN DISCH_THEN(MP_TAC o MATCH_MP SER_CMUL) THEN DISCH_THEN(MP_TAC o SPEC `&a * x pow (a - 1) * x pow b`) THEN @@ -444,16 +444,16 @@ let POLYLOG_THM = prove ASSUME_TAC THENL [REPEAT STRIP_TAC THEN MP_TAC(SPECL [`8`; `1`; `x:real`] POLYLOG_DERIVATIVE) THEN - CONV_TAC NUM_REDUCE_CONV THEN ASM_REWRITE_TAC[real_pow] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_REWRITE_TAC[real_pow] THEN DISCH_THEN(MP_TAC o SPEC `&4 * sqrt(&2)` o MATCH_MP DIFF_CMUL) THEN MP_TAC(SPECL [`8`; `4`; `x:real`] POLYLOG_DERIVATIVE) THEN - CONV_TAC NUM_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(MP_TAC o SPEC `&8` o MATCH_MP DIFF_CMUL) THEN MP_TAC(SPECL [`8`; `5`; `x:real`] POLYLOG_DERIVATIVE) THEN - CONV_TAC NUM_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(MP_TAC o SPEC `&4 * sqrt(&2)` o MATCH_MP DIFF_CMUL) THEN MP_TAC(SPECL [`8`; `6`; `x:real`] POLYLOG_DERIVATIVE) THEN - CONV_TAC NUM_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(MP_TAC o SPEC `&8` o MATCH_MP DIFF_CMUL) THEN REWRITE_TAC[] THEN ONCE_REWRITE_TAC[TAUT `a ==> b ==> c <=> b /\ a ==> c`] THEN @@ -497,7 +497,7 @@ let POLYLOG_THM = prove MATCH_MP_TAC SER_CMUL THEN MATCH_MP_TAC SUMMABLE_SUM THEN MATCH_MP_TAC POLYLOG_CONVERGES THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NUM_REDUCE_CONV; ALL_TAC] THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ALL_TAC] THEN MP_TAC(SPEC `\x. suminf (\n. &4 * sqrt (&2) * x pow (8 * n + 1) / &(8 * n + 1) - &8 * x pow (8 * n + 4) / &(8 * n + 4) - @@ -523,8 +523,8 @@ let POLYLOG_THM = prove MATCH_MP_TAC REAL_LTE_TRANS THEN EXISTS_TAC `sqrt((&5 / &4) pow 2)` THEN CONJ_TAC THENL [SIMP_TAC[POW_2_SQRT; REAL_LE_DIV; REAL_POS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; ALL_TAC] THEN - MATCH_MP_TAC SQRT_MONO_LE THEN CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN + MATCH_MP_TAC SQRT_MONO_LE THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN DISCH_THEN(fun th -> MP_TAC(MATCH_MP MAGIC_DERIVATIVE th) THEN ANTE_RES_THEN MP_TAC th) THEN @@ -536,7 +536,7 @@ let POLYLOG_THM = prove ARITH_EQ] THEN REWRITE_TAC[real_div; REAL_MUL_LZERO; REAL_MUL_RZERO] THEN REWRITE_TAC[GSYM real_div; REAL_ADD_LID; REAL_ADD_RID] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_DIV_1; LN_1; ATN_1; ATN_NEG; ATN_0] THEN REWRITE_TAC[REAL_ARITH `a * b + a * --b + c = c`] THEN SUBGOAL_THEN `suminf (\n. &0) = &0` SUBST1_TAC THENL @@ -551,7 +551,7 @@ let POLYLOG_THM = prove SUBGOAL_THEN `inv(sqrt(&2)) pow 2 = &1 / &2` SUBST1_TAC THENL [REWRITE_TAC[REAL_POW_INV; real_div; REAL_MUL_LID] THEN AP_TERM_TAC THEN SIMP_TAC[SQRT_POW_2; REAL_POS]; ALL_TAC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SUBGOAL_THEN `!other. ln((inv (sqrt (&2)) - &1) pow 2) + ln((inv (sqrt (&2)) + &1) pow 2) + other = @@ -573,9 +573,9 @@ let POLYLOG_THM = prove EXISTS_TAC `sqrt((&4 / &5) pow 2)` THEN CONJ_TAC THENL [ALL_TAC; SIMP_TAC[POW_2_SQRT; REAL_LE_DIV; REAL_POS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN SIMP_TAC[GSYM SQRT_INV; REAL_POS] THEN - MATCH_MP_TAC SQRT_MONO_LE THEN CONV_TAC REAL_RAT_REDUCE_CONV; + MATCH_MP_TAC SQRT_MONO_LE THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN REWRITE_TAC[GSYM REAL_POW_MUL] THEN REWRITE_TAC[REAL_ARITH `(x - &1) * (x + &1) = x * x - &1`] THEN @@ -583,13 +583,13 @@ let POLYLOG_THM = prove SUBGOAL_THEN `inv(sqrt(&2)) pow 2 = &1 / &2` SUBST1_TAC THENL [REWRITE_TAC[REAL_POW_INV; real_div; REAL_MUL_LID] THEN AP_TERM_TAC THEN SIMP_TAC[SQRT_POW_2; REAL_POS]; ALL_TAC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; ALL_TAC] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN REWRITE_TAC[ATN_0; REAL_MUL_RZERO; REAL_ADD_LID] THEN ONCE_REWRITE_TAC[REAL_ARITH `l1 + l2 + a + y - l3 = (l1 + l2 - l3) + a + y`] THEN SIMP_TAC[GSYM LN_DIV; GSYM LN_MUL; REAL_LT_DIV; REAL_LT_MUL; REAL_OF_NUM_LT; ARITH_LE; ARITH_LT] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LN_1; REAL_ADD_LID] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LN_1; REAL_ADD_LID] THEN REWRITE_TAC[GSYM REAL_ADD_LDISTRIB] THEN ONCE_REWRITE_TAC[ADD_SYM] THEN REWRITE_TAC[REAL_POW_ADD; real_div; REAL_MUL_ASSOC] THEN @@ -601,7 +601,7 @@ let POLYLOG_THM = prove SUBGOAL_THEN `inv(sqrt(&2)) pow 2 = &1 / &2` SUBST1_TAC THENL [REWRITE_TAC[REAL_POW_INV; real_div; REAL_MUL_LID] THEN AP_TERM_TAC THEN SIMP_TAC[SQRT_POW_2; REAL_POS]; ALL_TAC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM REAL_POW_INV] THEN REWRITE_TAC[real_div; REAL_MUL_LID]; ALL_TAC] THEN REWRITE_TAC[GSYM REAL_MUL_ASSOC; GSYM REAL_INV_MUL] THEN @@ -622,7 +622,7 @@ let POLYLOG_THM = prove SUBGOAL_THEN `inv(sqrt(&2)) pow 2 = &1 / &2` SUBST1_TAC THENL [REWRITE_TAC[REAL_POW_INV; real_div; REAL_MUL_LID] THEN AP_TERM_TAC THEN SIMP_TAC[SQRT_POW_2; REAL_POS]; ALL_TAC] THEN - REWRITE_TAC[REAL_MUL_ASSOC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[REAL_MUL_ASSOC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ONCE_REWRITE_TAC[ADD_SYM] THEN REWRITE_TAC[REAL_INV_MUL] THEN ONCE_REWRITE_TAC[AC REAL_MUL_AC `a * b * c = b * a * c`] THEN @@ -651,19 +651,19 @@ let POLYLOG_THM = prove REWRITE_TAC[REAL_ABS_INV; REAL_ABS_NUM] THEN SUBST1_TAC(SYM REAL_INV_1) THEN REPEAT CONJ_TAC THEN MATCH_MP_TAC REAL_LE_INV2 THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_OF_NUM_LE] THEN ARITH_TAC; ALL_TAC] THEN REWRITE_TAC[summable] THEN EXISTS_TAC `&8 / (&1 - inv(&16))` THEN REWRITE_TAC[real_div; GSYM REAL_POW_INV] THEN MATCH_MP_TAC SER_CMUL THEN - MATCH_MP_TAC GP THEN CONV_TAC REAL_RAT_REDUCE_CONV; ALL_TAC] THEN + MATCH_MP_TAC GP THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN DISCH_THEN(MP_TAC o MATCH_MP SUMMABLE_SUM) THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC EQ_IMP THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN AP_TERM_TAC THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN SIMP_TAC[GSYM REAL_EQ_RDIV_EQ; REAL_OF_NUM_LT; ARITH] THEN MP_TAC(SPEC `atn(&1 / &2)` TAN_COT) THEN - REWRITE_TAC[ATN_TAN] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[ATN_TAN] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(MP_TAC o AP_TERM `atn`) THEN REWRITE_TAC[REAL_DIV_1] THEN MATCH_MP_TAC(REAL_ARITH `(a = d - c) ==> (a = b) ==> (b + c = d)`) THEN @@ -673,5 +673,5 @@ let POLYLOG_THM = prove ==> --(&2 * p4) < &2 * p4 - x /\ &2 * p4 - x < &2 * p4`) THEN CONJ_TAC THENL [SUBST1_TAC(SYM ATN_0) THEN MATCH_MP_TAC ATN_MONO_LT THEN - CONV_TAC REAL_RAT_REDUCE_CONV; - MATCH_MP_TAC ATN_LT_PI4_POS THEN CONV_TAC REAL_RAT_REDUCE_CONV]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; + MATCH_MP_TAC ATN_LT_PI4_POS THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]);; diff --git a/Examples/prog.ml b/Examples/prog.ml index 09873fbe..84dbff77 100644 --- a/Examples/prog.ml +++ b/Examples/prog.ml @@ -629,7 +629,7 @@ let STATE_GEN_TAC' = let VC_UNPACK_TAC = REWRITE_TAC[IMPLIES; o_THM; FALSE; TRUE; AND; OR; NOT; IMP] THEN - STATE_GEN_TAC THEN CONV_TAC(REDEPTH_CONV GEN_BETA_CONV) THEN + STATE_GEN_TAC THEN (CONV_TAC "(REDEPTH_CONV GEN_BETA_CONV)") (REDEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[PAIR_EQ; GSYM CONJ_ASSOC];; (* ------------------------------------------------------------------------- *) @@ -660,7 +660,7 @@ let VC_SEQ_TAC = and SIDE_TAC = GEN_REWRITE_TAC I [FUN_EQ_THM] THEN STATE_GEN_TAC THEN PURE_REWRITE_TAC[IMPLIES; o_THM; FALSE; TRUE; AND; OR; NOT; IMP] THEN - CONV_TAC(REDEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(REDEPTH_CONV GEN_BETA_CONV)") (REDEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[PAIR_EQ] THEN NO_TAC in let ADJUST_TAC ptm ptm' ((_,w) as gl) = let w' = subst [ptm',ptm] w in diff --git a/Examples/reduct.ml b/Examples/reduct.ml index 471e3bfe..a979a13b 100644 --- a/Examples/reduct.ml +++ b/Examples/reduct.ml @@ -351,7 +351,7 @@ let FC_FINITE_BOUND_LEMMA = prove FIRST_ASSUM(fun th -> REWRITE_TAC[MATCH_MP (CONJUNCT2 CARD_CLAUSES) th]) THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[FINITE_INSERT] THEN UNDISCH_TAC `f p IN {z:A | ?i:num. i < p /\ (z = f i)}` THEN - CONV_TAC CONTRAPOS_CONV THEN DISCH_TAC THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_TAC THEN REWRITE_TAC[IN_ELIM_THM; NOT_EXISTS_THM] THEN X_GEN_TAC `q:num` THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN diff --git a/Examples/solovay.ml b/Examples/solovay.ml index 807a8ef2..d4ce9edf 100644 --- a/Examples/solovay.ml +++ b/Examples/solovay.ml @@ -35,7 +35,7 @@ let NORM_ELIM_CONV = (BINDER_CONV(RAND_CONV BETA_CONV))) th1;; let NORM_ELIM_TAC = - CONV_TAC NORM_ELIM_CONV THEN GEN_TAC;; + (CONV_TAC "NORM_ELIM_CONV") NORM_ELIM_CONV THEN GEN_TAC;; let SOLOVAY_TAC = REWRITE_TAC[orthogonal; GSYM DOT_EQ_0] THEN @@ -303,7 +303,7 @@ let PYTHAGORAS = prove (`!A B C:real^N. orthogonal (A - B) (C - B) ==> norm(C - A) pow 2 = norm(B - A) pow 2 + norm(C - B) pow 2`, - SOLOVAY_VECTOR_TAC THEN CONV_TAC REAL_RING);; + SOLOVAY_VECTOR_TAC THEN (CONV_TAC "REAL_RING") REAL_RING);; (*** Actually in this case we can fairly easily do things manually, though we do need to explicitly use symmetry of the dot product. @@ -313,7 +313,7 @@ let PYTHAGORAS = prove orthogonal (A - B) (C - B) ==> norm(C - A) pow 2 = norm(B - A) pow 2 + norm(C - B) pow 2`, REWRITE_TAC[NORM_POW_2; orthogonal; DOT_LSUB; DOT_RSUB; DOT_SYM] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; ***) @@ -325,27 +325,27 @@ needs "Examples/sos.ml";; let EXAMPLE_1 = prove (`!x y:real^N. x dot y <= norm x * norm y`, - SOLOVAY_VECTOR_TAC THEN CONV_TAC REAL_SOS);; + SOLOVAY_VECTOR_TAC THEN (CONV_TAC "REAL_SOS") REAL_SOS);; let EXAMPLE_2 = prove (`!x y:real^N. a % (x + y) = a % x + a % y`, - SOLOVAY_VECTOR_TAC THEN CONV_TAC REAL_SOS);; + SOLOVAY_VECTOR_TAC THEN (CONV_TAC "REAL_SOS") REAL_SOS);; (*** Takes a few minutes but does work let EXAMPLE_3 = prove (`!x y:real^N. norm (x + y) <= norm x + norm y`, - SOLOVAY_VECTOR_TAC THEN CONV_TAC REAL_SOS);; + SOLOVAY_VECTOR_TAC THEN (CONV_TAC "REAL_SOS") REAL_SOS);; ****) let EXAMPLE_4 = prove (`!x y z. x dot (y + z) = (x dot y) + (x dot z)`, - SOLOVAY_VECTOR_TAC THEN CONV_TAC REAL_SOS);; + SOLOVAY_VECTOR_TAC THEN (CONV_TAC "REAL_SOS") REAL_SOS);; let EXAMPLE_5 = prove (`!x y. (x dot x = &0) ==> (x dot y = &0)`, - SOLOVAY_VECTOR_TAC THEN CONV_TAC REAL_SOS);; + SOLOVAY_VECTOR_TAC THEN (CONV_TAC "REAL_SOS") REAL_SOS);; (* ------------------------------------------------------------------------- *) (* This is NORM_INCREASES_ONLINE. *) @@ -356,7 +356,7 @@ g `!a d:real^N. time e SOLOVAY_VECTOR_TAC;; -time e (CONV_TAC REAL_SOS);; +time e ((CONV_TAC "REAL_SOS") REAL_SOS);; (* ------------------------------------------------------------------------- *) (* DIST_INCREASES_ONLINE *) @@ -367,7 +367,7 @@ g `!b a d:real^N. time e SOLOVAY_VECTOR_TAC;; -time e (CONV_TAC REAL_SOS);; +time e ((CONV_TAC "REAL_SOS") REAL_SOS);; (* ------------------------------------------------------------------------- *) (* This one doesn't seem to work easily, but I think it does eventually. *) @@ -376,18 +376,18 @@ time e (CONV_TAC REAL_SOS);; (**** let EXAMPLE_6 = prove (`!a x. norm(a % x) = abs(a) * norm x`;; - SOLOVAY_VECTOR_TAC THEN CONV_TAC REAL_SOS);; + SOLOVAY_VECTOR_TAC THEN (CONV_TAC "REAL_SOS") REAL_SOS);; ****) let EXAMPLE_7 = prove (`!x. abs(norm x) = norm x`, - SOLOVAY_VECTOR_TAC THEN CONV_TAC REAL_SOS);; + SOLOVAY_VECTOR_TAC THEN (CONV_TAC "REAL_SOS") REAL_SOS);; (*** But this is (at least) really slow let EXAMPLE_8 = prove (`!x y. abs(norm(x) - norm(y)) <= abs(norm(x - y))`, - SOLOVAY_VECTOR_TAC THEN CONV_TAC REAL_SOS);; + SOLOVAY_VECTOR_TAC THEN (CONV_TAC "REAL_SOS") REAL_SOS);; ****) (* ------------------------------------------------------------------------- *) @@ -400,7 +400,7 @@ let EXAMPLE_9 = prove (`!x:real^N y. x dot y > &0 ==> ?u. &0 < u /\ norm(u % y - x) < norm x`, SOLOVAY_VECTOR_TAC THEN W(fun (asl,w) -> MAP_EVERY (fun v -> SPEC_TAC(v,v)) (frees w)) THEN - CONV_TAC REAL_QELIM_CONV);; + (CONV_TAC "REAL_QELIM_CONV") REAL_QELIM_CONV);; (* ------------------------------------------------------------------------- *) (* Even richer set of quantifier alternations. *) @@ -413,4 +413,4 @@ let EXAMPLE_10 = prove !v. &0 < v /\ v <= u ==> norm(v % y - x) < norm x`, SOLOVAY_VECTOR_TAC THEN W(fun (asl,w) -> MAP_EVERY (fun v -> SPEC_TAC(v,v)) (frees w)) THEN - CONV_TAC REAL_QELIM_CONV);; + (CONV_TAC "REAL_QELIM_CONV") REAL_QELIM_CONV);; diff --git a/Examples/sos.ml b/Examples/sos.ml index 6b64ddba..748b1a6f 100644 --- a/Examples/sos.ml +++ b/Examples/sos.ml @@ -1624,10 +1624,10 @@ let PURE_SOS_TAC = MATCH_ACCEPT_TAC REAL_LE_SQUARE ORELSE (MATCH_MP_TAC REAL_LE_ADD THEN CONJ_TAC) ORELSE (MATCH_MP_TAC REAL_LE_MUL THEN CONJ_TAC) ORELSE - CONV_TAC(RAND_CONV REAL_RAT_REDUCE_CONV THENC REAL_RAT_LE_CONV) in + (CONV_TAC "(RAND_CONV REAL_RAT_REDUCE_CONV THENC REAL_RAT_LE_CONV)") (RAND_CONV REAL_RAT_REDUCE_CONV THENC REAL_RAT_LE_CONV) in REPEAT GEN_TAC THEN REWRITE_TAC[real_ge] THEN GEN_REWRITE_TAC I [GSYM REAL_SUB_LE] THEN - CONV_TAC(RAND_CONV SOS_CONV) THEN + (CONV_TAC "(RAND_CONV SOS_CONV)") (RAND_CONV SOS_CONV) THEN REPEAT tac THEN NO_TAC;; let PURE_SOS tm = prove(tm,PURE_SOS_TAC);; diff --git a/Functionspaces/cfunspace.ml b/Functionspaces/cfunspace.ml index d0338253..44b8c017 100644 --- a/Functionspaces/cfunspace.ml +++ b/Functionspaces/cfunspace.ml @@ -80,7 +80,7 @@ let REAL_TAC ?(alternatives=[]) g = let TRY_REAL_THM = ASM (MAP_FIRST (fun x -> MATCH_ACCEPT_TAC x ORELSE MATCH_MP_TAC x)) !real_thms in let LOOP = TRY_REAL_THM ORELSE (ASM_SIMP_TAC[] THEN NO_TAC) - ORELSE (CHANGED_TAC (ASM_SIMP_TAC[real]) THEN CONV_TAC COMPLEX_FIELD) + ORELSE (CHANGED_TAC (ASM_SIMP_TAC[real]) THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD) ORELSE FIRST alternatives in (REPEAT STRIP_TAC THEN (fun (_,concl as g) -> @@ -166,10 +166,10 @@ let CFUN_TO_COMPLEX = CONJS [FUN_MAP_THMS;cfun_defs;CFUN_EQ];; let CFUN_ARITH_TAC = let lemma = MESON[] `(!x. P x <=> Q x) ==> (!x. P x) = (!x. Q x)` in REWRITE_TAC[CFUN_TO_COMPLEX] - THEN (CONV_TAC COMPLEX_FIELD + THEN ((CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD ORELSE SIMPLE_COMPLEX_ARITH_TAC - ORELSE (REPEAT STRIP_TAC THEN CONV_TAC PRENEX_CONV - THEN MATCH_MP_TAC lemma THEN CONV_TAC COMPLEX_FIELD));; + ORELSE (REPEAT STRIP_TAC THEN (CONV_TAC "PRENEX_CONV") PRENEX_CONV + THEN MATCH_MP_TAC lemma THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD));; let CFUN_ARITH t = prove(t,CFUN_ARITH_TAC);; @@ -273,7 +273,7 @@ let CFUN_EQ_SMUL_LCANCEL2 = prove (`!a x y. ~(a=Cx(&0)) ==> (a % x = y <=> x = inv a % y)`, REWRITE_TAC[CFUN_TO_COMPLEX] THEN REPEAT STRIP_TAC THEN MATCH_MP_TAC (MESON[] `(!x. P x <=> Q x) ==> (!x. P x) = (!x. Q x)`) - THEN GEN_TAC THEN POP_ASSUM MP_TAC THEN CONV_TAC COMPLEX_FIELD);; + THEN GEN_TAC THEN POP_ASSUM MP_TAC THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; (* Sub-space *) let is_cfun_subspace = new_definition @@ -642,7 +642,7 @@ let ORTHOGONAL_SUM_NORM = inner_space_prove IMP_REWRITE_TAC[are_orthogonal;INPROD_ADD_LDIST;INPROD_ADD_RDIST; CFUN_SUBSPACE_ADD;INNER_SPACE_IS_SUBSPACE] THEN ONCE_REWRITE_TAC[GSYM COMPLEX_SUB_0] - THEN (CONV_TAC o DEPTH_CONV o CHANGED_CONV) COMPLEX_POLY_CONV + THEN ((CONV_TAC "o") o DEPTH_CONV o CHANGED_CONV) COMPLEX_POLY_CONV THEN MESON_TAC[INPROD_CNJ;CNJ_CX]);; let ORTHOGONAL_DECOMPOS_WRT_CFUN = inner_space_prove @@ -706,7 +706,7 @@ let SCHWARZ_INEQUALITY = inner_space_prove THEN IMP_REWRITE_TAC [CFUN_SUBSPACE_SUB;CFUN_SUBSPACE_SMUL;INNER_SPACE_IS_SUBSPACE] THEN ASM_REWRITE_TAC[]; - ASM_REWRITE_TAC[] THEN GCONV_TAC COMPLEX_POLY_CONV + ASM_REWRITE_TAC[] THEN G(CONV_TAC "COMPLEX_POLY_CONV") COMPLEX_POLY_CONV THEN IMP_REWRITE_TAC [INPROD_ZERO_EQ] THEN REWRITE_TAC[COMPLEX_NORM_0;RE_CX] THEN ARITH_TAC ]);; @@ -805,10 +805,10 @@ let COP_POW_CONV = let COP_ARITH_TAC = let lemma = MESON[] `(!x. P x <=> Q x) ==> (!x. P x) = (!x. Q x)` in - CONV_TAC (TOP_DEPTH_CONV COP_POW_CONV) + (CONV_TAC "(TOP_DEPTH_CONV COP_POW_CONV)") (TOP_DEPTH_CONV COP_POW_CONV) THEN REWRITE_TAC[COP_TO_CFUN] THEN (CFUN_ARITH_TAC - ORELSE (REPEAT STRIP_TAC THEN CONV_TAC PRENEX_CONV + ORELSE (REPEAT STRIP_TAC THEN (CONV_TAC "PRENEX_CONV") PRENEX_CONV THEN MATCH_MP_TAC lemma THEN CFUN_ARITH_TAC));; let COP_ARITH t = prove(t,COP_ARITH_TAC);; @@ -846,7 +846,7 @@ let COP_ENTIRE = COP_ARITH let COP_ZERO_NEQ_ID = prove (`~(I = cop_zero)`, REWRITE_TAC[COP_TO_CFUN;CFUN_TO_COMPLEX;NOT_FORALL_THM] - THEN Pa.EXISTS_TAC `\x. Cx(&1):` THEN CONV_TAC COMPLEX_FIELD);; + THEN Pa.EXISTS_TAC `\x. Cx(&1):` THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COP_SMUL_I_ZERO = prove (`!a. a % I = cop_zero <=> a = Cx(&0)`, @@ -856,7 +856,7 @@ let COP_SMUL_I_ONE = prove (`!a. a % I = I <=> a = Cx(&1)`, REWRITE_TAC[COP_TO_CFUN;CFUN_TO_COMPLEX] THEN GEN_TAC THEN EQ_TAC THENL [DISCH_THEN (MP_TAC o Pa.SPEC `\x.Cx(&1):`); ALL_TAC] - THEN CONV_TAC COMPLEX_FIELD);; + THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COP_MUL_I_SYM = COP_ARITH `!op. op ** I = I ** op`;; @@ -966,7 +966,7 @@ let COP_EQ_MUL_LCANCEL2 = prove REWRITE_TAC[COP_TO_CFUN;CFUN_TO_COMPLEX] THEN REPEAT STRIP_TAC THEN MATCH_MP_TAC (MESON[] `(!x y. P x y <=> Q x y) ==> (!x y. P x y) = !x y. Q x y`) - THEN REPEAT GEN_TAC THEN POP_ASSUM MP_TAC THEN CONV_TAC COMPLEX_FIELD);; + THEN REPEAT GEN_TAC THEN POP_ASSUM MP_TAC THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COP_POW_2 = COP_ARITH `!op. op pow 2 = op ** op`;; diff --git a/Functionspaces/utils.ml b/Functionspaces/utils.ml index e8089e5f..1302ebf8 100644 --- a/Functionspaces/utils.ml +++ b/Functionspaces/utils.ml @@ -129,7 +129,7 @@ let SIMP_HORN_CONV t = let SIMP_HORN_TAC = ASSUM_LIST (fun xs -> TRY (fun g -> (MP_TAC (CONJS xs) THEN REWRITE_TAC[IMP_IMP]) g) - THEN CONV_TAC (TOP_DEPTH_CONV (CHANGED_CONV SIMP_HORN_CONV)) + THEN (CONV_TAC "(TOP_DEPTH_CONV (CHANGED_CONV SIMP_HORN_CONV))") (TOP_DEPTH_CONV (CHANGED_CONV SIMP_HORN_CONV)) THEN REWRITE_TAC xs);; let rec fixpoint f x = @@ -162,7 +162,7 @@ let GIMP_IMP = CONV_RULE GIMP_IMP_CONV;; let MATCH_TRANS thm1 thm2 = GEN_ALL (DISCH_ALL (MATCH_MP thm2 (UNDISCH (SPEC_ALL thm1))));; -let GCONV_TAC = CONV_TAC o DEPTH_CONV o CHANGED_CONV;; +let GCONV_TAC = (CONV_TAC "o") o DEPTH_CONV o CHANGED_CONV;; let LET_RULE thm = REWRITE_RULE[LET_DEF;LET_END_DEF] thm;; let LET_RULE_L l thm = REWRITE_RULE([LET_DEF;LET_END_DEF]@l) thm;; diff --git a/Jordan/float.ml b/Jordan/float.ml index 22c2f115..e54c1987 100644 --- a/Jordan/float.ml +++ b/Jordan/float.ml @@ -1799,7 +1799,7 @@ let rec INTERVAL_OF_TERM bprec tm = let (u,v) = dest_conj c in break_conj v (u::acc) in (break_conj conjhyp []) in let thm2 = prove(hyp2,REWRITE_TAC[interval] THEN - (CONV_TAC FLOAT_INEQ_CONV)) in + ((CONV_TAC "FLOAT_INEQ_CONV") FLOAT_INEQ_CONV)) in let thm3 = FLOAT_INEQ_CONV hyp3 in let thm4 = FLOAT_INEQ_CONV hyp4 in let float_tac = REWRITE_TAC[FLOAT_NN;FLOAT_POS;INT_NN;INT_NN_NEG; diff --git a/Jordan/jordan_curve_theorem.ml b/Jordan/jordan_curve_theorem.ml index 7f9d99f7..051b3986 100644 --- a/Jordan/jordan_curve_theorem.ml +++ b/Jordan/jordan_curve_theorem.ml @@ -43,7 +43,7 @@ let basic_rewrite_bak = basic_rewrites();; let basic_net_bak = basic_net();; let PARTIAL_REWRITE_CONV thl = GENERAL_REWRITE_CONV true TOP_DEPTH_CONV (basic_net_bak) thl;; -let PARTIAL_REWRITE_TAC thl = CONV_TAC(PARTIAL_REWRITE_CONV thl);; +let PARTIAL_REWRITE_TAC thl = (CONV_TAC "(PARTIAL_REWRITE_CONV thl)") (PARTIAL_REWRITE_CONV thl);; let reset() = (set_basic_rewrites basic_rewrite_bak);; extend_basic_rewrites @@ -976,13 +976,13 @@ let euclid_xy = prove_by_refinement( EXPAND_TAC "u"; UND 0; DISCH_THEN IMATCH_MP_TAC ; - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; DISCH_TAC; TYPE_THEN `euclid n v` SUBGOAL_TAC; EXPAND_TAC "v"; UND 0; DISCH_THEN IMATCH_MP_TAC ; - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; DISCH_TAC; TYPE_THEN `x = (&.2)*# v - (&.1) *# u` SUBGOAL_TAC; EXPAND_TAC "u"; @@ -1048,7 +1048,7 @@ let closure_segment = prove_by_refinement( TYPE_THEN `?t. (&.0 <. t) /\ (t <. &.1) /\ (t *. (d_euclid x y) <. r)` SUBGOAL_TAC; TYPE_THEN `(&.1/(&.2))*. d_euclid x y < r` ASM_CASES_TAC; TYPE_THEN `(&.1/(&.2))` EXISTS_TAC; - CONV_TAC (REAL_RAT_REDUCE_CONV); + (CONV_TAC "(REAL_RAT_REDUCE_CONV)") (REAL_RAT_REDUCE_CONV); ASM_REWRITE_TAC[]; TYPE_THEN `(r/(&.2))/(d_euclid x y)` EXISTS_TAC; ASM_SIMP_TAC[REAL_LT_DIV;REAL_LT_HALF1]; @@ -1961,7 +1961,7 @@ let square_disj = prove_by_refinement( DISCH_THEN_REWRITE; REWRITE_TAC[squ]; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "u''"); + (CONV_TAC "(dropq_conv \"u''\")") (dropq_conv "u''"); TYPE_THEN `real_of_int (FST q) + (&.1/(&.2))` EXISTS_TAC; TYPE_THEN `real_of_int (SND q) + (&.1/(&.2))` EXISTS_TAC; REWRITE_TAC[int_suc]; @@ -2861,8 +2861,8 @@ let h_edge_closure = prove_by_refinement( TYPE_THEN `(pointI m)+point(&.1,&.0)` EXISTS_TAC; DISCH_ALL_TAC; ASM_REWRITE_TAC[h_edge;pointI;point_add;point_scale;PAIR_SPLIT;point_inj;]; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); REDUCE_TAC; ASM_REWRITE_TAC[int_suc]; TYPE_THEN `a = real_of_int(FST m)` ABBREV_TAC; @@ -2872,8 +2872,8 @@ let h_edge_closure = prove_by_refinement( TYPE_THEN `pointI m` EXISTS_TAC; DISCH_ALL_TAC; ASM_REWRITE_TAC[h_edge;pointI;point_add;point_scale;PAIR_SPLIT;point_inj;]; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); REDUCE_TAC; ASM_REWRITE_TAC[int_suc]; TYPE_THEN `a = real_of_int(FST m)` ABBREV_TAC; @@ -2924,15 +2924,15 @@ let v_edge_inter = prove_by_refinement( CHO 0; CHO 0; ASM_REWRITE_TAC[point_inj]; - CONV_TAC (dropq_conv "p"); + (CONV_TAC "(dropq_conv \"p\")") (dropq_conv "p"); ASM_REWRITE_TAC[]; - CONV_TAC (dropq_conv "p"); - CONV_TAC (dropq_conv "p'"); + (CONV_TAC "(dropq_conv \"p\")") (dropq_conv "p"); + (CONV_TAC "(dropq_conv \"p'\")") (dropq_conv "p'"); ASM_REWRITE_TAC[]; DISCH_ALL_TAC; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); REWRITE_TAC[point_split;]; - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); ASM_MESON_TAC[FST;SND;PAIR;coord01;euclid_point;point_onto]; ]);; (* }}} *) @@ -3057,8 +3057,8 @@ let v_edge_closure = prove_by_refinement( TYPE_THEN `(pointI m)+point(&.0,&.1)` EXISTS_TAC; DISCH_ALL_TAC; ASM_REWRITE_TAC[v_edge;pointI;point_add;point_scale;PAIR_SPLIT;point_inj;]; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); REDUCE_TAC; ASM_REWRITE_TAC[int_suc]; TYPE_THEN `a = real_of_int(FST m)` ABBREV_TAC; @@ -3068,8 +3068,8 @@ let v_edge_closure = prove_by_refinement( TYPE_THEN `pointI m` EXISTS_TAC; DISCH_ALL_TAC; ASM_REWRITE_TAC[v_edge;pointI;point_add;point_scale;PAIR_SPLIT;point_inj;]; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); REDUCE_TAC; ASM_REWRITE_TAC[int_suc]; TYPE_THEN `a = real_of_int(FST m)` ABBREV_TAC; @@ -3834,8 +3834,8 @@ let midpoint_h_edge = prove_by_refinement( REWRITE_TAC[plus_e12]; REWRITE_TAC[h_edge;pointI;point_add;point_scale;point_inj;PAIR_SPLIT;int_suc]; GEN_TAC; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); TYPE_THEN `a = real_of_int(SND m)` ABBREV_TAC; TYPE_THEN `b = real_of_int(FST m)` ABBREV_TAC; CONJ_TAC; @@ -3854,8 +3854,8 @@ let midpoint_v_edge = prove_by_refinement( REWRITE_TAC[plus_e12]; REWRITE_TAC[v_edge;pointI;point_add;point_scale;point_inj;PAIR_SPLIT;int_suc]; GEN_TAC; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); TYPE_THEN `a = real_of_int(SND m)` ABBREV_TAC; TYPE_THEN `b = real_of_int(FST m)` ABBREV_TAC; CONJ_TAC; @@ -3922,7 +3922,7 @@ let midpoint_unique = prove_by_refinement( UND 11; DISCH_THEN IMATCH_MP_TAC ; TYPE_THEN `&1/ &2` EXISTS_TAC; - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; EXPAND_TAC "b"; MESON_TAC[]; EXPAND_TAC "b"; @@ -3965,7 +3965,7 @@ let midpoint_unique = prove_by_refinement( UND 11; DISCH_THEN IMATCH_MP_TAC ; TYPE_THEN `&1/ &2` EXISTS_TAC; - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; EXPAND_TAC "b"; MESON_TAC[]; EXPAND_TAC "b"; @@ -4599,7 +4599,7 @@ let endpoint_size2 = prove_by_refinement( DISCH_ALL_TAC; TYPE_THEN `?n. G HAS_SIZE n` SUBGOAL_TAC; REWRITE_TAC[HAS_SIZE]; - CONV_TAC (dropq_conv "n"); + (CONV_TAC "(dropq_conv \"n\")") (dropq_conv "n"); ASM_MESON_TAC[psegment;segment]; DISCH_THEN CHOOSE_TAC; ASM_MESON_TAC[]; @@ -5218,7 +5218,7 @@ let rectagon_h_edge = prove_by_refinement( ASM_REWRITE_TAC[]; EXPAND_TAC "Y"; REWRITE_TAC[IMAGE;EMPTY_EXISTS ]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); AND 4; USE 4 (REWRITE_RULE[EMPTY_EXISTS]); CHO 4; @@ -5353,7 +5353,7 @@ let rectagon_v_edge = prove_by_refinement( ASM_REWRITE_TAC[]; EXPAND_TAC "Y"; REWRITE_TAC[IMAGE;EMPTY_EXISTS ]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); AND 4; USE 4 (REWRITE_RULE[EMPTY_EXISTS]); CHO 4; @@ -5439,7 +5439,7 @@ let part_below_h = prove_by_refinement( REWRITE_TAC[h_edge_closure;hc_edge;UNION ;h_edge_pointI]; REWRITE_TAC[hv_edgeV2;plus_e12;INR IN_SING ;pointI_inj ;PAIR_SPLIT ]; REWRITE_TAC[h_edge_inj]; - CONV_TAC (dropq_conv "n'"); + (CONV_TAC "(dropq_conv \"n'\")") (dropq_conv "n'"); REWRITE_TAC[INT_ARITH `(x = y+: &:1) <=> (x -: (&:1) = y)`]; ASM_MESON_TAC[]; ]);; @@ -5552,7 +5552,7 @@ let fibre_card = prove_by_refinement( DISCH_ALL_TAC; TYPE_THEN `f x` EXISTS_TAC; REWRITE_TAC[PAIR_SPLIT]; - CONV_TAC (dropq_conv "y"); + (CONV_TAC "(dropq_conv \"y\")") (dropq_conv "y"); SUBCONJ_TAC; UND 1; REWRITE_TAC[IMAGE;SUBSET]; @@ -5584,7 +5584,7 @@ let fibre_card = prove_by_refinement( GEN_TAC; NAME_CONFLICT_TAC; REWRITE_TAC[PAIR_SPLIT]; - CONV_TAC (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); NAME_CONFLICT_TAC; GEN_TAC; LEFT_TAC "x''"; @@ -7366,12 +7366,12 @@ let rectangle_inter = prove_by_refinement( CHO 0; CHO 0; ASM_REWRITE_TAC[point_inj]; - CONV_TAC (dropq_conv "r"); + (CONV_TAC "(dropq_conv \"r\")") (dropq_conv "r"); ASM_REWRITE_TAC[]; - CONV_TAC (dropq_conv "r"); + (CONV_TAC "(dropq_conv \"r\")") (dropq_conv "r"); ASM_REWRITE_TAC[]; - CONV_TAC (dropq_conv "r'"); - CONV_TAC (dropq_conv "r"); + (CONV_TAC "(dropq_conv \"r'\")") (dropq_conv "r'"); + (CONV_TAC "(dropq_conv \"r\")") (dropq_conv "r"); ASM_REWRITE_TAC[]; DISCH_ALL_TAC; CHO 0; @@ -7385,8 +7385,8 @@ let rectangle_inter = prove_by_refinement( USE 3(REWRITE_RULE[point_inj]); USE 3(CONV_RULE (dropq_conv "r'")); REWRITE_TAC[point_inj;PAIR_SPLIT]; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); ASM_MESON_TAC[]; ]);; @@ -7718,8 +7718,8 @@ let pointI_inter = prove_by_refinement( EQ_TAC; DISCH_THEN_REWRITE; REWRITE_TAC[point_inj]; - CONV_TAC (dropq_conv "r"); - CONV_TAC (dropq_conv "r'"); + (CONV_TAC "(dropq_conv \"r\")") (dropq_conv "r"); + (CONV_TAC "(dropq_conv \"r'\")") (dropq_conv "r'"); DISCH_ALL_TAC; CHO 0; REWR 1; @@ -7769,7 +7769,7 @@ let long_v_union = prove_by_refinement( MESON_TAC[]; DISCH_THEN CHOOSE_TAC; ASM_REWRITE_TAC[point_inj]; - CONV_TAC (dropq_conv "r'"); + (CONV_TAC "(dropq_conv \"r'\")") (dropq_conv "r'"); REAL_ARITH_TAC; DISCH_THEN_REWRITE; ONCE_REWRITE_TAC[EQ_SYM_EQ]; @@ -7868,7 +7868,7 @@ let two_two_union = prove_by_refinement( DISCH_THEN (CHOOSE_THEN MP_TAC); DISCH_THEN_REWRITE; REWRITE_TAC [point_inj]; - CONV_TAC (dropq_conv "r'"); + (CONV_TAC "(dropq_conv \"r'\")") (dropq_conv "r'"); REAL_ARITH_TAC; MESON_TAC[]; DISCH_TAC; @@ -7949,7 +7949,7 @@ let curve_cell_point = prove_by_refinement( DISCH_THEN CHOOSE_TAC; DISJ2_TAC; REWRITE_TAC[eq_sing;INR IN_SING;pointI_inj;]; - CONV_TAC (dropq_conv "n'") ; + (CONV_TAC "(dropq_conv \"n'\")") (dropq_conv "n'") ; TYPE_THEN `closure top2 e SUBSET closure top2 (UNIONS G)` SUBGOAL_TAC; IMATCH_MP_TAC subset_of_closure; REWRITE_TAC[top2_top]; @@ -8069,7 +8069,7 @@ let curve_closure = prove_by_refinement( CONJ_TAC; REWRITE_TAC[SUBSET;IMAGE;UNIONS]; DISCH_ALL_TAC; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); NAME_CONFLICT_TAC; CHO 4; TYPE_THEN `u` EXISTS_TAC; @@ -8078,7 +8078,7 @@ let curve_closure = prove_by_refinement( (* // *) TYPE_THEN `A = UNIONS (IMAGE (closure top2) G)` ABBREV_TAC ; REWRITE_TAC[UNIONS;SUBSET ]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); REWRITE_TAC[INR IN_SING]; MESON_TAC[]; ]);; @@ -8258,7 +8258,7 @@ let par_cell_h = prove_by_refinement( REWRITE_TAC[par_cell;eq_sing;h_edge_inj;hv_edgeV2;h_edge_pointI;]; REWRITE_TAC[square_h_edgeV2]; ASM_SIMP_TAC[curve_cell_h_inter]; - CONV_TAC (dropq_conv "m'"); + (CONV_TAC "(dropq_conv \"m'\")") (dropq_conv "m'"); MESON_TAC[]; ]);; (* }}} *) @@ -8272,7 +8272,7 @@ let par_cell_v = prove_by_refinement( REWRITE_TAC[par_cell;eq_sing;v_edge_inj;hv_edgeV2;v_edge_pointI;]; REWRITE_TAC[square_v_edgeV2]; ASM_SIMP_TAC[curve_cell_v_inter]; - CONV_TAC (dropq_conv "m'"); + (CONV_TAC "(dropq_conv \"m'\")") (dropq_conv "m'"); MESON_TAC[]; ]);; (* }}} *) @@ -8286,7 +8286,7 @@ let par_cell_squ = prove_by_refinement( REWRITE_TAC[par_cell;eq_sing;square_h_edgeV2;square_v_edgeV2;squ_inj]; ASM_SIMP_TAC[curve_cell_squ_inter]; REWRITE_TAC[square_pointI]; - CONV_TAC (dropq_conv "m'"); + (CONV_TAC "(dropq_conv \"m'\")") (dropq_conv "m'"); ]);; (* }}} *) @@ -8303,7 +8303,7 @@ let par_cell_point = prove_by_refinement( DISCH_THEN (fun t-> REWRITE_TAC[t]); REWRITE_TAC[eq_sing;INR IN_SING ;h_edge_pointI; v_edge_pointI; square_pointI;]; REWRITE_TAC[pointI_inj; REWRITE_RULE[not_eq] single_inter]; - CONV_TAC (dropq_conv "m'"); + (CONV_TAC "(dropq_conv \"m'\")") (dropq_conv "m'"); ASM_SIMP_TAC [curve_point_unions;curve_cell_not_point]; MESON_TAC[]; ]);; @@ -9556,21 +9556,21 @@ let squc_inter = prove_by_refinement( CHO 0; CHO 0; ASM_REWRITE_TAC[point_inj;]; - CONV_TAC (dropq_conv "r"); + (CONV_TAC "(dropq_conv \"r\")") (dropq_conv "r"); ASM_REWRITE_TAC[]; - CONV_TAC (dropq_conv "r"); + (CONV_TAC "(dropq_conv \"r\")") (dropq_conv "r"); ASM_REWRITE_TAC[]; - CONV_TAC (dropq_conv "r'"); + (CONV_TAC "(dropq_conv \"r'\")") (dropq_conv "r'"); ASM_REWRITE_TAC[]; - CONV_TAC (dropq_conv "r"); + (CONV_TAC "(dropq_conv \"r\")") (dropq_conv "r"); ASM_REWRITE_TAC[]; DISCH_ALL_TAC; CHO 0; AND 0; REWR 1; REWRITE_TAC[point_inj;PAIR_SPLIT ;]; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); USE 1 (REWRITE_RULE[point_inj;]); USE 1 (CONV_RULE (dropq_conv "r'")); REWR 2; @@ -9648,18 +9648,18 @@ let squc_union_lemma1 = prove_by_refinement( DISJ2_TAC ; DISJ1_TAC ; REWRITE_TAC[point_inj; PAIR_SPLIT]; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v'"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v'\")") (dropq_conv "v'"); ASM_REWRITE_TAC[]; ASM_REWRITE_TAC[int_suc]; REP_CASES_TAC; ASM_REWRITE_TAC[pointI;point_inj;]; CONJ_TAC; REWRITE_TAC[PAIR_SPLIT]; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); REAL_ARITH_TAC ; - CONV_TAC (dropq_conv "r"); + (CONV_TAC "(dropq_conv \"r\")") (dropq_conv "r"); USE 0 (REWRITE_RULE[v_edge]); CHO 0; CHO 0; @@ -9667,22 +9667,22 @@ let squc_union_lemma1 = prove_by_refinement( REWRITE_TAC[point_inj]; CONJ_TAC; REWRITE_TAC[PAIR_SPLIT]; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v'"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v'\")") (dropq_conv "v'"); AND 0; UND 0; REWRITE_TAC[int_suc]; REAL_ARITH_TAC ; - CONV_TAC (dropq_conv "r"); + (CONV_TAC "(dropq_conv \"r\")") (dropq_conv "r"); (* LAST *) ASM_REWRITE_TAC[pointI;point_inj;]; CONJ_TAC; REWRITE_TAC[PAIR_SPLIT]; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); REWRITE_TAC[int_suc]; REAL_ARITH_TAC ; - CONV_TAC (dropq_conv "r"); + (CONV_TAC "(dropq_conv \"r\")") (dropq_conv "r"); ]);; (* }}} *) @@ -9726,9 +9726,9 @@ let squc_union_lemma2 = prove_by_refinement( DISJ2_TAC ; DISJ1_TAC ; REWRITE_TAC[point_inj; PAIR_SPLIT]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); REWRITE_TAC[int_suc]; - CONV_TAC (dropq_conv "v'"); + (CONV_TAC "(dropq_conv \"v'\")") (dropq_conv "v'"); ASM_REWRITE_TAC[]; (* second half *) ASM_REWRITE_TAC[int_suc]; @@ -9736,11 +9736,11 @@ let squc_union_lemma2 = prove_by_refinement( ASM_REWRITE_TAC[pointI;point_inj;]; CONJ_TAC; REWRITE_TAC[PAIR_SPLIT]; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); ASM_REWRITE_TAC[int_suc]; REAL_ARITH_TAC ; - CONV_TAC (dropq_conv "r"); + (CONV_TAC "(dropq_conv \"r\")") (dropq_conv "r"); REWRITE_TAC[int_suc]; (* 2 LEFT *) USE 0 (REWRITE_RULE[v_edge]); @@ -9750,23 +9750,23 @@ let squc_union_lemma2 = prove_by_refinement( REWRITE_TAC[point_inj]; CONJ_TAC; REWRITE_TAC[PAIR_SPLIT]; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v'"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v'\")") (dropq_conv "v'"); AND 0; UND 0; REWRITE_TAC[int_suc]; REAL_ARITH_TAC ; - CONV_TAC (dropq_conv "r"); + (CONV_TAC "(dropq_conv \"r\")") (dropq_conv "r"); REWRITE_TAC[int_suc]; (* LAST *) ASM_REWRITE_TAC[pointI;point_inj;]; CONJ_TAC; REWRITE_TAC[PAIR_SPLIT]; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); REWRITE_TAC[int_suc]; REAL_ARITH_TAC ; - CONV_TAC (dropq_conv "r"); + (CONV_TAC "(dropq_conv \"r\")") (dropq_conv "r"); REWRITE_TAC[int_suc]; ]);; (* }}} *) @@ -9805,22 +9805,22 @@ let squc_union_lemma3 = prove_by_refinement( DISJ2_TAC; REWRITE_TAC[point_inj;]; REWRITE_TAC[PAIR_SPLIT]; - CONV_TAC (dropq_conv "u'"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u'\")") (dropq_conv "u'"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); ASM_REWRITE_TAC[int_suc]; (* 3 to go *) ASM_REWRITE_TAC[]; DISJ1_TAC; REWRITE_TAC[h_edge;point_inj;PAIR_SPLIT]; - CONV_TAC (dropq_conv "u'"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u'\")") (dropq_conv "u'"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); ASM_REWRITE_TAC[int_suc]; (* 2 to go *) DISJ2_TAC; DISJ1_TAC; REWRITE_TAC[squ;point_inj;PAIR_SPLIT]; - CONV_TAC (dropq_conv "u'"); - CONV_TAC (dropq_conv "v'"); + (CONV_TAC "(dropq_conv \"u'\")") (dropq_conv "u'"); + (CONV_TAC "(dropq_conv \"v'\")") (dropq_conv "v'"); ASM_REWRITE_TAC[int_suc]; (* 2nd half *) DISCH_TAC; @@ -9829,8 +9829,8 @@ let squc_union_lemma3 = prove_by_refinement( ASM_REWRITE_TAC[point_inj]; CONJ_TAC; REWRITE_TAC[PAIR_SPLIT]; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); REWR 0; UND 0; REWRITE_TAC[h_edge;squ;up;int_suc ;point_inj; PAIR_SPLIT ;]; @@ -9847,7 +9847,7 @@ let squc_union_lemma3 = prove_by_refinement( USE 0 (CONV_RULE (dropq_conv "v")); UND 0; REAL_ARITH_TAC ; - CONV_TAC (dropq_conv "r"); + (CONV_TAC "(dropq_conv \"r\")") (dropq_conv "r"); REWR 0; UND 0; REWRITE_TAC[h_edge;squ;up;int_suc ;point_inj; PAIR_SPLIT ;]; @@ -9888,7 +9888,7 @@ let squc_lemma4 = prove_by_refinement( CHO 0; ASM_REWRITE_TAC[point_inj ;]; LEFT_TAC "r"; - CONV_TAC (dropq_conv "r"); + (CONV_TAC "(dropq_conv \"r\")") (dropq_conv "r"); UND 0; DISCH_ALL_TAC; UND 1; @@ -9946,8 +9946,8 @@ let squ_closure_h = prove_by_refinement( USE 0 (CONV_RULE (dropq_conv "u")); USE 0 (CONV_RULE (dropq_conv "v")); DISCH_ALL_TAC; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); UND 0; REWRITE_TAC[int_suc]; ASSUME_TAC (real_poly_conv `t *x + (&1 - t)* x`); @@ -9991,8 +9991,8 @@ let squ_closure_up_h = prove_by_refinement( USE 0 (CONV_RULE (dropq_conv "u")); USE 0 (CONV_RULE (dropq_conv "v")); DISCH_ALL_TAC; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); UND 0; REWRITE_TAC[int_suc]; ASSUME_TAC (real_poly_conv `t *x + (&1 - t)* x`); @@ -10050,8 +10050,8 @@ let squ_closure_v = prove_by_refinement( USE 0 (CONV_RULE (dropq_conv "u")); USE 0 (CONV_RULE (dropq_conv "v")); DISCH_ALL_TAC; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); UND 0; REWRITE_TAC[int_suc]; ASSUME_TAC (real_poly_conv `t *x + (&1 - t)* x`); @@ -10095,8 +10095,8 @@ let squ_closure_right_v = prove_by_refinement( USE 0 (CONV_RULE (dropq_conv "u")); USE 0 (CONV_RULE (dropq_conv "v")); DISCH_ALL_TAC; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); UND 0; REWRITE_TAC[int_suc]; ASSUME_TAC (real_poly_conv `t *x + (&1 - t)* x`); @@ -10226,7 +10226,7 @@ let adj_edge_left = prove_by_refinement( INT_ARITH_TAC; TYPE_THEN `v_edge m` EXISTS_TAC; REWRITE_TAC[edge;v_edge_inj;]; - CONV_TAC (dropq_conv "m'"); + (CONV_TAC "(dropq_conv \"m'\")") (dropq_conv "m'"); REWRITE_TAC[squc_union; SUBSET;UNION ;]; REWRITE_TAC[right_left]; ASM_MESON_TAC[]; @@ -10245,7 +10245,7 @@ let adj_edge_right = prove_by_refinement( INT_ARITH_TAC; TYPE_THEN `v_edge (right m)` EXISTS_TAC; REWRITE_TAC[edge;v_edge_inj;]; - CONV_TAC (dropq_conv "m'"); + (CONV_TAC "(dropq_conv \"m'\")") (dropq_conv "m'"); REWRITE_TAC[squc_union; SUBSET;UNION ;]; ASM_MESON_TAC[]; ]);; @@ -10263,7 +10263,7 @@ let adj_edge_down = prove_by_refinement( INT_ARITH_TAC; TYPE_THEN `h_edge m` EXISTS_TAC; REWRITE_TAC[edge;h_edge_inj;]; - CONV_TAC (dropq_conv "m'"); + (CONV_TAC "(dropq_conv \"m'\")") (dropq_conv "m'"); REWRITE_TAC[squc_union; SUBSET;UNION ;]; REWRITE_TAC[right_left]; ASM_MESON_TAC[]; @@ -10282,7 +10282,7 @@ let adj_edge_right = prove_by_refinement( INT_ARITH_TAC; TYPE_THEN `h_edge (up m)` EXISTS_TAC; REWRITE_TAC[edge;h_edge_inj;]; - CONV_TAC (dropq_conv "m'"); + (CONV_TAC "(dropq_conv \"m'\")") (dropq_conv "m'"); REWRITE_TAC[squc_union; SUBSET;UNION ;]; ASM_MESON_TAC[]; ]);; @@ -11505,7 +11505,7 @@ let reflA_cont = prove_by_refinement( TYPE_THEN `(IMAGE (reflAf r) (euclid 2)) SUBSET (euclid 2) /\ (metric_space (euclid 2,d_euclid))` SUBGOAL_TAC; REWRITE_TAC[IMAGE;SUBSET]; ASM_SIMP_TAC[metric_euclid]; - CONV_TAC (dropq_conv "x"); + (CONV_TAC "(dropq_conv \"x\")") (dropq_conv "x"); REWRITE_TAC[reflAf;euclid_point]; DISCH_TAC; ASM_SIMP_TAC[metric_continuous_continuous;metric_continuous;metric_continuous_pt;]; @@ -11537,7 +11537,7 @@ let reflB_cont = prove_by_refinement( TYPE_THEN `(IMAGE (reflBf r) (euclid 2)) SUBSET (euclid 2) /\ (metric_space (euclid 2,d_euclid))` SUBGOAL_TAC; REWRITE_TAC[IMAGE;SUBSET]; ASM_SIMP_TAC[metric_euclid]; - CONV_TAC (dropq_conv "x"); + (CONV_TAC "(dropq_conv \"x\")") (dropq_conv "x"); REWRITE_TAC[reflBf;euclid_point]; DISCH_TAC; ASM_SIMP_TAC[metric_continuous_continuous;metric_continuous;metric_continuous_pt;]; @@ -11568,7 +11568,7 @@ let reflC_cont = prove_by_refinement( TYPE_THEN `(IMAGE (reflCf) (euclid 2)) SUBSET (euclid 2) /\ (metric_space (euclid 2,d_euclid))` SUBGOAL_TAC; REWRITE_TAC[IMAGE;SUBSET]; ASM_SIMP_TAC[metric_euclid]; - CONV_TAC (dropq_conv "x"); + (CONV_TAC "(dropq_conv \"x\")") (dropq_conv "x"); REWRITE_TAC[reflCf;euclid_point]; DISCH_TAC; ASM_SIMP_TAC[metric_continuous_continuous;metric_continuous;metric_continuous_pt;]; @@ -11649,8 +11649,8 @@ let reflA_h_edge = prove_by_refinement( IMATCH_MP_TAC EQ_EXT; REWRITE_TAC[h_edge]; DISCH_ALL_TAC; - CONV_TAC (dropq_conv "x'"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); REWRITE_TAC[coord01]; EQ_TAC; DISCH_THEN CHOOSE_TAC; @@ -11683,8 +11683,8 @@ let reflA_v_edge = prove_by_refinement( IMATCH_MP_TAC EQ_EXT; REWRITE_TAC[v_edge]; DISCH_ALL_TAC; - CONV_TAC (dropq_conv "x'"); - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); REWRITE_TAC[coord01]; REWRITE_TAC[int_sub_th;int_mul_th;int_of_num_th;]; MESON_TAC[]; @@ -11716,8 +11716,8 @@ let reflB_v_edge = prove_by_refinement( IMATCH_MP_TAC EQ_EXT; REWRITE_TAC[v_edge]; DISCH_ALL_TAC; - CONV_TAC (dropq_conv "x'"); - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); REWRITE_TAC[coord01]; EQ_TAC; DISCH_THEN CHOOSE_TAC; @@ -11750,8 +11750,8 @@ let reflB_h_edge = prove_by_refinement( IMATCH_MP_TAC EQ_EXT; REWRITE_TAC[h_edge]; DISCH_ALL_TAC; - CONV_TAC (dropq_conv "x'"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); REWRITE_TAC[coord01]; REWRITE_TAC[int_sub_th;int_mul_th;int_of_num_th;]; MESON_TAC[]; @@ -11783,9 +11783,9 @@ let reflC_vh_edge = prove_by_refinement( IMATCH_MP_TAC EQ_EXT; REWRITE_TAC[v_edge;h_edge]; DISCH_ALL_TAC; - CONV_TAC (dropq_conv "x'"); - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); REWRITE_TAC[coord01]; ASM_MESON_TAC[]; ]);; @@ -11800,9 +11800,9 @@ let reflC_hv_edge = prove_by_refinement( IMATCH_MP_TAC EQ_EXT; REWRITE_TAC[v_edge;h_edge]; DISCH_ALL_TAC; - CONV_TAC (dropq_conv "x'"); - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); REWRITE_TAC[coord01]; ASM_MESON_TAC[]; ]);; @@ -11914,7 +11914,7 @@ let homeo_bij = prove_by_refinement( CONJ_TAC; REWRITE_TAC[IMAGE;SUBSET ;]; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); MESON_TAC[]; REWRITE_TAC[SUBSET;IMAGE]; DISCH_ALL_TAC; @@ -12367,7 +12367,7 @@ let image_inv_image = prove_by_refinement( REP_BASIC_TAC; REWRITE_TAC[]; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); EQ_TAC; REP_BASIC_TAC; TYPE_THEN `x = x'` SUBGOAL_TAC; @@ -12405,7 +12405,7 @@ let homeo_adj_eq = prove_by_refinement( TYPE_THEN `IMAGE f X SUBSET euclid 2 /\ IMAGE f Y SUBSET euclid 2` SUBGOAL_TAC; REWRITE_TAC[IMAGE;SUBSET]; NAME_CONFLICT_TAC; - CONJ_TAC THEN (CONV_TAC (dropq_conv "x''")) THEN (RULE_ASSUM_TAC (REWRITE_RULE[BIJ;SURJ])); + CONJ_TAC THEN ((CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''")) THEN (RULE_ASSUM_TAC (REWRITE_RULE[BIJ;SURJ])); ASM_MESON_TAC[ISUBSET]; ASM_MESON_TAC[ISUBSET]; DISCH_TAC; @@ -13186,10 +13186,10 @@ let reflA_squ = prove_by_refinement( IMATCH_MP_TAC EQ_EXT; REWRITE_TAC[]; DISCH_ALL_TAC; - CONV_TAC (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); REWRITE_TAC[coord01;]; REWRITE_TAC[point_x]; - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); EQ_TAC ; REP_BASIC_TAC; TYPE_THEN `&2 * real_of_int r - u` EXISTS_TAC; @@ -13220,10 +13220,10 @@ let reflB_squ = prove_by_refinement( IMATCH_MP_TAC EQ_EXT; REWRITE_TAC[]; DISCH_ALL_TAC; - CONV_TAC (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); REWRITE_TAC[coord01;]; REWRITE_TAC[point_x]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); EQ_TAC ; REP_BASIC_TAC; TYPE_THEN `&2 * real_of_int r - v` EXISTS_TAC; @@ -13254,11 +13254,11 @@ let reflC_squ = prove_by_refinement( IMATCH_MP_TAC EQ_EXT; REWRITE_TAC[]; DISCH_ALL_TAC; - CONV_TAC (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); REWRITE_TAC[coord01;]; REWRITE_TAC[point_x]; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); MESON_TAC[]; ]);; (* }}} *) @@ -13271,7 +13271,7 @@ let image_sing = prove_by_refinement( (* {{{ proof *) [ REWRITE_TAC[IMAGE;INSERT]; - CONV_TAC (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); ]);; (* }}} *) @@ -13287,7 +13287,7 @@ let image_unions = prove_by_refinement( REWRITE_TAC[]; EQ_TAC; REP_BASIC_TAC; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); ASM_REWRITE_TAC[]; NAME_CONFLICT_TAC; ASM_MESON_TAC[]; @@ -13370,14 +13370,14 @@ let image_curve_cell_reflA = prove_by_refinement( DISCH_THEN_REWRITE; (* *) REWRITE_TAC[IMAGE;]; - CONV_TAC (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); (**** Modified by JRH to avoid GSPEC REWRITE_TAC[INR IN_SING;GSPEC;]; ****) REWRITE_TAC[INR IN_SING; UNWIND_THM2]; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "x'"); - CONV_TAC (dropq_conv "y'"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"y'\")") (dropq_conv "y'"); (**** Removed by JRH REWRITE_TAC[GSPEC]; ****) @@ -13455,15 +13455,15 @@ let image_curve_cell_reflB = prove_by_refinement( DISCH_THEN_REWRITE; (* *) REWRITE_TAC[IMAGE;]; - CONV_TAC (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); (*** JRH changed this line to avoid GSPEC REWRITE_TAC[INR IN_SING;GSPEC;]; ***) REWRITE_TAC[INR IN_SING; UNWIND_THM2]; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "x'"); - CONV_TAC (dropq_conv "y'"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"y'\")") (dropq_conv "y'"); (*** JRH removed this to avoid GSPEC REWRITE_TAC[GSPEC]; ***) @@ -13541,14 +13541,14 @@ let image_curve_cell_reflC = prove_by_refinement( DISCH_THEN_REWRITE; (* *) REWRITE_TAC[IMAGE;]; - CONV_TAC (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); (*** This line changed by JRH to avoid GSPEC REWRITE_TAC[INR IN_SING;GSPEC;]; ***) REWRITE_TAC[INR IN_SING; UNWIND_THM2]; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "x'"); - CONV_TAC (dropq_conv "y'"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"y'\")") (dropq_conv "y'"); (*** Removed by JRH to avoid GSPEC REWRITE_TAC[GSPEC]; ***) @@ -13615,7 +13615,7 @@ let homeomorphism_induced_top = prove_by_refinement( TYPE_THEN `g = IMAGE f` ABBREV_TAC ; REWRITE_TAC[IMAGE]; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); (* *) TYPE_THEN `!t. U t ==> (g (t INTER A) = g t INTER g A)` SUBGOAL_TAC; REP_BASIC_TAC; @@ -13796,7 +13796,7 @@ let connected_homeo = prove_by_refinement( REWRITE_TAC[IMAGE]; EXPAND_TAC "g"; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); RULE_ASSUM_TAC (REWRITE_RULE[homeomorphism]); REP_BASIC_TAC; TYPE_THEN `!x'. (UNIONS U x') ==> (INV f (UNIONS U) (UNIONS V) (f x') = x')` SUBGOAL_TAC; @@ -13851,7 +13851,7 @@ let connected_homeo = prove_by_refinement( REP_BASIC_TAC; ASM_REWRITE_TAC[SUBSET;IMAGE;]; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); ASM_MESON_TAC[ISUBSET;]; ]);; (* }}} *) @@ -13878,7 +13878,7 @@ let component_homeo = prove_by_refinement( IMATCH_MP_TAC EQ_EXT ; REP_BASIC_TAC; REWRITE_TAC[]; - CONV_TAC (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); EQ_TAC; REP_BASIC_TAC; TYPE_THEN `IMAGE f Z` EXISTS_TAC; @@ -14182,7 +14182,7 @@ let cell_clauses = prove_by_refinement( REP_BASIC_TAC; ASM_REWRITE_TAC[INTER_ACI;notrr v_edge_disj;notrr h_edge_disj;interc square_h_edge;square_h_edge;interc square_v_edge;square_v_edge;square_disj;single_inter;h_edge_inj;v_edge_inj;notrr squ_inj;INR IN_SING;hv_edgeV2; square_h_edgeV2; square_v_edgeV2;hv_edge;square_pointIv2;v_edge_pointIv2;h_edge_pointIv2;notrr single_inter;v_edge_pointI;h_edge_pointI;square_pointI;pointI_inj;squ_disj]; REWRITE_TAC[eq_sing;INR IN_SING;pointI_inj;]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); ASM_MESON_TAC[pointI_inj]; ])));; (* }}} *) @@ -15385,7 +15385,7 @@ let mk_line_fin_inter = prove_by_refinement( EXPAND_TAC "E3"; EXPAND_TAC "E2"; REWRITE_TAC[IMAGE]; - CONV_TAC (dropq_conv "x"); + (CONV_TAC "(dropq_conv \"x\")") (dropq_conv "x"); REP_BASIC_TAC; ASM_REWRITE_TAC[]; TYPE_THEN `e` (WITH 0 o ISPEC); @@ -15408,8 +15408,8 @@ let mk_line_fin_inter = prove_by_refinement( EXPAND_TAC "E2"; REWRITE_TAC[IMAGE]; REWRITE_TAC[UNIONS]; - CONV_TAC (dropq_conv "x"); - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"x\")") (dropq_conv "x"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); REWRITE_TAC[INTER]; TYPE_THEN `e` EXISTS_TAC; TYPE_THEN `f` EXISTS_TAC; @@ -15975,7 +15975,7 @@ let compose_image = prove_by_refinement( GEN_TAC; NAME_CONFLICT_TAC; REWRITE_TAC[compose]; - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); ]);; (* }}} *) @@ -17409,7 +17409,7 @@ let pconn_trans = prove_by_refinement( ASM_SIMP_TAC[GSYM top_of_metric_unions;metric_euclid]; EXPAND_TAC "Z"; REWRITE_TAC[EMPTY_EXISTS;INTER;IMAGE]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); TYPE_THEN `&1` EXISTS_TAC; EXPAND_TAC "Cg"; ASM_REWRITE_TAC[IMAGE;]; @@ -18263,7 +18263,7 @@ let graph_isomorphic_graph = prove_by_refinement( REP_BASIC_TAC; REWRITE_TAC[SUBSET;IMAGE;]; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); REP_BASIC_TAC; TYPE_THEN `?y'. (graph_edge G y' /\ (v y' = x'))` SUBGOAL_TAC; UND 1; @@ -18294,7 +18294,7 @@ let graph_isomorphic_graph = prove_by_refinement( UND 5; REWRITE_TAC[SUBSET;IMAGE]; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); UND 8; MESON_TAC[]; DISCH_TAC; @@ -19860,7 +19860,7 @@ let compact_distance = prove_by_refinement( IMATCH_MP_TAC convergent_subseq; ASM_REWRITE_TAC[sequence;SUBSET;UNIV;IMAGE]; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); RIGHT 13 "p'"; ASM_MESON_TAC[]; REWRITE_TAC[converge]; @@ -19912,7 +19912,7 @@ let compact_distance = prove_by_refinement( IMATCH_MP_TAC convergent_subseq; ASM_REWRITE_TAC[sequence;SUBSET;UNIV;IMAGE]; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); ASM_MESON_TAC[]; REWRITE_TAC[converge]; REP_BASIC_TAC; @@ -21371,7 +21371,7 @@ let graph_disk = prove_by_refinement( REWRITE_TAC[]; EXPAND_TAC "A"; REWRITE_TAC[EMPTY_EXISTS]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); TYPE_THEN `v` EXISTS_TAC; TYPE_THEN `v'` EXISTS_TAC ; ASM_REWRITE_TAC[]; @@ -21413,7 +21413,7 @@ let graph_disk = prove_by_refinement( EXPAND_TAC "A"; REWRITE_TAC[IMAGE]; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); (*** Next steps removed by JRH: now paired beta-conversion automatic ***) DISCH_TAC; (* -- *) @@ -21423,7 +21423,7 @@ let graph_disk = prove_by_refinement( EXPAND_TAC "B"; REWRITE_TAC[IMAGE]; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); (*** Next steps removed by JRH: now paired beta-conversion automatic ***) DISCH_TAC; (* -- [temp] *) @@ -22238,7 +22238,7 @@ let simple_arc_end_trans = prove_by_refinement( REWRITE_TAC[IMAGE;INR IN_SING;]; NAME_CONFLICT_TAC; ASM_REWRITE_TAC[]; - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); GEN_TAC; DISCH_THEN_REWRITE; UND 27; @@ -23637,7 +23637,7 @@ let simple_closed_curve_pt = prove_by_refinement( MESON_TAC[]; REWRITE_TAC[EQ_EMPTY;IMAGE;INTER;image_sing;INR IN_SING;]; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); REP_GEN_TAC; REP_BASIC_TAC; TYPE_THEN `x' = &0` SUBGOAL_TAC; @@ -24357,7 +24357,7 @@ let simple_arc_sep3 = prove_by_refinement( CONJ_TAC; IMATCH_MP_TAC simple_arc_end_end_closed2; ASM_MESON_TAC[]; - CONV_TAC (dropq_conv "x"); + (CONV_TAC "(dropq_conv \"x\")") (dropq_conv "x"); REWRITE_TAC[DE_MORGAN_THM]; DISJ2_TAC; EXPAND_TAC "K"; @@ -31932,7 +31932,7 @@ let graph_rad_pt_center_piece = prove_by_refinement( REWRITE_TAC[]; DISJ2_TAC; DISJ1_TAC; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); TYPE_THEN `v''` EXISTS_TAC; ASM_REWRITE_TAC[]; REP_BASIC_TAC; @@ -32551,7 +32551,7 @@ let simp_ss = let RSIMP_CONV thl = ONCE_SIMPLIFY_CONV (simp_ss ([]:thm list)) thl;; -let (RSIMP_TAC:thm list -> tactic) = fun (thl:thm list) -> CONV_TAC(RSIMP_CONV thl);; +let (RSIMP_TAC:thm list -> tactic) = fun (thl:thm list) -> (CONV_TAC "(RSIMP_CONV thl)") (RSIMP_CONV thl);; let ASM_RSIMP_TAC = ASM RSIMP_TAC;; @@ -33636,8 +33636,8 @@ let h_translate_h = prove_by_refinement( REWRITE_TAC[point_inj;PAIR_SPLIT ]; REAL_ARITH_TAC; TYPE_THEN `x'` UNABBREV_TAC; - CONV_TAC (dropq_conv "x"); - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x\")") (dropq_conv "x"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); TYPE_THEN `x = FST x,SND x` SUBAGOAL_TAC; TYPE_THEN `y = FST y,SND y` SUBAGOAL_TAC; TYPE_THEN `t` EXISTS_TAC; @@ -33666,8 +33666,8 @@ let v_translate_v = prove_by_refinement( REWRITE_TAC[point_inj;PAIR_SPLIT ]; REAL_ARITH_TAC; TYPE_THEN `x'` UNABBREV_TAC; - CONV_TAC (dropq_conv "x"); - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x\")") (dropq_conv "x"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); TYPE_THEN `x = FST x,SND x` SUBAGOAL_TAC; TYPE_THEN `y = FST y,SND y` SUBAGOAL_TAC; TYPE_THEN `t` EXISTS_TAC; @@ -33697,8 +33697,8 @@ let h_translate_v = prove_by_refinement( REWRITE_TAC[point_inj;PAIR_SPLIT ]; REAL_ARITH_TAC; TYPE_THEN `x'` UNABBREV_TAC; - CONV_TAC (dropq_conv "x"); - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x\")") (dropq_conv "x"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); TYPE_THEN `x = FST x,SND x` SUBAGOAL_TAC; TYPE_THEN `y = FST y,SND y` SUBAGOAL_TAC; TYPE_THEN `t` EXISTS_TAC; @@ -33726,8 +33726,8 @@ let v_translate_h = prove_by_refinement( REWRITE_TAC[point_inj;PAIR_SPLIT ]; REAL_ARITH_TAC; TYPE_THEN `x'` UNABBREV_TAC; - CONV_TAC (dropq_conv "x"); - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x\")") (dropq_conv "x"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); TYPE_THEN `x = FST x,SND x` SUBAGOAL_TAC; TYPE_THEN `y = FST y,SND y` SUBAGOAL_TAC; TYPE_THEN `t` EXISTS_TAC; @@ -33818,11 +33818,11 @@ let h_compat_bij = prove_by_refinement( REAL_ARITH_TAC; (* - *) REWRITE_TAC[mk_line;SUBSET;IMAGE]; - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); TYPE_THEN `x'` UNABBREV_TAC; TYPE_THEN `?u. (euclid_plus (t' *# point (f (point x) 0,t + SND y)) ((&1 - t') *# point (f (point y) 0,t + SND y))) = point (u , t + SND y)` SUBAGOAL_TAC; REWRITE_TAC[point_scale;point_add ;point_inj ; PAIR_SPLIT ;]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); REAL_ARITH_TAC; KILL 6; (* - *) @@ -33929,11 +33929,11 @@ let h_compat_bij2 = prove_by_refinement( REAL_ARITH_TAC; (* - *) REWRITE_TAC[mk_line;SUBSET;IMAGE]; - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); TYPE_THEN `x'` UNABBREV_TAC; TYPE_THEN `?u. (euclid_plus (t *# point (f (point x) 0,s(SND y))) ((&1 - t) *# point (f (point y) 0,s(SND y)))) = point (u , s(SND y))` SUBAGOAL_TAC; REWRITE_TAC[point_scale;point_add ;point_inj ; PAIR_SPLIT ;]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); REAL_ARITH_TAC; ONCE_ASM_REWRITE_TAC []; UND 7 THEN DISCH_THEN (fun t-> ONCE_REWRITE_TAC[t]); @@ -34058,12 +34058,12 @@ let v_compat_bij2 = prove_by_refinement( UND 6 THEN REAL_ARITH_TAC; (* - *) REWRITE_TAC[mk_line;SUBSET;IMAGE]; - CONV_TAC (dropq_conv "x''"); + (CONV_TAC "(dropq_conv \"x''\")") (dropq_conv "x''"); TYPE_THEN `x'` UNABBREV_TAC; TYPE_THEN `?u. (euclid_plus (t *# (f (point x))) ((&1 - t) *# (f (point y)))) = point ( s(FST y), u)` SUBAGOAL_TAC; ONCE_ASM_REWRITE_TAC[]; REWRITE_TAC[point_scale;point_add ;point_inj ; PAIR_SPLIT ;]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); REAL_ARITH_TAC; (* - *) TYPE_THEN `?x'. point( s(FST y),u) = f (point x')` SUBAGOAL_TAC; @@ -34247,7 +34247,7 @@ let hv_line_hyper2 = prove_by_refinement( TYPE_THEN `IMAGE h E` EXISTS_TAC; CONJ_TAC; REWRITE_TAC[UNIONS;SUBSET;IMAGE]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); NAME_CONFLICT_TAC; TYPE_THEN `u` EXISTS_TAC; ASM_MESON_TAC[ISUBSET]; @@ -34400,7 +34400,7 @@ let graph_near_support = prove_by_refinement( UNIFY_EXISTS_TAC; IMATCH_MP_TAC UNIONS_UNIONS; REWRITE_TAC[SUBSET;UNIONS;IMAGE;]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); UNIFY_EXISTS_TAC; (* - *) CONJ_TAC; @@ -34482,9 +34482,9 @@ let hyperplane2_h_translate = prove_by_refinement( REWRITE_TAC[mk_line_hyper2_e2;]; REWRITE_TAC[GSYM line2D_S;e2;point_inj ]; CONJ_TAC; - CONV_TAC (dropq_conv "p"); + (CONV_TAC "(dropq_conv \"p\")") (dropq_conv "p"); CONJ_TAC; - CONV_TAC (dropq_conv "p"); + (CONV_TAC "(dropq_conv \"p\")") (dropq_conv "p"); RULE_ASSUM_TAC (REWRITE_RULE[PAIR_SPLIT]); UND 1 THEN REAL_ARITH_TAC; ]);; @@ -34520,9 +34520,9 @@ let hyperplane1_v_translate = prove_by_refinement( REWRITE_TAC[mk_line_hyper2_e1;]; REWRITE_TAC[GSYM line2D_F;e1;point_inj ]; CONJ_TAC; - CONV_TAC (dropq_conv "p"); + (CONV_TAC "(dropq_conv \"p\")") (dropq_conv "p"); CONJ_TAC; - CONV_TAC (dropq_conv "p"); + (CONV_TAC "(dropq_conv \"p\")") (dropq_conv "p"); RULE_ASSUM_TAC (REWRITE_RULE[PAIR_SPLIT]); UND 1 THEN REAL_ARITH_TAC; (* Thu Sep 9 13:43:45 EDT 2004 *) @@ -34568,9 +34568,9 @@ let hyperplane2_r_scale = prove_by_refinement( REWRITE_TAC[mk_line_hyper2_e2;]; REWRITE_TAC[GSYM line2D_S;e2;point_inj ]; CONJ_TAC; - CONV_TAC (dropq_conv "p"); + (CONV_TAC "(dropq_conv \"p\")") (dropq_conv "p"); CONJ_TAC; - CONV_TAC (dropq_conv "p"); + (CONV_TAC "(dropq_conv \"p\")") (dropq_conv "p"); RULE_ASSUM_TAC (REWRITE_RULE[PAIR_SPLIT;REAL_ARITH `r * &1 = r`]); UND 3 THEN UND 0 THEN REAL_ARITH_TAC; ]);; @@ -34609,9 +34609,9 @@ let hyperplane1_u_scale = prove_by_refinement( REWRITE_TAC[mk_line_hyper2_e1;]; REWRITE_TAC[GSYM line2D_F;e1;point_inj ]; CONJ_TAC; - CONV_TAC (dropq_conv "p"); + (CONV_TAC "(dropq_conv \"p\")") (dropq_conv "p"); CONJ_TAC; - CONV_TAC (dropq_conv "p"); + (CONV_TAC "(dropq_conv \"p\")") (dropq_conv "p"); RULE_ASSUM_TAC (REWRITE_RULE[PAIR_SPLIT;REAL_ARITH `r * &1 = r`]); UND 3 THEN UND 0 THEN REAL_ARITH_TAC; ]);; @@ -34669,7 +34669,7 @@ let hyperplane1_inj = prove_by_refinement( RULE_ASSUM_TAC (REWRITE_RULE[point_inj]); USE 0 SYM; TYPE_THEN `(?p. (z,&0 = p) /\ (FST p = z))` SUBAGOAL_TAC; - CONV_TAC (dropq_conv "p"); + (CONV_TAC "(dropq_conv \"p\")") (dropq_conv "p"); ASM_MESON_TAC[]; ]);; (* }}} *) @@ -34685,7 +34685,7 @@ let hyperplane2_inj = prove_by_refinement( RULE_ASSUM_TAC (REWRITE_RULE[point_inj]); USE 0 SYM; TYPE_THEN `(?p. (z,z = p) /\ (SND p = z))` SUBAGOAL_TAC; - CONV_TAC (dropq_conv "p"); + (CONV_TAC "(dropq_conv \"p\")") (dropq_conv "p"); ASM_MESON_TAC[]; ]);; (* }}} *) @@ -38211,8 +38211,8 @@ let segment_end_trans = prove_by_refinement( TYPE_THEN `(R,S,b)` EXISTS_TAC; TYPE_THEN `SS` UNABBREV_TAC; REWRITE_TAC[PAIR_SPLIT]; - CONV_TAC (dropq_conv "U"); - CONV_TAC (dropq_conv "V"); + (CONV_TAC "(dropq_conv \"U\")") (dropq_conv "U"); + (CONV_TAC "(dropq_conv \"V\")") (dropq_conv "V"); TYPE_THEN `b` EXISTS_TAC; REWRITE_TAC[SUBSET;UNION]; (* - *) @@ -39138,7 +39138,7 @@ let cls_h = prove_by_refinement( REWRITE_TAC[cls]; IMATCH_MP_TAC EQ_EXT; REWRITE_TAC[INR in_pair;INR IN_SING;]; - CONV_TAC (dropq_conv "e"); + (CONV_TAC "(dropq_conv \"e\")") (dropq_conv "e"); REWRITE_TAC[edge_h;edge_v;v_edge_closure;h_edge_closure;right ;up; vc_edge;hc_edge;UNION;plus_e12; INR IN_SING; PAIR_SPLIT;cell_clauses;]; MESON_TAC[]; ]);; @@ -39151,7 +39151,7 @@ let cls_v = prove_by_refinement( REWRITE_TAC[cls]; IMATCH_MP_TAC EQ_EXT; REWRITE_TAC[INR in_pair;INR IN_SING;]; - CONV_TAC (dropq_conv "e"); + (CONV_TAC "(dropq_conv \"e\")") (dropq_conv "e"); REWRITE_TAC[edge_h;edge_v;v_edge_closure;h_edge_closure;right ;up; vc_edge;hc_edge;UNION;plus_e12; INR IN_SING; PAIR_SPLIT;cell_clauses;]; MESON_TAC[]; ]);; @@ -39601,7 +39601,7 @@ let curve_closure_ver2 = prove_by_refinement( CONJ_TAC; REWRITE_TAC[SUBSET;IMAGE;UNIONS]; DISCH_ALL_TAC; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); NAME_CONFLICT_TAC; TYPE_THEN `u` EXISTS_TAC; ASM_MESON_TAC[subset_closure;ISUBSET ]; @@ -39898,7 +39898,7 @@ let curve_cell_sing = prove_by_refinement( REWRITE_TAC[v_edge_closure;vc_edge;plus_e12]; IMATCH_MP_TAC EQ_EXT; REWRITE_TAC[UNION;UNIONS]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); REWRITE_TAC[INR IN_SING;cell_clauses;pointI_inj]; RIGHT_TAC "n"; TYPE_THEN `v_edge m x` ASM_CASES_TAC; @@ -39907,7 +39907,7 @@ let curve_cell_sing = prove_by_refinement( REWRITE_TAC[h_edge_closure;hc_edge;plus_e12]; IMATCH_MP_TAC EQ_EXT; REWRITE_TAC[UNION;UNIONS]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); REWRITE_TAC[INR IN_SING;cell_clauses;pointI_inj]; RIGHT_TAC "n"; TYPE_THEN `h_edge m x` ASM_CASES_TAC; @@ -45277,7 +45277,7 @@ let rectagon_graph_k33_false = prove_by_refinement( IMATCH_MP_TAC SUBSET_ANTISYM; CONJ_TAC; REWRITE_TAC[SUBSET;UNION;UNIONS]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); UND 5 THEN REP_CASES_TAC THEN UNIFY_EXISTS_TAC; REWRITE_TAC[SUBSET;UNION;UNIONS]; TYPE_THEN `u` UNABBREV_TAC; @@ -45525,7 +45525,7 @@ let iso_support_eps_nonempty = prove_by_refinement( REWRITE_TAC[iso_support_eps_pair]; TH_INTRO_TAC [`G`] graph_support_init; UND 0 THEN REWRITE_TAC[EMPTY_EXISTS]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); REWRITE_TAC[graph_support_eps]; UNIFY_EXISTS_TAC; (* - *) @@ -45599,7 +45599,7 @@ let iso_eps_support0 = prove_by_refinement( PROOF_BY_CONTR_TAC; USE 2 (MATCH_MP (REAL_ARITH `~( z <= &0) ==> (&0 < z)`)); UND 3 THEN REWRITE_TAC[EMPTY_EXISTS]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); UNIFY_EXISTS_TAC; ]);; (* }}} *) @@ -45703,7 +45703,7 @@ let graph_eps_scale_image = prove_by_refinement( UND 3 THEN DISCH_THEN (THM_INTRO_TAC[`x`]); FULL_REWRITE_TAC [SUBSET;UNIONS]; REWRITE_TAC[IMAGE]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); TYPE_THEN `im` UNABBREV_TAC; USE 3(CONV_RULE NAME_CONFLICT_CONV); USE 13 (REWRITE_RULE[IMAGE]); @@ -45818,7 +45818,7 @@ let graph_eps_scale_image = prove_by_refinement( UND 3 THEN DISCH_THEN (THM_INTRO_TAC[`x`]); FULL_REWRITE_TAC [SUBSET;UNIONS]; REWRITE_TAC[IMAGE]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); TYPE_THEN `im` UNABBREV_TAC; USE 3(CONV_RULE NAME_CONFLICT_CONV); USE 13 (REWRITE_RULE[IMAGE]); @@ -45936,7 +45936,7 @@ let graph_eps_translate_image = prove_by_refinement( UND 3 THEN DISCH_THEN (THM_INTRO_TAC[`x`]); FULL_REWRITE_TAC [SUBSET;UNIONS]; REWRITE_TAC[IMAGE]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); TYPE_THEN `im` UNABBREV_TAC; USE 3(CONV_RULE NAME_CONFLICT_CONV); USE 14 (REWRITE_RULE[IMAGE]); @@ -46122,7 +46122,7 @@ let count_iso_scale = prove_by_refinement( FIRST_ASSUM IMATCH_MP_TAC ; ASM_MESON_TAC[]; (* - *) - CONV_TAC (dropq_conv "y"); + (CONV_TAC "(dropq_conv \"y\")") (dropq_conv "y"); TYPE_THEN `x` UNABBREV_TAC; LEFT_TAC "eps"; TYPE_THEN `eps'` EXISTS_TAC; @@ -46244,7 +46244,7 @@ let count_iso_translate = prove_by_refinement( TYPE_THEN `x` UNABBREV_TAC; TYPE_THEN `A` UNABBREV_TAC; REWRITE_TAC[DELETE]; - CONV_TAC (dropq_conv "y"); (* -// *) + (CONV_TAC "(dropq_conv \"y\")") (dropq_conv "y"); (* -// *) LEFT_TAC "eps"; TYPE_THEN `eps'` EXISTS_TAC; KILL 18; @@ -46407,8 +46407,8 @@ let iso_int_model_lemma = prove_by_refinement( TYPE_THEN `H''` UNABBREV_TAC; TYPE_THEN `E''` UNABBREV_TAC; REWRITE_TAC[iso_support_eps_pair;PAIR_SPLIT]; - CONV_TAC (dropq_conv "H"); - CONV_TAC (dropq_conv "E"); + (CONV_TAC "(dropq_conv \"H\")") (dropq_conv "H"); + (CONV_TAC "(dropq_conv \"E\")") (dropq_conv "E"); (* -- *) CONJ_TAC; TYPE_THEN `graph_isomorphic H' (plane_graph_image (eps_translate eps (-- &1)) H')` SUBAGOAL_TAC; @@ -47286,8 +47286,8 @@ let connect_real_open = prove_by_refinement( IMATCH_MP_TAC EQ_EXT; IMATCH_MP_TAC EQ_ANTISYM; CONJ_TAC; - CONV_TAC (dropq_conv "u"); - CONV_TAC (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); TYPE_THEN `u < x` ASM_CASES_TAC; TYPE_THEN `(a + u)/ &2` EXISTS_TAC; TYPE_THEN `x` EXISTS_TAC; @@ -47572,8 +47572,8 @@ let mk_segment_vc = prove_by_refinement( TYPE_THEN `t = real_of_int (SND m) + &1` ASM_CASES_TAC; REWRITE_TAC[INR IN_SING]; DISJ1_TAC; - CONV_TAC (dropq_conv "u"); -CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); +(CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); FULL_REWRITE_TAC[int_add_th;int_of_num_th;]; UND 5 THEN UND 4 THEN UND 2 THEN UND 3 THEN REAL_ARITH_TAC; (* - *) @@ -47612,8 +47612,8 @@ let mk_segment_hc = prove_by_refinement( REWRITE_TAC[point_inj;PAIR_SPLIT ]; TYPE_THEN `t = real_of_int (FST m)` ASM_CASES_TAC; TYPE_THEN `t = real_of_int (FST m) + &1` ASM_CASES_TAC; - CONV_TAC (dropq_conv "u"); -CONV_TAC (dropq_conv "v"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); +(CONV_TAC "(dropq_conv \"v\")") (dropq_conv "v"); UND 5 THEN UND 4 THEN UND 2 THEN UND 3 THEN REAL_ARITH_TAC; (* - *) UND 1 THEN REP_CASES_TAC ; @@ -48427,7 +48427,7 @@ let psegment_cls = prove_by_refinement( THM_INTRO_TAC[`S`;`top2`] closure_unions; FULL_REWRITE_TAC[top2_top;psegment;segment]; REWRITE_TAC[UNIONS;IMAGE]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); UNIFY_EXISTS_TAC; ]);; (* }}} *) @@ -48992,7 +48992,7 @@ let grid_conn2_induct_lemma = prove_by_refinement( IMATCH_MP_TAC EQ_EXT; NAME_CONFLICT_TAC; REWRITE_TAC[INR IN_SING]; - CONV_TAC (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); REWRITE_TAC[grid33_conn2]; (* - *) UND 3 THEN DISCH_THEN (THM_INTRO_TAC[`f`;`N`]); @@ -49283,7 +49283,7 @@ let rectangle_grid_subset = prove_by_refinement( (* {{{ proof *) [ REWRITE_TAC[SUBSET;rectangle_grid]; - FIRST_ASSUM DISJ_CASES_TAC THEN REP_BASIC_TAC THEN ASM_REWRITE_TAC[cell_clauses] THEN CONV_TAC (dropq_conv "m'"); + FIRST_ASSUM DISJ_CASES_TAC THEN REP_BASIC_TAC THEN ASM_REWRITE_TAC[cell_clauses] THEN (CONV_TAC "(dropq_conv \"m'\")") (dropq_conv "m'"); UND 5 THEN UND 6 THEN UND 7 THEN UND 8 THEN UND 1 THEN UND 2 THEN UND 3 THEN UND 4 THEN INT_ARITH_TAC; UND 5 THEN UND 6 THEN UND 7 THEN UND 8 THEN UND 1 THEN UND 2 THEN UND 3 THEN UND 4 THEN INT_ARITH_TAC; ]);; @@ -50492,7 +50492,7 @@ let conn2_sequence = prove_by_refinement( USEH 4802 (REWRITE_RULE[IMAGE_UNION;image_sing;UNIONS_UNION]); USEH 5681 (REWRITE_RULE[SUBSET;UNION;UNIONS;IMAGE]); REWRITE_TAC[SUBSET;UNIONS;IMAGE]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); NAME_CONFLICT_TAC; TSPECH `x` 7945; LEFTH 1695 "ei"; @@ -50524,7 +50524,7 @@ let conn2_sequence = prove_by_refinement( UNDH 3810 THEN ARITH_TAC; CONJ_TAC; UNDH 5153 THEN ARITH_TAC; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); NAME_CONFLICT_TAC; TSPECH `x` 5663; LEFTH 6587 "ej"; @@ -50632,7 +50632,7 @@ let conn2_sequence = prove_by_refinement( TSPECH `{(pointI m)}` 6278; TYPE_THEN `!r. (r <=| N) ==> (G r SUBSET UNIONS (IMAGE G {i | i <=| N}))` SUBAGOAL_TAC; REWRITE_TAC[UNIONS;IMAGE;SUBSET]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); TYPE_THEN `r` EXISTS_TAC; (* --- *) TYPE_THEN `!r. (r <=| N) ==> (curve_cell (G r) {(pointI m)} <=> (?e. G r e /\ closure top2 e (pointI m)))` SUBAGOAL_TAC; @@ -50964,7 +50964,7 @@ let conn2_sequence = prove_by_refinement( TYPE_THEN `A UNION B` UNABBREV_TAC; REWRITE_TAC[union_subset]; REWRITE_TAC[SUBSET;UNIONS;IMAGE]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); TYPE_THEN `SUC i` EXISTS_TAC; USEH 343 (REWRITE_RULE[SUBSET]); UNDH 3810 THEN ARITH_TAC; @@ -51004,7 +51004,7 @@ let conn2_sequence = prove_by_refinement( TYPE_THEN `A UNION B` UNABBREV_TAC; REWRITE_TAC[union_subset]; REWRITE_TAC[SUBSET;UNIONS;IMAGE]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); TYPE_THEN `SUC i` EXISTS_TAC; USEH 343 (REWRITE_RULE[SUBSET]); UNDH 3810 THEN ARITH_TAC; @@ -51058,7 +51058,7 @@ let conn2_sequence = prove_by_refinement( REWRITE_TAC[union_subset]; CONJ_TAC; REWRITE_TAC[SUBSET;UNIONS;IMAGE]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); TYPE_THEN `(SUC i)` EXISTS_TAC; USEH 343 (REWRITE_RULE[SUBSET]); UNDH 3810 THEN UNDH 5153 THEN ARITH_TAC; @@ -51305,7 +51305,7 @@ let simple_arc_constants = prove_by_refinement( REWRITE_TAC[IMAGE]; IMATCH_MP_TAC EQ_ANTISYM; CONJ_TAC; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); NAME_CONFLICT_TAC; LEFT_TAC "x''"; LEFT_TAC "x''"; @@ -51379,8 +51379,8 @@ let simple_arc_constants = prove_by_refinement( (* - *) TYPE_THEN `!k. ?dij. !i j. (k = (i,j)) /\ SUC i < j /\ j < N' ==> (&0 < dij /\ (!x y. B i x /\ B j y ==> dij <= d_euclid x y))` SUBAGOAL_TAC; REWRITE_TAC[PAIR_SPLIT]; - CONV_TAC (dropq_conv "i"); - CONV_TAC (dropq_conv "j"); + (CONV_TAC "(dropq_conv \"i\")") (dropq_conv "i"); + (CONV_TAC "(dropq_conv \"j\")") (dropq_conv "j"); TYPE_THEN `i = FST k` ABBREV_TAC ; TYPE_THEN `j = SND k` ABBREV_TAC ; RIGHT_TAC "y"; @@ -51441,7 +51441,7 @@ let simple_arc_constants = prove_by_refinement( POP_ASSUM_LIST (fun t->ALL_TAC); IMATCH_MP_TAC EQ_ANTISYM; CONJ_TAC; - CONV_TAC (dropq_conv "x'"); + (CONV_TAC "(dropq_conv \"x'\")") (dropq_conv "x'"); ASM_MESON_TAC[]; TYPE_THEN `x'` UNABBREV_TAC; ASM_MESON_TAC[]; @@ -52268,26 +52268,26 @@ let grid33_unions = prove_by_refinement( FIRST_ASSUM DISJ_CASES_TAC; TYPE_THEN `x` UNABBREV_TAC; FULL_REWRITE_TAC[cell_clauses]; - CONV_TAC (dropq_conv "x"); + (CONV_TAC "(dropq_conv \"x\")") (dropq_conv "x"); TYPE_THEN `m'` UNABBREV_TAC; UNDH 3867 THEN INT_ARITH_TAC; (* -- *) TYPE_THEN `x` UNABBREV_TAC; FULL_REWRITE_TAC[cell_clauses]; - CONV_TAC (dropq_conv "x"); + (CONV_TAC "(dropq_conv \"x\")") (dropq_conv "x"); TYPE_THEN `m'` UNABBREV_TAC; UNDH 2244 THEN INT_ARITH_TAC; (* - *) FIRST_ASSUM DISJ_CASES_TAC; TYPE_THEN `x` UNABBREV_TAC; FULL_REWRITE_TAC[cell_clauses]; - CONV_TAC (dropq_conv "m"); + (CONV_TAC "(dropq_conv \"m\")") (dropq_conv "m"); TYPE_THEN `x'` UNABBREV_TAC; UNDH 6786 THEN INT_ARITH_TAC; (* - *) TYPE_THEN `x` UNABBREV_TAC; FULL_REWRITE_TAC[cell_clauses]; - CONV_TAC (dropq_conv "m"); + (CONV_TAC "(dropq_conv \"m\")") (dropq_conv "m"); TYPE_THEN `x'` UNABBREV_TAC; UNDH 2096 THEN INT_ARITH_TAC; ]);; @@ -52381,8 +52381,8 @@ let int2_range_finite = prove_by_refinement( IMATCH_MP_TAC EQ_ANTISYM; CONJ_TAC; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "t'"); - CONV_TAC (dropq_conv "u'"); + (CONV_TAC "(dropq_conv \"t'\")") (dropq_conv "t'"); + (CONV_TAC "(dropq_conv \"u'\")") (dropq_conv "u'"); REWRITE_TAC[PAIR_SPLIT]; ASM_MESON_TAC[]; ASM_REWRITE_TAC[]; @@ -52406,8 +52406,8 @@ let int2_range_finite = prove_by_refinement( IMATCH_MP_TAC EQ_ANTISYM; CONJ_TAC; NAME_CONFLICT_TAC; - CONV_TAC (dropq_conv "t'"); - CONV_TAC (dropq_conv "u'"); + (CONV_TAC "(dropq_conv \"t'\")") (dropq_conv "t'"); + (CONV_TAC "(dropq_conv \"u'\")") (dropq_conv "u'"); REWRITE_TAC[PAIR_SPLIT]; ASM_MESON_TAC[]; ASM_REWRITE_TAC[]; @@ -52600,7 +52600,7 @@ let simple_arc_grid_properties = prove_by_refinement( REWRITE_TAC[grid]; TYPE_THEN `a` UNABBREV_TAC; REWRITE_TAC[IMAGE;UNIONS]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); TYPE_THEN `0` EXISTS_TAC; CONJ_TAC; UNDH 3476 THEN ARITH_TAC; @@ -52611,7 +52611,7 @@ let simple_arc_grid_properties = prove_by_refinement( REWRITE_TAC[grid]; TYPE_THEN `b` UNABBREV_TAC; REWRITE_TAC[IMAGE;UNIONS]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); TYPE_THEN `n` EXISTS_TAC; CONJ_TAC; ARITH_TAC; @@ -53357,7 +53357,7 @@ let simple_arc_conn_complement = prove_by_refinement( TYPE_THEN `E'` EXISTS_TAC; TYPE_THEN `E'` UNABBREV_TAC; REWRITE_TAC[SUBSET;UNIONS;IMAGE]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); TYPE_THEN `x` EXISTS_TAC; UNDH 5971 THEN ARITH_TAC; (* -D *) @@ -53446,7 +53446,7 @@ let simple_arc_conn_complement = prove_by_refinement( TYPE_THEN `!p. (euclid 2 p) /\ (!i. (SUC i <= (N-1)) ==> (&8 * d <= d_euclid (a (SUC i)) p)) ==> (unbounded_set E' p)` BACK_TAC; TYPE_THEN `!i. (SUC i <= (N-1)) ==> C' (a (SUC i))` SUBAGOAL_TAC; REWRITE_TAC[UNIONS;IMAGE]; - CONV_TAC (dropq_conv ("u")); + (CONV_TAC "(dropq_conv (\"u\"))") (dropq_conv ("u")); TYPE_THEN `i` EXISTS_TAC; CONJ_TAC; UNDH 1989 THEN ARITH_TAC; @@ -54180,7 +54180,7 @@ let jordan_curve_access = prove_by_refinement( ASM_MESON_TAC[subset_imp]; REWRITE_TAC[EMPTY_EXISTS;INTER]; CONJ_TAC; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); USEH 384 (MATCH_MP simple_arc_end_end); TSPECH `A'` 1640; FULL_REWRITE_TAC[EMPTY_EXISTS;INTER]; @@ -54573,7 +54573,7 @@ let k33_planar_graph_data_expand = prove_by_refinement( TSPECH `UNIONS (IMAGE (CA i) (UNIV))` 1295; UNDH 3086 THEN DISCH_THEN (THM_INTRO_TAC[]); REWRITE_TAC[SUBSET;UNIONS;IMAGE ]; - CONV_TAC (dropq_conv ("u")); + (CONV_TAC "(dropq_conv (\"u\"))") (dropq_conv ("u")); UNIFY_EXISTS_TAC; ASM_REWRITE_TAC[]; TSPECH `j` 7352; @@ -54629,7 +54629,7 @@ let k33_planar_graph_data_expand = prove_by_refinement( TSPECH `UNIONS (IMAGE (transpose CB j) (UNIV))` 6357; UNDH 3701 THEN DISCH_THEN (THM_INTRO_TAC[]); REWRITE_TAC[SUBSET;UNIONS;IMAGE;transpose ]; - CONV_TAC (dropq_conv ("u")); + (CONV_TAC "(dropq_conv (\"u\"))") (dropq_conv ("u")); UNIFY_EXISTS_TAC; ASM_REWRITE_TAC[]; TSPECH `i` 8438; @@ -55427,7 +55427,7 @@ let jordan_curve_no_inj3 = prove_by_refinement( TYPE_THEN `p i` EXISTS_TAC; REWRITE_TAC[INTER;UNIONS;IMAGE]; ASM_REWRITE_TAC[]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); THM_INTRO_TAC[`j`] three_t_not_sing; TYPE_THEN `j'` EXISTS_TAC; ASM_REWRITE_TAC[]; @@ -55538,7 +55538,7 @@ let jordan_curve_no_inj3 = prove_by_refinement( TYPE_THEN `x = u i j` SUBAGOAL_TAC; FIRST_ASSUM IMATCH_MP_TAC ; ASM_REWRITE_TAC[]; - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); TYPE_THEN `k` EXISTS_TAC; ASM_REWRITE_TAC[]; TYPE_THEN `x` UNABBREV_TAC; @@ -56752,11 +56752,11 @@ let simple_closed_curve_mk_C = prove_by_refinement( IMATCH_MP_TAC simple_closed_curve_euclid; ASM_REWRITE_TAC[]; (* -- *) - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); TYPE_THEN `Ca` UNABBREV_TAC; ASM_SIMP_TAC[mk_segment_h]; REWRITE_TAC[point_inj; PAIR_SPLIT;]; - CONV_TAC (dropq_conv "t"); + (CONV_TAC "(dropq_conv \"t\")") (dropq_conv "t"); ASM_REWRITE_TAC[]; REAL_ARITH_TAC; (* -A *) @@ -56822,11 +56822,11 @@ let simple_closed_curve_mk_C = prove_by_refinement( IMATCH_MP_TAC simple_closed_curve_euclid; ASM_REWRITE_TAC[]; (* -- *) - CONV_TAC (dropq_conv "u"); + (CONV_TAC "(dropq_conv \"u\")") (dropq_conv "u"); TYPE_THEN `Cb` UNABBREV_TAC; ASM_SIMP_TAC[mk_segment_h]; REWRITE_TAC[point_inj; PAIR_SPLIT;]; - CONV_TAC (dropq_conv "t"); + (CONV_TAC "(dropq_conv \"t\")") (dropq_conv "t"); ASM_REWRITE_TAC[]; REAL_ARITH_TAC; (* -B *) diff --git a/Jordan/metric_spaces.ml b/Jordan/metric_spaces.ml index f21940a0..5a36de77 100644 --- a/Jordan/metric_spaces.ml +++ b/Jordan/metric_spaces.ml @@ -401,7 +401,7 @@ let countable_prod = prove_by_refinement( CHO 3; CHO 2; TYPE_THEN `(x',x'')` EXISTS_TAC; - (CONV_TAC (TOP_DEPTH_CONV GEN_BETA_CONV)); + ((CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV)); ASM_MESON_TAC[]; ]);; @@ -600,7 +600,7 @@ let min_finite = prove_by_refinement( DISCH_THEN IMATCH_MP_TAC ; ASM_REWRITE_TAC[HAS_SIZE ]; DISCH_THEN IMATCH_MP_TAC ; - CONV_TAC (quant_left_CONV "k"); + (CONV_TAC "(quant_left_CONV \"k\")") (quant_left_CONV "k"); INDUCT_TAC; REWRITE_TAC[HAS_SIZE_0]; DISCH_ALL_TAC; @@ -2125,7 +2125,7 @@ let open_nbd = prove_by_refinement( GEN_TAC; EXISTS_TAC `A:A->bool`; ASM_MESON_TAC[SUBSET]; - CONV_TAC (quant_left_CONV "B"); + (CONV_TAC "(quant_left_CONV \"B\")") (quant_left_CONV "B"); DISCH_THEN CHOOSE_TAC; USE 1 (CONV_RULE NAME_CONFLICT_CONV); TYPE_THEN `UNIONS (IMAGE B A) = A` SUBGOAL_TAC; @@ -2137,8 +2137,8 @@ let open_nbd = prove_by_refinement( REWRITE_TAC[SUBSET;IN_UNIONS;IN_IMAGE]; DISCH_ALL_TAC; NAME_CONFLICT_TAC; - CONV_TAC (quant_left_CONV "x'"); - CONV_TAC (quant_left_CONV "x'"); + (CONV_TAC "(quant_left_CONV \"x'\")") (quant_left_CONV "x'"); + (CONV_TAC "(quant_left_CONV \"x'\")") (quant_left_CONV "x'"); EXISTS_TAC `x:A`; TYPE_THEN `B x` EXISTS_TAC ; ASM_REWRITE_TAC[]; @@ -2175,11 +2175,11 @@ let open_inters = prove_by_refinement( UND 2; UND 3; UND 4; - CONV_TAC (quant_left_CONV "n"); + (CONV_TAC "(quant_left_CONV \"n\")") (quant_left_CONV "n"); TYPE_THEN `V` SPEC2_TAC ; TYPE_THEN `U` SPEC2_TAC ; - CONV_TAC (quant_left_CONV "n"); - CONV_TAC (quant_left_CONV "n"); + (CONV_TAC "(quant_left_CONV \"n\")") (quant_left_CONV "n"); + (CONV_TAC "(quant_left_CONV \"n\")") (quant_left_CONV "n"); INDUCT_TAC; DISCH_ALL_TAC; ASM_MESON_TAC[HAS_SIZE_0]; @@ -3271,7 +3271,7 @@ let gen_induced = prove_by_refinement( DISCH_TAC; ASM_REWRITE_TAC[]; ASM_CASES_TAC `(Y:A->bool) (x:A)`; - CONV_TAC (relabel_bound_conv); + (CONV_TAC "(relabel_bound_conv)") (relabel_bound_conv); EXISTS_TAC `open_ball (X,d) (x:A) r`; CONJ_TAC; MATCH_MP_TAC open_ball_intersect; @@ -3840,7 +3840,7 @@ let complete_euclid = prove_by_refinement( ALL_TAC; (* #buffer "CE2"; *) DISCH_TAC; GEN_TAC; - CONV_TAC (quant_right_CONV "n"); + (CONV_TAC "(quant_right_CONV \"n\")") (quant_right_CONV "n"); DISCH_TAC; USE 2 (CONV_RULE (quant_left_CONV "eps")); USE 2 (CONV_RULE (quant_left_CONV "eps")); @@ -3862,7 +3862,7 @@ let complete_euclid = prove_by_refinement( DISCH_TAC; ASM_SIMP_TAC[d_euclid_n]; SUBGOAL_TAC `!(j:num). ?c. !i. (c <=| i) ==> ||. (L j 0 -. f i j) <. eps/(&.1 + &. n)`; - CONV_TAC (quant_left_CONV "c"); + (CONV_TAC "(quant_left_CONV \"c\")") (quant_left_CONV "c"); EXISTS_TAC `n':num->num`; REPEAT GEN_TAC; USE 2 ((SPEC `j:num`)); @@ -3873,7 +3873,7 @@ let complete_euclid = prove_by_refinement( ASM_REWRITE_TAC[]; ASM_SIMP_TAC[euclid1_abs]; REWRITE_TAC[proj;o_DEF]; - CONV_TAC (quant_left_CONV "c"); + (CONV_TAC "(quant_left_CONV \"c\")") (quant_left_CONV "c"); DISCH_THEN CHOOSE_TAC; ABBREV_TAC `t = (\u. (if (u <| n) then (c u) else (0)))`; SUBGOAL_TAC `?M. (!j. (t:num->num) j <=| M)`; @@ -4062,7 +4062,7 @@ let totally_bounded_subset = prove_by_refinement( GEN_TAC; USE 1 (SPEC `eps/(&.2)`); CHO 1; - CONV_TAC (quant_right_CONV "B"); + (CONV_TAC "(quant_right_CONV \"B\")") (quant_right_CONV "B"); DISCH_TAC; SUBGOAL_TAC `&.0 <. eps ==> &.0 <. eps/(&.2)`; DISCH_THEN (fun t-> MP_TAC (ONCE_REWRITE_RULE[GSYM REAL_HALF_DOUBLE] t)); @@ -4073,9 +4073,9 @@ let totally_bounded_subset = prove_by_refinement( (UND 1) THEN (ASM_REWRITE_TAC[]) THEN DISCH_ALL_TAC; SUBGOAL_TAC `!b. ?s. (?t. (t IN (b:A->bool) INTER S)) ==> (s IN b INTER S)`; GEN_TAC; - CONV_TAC (quant_left_CONV "t"); + (CONV_TAC "(quant_left_CONV \"t\")") (quant_left_CONV "t"); MESON_TAC[IN]; - CONV_TAC (quant_left_CONV "s"); + (CONV_TAC "(quant_left_CONV \"s\")") (quant_left_CONV "s"); DISCH_THEN CHOOSE_TAC; ALL_TAC; (* #set "TB1"; *) EXISTS_TAC `IMAGE (\c. (open_ball ((S:A->bool),d) ((s) c) eps)) (B:(A->bool)->bool)`; @@ -4100,8 +4100,8 @@ let totally_bounded_subset = prove_by_refinement( USE 7 (SPEC `b':A->bool`); REWRITE_TAC[IMAGE]; REWRITE_TAC[IN_ELIM_THM']; - CONV_TAC (quant_left_CONV "x"); - CONV_TAC (quant_left_CONV "x"); + (CONV_TAC "(quant_left_CONV \"x\")") (quant_left_CONV "x"); + (CONV_TAC "(quant_left_CONV \"x\")") (quant_left_CONV "x"); EXISTS_TAC `b':A->bool`; EXISTS_TAC `open_ball((S:A->bool),d) (s (b':A->bool)) eps`; ASM_REWRITE_TAC[IN]; @@ -4112,8 +4112,8 @@ let totally_bounded_subset = prove_by_refinement( REWRITE_TAC[IN_INTER]; ASM_MESON_TAC[IN]; UND 7; - CONV_TAC (quant_left_CONV "t"); - CONV_TAC (quant_left_CONV "t"); + (CONV_TAC "(quant_left_CONV \"t\")") (quant_left_CONV "t"); + (CONV_TAC "(quant_left_CONV \"t\")") (quant_left_CONV "t"); EXISTS_TAC `u:A`; DISCH_TAC; DISCH_TAC; @@ -4171,12 +4171,12 @@ let totally_bounded_subset = prove_by_refinement( REAL_ARITH_TAC; REWRITE_TAC[IMAGE;IN_ELIM_THM']; REWRITE_TAC[UNIONS;IN_ELIM_THM']; - CONV_TAC (quant_left_CONV "x"); - CONV_TAC (quant_left_CONV "x"); + (CONV_TAC "(quant_left_CONV \"x\")") (quant_left_CONV "x"); + (CONV_TAC "(quant_left_CONV \"x\")") (quant_left_CONV "x"); NAME_CONFLICT_TAC; - CONV_TAC (quant_left_CONV "x'"); + (CONV_TAC "(quant_left_CONV \"x'\")") (quant_left_CONV "x'"); X_GEN_TAC `c:A->bool`; - CONV_TAC (quant_left_CONV "u'"); + (CONV_TAC "(quant_left_CONV \"u'\")") (quant_left_CONV "u'"); GEN_TAC; DISCH_ALL_TAC; UND 10; @@ -4331,7 +4331,7 @@ let totally_bounded_cube = prove_by_refinement( REP_GEN_TAC; REWRITE_TAC[totally_bounded]; GEN_TAC; - CONV_TAC (quant_right_CONV "B"); + (CONV_TAC "(quant_right_CONV \"B\")") (quant_right_CONV "B"); DISCH_TAC; ABBREV_TAC `cent = {x | euclid n x /\ (!i. (?j. abs(x i) = (eps/(&.n+. &.1))*(&.j)) /\ (abs(x i) <=. (&.N) ) ) }`; SUBGOAL_TAC `&.0 <. (&.n +. &.1)`; @@ -4377,8 +4377,8 @@ let totally_bounded_cube = prove_by_refinement( USE 11 (CONV_RULE (quant_left_CONV "n")); UND 11 THEN (DISCH_THEN (X_CHOOSE_TAC `cs:real->num`)); NAME_CONFLICT_TAC; - CONV_TAC (quant_left_CONV "x'"); - CONV_TAC (quant_left_CONV "x'"); + (CONV_TAC "(quant_left_CONV \"x'\")") (quant_left_CONV "x'"); + (CONV_TAC "(quant_left_CONV \"x'\")") (quant_left_CONV "x'"); ABBREV_TAC `cx = \ (i:num) . if (&.0 <=. (x i)) then &(cs (x i))* s else --. (&.(cs (--. (x i))) * s )`; EXISTS_TAC `cx:num->real`; EXISTS_TAC `open_ball(cube,d_euclid) cx eps`; @@ -4615,9 +4615,9 @@ let center_FINITE = prove_by_refinement( EQ_TAC; DISCH_ALL_TAC; USE 4 (SPEC `x':A->bool`); - CONV_TAC (quant_left_CONV "b'"); - CONV_TAC (quant_left_CONV "b'"); - CONV_TAC (quant_left_CONV "b'"); + (CONV_TAC "(quant_left_CONV \"b'\")") (quant_left_CONV "b'"); + (CONV_TAC "(quant_left_CONV \"b'\")") (quant_left_CONV "b'"); + (CONV_TAC "(quant_left_CONV \"b'\")") (quant_left_CONV "b'"); EXISTS_TAC `x':(A->bool)`; EXISTS_TAC `(x:(A->bool)->A) x'`; REWRITE_TAC[]; @@ -4774,7 +4774,7 @@ let subsequence_rec = prove_by_refinement( ASM_REWRITE_TAC []; DISCH_THEN CHOOSE_TAC; EXISTS_TAC `C INTER (b:A->bool)`; - CONV_TAC (quant_right_CONV "s'"); + (CONV_TAC "(quant_right_CONV \"s'\")") (quant_right_CONV "s'"); SUBCONJ_TAC; REWRITE_TAC[INTER_SUBSET]; DISCH_TAC; @@ -4892,7 +4892,7 @@ let cauchy_subseq = prove_by_refinement( SUBGOAL_TAC ` (X SUBSET X) /\ (cond ((X:A->bool),0) 0)`; REWRITE_TAC[SUBSET_REFL]; EXPAND_TAC "cond"; - CONV_TAC (TOP_DEPTH_CONV GEN_BETA_CONV); + (CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV); USE 2 (REWRITE_RULE[sequence;SUBSET;IN_IMAGE;IN_UNIV]); USE 2 (REWRITE_RULE[IN]); USE 2 (CONV_RULE (NAME_CONFLICT_CONV)); @@ -4917,7 +4917,7 @@ let cauchy_subseq = prove_by_refinement( DISCH_ALL_TAC; SUBGOAL_TAC `!cs n. ?cs' . (FST cs SUBSET X) /\ (cond cs n)==>( (FST cs' SUBSET (FST cs)) /\(SND cs <| ((SND:((A->bool)#num)->num) cs') /\ (cond cs' (SUC n))) )`; DISCH_ALL_TAC; - CONV_TAC (quant_right_CONV "cs'"); + (CONV_TAC "(quant_right_CONV \"cs'\")") (quant_right_CONV "cs'"); DISCH_TAC; AND 11; H_REWRITE_RULE[GSYM o (HYP "6")] (HYP "11"); @@ -4934,7 +4934,7 @@ let cauchy_subseq = prove_by_refinement( EXISTS_TAC `(C':A->bool,s':num)`; ASM_REWRITE_TAC[FST;SND]; EXPAND_TAC "cond"; - (CONV_TAC (TOP_DEPTH_CONV GEN_BETA_CONV)); + ((CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV)); ASM_REWRITE_TAC[]; DISCH_TAC; ALL_TAC; (* "cs4" *) @@ -5005,7 +5005,7 @@ let cauchy_subseq = prove_by_refinement( ONCE_REWRITE_TAC[REAL_MUL_AC]; ASM_SIMP_TAC[REAL_INV_LT]; ASM_SIMP_TAC[GSYM REAL_LT_LDIV_EQ]; - CONV_TAC (quant_right_CONV "n"); + (CONV_TAC "(quant_right_CONV \"n\")") (quant_right_CONV "n"); DISCH_ALL_TAC; ASSUME_TAC (SPEC `R'/e` REAL_ARCH_SIMPLE); CHO 14; @@ -5024,21 +5024,21 @@ let cauchy_subseq = prove_by_refinement( AND 3; UND 3; EXPAND_TAC "cond"; - (CONV_TAC (TOP_DEPTH_CONV GEN_BETA_CONV)); + ((CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV)); DISCH_ALL_TAC; COPY 15; USE 15 (SPEC `i:num`); AND 15; UND 15; EXPAND_TAC "cond"; - (CONV_TAC (TOP_DEPTH_CONV GEN_BETA_CONV)); + ((CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV)); DISCH_ALL_TAC; COPY 20; USE 20 (SPEC `j:num`); AND 20; UND 20; EXPAND_TAC "cond"; - (CONV_TAC (TOP_DEPTH_CONV GEN_BETA_CONV)); + ((CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV)); DISCH_ALL_TAC; ABBREV_TAC `e2 = R * twopow (--: (&:n))`; REWRITE_TAC[o_DEF]; @@ -5173,7 +5173,7 @@ let countable_dense = prove_by_refinement( ASM_REWRITE_TAC[]; ASM_SIMP_TAC[FINITE_COUNTABLE]; ASM_MESON_TAC[]; - CONV_TAC (quant_left_CONV "z"); + (CONV_TAC "(quant_left_CONV \"z\")") (quant_left_CONV "z"); DISCH_THEN CHOOSE_TAC; TYPE_THEN `UNIONS (IMAGE z (UNIV:num->bool))` EXISTS_TAC; CONJ_TAC; @@ -5401,7 +5401,7 @@ let compact_closed = prove_by_refinement( ONCE_ASM_SIMP_TAC[open_nbd]; TYPE_THEN `C = UNIONS U DIFF K` ABBREV_TAC; GEN_TAC; - CONV_TAC (quant_right_CONV "B"); + (CONV_TAC "(quant_right_CONV \"B\")") (quant_right_CONV "B"); DISCH_ALL_TAC; (* cc1 *) TYPE_THEN `!y. (K y) ==> (?A B. (U A /\ U B /\ A x /\ B y /\ (A INTER B = {})))` SUBGOAL_TAC; @@ -5442,8 +5442,8 @@ let compact_closed = prove_by_refinement( ASM_MESON_TAC[]; REWRITE_TAC[SUBSET;IN_IMAGE]; NAME_CONFLICT_TAC; - CONV_TAC (quant_left_CONV "x'"); - CONV_TAC (quant_left_CONV "x'"); + (CONV_TAC "(quant_left_CONV \"x'\")") (quant_left_CONV "x'"); + (CONV_TAC "(quant_left_CONV \"x'\")") (quant_left_CONV "x'"); ASM_MESON_TAC[IN]; DISCH_TAC; REWR 3; @@ -5575,7 +5575,7 @@ let compact_totally_bounded = prove_by_refinement( REWRITE_TAC[totally_bounded;compact]; DISCH_ALL_TAC; DISCH_ALL_TAC; - CONV_TAC (quant_right_CONV "B"); + (CONV_TAC "(quant_right_CONV \"B\")") (quant_right_CONV "B"); DISCH_TAC; TYPE_THEN `IMAGE (\x. open_ball(X,d) x eps) X` (USE 2 o SPEC); TYPE_THEN `X SUBSET UNIONS (IMAGE (\x. open_ball (X,d) x eps) X)` SUBGOAL_TAC; @@ -5584,8 +5584,8 @@ let compact_totally_bounded = prove_by_refinement( NAME_CONFLICT_TAC; REWRITE_TAC[IN]; DISCH_TAC; - CONV_TAC (quant_left_CONV "x'"); - CONV_TAC (quant_left_CONV "x'"); + (CONV_TAC "(quant_left_CONV \"x'\")") (quant_left_CONV "x'"); + (CONV_TAC "(quant_left_CONV \"x'\")") (quant_left_CONV "x'"); TYPE_THEN `x` EXISTS_TAC; TYPE_THEN `open_ball (X,d) x eps` EXISTS_TAC; ASM_REWRITE_TAC[]; @@ -5656,8 +5656,8 @@ let finite_inters = prove_by_refinement( USE 2 (REWRITE_RULE[INTERS_EQ_EMPTY]); TYPE_THEN `x` (USE 2 o SPEC); CHO 2; - CONV_TAC (quant_left_CONV "x'"); - CONV_TAC (quant_left_CONV "x'"); + (CONV_TAC "(quant_left_CONV \"x'\")") (quant_left_CONV "x'"); + (CONV_TAC "(quant_left_CONV \"x'\")") (quant_left_CONV "x'"); TYPE_THEN `a` EXISTS_TAC; TYPE_THEN `UNIONS U DIFF a` EXISTS_TAC ; ASM_REWRITE_TAC[IN]; @@ -5828,7 +5828,7 @@ let cauchy_subseq_sublemma = prove_by_refinement( SUBGOAL_TAC ` (X SUBSET X) /\ (cond ((X:A->bool),0) 0)`; REWRITE_TAC[SUBSET_REFL]; EXPAND_TAC "cond"; - CONV_TAC (TOP_DEPTH_CONV GEN_BETA_CONV); + (CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV); USE 2 (REWRITE_RULE[sequence;SUBSET;IN_IMAGE;IN_UNIV]); USE 2 (REWRITE_RULE[IN]); USE 2 (CONV_RULE (NAME_CONFLICT_CONV)); @@ -5853,7 +5853,7 @@ let cauchy_subseq_sublemma = prove_by_refinement( DISCH_ALL_TAC; SUBGOAL_TAC `!cs n. ?cs' . (FST cs SUBSET X) /\ (cond cs n)==>( (FST cs' SUBSET (FST cs)) /\(SND cs <| ((SND:((A->bool)#num)->num) cs') /\ (cond cs' (SUC n))) )`; DISCH_ALL_TAC; - CONV_TAC (quant_right_CONV "cs'"); + (CONV_TAC "(quant_right_CONV \"cs'\")") (quant_right_CONV "cs'"); DISCH_TAC; AND 11; H_REWRITE_RULE[GSYM o (HYP "6")] (HYP "11"); @@ -5870,7 +5870,7 @@ let cauchy_subseq_sublemma = prove_by_refinement( EXISTS_TAC `(C':A->bool,s':num)`; ASM_REWRITE_TAC[FST;SND]; EXPAND_TAC "cond"; - (CONV_TAC (TOP_DEPTH_CONV GEN_BETA_CONV)); + ((CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV)); ASM_REWRITE_TAC[]; DISCH_TAC; ALL_TAC; (* "cs4" *) @@ -5951,7 +5951,7 @@ let subseq_cauchy = prove_by_refinement( TYPE_THEN `eps/(&.2)` (USE 4 o SPEC); CHO 4; CHO 2; - CONV_TAC (quant_right_CONV "n"); + (CONV_TAC "(quant_right_CONV \"n\")") (quant_right_CONV "n"); DISCH_ALL_TAC; USE 2 (REWRITE_RULE[REAL_LT_HALF1]); USE 4 (REWRITE_RULE[REAL_LT_HALF1]); @@ -6081,7 +6081,7 @@ let compact_complete = prove_by_refinement( USE 12 (SPEC `m:num`); UND 12; EXPAND_TAC "cond"; - (CONV_TAC (TOP_DEPTH_CONV GEN_BETA_CONV)); + ((CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV)); REWRITE_TAC[SUBSET]; MESON_TAC[IN;REAL_ARITH `x <. y ==> x <=. y`]; REWRITE_TAC[SUBSET;IN]; @@ -6097,7 +6097,7 @@ let compact_complete = prove_by_refinement( AND 12; UND 12; EXPAND_TAC "cond"; - (CONV_TAC (TOP_DEPTH_CONV GEN_BETA_CONV)); + ((CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV)); MESON_TAC[]; ASM_REWRITE_TAC [NOT_IN_EMPTY]; DISCH_TAC; @@ -6117,7 +6117,7 @@ let compact_complete = prove_by_refinement( ASM_REWRITE_TAC[]; DISCH_ALL_TAC; DISCH_ALL_TAC; - CONV_TAC (quant_right_CONV "n"); + (CONV_TAC "(quant_right_CONV \"n\")") (quant_right_CONV "n"); DISCH_ALL_TAC; TYPEL_THEN [`(&.2)*R`;`eps`] (fun t-> ASSUME_TAC (ISPECL t twopow_eps)); CHO 18; @@ -6144,7 +6144,7 @@ let compact_complete = prove_by_refinement( USE 12 (SPEC `n:num`); UND 12; EXPAND_TAC "cond"; - (CONV_TAC (TOP_DEPTH_CONV GEN_BETA_CONV)); + ((CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV)); REWRITE_TAC[SUBSET]; MESON_TAC[IN;REAL_ARITH `x <. y ==> x <=. y`]; DISCH_TAC; @@ -6158,7 +6158,7 @@ let compact_complete = prove_by_refinement( AND 12; UND 12; EXPAND_TAC "cond"; - (CONV_TAC (TOP_DEPTH_CONV GEN_BETA_CONV)); + ((CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV)); DISCH_ALL_TAC; TYPE_THEN `((f o sn) i) IN closed_ball (X,d) (f (sn n)) (R * twopow (--: (&:n)))` SUBGOAL_TAC; KILL 1; @@ -6327,7 +6327,7 @@ let countable_cover = prove_by_refinement( ALL_TAC ; (* "cc4"; *) SUBCONJ_TAC ; TYPE_THEN `open_ball (X,d) z (twopow (--: (&:(n +| 1)))) SUBSET (open_ball (X,d) x (twopow (--: (&:n))))` SUBGOAL_TAC ; - CONV_TAC (RAND_CONV (ONCE_REWRITE_CONV [(GSYM twopow_double)])); + (CONV_TAC "(RAND_CONV (ONCE_REWRITE_CONV [(GSYM twopow_double)]))") (RAND_CONV (ONCE_REWRITE_CONV [(GSYM twopow_double)])); IMATCH_MP_TAC ball_subset_ball; ASM_REWRITE_TAC[]; UND 0; @@ -6550,7 +6550,7 @@ let compact_uniformly_continuous = prove_by_refinement( ASM_SIMP_TAC[GSYM top_of_metric_unions;SUBSET_REFL ]; DISCH_TAC; TYPE_THEN `cov` (USE 3 o SPEC); - CONV_TAC (quant_right_CONV "delta"); + (CONV_TAC "(quant_right_CONV \"delta\")") (quant_right_CONV "delta"); DISCH_TAC; WITH 6 (ONCE_REWRITE_RULE [GSYM REAL_LT_HALF1]); REWR 0; @@ -6643,7 +6643,7 @@ let compact_uniformly_continuous = prove_by_refinement( DISCH_TAC; ALL_TAC ; (* cc3 *) TYPE_THEN `dX x' y < delta x'` SUBGOAL_TAC; - CONV_TAC (RAND_CONV (ONCE_REWRITE_CONV [GSYM REAL_HALF_DOUBLE])); + (CONV_TAC "(RAND_CONV (ONCE_REWRITE_CONV [GSYM REAL_HALF_DOUBLE]))") (RAND_CONV (ONCE_REWRITE_CONV [GSYM REAL_HALF_DOUBLE])); IMATCH_MP_TAC (REAL_ARITH `(dX x' x <. u) /\ (dX x y <. u) /\ (dX x' y <= dX x' x +. dX x y) ==> (dX x' y <. u + u)`); ASM_REWRITE_TAC[]; CONJ_TAC; @@ -6662,7 +6662,7 @@ let compact_uniformly_continuous = prove_by_refinement( TYPE_THEN `X` EXISTS_TAC; ASM_REWRITE_TAC[]; DISCH_ALL_TAC; - CONV_TAC (RAND_CONV (ONCE_REWRITE_CONV [GSYM REAL_HALF_DOUBLE])); + (CONV_TAC "(RAND_CONV (ONCE_REWRITE_CONV [GSYM REAL_HALF_DOUBLE]))") (RAND_CONV (ONCE_REWRITE_CONV [GSYM REAL_HALF_DOUBLE])); TYPE_THEN `(dY (f x) (f x') <. u0) /\ (dY (f x') (f y) <. u0) /\ (dY (f x) (f y) <= (dY (f x) (f x')) + (dY (f x') (f y))) ==> ((dY (f x) (f y)) < u0 + u0)` (fun t-> (IMATCH_MP_TAC (REAL_ARITH t))); TYPE_THEN `x'` (USE 0 o SPEC); AND 0; @@ -6751,8 +6751,8 @@ let image_compact = prove_by_refinement( REWRITE_TAC[IN_ELIM_THM';IN ]; DISCH_ALL_TAC; CHO 5; - CONV_TAC (quant_left_CONV "x"); - CONV_TAC (quant_left_CONV "x"); + (CONV_TAC "(quant_left_CONV \"x\")") (quant_left_CONV "x"); + (CONV_TAC "(quant_left_CONV \"x\")") (quant_left_CONV "x"); TYPE_THEN `u` EXISTS_TAC; NAME_CONFLICT_TAC; TYPE_THEN `preimage (UNIONS U) f u` EXISTS_TAC; @@ -6779,8 +6779,8 @@ let image_compact = prove_by_refinement( REWRITE_TAC[SUBSET;IN_IMAGE]; REWRITE_TAC[IN;UNIONS;IN_ELIM_THM' ]; NAME_CONFLICT_TAC; - CONV_TAC (quant_left_CONV "x'"); - CONV_TAC (quant_left_CONV "x'"); + (CONV_TAC "(quant_left_CONV \"x'\")") (quant_left_CONV "x'"); + (CONV_TAC "(quant_left_CONV \"x'\")") (quant_left_CONV "x'"); DISCH_ALL_TAC; ASM_REWRITE_TAC[]; AND 1; @@ -6903,8 +6903,8 @@ let induced_compact = prove_by_refinement( REWR 2; X_CHO 2 `v:A->bool`; NAME_CONFLICT_TAC; - CONV_TAC (quant_left_CONV "x'"); - CONV_TAC (quant_left_CONV "x'"); + (CONV_TAC "(quant_left_CONV \"x'\")") (quant_left_CONV "x'"); + (CONV_TAC "(quant_left_CONV \"x'\")") (quant_left_CONV "x'"); TYPE_THEN `v` EXISTS_TAC; TYPE_THEN `u v` EXISTS_TAC; ASM_REWRITE_TAC[]; diff --git a/Jordan/misc_defs_and_lemmas.ml b/Jordan/misc_defs_and_lemmas.ml index af43e93e..4c39db51 100644 --- a/Jordan/misc_defs_and_lemmas.ml +++ b/Jordan/misc_defs_and_lemmas.ml @@ -152,7 +152,7 @@ let ABS_SQUARE = prove_by_refinement( [ REP_GEN_TAC; - CONV_TAC (SUBS_CONV[SPEC `t:real` (REWRITE_RULE[POW_2] (GSYM REAL_POW2_ABS))]); + (CONV_TAC "(SUBS_CONV[SPEC `t:real` (REWRITE_RULE[POW_2] (GSYM REAL_POW2_ABS))])") (SUBS_CONV[SPEC `t:real` (REWRITE_RULE[POW_2] (GSYM REAL_POW2_ABS))]); ASSUME_TAC REAL_ABS_POS; USE 0 (SPEC `t:real`); ABBREV_TAC `(b:real) = (abs t)`; @@ -170,7 +170,7 @@ let ABS_SQUARE_LE = prove_by_refinement( [ REP_GEN_TAC; - CONV_TAC (SUBS_CONV[SPEC `t:real` (REWRITE_RULE[POW_2] (GSYM REAL_POW2_ABS))]); + (CONV_TAC "(SUBS_CONV[SPEC `t:real` (REWRITE_RULE[POW_2] (GSYM REAL_POW2_ABS))])") (SUBS_CONV[SPEC `t:real` (REWRITE_RULE[POW_2] (GSYM REAL_POW2_ABS))]); ASSUME_TAC REAL_ABS_POS; USE 0 (SPEC `t:real`); ABBREV_TAC `(b:real) = (abs t)`; @@ -193,7 +193,7 @@ let twopow_eps = prove_by_refinement( ONCE_REWRITE_TAC[REAL_MUL_AC]; ASM_SIMP_TAC[REAL_INV_LT]; ASM_SIMP_TAC[GSYM REAL_LT_LDIV_EQ]; - CONV_TAC (quant_right_CONV "n"); + (CONV_TAC "(quant_right_CONV \"n\")") (quant_right_CONV "n"); DISCH_ALL_TAC; ASSUME_TAC (SPEC `R/e` REAL_ARCH_SIMPLE); CHO 3; @@ -216,7 +216,7 @@ let prod_EXISTS = prove_by_refinement( [ (CHOOSE_TAC o prove_recursive_functions_exist num_RECURSION) `(!f n. sm n 0 f = &1) /\ (!f m n. sm n (SUC m) f = sm n m f * f(n + m))` ; EXISTS_TAC `\(n,m) f. (sm:num->num->(num->real)->real) n m f`; - CONV_TAC(DEPTH_CONV GEN_BETA_CONV) THEN ASM_REWRITE_TAC[] + (CONV_TAC "(DEPTH_CONV GEN_BETA_CONV)") (DEPTH_CONV GEN_BETA_CONV) THEN ASM_REWRITE_TAC[] ]);; (* }}} *) @@ -750,16 +750,16 @@ let NUM2_COUNTABLE = prove_by_refinement( MESON_TAC[]; SPEC_TAC (`x':num`,`a:num`); SPEC_TAC (`y':num`,`b:num`); - CONV_TAC (quant_left_CONV "t"); - CONV_TAC (quant_left_CONV "t"); - CONV_TAC (quant_left_CONV "t"); + (CONV_TAC "(quant_left_CONV \"t\")") (quant_left_CONV "t"); + (CONV_TAC "(quant_left_CONV \"t\")") (quant_left_CONV "t"); + (CONV_TAC "(quant_left_CONV \"t\")") (quant_left_CONV "t"); INDUCT_TAC; REDUCE_TAC; REP_GEN_TAC; DISCH_THEN (fun t -> REWRITE_TAC[t]); EXISTS_TAC `0`; ASM_REWRITE_TAC[]; - CONV_TAC (quant_left_CONV "a"); + (CONV_TAC "(quant_left_CONV \"a\")") (quant_left_CONV "a"); INDUCT_TAC; REDUCE_TAC; GEN_TAC; @@ -771,7 +771,7 @@ let NUM2_COUNTABLE = prove_by_refinement( UND 0; UND 1; DISCH_THEN (fun t-> REWRITE_TAC[GSYM t]); - CONV_TAC (ONCE_DEPTH_CONV GEN_BETA_CONV); + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV); BETA_TAC; REDUCE_TAC; DISCH_ALL_TAC; @@ -794,7 +794,7 @@ let NUM2_COUNTABLE = prove_by_refinement( UND 0; UND 2; DISCH_THEN (fun t->REWRITE_TAC[GSYM t]); - CONV_TAC (ONCE_DEPTH_CONV GEN_BETA_CONV); + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV); BETA_TAC; REDUCE_TAC; DISCH_THEN (fun t->REWRITE_TAC[t]); @@ -975,8 +975,8 @@ let INTER_FINITE = prove_by_refinement( (* {{{ proof *) [ - CONV_TAC (quant_right_CONV "t"); - CONV_TAC (quant_right_CONV "s"); + (CONV_TAC "(quant_right_CONV \"t\")") (quant_right_CONV "t"); + (CONV_TAC "(quant_right_CONV \"s\")") (quant_right_CONV "s"); SUBCONJ_TAC; DISCH_ALL_TAC; SUBGOAL_TAC `s INTER t SUBSET (s:A->bool)`; @@ -1011,10 +1011,10 @@ let SUBSET_SUC = prove_by_refinement( DISCH_TAC; REP_GEN_TAC; MP_TAC (prove( `?n. n = j -| i`,MESON_TAC[])); - CONV_TAC (quant_left_CONV "n"); + (CONV_TAC "(quant_left_CONV \"n\")") (quant_left_CONV "n"); SPEC_TAC (`i:num`,`i:num`); SPEC_TAC (`j:num`,`j:num`); - REP 2( CONV_TAC (quant_left_CONV "n")); + REP 2( (CONV_TAC "(quant_left_CONV \"n\")") (quant_left_CONV "n")); INDUCT_TAC; REP_GEN_TAC; DISCH_ALL_TAC; @@ -1060,10 +1060,10 @@ let SUBSET_SUC2 = prove_by_refinement( DISCH_TAC; REP_GEN_TAC; MP_TAC (prove( `?n. n = j -| i`,MESON_TAC[])); - CONV_TAC (quant_left_CONV "n"); + (CONV_TAC "(quant_left_CONV \"n\")") (quant_left_CONV "n"); SPEC_TAC (`i:num`,`i:num`); SPEC_TAC (`j:num`,`j:num`); - REP 2( CONV_TAC (quant_left_CONV "n")); + REP 2( (CONV_TAC "(quant_left_CONV \"n\")") (quant_left_CONV "n")); INDUCT_TAC; REP_GEN_TAC; DISCH_ALL_TAC; @@ -1126,8 +1126,8 @@ let INFINITE_PIGEONHOLE = prove_by_refinement( USE 2 (REWRITE_RULE[IN]); REWR 2; CHO 2; - CONV_TAC (quant_left_CONV "x"); - CONV_TAC (quant_left_CONV "x"); + (CONV_TAC "(quant_left_CONV \"x\")") (quant_left_CONV "x"); + (CONV_TAC "(quant_left_CONV \"x\")") (quant_left_CONV "x"); EXISTS_TAC (`u:B->bool`); NAME_CONFLICT_TAC; EXISTS_TAC (`{i' | I' i' /\ (C INTER u) ((f:A->B) i')}`); @@ -1793,7 +1793,7 @@ let sum_vector_EXISTS = prove_by_refinement( [ (CHOOSE_TAC o prove_recursive_functions_exist num_RECURSION) `(!f n. sm n 0 f = (\n. &0)) /\ (!f m n. sm n (SUC m) f = sm n m f + f(n + m))`; EXISTS_TAC `\(n,m) f. (sm:num->num->(num->(num->real))->(num->real)) n m f`; - CONV_TAC(DEPTH_CONV GEN_BETA_CONV); + (CONV_TAC "(DEPTH_CONV GEN_BETA_CONV)") (DEPTH_CONV GEN_BETA_CONV); ASM_REWRITE_TAC[]; ]);; (* }}} *) @@ -2165,9 +2165,9 @@ let PI_EST2 = prove_by_refinement( REWRITE_TAC[pi_fun;pi_bound_fun]; COND_CASES_TAC; ASM_REWRITE_TAC[]; - CONV_TAC (NUM_REDUCE_CONV); - (CONV_TAC (REAL_RAT_REDUCE_CONV)); - CONV_TAC (RAND_CONV (REWR_CONV (REAL_ARITH `a*b = b*.a`))); + (CONV_TAC "(NUM_REDUCE_CONV)") (NUM_REDUCE_CONV); + ((CONV_TAC "(REAL_RAT_REDUCE_CONV)") (REAL_RAT_REDUCE_CONV)); + (CONV_TAC "(RAND_CONV (REWR_CONV (REAL_ARITH `a*b = b*.a`)))") (RAND_CONV (REWR_CONV (REAL_ARITH `a*b = b*.a`))); REWRITE_TAC[REAL_ABS_MUL;REAL_ABS_INV;REAL_ABS_POW;prove(`||.(&.n) = (&.n)`,MESON_TAC[REAL_POS;REAL_ABS_REFL])]; MATCH_MP_TAC (prove(`!x y z. (&.0 <. z /\ (y <=. x) ==> (z*y <=. (z*x)))`,MESON_TAC[REAL_LE_LMUL_EQ])); ASSUME_TAC (REWRITE_RULE[] (REAL_RAT_REDUCE_CONV `(&.622)/(&.819) <=. (&.15)/(&.16)`)); @@ -2216,7 +2216,7 @@ let GP16a = prove_by_refinement( MATCH_MP_TAC (prove (`(x=y) ==> ((a sums x) ==> (a sums y))`,MESON_TAC[])); MATCH_MP_TAC (REAL_ARITH `(b*(a*c) = (b*(&.1))) ==> ((a*b)*c = b)`); AP_TERM_TAC; - CONV_TAC (REAL_RAT_REDUCE_CONV); + (CONV_TAC "(REAL_RAT_REDUCE_CONV)") (REAL_RAT_REDUCE_CONV); ]);; (* }}} *) diff --git a/Jordan/tactics_ext2.ml b/Jordan/tactics_ext2.ml index 9042d381..11531f72 100644 --- a/Jordan/tactics_ext2.ml +++ b/Jordan/tactics_ext2.ml @@ -95,7 +95,7 @@ let _ = let NAME_CONFLICT_CONV = relabel_bound_conv;; -let NAME_CONFLICT_TAC = CONV_TAC (relabel_bound_conv);; +let NAME_CONFLICT_TAC = (CONV_TAC "(relabel_bound_conv)") (relabel_bound_conv);; (* renames given bound variables *) let alpha_conv env tm = ALPHA tm (deep_alpha env tm);; @@ -162,7 +162,7 @@ let SELECT_TAC = enough to do this by itself. *) let unbeta = prove( `!(P:A->bool) (Q:A->bool). (Q ((@) P)) <=> (\t. Q t) ((@) P)`,MESON_TAC[]) in - let unbeta_tac = CONV_TAC (HIGHER_REWRITE_CONV[unbeta] true) in + let unbeta_tac = (CONV_TAC "(HIGHER_REWRITE_CONV[unbeta] true)") (HIGHER_REWRITE_CONV[unbeta] true) in unbeta_tac THEN (MATCH_MP_TAC SELECT_THM) THEN BETA_TAC THEN CONJ_TAC THENL[ (DISCH_THEN (fun t-> ALL_TAC)) THEN GEN_TAC; @@ -311,7 +311,7 @@ let PURE_ONCE_REWRITE_ORD_CONV ord force thl = let ONCE_REWRITE_ORD_CONV ord force thl = GENERAL_REWRITE_ORD_CONV ord false force ONCE_DEPTH_CONV (basic_net()) thl;; -let REWRITE_ORD_TAC ord force thl = CONV_TAC(REWRITE_ORD_CONV ord force thl);; +let REWRITE_ORD_TAC ord force thl = (CONV_TAC "(REWRITE_ORD_CONV ord force thl)") (REWRITE_ORD_CONV ord force thl);; @@ -405,7 +405,7 @@ let real_poly_conv = REWRITE_CONV[REAL_ARITH `(&.0 * x = &.0) /\ (x + &.0 = x) /\ (&.0 + x = x)`];; -let real_poly_tac = CONV_TAC real_poly_conv;; +let real_poly_tac = (CONV_TAC "real_poly_conv") real_poly_conv;; let test_real_poly_tac = prove_by_refinement( `!x y . (x + (&.2)*y)*(x- (&.2)*y) = (x*x -. (&.4)*y*y)`, @@ -564,7 +564,7 @@ let ineq_cert_gen_tac v cert = (TAUT `(A ==> B==>C) ==> (A /\ B ==> C)`))) THEN REWRITE_TAC[REAL_MUL_LID] THEN DISCH_THEN MATCH_MP_TAC THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_LE_POW_2; REAL_ARITH `(&.0 < x ==> &.0 <= x) /\ (&.0 + x = x) /\ (a <= b ==> &.0 <= b - a) /\ @@ -1007,9 +1007,9 @@ let LEFT i t = (USE i (CONV_RULE (quant_left_CONV t)));; let RIGHT i t = (USE i (CONV_RULE (quant_right_CONV t)));; -let LEFT_TAC t = ((CONV_TAC (quant_left_CONV t)));; +let LEFT_TAC t = (((CONV_TAC "(quant_left_CONV t)") (quant_left_CONV t)));; -let RIGHT_TAC t = ( (CONV_TAC (quant_right_CONV t)));; +let RIGHT_TAC t = ( ((CONV_TAC "(quant_right_CONV t)") (quant_right_CONV t)));; let INR = REWRITE_RULE[IN];; @@ -1236,7 +1236,7 @@ let IMATCH_MP imp ant = MATCH_MP (INR imp) (INR ant);; let IMATCH_MP_TAC imp = MATCH_MP_TAC (INR imp);; -let GBETA_TAC = (CONV_TAC (TOP_DEPTH_CONV GEN_BETA_CONV));; +let GBETA_TAC = ((CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV));; let GBETA_RULE = (CONV_RULE (TOP_DEPTH_CONV GEN_BETA_CONV));; (* breaks antecedent into multiple cases *) diff --git a/LP_arith/lp_arith.ml b/LP_arith/lp_arith.ml index 76f3fcd9..d0d3d710 100644 --- a/LP_arith/lp_arith.ml +++ b/LP_arith/lp_arith.ml @@ -125,4 +125,4 @@ let LP_ARITH = and pure = GEN_REAL_ARITH LP_PROVER in fun tm -> let th = init tm in EQ_MP (SYM th) (pure(rand(concl th)));; -let LP_ARITH_TAC = CONV_TAC LP_ARITH;; +let LP_ARITH_TAC = (CONV_TAC "LP_ARITH") LP_ARITH;; diff --git a/Library/analysis.ml b/Library/analysis.ml index 8fa975af..e5a3006d 100644 --- a/Library/analysis.ml +++ b/Library/analysis.ml @@ -374,7 +374,7 @@ let REAL_RNEG_UNIQ = prove( let REAL_NEG_ADD = prove( `!x y. --(x + y) = (--x) + (--y)`, - REPEAT GEN_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[GSYM REAL_LNEG_UNIQ] THEN ONCE_REWRITE_TAC[AC REAL_ADD_AC `(a + b) + (c + d) = (a + c) + (b + d)`] THEN @@ -392,7 +392,7 @@ let REAL_MUL_RZERO = prove( let REAL_NEG_LMUL = prove( `!x y. --(x * y) = (--x) * y`, - REPEAT GEN_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[GSYM REAL_LNEG_UNIQ; GSYM REAL_RDISTRIB; REAL_ADD_LINV; REAL_MUL_LZERO]);; @@ -403,7 +403,7 @@ let REAL_NEG_RMUL = prove( let REAL_NEGNEG = prove( `!x. --(--x) = x`, - GEN_TAC THEN CONV_TAC SYM_CONV THEN + GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[GSYM REAL_LNEG_UNIQ; REAL_ADD_RINV]);; let REAL_NEG_MUL2 = prove( @@ -464,7 +464,7 @@ let REAL_LT_LE = prove( let lemma = TAUT `~(a /\ ~a)` in REPEAT GEN_TAC THEN REWRITE_TAC[REAL_LE_LT; RIGHT_AND_OVER_OR; lemma] THEN EQ_TAC THEN DISCH_TAC THEN ASM_REWRITE_TAC[] THEN - POP_ASSUM MP_TAC THEN CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[] THEN + POP_ASSUM MP_TAC THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[] THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[REAL_LT_REFL]);; let REAL_LT_IMP_LE = prove( @@ -535,7 +535,7 @@ let REAL_LE_SQUARE = prove( let REAL_LT_01 = prove( `&0 < &1`, REWRITE_TAC[REAL_LT_LE; REAL_LE_01] THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN REWRITE_TAC[REAL_10]);; let REAL_LE_LADD = prove( @@ -605,7 +605,7 @@ let REAL_SUB_0 = prove( let REAL_LE_DOUBLE = prove( `!x. &0 <= x + x <=> &0 <= x`, GEN_TAC THEN EQ_TAC THENL - [CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[REAL_NOT_LE] THEN + [(CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[REAL_NOT_LE] THEN DISCH_THEN(MP_TAC o MATCH_MP REAL_LT_ADD2 o W CONJ); DISCH_THEN(MP_TAC o MATCH_MP REAL_LE_ADD2 o W CONJ)] THEN REWRITE_TAC[REAL_ADD_LID]);; @@ -707,7 +707,7 @@ let REAL_INVINV = prove( let REAL_LT_IMP_NE = prove( `!x y. x < y ==> ~(x = y)`, - REPEAT GEN_TAC THEN CONV_TAC CONTRAPOS_CONV THEN + REPEAT GEN_TAC THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[] THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[REAL_LT_REFL]);; @@ -773,7 +773,7 @@ let REAL_LINV_UNIQ = prove( REWRITE_TAC[REAL_MUL_ASSOC] THEN FIRST_ASSUM(fun th -> REWRITE_TAC[MATCH_MP REAL_MUL_LINV th]) THEN REWRITE_TAC[REAL_MUL_LID; REAL_MUL_RID] THEN - DISCH_THEN SUBST1_TAC THEN CONV_TAC SYM_CONV THEN + DISCH_THEN SUBST1_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN POP_ASSUM MP_TAC THEN MATCH_ACCEPT_TAC REAL_INVINV);; let REAL_RINV_UNIQ = prove( @@ -850,7 +850,7 @@ let REAL_MUL = prove( let REAL_INV1 = prove( `inv(&1) = &1`, - CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_LINV_UNIQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_LINV_UNIQ THEN REWRITE_TAC[REAL_MUL_LID]);; let REAL_DIV_LZERO = prove( @@ -860,7 +860,7 @@ let REAL_DIV_LZERO = prove( let REAL_LT_NZ = prove( `!n. ~(&n = &0) <=> (&0 < &n)`, GEN_TAC THEN REWRITE_TAC[REAL_LT_LE] THEN - CONV_TAC(RAND_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN + (CONV_TAC "(RAND_CONV(ONCE_DEPTH_CONV SYM_CONV))") (RAND_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN ASM_CASES_TAC `&n = &0` THEN ASM_REWRITE_TAC[REAL_LE_REFL; REAL_POS]);; let REAL_NZ_IMP_LT = prove( @@ -922,7 +922,7 @@ let REAL_LT_HALF1 = prove( let REAL_LT_HALF2 = prove( `!d. (d / &2) < d <=> &0 < d`, GEN_TAC THEN MATCH_MP_TAC REAL_LT_FRACTION THEN - CONV_TAC(RAND_CONV num_CONV) THEN + (CONV_TAC "(RAND_CONV num_CONV)") (RAND_CONV num_CONV) THEN REWRITE_TAC[LESS_SUC_REFL]);; let REAL_DOUBLE = prove( @@ -1125,8 +1125,8 @@ let REAL_LE_LDIV = prove( REPEAT GEN_TAC THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN MATCH_MP_TAC(TAUT `(a = b) ==> a ==> b`) THEN SUBGOAL_THEN `y = (y / x) * x` MP_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_DIV_RMUL THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_DIV_RMUL THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN POP_ASSUM ACCEPT_TAC; DISCH_THEN(fun t -> GEN_REWRITE_TAC (funpow 2 LAND_CONV) [t]) THEN MATCH_MP_TAC REAL_LE_RMUL_EQ THEN POP_ASSUM ACCEPT_TAC]);; @@ -1136,8 +1136,8 @@ let REAL_LE_RDIV = prove( REPEAT GEN_TAC THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN MATCH_MP_TAC EQ_IMP THEN SUBGOAL_THEN `z = (z / x) * x` MP_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_DIV_RMUL THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_DIV_RMUL THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN POP_ASSUM ACCEPT_TAC; DISCH_THEN(fun t -> GEN_REWRITE_TAC (LAND_CONV o RAND_CONV) [t]) THEN MATCH_MP_TAC REAL_LE_RMUL_EQ THEN POP_ASSUM ACCEPT_TAC]);; @@ -1146,11 +1146,11 @@ let REAL_LT_1 = prove( `!x y. &0 <= x /\ x < y ==> (x / y) < &1`, REPEAT GEN_TAC THEN DISCH_TAC THEN SUBGOAL_THEN `(x / y) < &1 <=> ((x / y) * y) < (&1 * y)` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_LT_RMUL_EQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_LT_RMUL_EQ THEN MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `x:real` THEN ASM_REWRITE_TAC[]; SUBGOAL_THEN `(x / y) * y = x` SUBST1_TAC THENL - [MATCH_MP_TAC REAL_DIV_RMUL THEN CONV_TAC(RAND_CONV SYM_CONV) THEN + [MATCH_MP_TAC REAL_DIV_RMUL THEN (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `x:real` THEN ASM_REWRITE_TAC[]; ASM_REWRITE_TAC[REAL_MUL_LID]]]);; @@ -1185,7 +1185,7 @@ let REAL_INV_LT1 = prove( REWRITE_TAC[REAL_LT_REFL]]; DISCH_THEN(MP_TAC o AP_TERM `inv`) THEN REWRITE_TAC[REAL_INV1] THEN SUBGOAL_THEN `inv(inv x) = x` SUBST1_TAC THENL - [MATCH_MP_TAC REAL_INVINV THEN CONV_TAC(RAND_CONV SYM_CONV) THEN + [MATCH_MP_TAC REAL_INVINV THEN (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN FIRST_ASSUM ACCEPT_TAC; DISCH_THEN SUBST_ALL_TAC THEN UNDISCH_TAC `&1 < &1` THEN REWRITE_TAC[REAL_LT_REFL]]]);; @@ -1193,7 +1193,7 @@ let REAL_INV_LT1 = prove( let REAL_POS_NZ = prove( `!x. &0 < x ==> ~(x = &0)`, GEN_TAC THEN DISCH_THEN(ASSUME_TAC o MATCH_MP REAL_LT_IMP_NE) THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN POP_ASSUM ACCEPT_TAC);; + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN POP_ASSUM ACCEPT_TAC);; let REAL_EQ_RMUL_IMP = prove( `!x y z. ~(z = &0) /\ (x * z = y * z) ==> (x = y)`, @@ -1219,7 +1219,7 @@ let REAL_POSSQ = prove( let REAL_SUMSQ = prove( `!x y. ((x * x) + (y * y) = &0) <=> (x = &0) /\ (y = &0)`, REPEAT GEN_TAC THEN EQ_TAC THENL - [CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[DE_MORGAN_THM] THEN + [(CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[DE_MORGAN_THM] THEN DISCH_THEN DISJ_CASES_TAC THEN MATCH_MP_TAC REAL_POS_NZ THENL [MATCH_MP_TAC REAL_LTE_ADD; MATCH_MP_TAC REAL_LET_ADD] THEN ASM_REWRITE_TAC[REAL_POSSQ; REAL_LE_SQUARE]; @@ -1344,9 +1344,9 @@ let ABS_NZ = prove( GEN_TAC THEN EQ_TAC THENL [ONCE_REWRITE_TAC[GSYM ABS_ZERO] THEN REWRITE_TAC[TAUT `~a ==> b <=> b \/ a`] THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN REWRITE_TAC[GSYM REAL_LE_LT; ABS_POS]; - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[] THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[real_abs; REAL_LT_REFL; REAL_LE_REFL]]);; @@ -1376,7 +1376,7 @@ let ABS_REFL = prove( `!x. (abs(x) = x) <=> &0 <= x`, GEN_TAC THEN REWRITE_TAC[real_abs] THEN ASM_CASES_TAC `&0 <= x` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN ONCE_REWRITE_TAC[GSYM REAL_RNEG_UNIQ] THEN REWRITE_TAC[REAL_DOUBLE; REAL_ENTIRE; REAL_INJ] THEN REWRITE_TAC[num_CONV `2`; NOT_SUC] THEN @@ -1416,7 +1416,7 @@ let ABS_BOUND = prove( let ABS_STILLNZ = prove( `!x y. abs(x - y) < abs(y) ==> ~(x = &0)`, - REPEAT GEN_TAC THEN CONV_TAC CONTRAPOS_CONV THEN + REPEAT GEN_TAC THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[] THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[REAL_SUB_LZERO; ABS_NEG; REAL_LT_REFL]);; @@ -1673,9 +1673,9 @@ let POW_POS_LT = prove( REPEAT GEN_TAC THEN REWRITE_TAC[REAL_LT_LE] THEN DISCH_TAC THEN CONJ_TAC THENL [MATCH_MP_TAC POW_POS THEN ASM_REWRITE_TAC[]; - CONV_TAC(RAND_CONV SYM_CONV) THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC POW_NZ THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN ASM_REWRITE_TAC[]]);; + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN ASM_REWRITE_TAC[]]);; let POW_2_LE1 = prove( `!n. &1 <= &2 pow n`, @@ -1768,7 +1768,7 @@ let REAL_ARCH = prove( `!x. &0 < x ==> !y. ?n. y < &n * x`, GEN_TAC THEN DISCH_TAC THEN GEN_TAC THEN ONCE_REWRITE_TAC[TAUT `a <=> ~(~a)`] THEN - CONV_TAC(ONCE_DEPTH_CONV NOT_EXISTS_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV NOT_EXISTS_CONV)") (ONCE_DEPTH_CONV NOT_EXISTS_CONV) THEN REWRITE_TAC[REAL_NOT_LT] THEN DISCH_TAC THEN MP_TAC(SPEC `\z. ?n. z = &n * x` REAL_SUP_LE) THEN BETA_TAC THEN W(C SUBGOAL_THEN (fun th -> REWRITE_TAC[th]) o @@ -1853,7 +1853,7 @@ let sum_EXISTS = prove `(!f n. sm n 0 f = &0) /\ (!f m n. sm n (SUC m) f = sm n m f + f(n + m))` THEN EXISTS_TAC `\(n,m) f. (sm:num->num->(num->real)->real) n m f` THEN - CONV_TAC(DEPTH_CONV GEN_BETA_CONV) THEN ASM_REWRITE_TAC[]);; + (CONV_TAC "(DEPTH_CONV GEN_BETA_CONV)") (DEPTH_CONV GEN_BETA_CONV) THEN ASM_REWRITE_TAC[]);; let sum_DEF = new_specification ["psum"] sum_EXISTS;; @@ -2044,7 +2044,7 @@ let SUM_1 = prove let SUM_2 = prove (`!f n. sum(n,2) f = f(n) + f(n + 1)`, - REPEAT GEN_TAC THEN CONV_TAC(REDEPTH_CONV num_CONV) THEN + REPEAT GEN_TAC THEN (CONV_TAC "(REDEPTH_CONV num_CONV)") (REDEPTH_CONV num_CONV) THEN REWRITE_TAC[sum; ADD_CLAUSES; REAL_ADD_LID]);; let SUM_OFFSET = prove @@ -2228,14 +2228,14 @@ let COMPL_MEM = prove( let SUBSETA_ANTISYM = prove( `!P:A->bool. !Q. P re_subset Q /\ Q re_subset P <=> (P = Q)`, REPEAT GEN_TAC THEN REWRITE_TAC[re_subset] THEN - CONV_TAC(ONCE_DEPTH_CONV AND_FORALL_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV AND_FORALL_CONV)") (ONCE_DEPTH_CONV AND_FORALL_CONV) THEN REWRITE_TAC[TAUT `(a ==> b) /\ (b ==> a) <=> (a <=> b)`] THEN - CONV_TAC(RAND_CONV FUN_EQ_CONV) THEN REFL_TAC);; + (CONV_TAC "(RAND_CONV FUN_EQ_CONV)") (RAND_CONV FUN_EQ_CONV) THEN REFL_TAC);; let SUBSETA_TRANS = prove( `!P:A->bool. !Q R. P re_subset Q /\ Q re_subset R ==> P re_subset R`, REPEAT GEN_TAC THEN REWRITE_TAC[re_subset] THEN - CONV_TAC(ONCE_DEPTH_CONV AND_FORALL_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV AND_FORALL_CONV)") (ONCE_DEPTH_CONV AND_FORALL_CONV) THEN DISCH_THEN(MATCH_ACCEPT_TAC o GEN `x:A` o end_itlist IMP_TRANS o CONJUNCTS o SPEC `x:A`));; @@ -2354,15 +2354,15 @@ let limpt = new_definition( let CLOSED_LIMPT = prove( `!top S. closed(top) S <=> (!x:A. limpt(top) x S ==> S x)`, - REPEAT GEN_TAC THEN CONV_TAC(ONCE_DEPTH_CONV CONTRAPOS_CONV) THEN + REPEAT GEN_TAC THEN (CONV_TAC "(ONCE_DEPTH_CONV CONTRAPOS_CONV)") (ONCE_DEPTH_CONV CONTRAPOS_CONV) THEN REWRITE_TAC[closed; limpt] THEN - CONV_TAC(ONCE_DEPTH_CONV NOT_FORALL_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV NOT_FORALL_CONV)") (ONCE_DEPTH_CONV NOT_FORALL_CONV) THEN FREEZE_THEN (fun th -> ONCE_REWRITE_TAC[th]) (SPEC `S:A->bool` COMPL_MEM) THEN REWRITE_TAC[] THEN SPEC_TAC(`re_compl(S:A->bool)`,`S:A->bool`) THEN GEN_TAC THEN REWRITE_TAC[NOT_IMP] THEN - CONV_TAC(ONCE_DEPTH_CONV NOT_EXISTS_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV NOT_EXISTS_CONV)") (ONCE_DEPTH_CONV NOT_EXISTS_CONV) THEN REWRITE_TAC[DE_MORGAN_THM] THEN REWRITE_TAC[OPEN_NEIGH; re_subset] THEN AP_TERM_TAC THEN ABS_TAC THEN @@ -2385,7 +2385,7 @@ let metric_tybij = new_type_definition "metric" ("metric","mdist") (prove(`?m:(A#A->real). ismet m`, EXISTS_TAC `\((x:A),(y:A)). if x = y then &0 else &1` THEN REWRITE_TAC[ismet] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN CONJ_TAC THEN REPEAT GEN_TAC THENL [BOOL_CASES_TAC `x:A = y` THEN REWRITE_TAC[REAL_10]; REPEAT COND_CASES_TAC THEN @@ -2419,7 +2419,7 @@ let METRIC_POS = prove( RULE_ASSUM_TAC(REWRITE_RULE[ismet]) THEN FIRST_ASSUM(MP_TAC o SPECL [`x:A`; `y:A`; `y:A`] o CONJUNCT2) THEN REWRITE_TAC[REWRITE_RULE[] (SPECL [`m:(A)metric`; `y:A`; `y:A`] METRIC_ZERO)] - THEN CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[REAL_NOT_LE] THEN + THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[REAL_NOT_LE] THEN DISCH_THEN(MP_TAC o MATCH_MP REAL_LT_ADD2 o W CONJ) THEN REWRITE_TAC[REAL_ADD_LID]);; @@ -2443,7 +2443,7 @@ let METRIC_NZ = prove( REPEAT GEN_TAC THEN SUBST1_TAC(SYM(SPECL [`m:(A)metric`; `x:A`; `y:A`] METRIC_ZERO)) THEN ONCE_REWRITE_TAC[TAUT `~a ==> b <=> b \/ a`] THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN REWRITE_TAC[GSYM REAL_LE_LT; METRIC_POS]);; (*----------------------------------------------------------------------------*) @@ -2460,7 +2460,7 @@ let mtop_istopology = prove( GEN_TAC THEN REWRITE_TAC[istopology; re_null; re_universe; re_Union; re_intersect; re_subset] THEN - CONV_TAC(REDEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(REDEPTH_CONV BETA_CONV)") (REDEPTH_CONV BETA_CONV) THEN REWRITE_TAC[] THEN REPEAT CONJ_TAC THENL [EXISTS_TAC `&1` THEN MATCH_ACCEPT_TAC REAL_LT_01; REPEAT GEN_TAC THEN DISCH_TAC THEN GEN_TAC THEN @@ -2558,10 +2558,10 @@ let MTOP_LIMPT = prove( let ISMET_R1 = prove( `ismet (\(x,y). abs(y - x))`, - REWRITE_TAC[ismet] THEN CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + REWRITE_TAC[ismet] THEN (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN CONJ_TAC THEN REPEAT GEN_TAC THENL [REWRITE_TAC[ABS_ZERO; REAL_SUB_0] THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN REFL_TAC; + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN REFL_TAC; SUBST1_TAC(SYM(SPECL [`x:real`; `y:real`] REAL_NEG_SUB)) THEN REWRITE_TAC[ABS_NEG] THEN SUBGOAL_THEN `z - y = (x - y) + (z - x)` (fun th -> SUBST1_TAC th THEN MATCH_ACCEPT_TAC ABS_TRIANGLE) THEN @@ -2576,7 +2576,7 @@ let mr1 = new_definition( let MR1_DEF = prove( `!x y. (mdist mr1)(x,y) = abs(y - x)`, REPEAT GEN_TAC THEN REWRITE_TAC[mr1; REWRITE_RULE[metric_tybij] ISMET_R1] - THEN CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REFL_TAC);; + THEN (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REFL_TAC);; let MR1_ADD = prove( `!x d. (mdist mr1)(x,x+d) = abs(d)`, @@ -2622,9 +2622,9 @@ let MR1_LIMPT = prove( [MATCH_MP_TAC REAL_LT_IMP_LE THEN ASM_REWRITE_TAC[REAL_LT_HALF1]; ALL_TAC] THEN ASM_REWRITE_TAC[real_abs; REAL_LT_HALF2] THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN REWRITE_TAC[REAL_ADD_RID_UNIQ] THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN ASM_REWRITE_TAC[REAL_LT_HALF1]);; @@ -2762,10 +2762,10 @@ let MTOP_TENDS_UNIQ = prove( (x --> x0)(mtop(d),g) /\ (x --> x1)(mtop(d),g) ==> (x0:A = x1)`, REPEAT GEN_TAC THEN DISCH_TAC THEN REWRITE_TAC[MTOP_TENDS] THEN - CONV_TAC(ONCE_DEPTH_CONV AND_FORALL_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV AND_FORALL_CONV)") (ONCE_DEPTH_CONV AND_FORALL_CONV) THEN REWRITE_TAC[TAUT `(a ==> b) /\ (a ==> c) <=> a ==> b /\ c`] THEN - CONV_TAC CONTRAPOS_CONV THEN DISCH_TAC THEN - CONV_TAC NOT_FORALL_CONV THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_TAC THEN + (CONV_TAC "NOT_FORALL_CONV") NOT_FORALL_CONV THEN EXISTS_TAC `mdist(d:(A)metric)(x0,x1) / &2` THEN W(C SUBGOAL_THEN ASSUME_TAC o rand o rator o rand o snd) THENL [REWRITE_TAC[REAL_LT_HALF1] THEN MATCH_MP_TAC METRIC_NZ THEN @@ -2858,7 +2858,7 @@ let MR1_BOUNDED = prove( [SWAP_EXISTS_THM] THEN ONCE_REWRITE_TAC[SWAP_EXISTS_THM] THEN AP_TERM_TAC THEN ABS_TAC THEN - CONV_TAC(REDEPTH_CONV EXISTS_AND_CONV) THEN + (CONV_TAC "(REDEPTH_CONV EXISTS_AND_CONV)") (REDEPTH_CONV EXISTS_AND_CONV) THEN AP_TERM_TAC THEN EQ_TAC THEN DISCH_THEN(X_CHOOSE_THEN `k:real` MP_TAC) THENL [DISCH_THEN(X_CHOOSE_TAC `x:real`) THEN EXISTS_TAC `abs(x) + k` THEN GEN_TAC THEN DISCH_TAC THEN @@ -2905,7 +2905,7 @@ let NET_CONV_NZ = prove( DISCH_THEN(X_CHOOSE_THEN `N:A` (CONJUNCTS_THEN2 ASSUME_TAC MP_TAC)) THEN DISCH_TAC THEN EXISTS_TAC `N:A` THEN ASM_REWRITE_TAC[] THEN GEN_TAC THEN DISCH_THEN(ANTE_RES_THEN MP_TAC) THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[] THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[MR1_DEF; REAL_SUB_RZERO; REAL_LT_REFL]);; @@ -2979,7 +2979,7 @@ let NET_NULL_MUL = prove( REPEAT GEN_TAC THEN REWRITE_TAC[MR1_BOUNDED] THEN REWRITE_TAC[MTOP_TENDS; MR1_DEF; REAL_SUB_LZERO; ABS_NEG] THEN DISCH_THEN((then_) (X_GEN_TAC `e:real` THEN DISCH_TAC) o MP_TAC) THEN - CONV_TAC(LAND_CONV LEFT_AND_EXISTS_CONV) THEN + (CONV_TAC "(LAND_CONV LEFT_AND_EXISTS_CONV)") (LAND_CONV LEFT_AND_EXISTS_CONV) THEN DISCH_THEN(X_CHOOSE_THEN `k:real` MP_TAC) THEN DISCH_THEN(ASSUME_TAC o uncurry CONJ o (I F_F SPEC `e / k`) o CONJ_PAIR) THEN SUBGOAL_THEN `&0 < k` ASSUME_TAC THENL @@ -2996,7 +2996,7 @@ let NET_NULL_MUL = prove( EXISTS_TAC `N:A` THEN ASM_REWRITE_TAC[] THEN GEN_TAC THEN DISCH_THEN(ANTE_RES_THEN (ASSUME_TAC o BETA_RULE)) THEN SUBGOAL_THEN `e = k * (e / k)` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_DIV_LMUL THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_DIV_LMUL THEN DISCH_THEN SUBST_ALL_TAC THEN UNDISCH_TAC `&0 < &0` THEN REWRITE_TAC[REAL_LT_REFL]; ALL_TAC] THEN BETA_TAC THEN REWRITE_TAC[ABS_MUL] THEN MATCH_MP_TAC REAL_LT_MUL2_ALT THEN @@ -3024,7 +3024,7 @@ let NET_NULL_CMUL = prove( EXISTS_TAC `N:A` THEN ASM_REWRITE_TAC[] THEN GEN_TAC THEN DISCH_THEN(ANTE_RES_THEN ASSUME_TAC) THEN SUBGOAL_THEN `e = abs(k) * (e / abs(k))` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_DIV_LMUL THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_DIV_LMUL THEN ASM_REWRITE_TAC[ABS_ZERO]; ALL_TAC] THEN REWRITE_TAC[ABS_MUL] THEN SUBGOAL_THEN `&0 < abs k` (fun th -> REWRITE_TAC[MATCH_MP REAL_LT_LMUL_EQ th]) @@ -3065,7 +3065,7 @@ let NET_SUB = prove( ==> ((\n. x(n) - y(n)) --> (x0 - y0))(mtop(mr1),g)`, REPEAT GEN_TAC THEN DISCH_TAC THEN REPEAT GEN_TAC THEN DISCH_TAC THEN REWRITE_TAC[real_sub] THEN - CONV_TAC(EXACT_CONV[X_BETA_CONV `n:A` `--(y(n:A))`]) THEN + (CONV_TAC "(EXACT_CONV[X_BETA_CONV `n:A` `--(y(n:A))`])") (EXACT_CONV[X_BETA_CONV `n:A` `--(y(n:A))`]) THEN FIRST_ASSUM(MATCH_MP_TAC o MATCH_MP NET_ADD) THEN ASM_REWRITE_TAC[] THEN FIRST_ASSUM(fun th -> ONCE_REWRITE_TAC[GSYM(MATCH_MP NET_NEG th)]) THEN @@ -3086,11 +3086,11 @@ let NET_MUL = prove( THEN AP_TERM_TAC THEN REWRITE_TAC[GSYM REAL_NEG_LMUL; GSYM REAL_NEG_RMUL] THEN REWRITE_TAC[REAL_ADD_ASSOC; REAL_ADD_LINV; REAL_ADD_LID]; ALL_TAC] THEN - CONV_TAC(EXACT_CONV[X_BETA_CONV `n:A` `x(n:A) * (y(n) - y0)`]) THEN - CONV_TAC(EXACT_CONV[X_BETA_CONV `n:A` `(x(n:A) - x0) * y0`]) THEN + (CONV_TAC "(EXACT_CONV[X_BETA_CONV `n:A` `x(n:A) * (y(n) - y0)`])") (EXACT_CONV[X_BETA_CONV `n:A` `x(n:A) * (y(n) - y0)`]) THEN + (CONV_TAC "(EXACT_CONV[X_BETA_CONV `n:A` `(x(n:A) - x0) * y0`])") (EXACT_CONV[X_BETA_CONV `n:A` `(x(n:A) - x0) * y0`]) THEN FIRST_ASSUM(MATCH_MP_TAC o MATCH_MP NET_NULL_ADD) THEN GEN_REWRITE_TAC (RAND_CONV o ONCE_DEPTH_CONV) [REAL_MUL_SYM] THEN - (CONV_TAC o EXACT_CONV o map (X_BETA_CONV `n:A`)) + ((CONV_TAC "o") o EXACT_CONV o map (X_BETA_CONV `n:A`)) [`y(n:A) - y0`; `x(n:A) - x0`] THEN CONJ_TAC THENL [FIRST_ASSUM(MATCH_MP_TAC o MATCH_MP NET_NULL_MUL) THEN @@ -3109,7 +3109,7 @@ let NET_INV = prove( MP_TAC(CONJ (MATCH_MP NET_CONV_IBOUNDED th) (MATCH_MP NET_CONV_NZ th))) THEN REWRITE_TAC[MR1_BOUNDED] THEN - CONV_TAC(ONCE_DEPTH_CONV LEFT_AND_EXISTS_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV LEFT_AND_EXISTS_CONV)") (ONCE_DEPTH_CONV LEFT_AND_EXISTS_CONV) THEN DISCH_THEN(X_CHOOSE_THEN `k:real` MP_TAC) THEN DISCH_THEN(DORDER_THEN MP_TAC) THEN BETA_TAC THEN DISCH_THEN(MP_TAC o C CONJ @@ -3172,7 +3172,7 @@ let NET_DIV = prove( ==> ((\n. x(n) / y(n)) --> (x0 / y0))(mtop(mr1),g)`, REPEAT GEN_TAC THEN DISCH_TAC THEN REPEAT GEN_TAC THEN DISCH_TAC THEN REWRITE_TAC[real_div] THEN - CONV_TAC(EXACT_CONV[X_BETA_CONV `n:A` `inv(y(n:A))`]) THEN + (CONV_TAC "(EXACT_CONV[X_BETA_CONV `n:A` `inv(y(n:A))`])") (EXACT_CONV[X_BETA_CONV `n:A` `inv(y(n:A))`]) THEN FIRST_ASSUM(MATCH_MP_TAC o MATCH_MP NET_MUL) THEN ASM_REWRITE_TAC[] THEN FIRST_ASSUM(MATCH_MP_TAC o MATCH_MP NET_INV) THEN @@ -3206,7 +3206,7 @@ let NET_SUM = prove X_GEN_TAC `r:num` THEN REPEAT STRIP_TAC THEN FIRST_ASSUM MATCH_MP_TAC THEN ASM_SIMP_TAC[ARITH_RULE `a < b + c ==> a < b + SUC c`]; - CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN FIRST_ASSUM MATCH_MP_TAC THEN + (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN FIRST_ASSUM MATCH_MP_TAC THEN ARITH_TAC]);; (*----------------------------------------------------------------------------*) @@ -3500,10 +3500,10 @@ let SEQ_ICONV = prove( ASSUME_TAC THENL [FIRST_ASSUM(MP_TAC o SPEC `sup(\x. ?n:num. x = f(n))`) THEN REWRITE_TAC[REAL_LT_REFL] THEN - CONV_TAC(ONCE_DEPTH_CONV NOT_EXISTS_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV NOT_EXISTS_CONV)") (ONCE_DEPTH_CONV NOT_EXISTS_CONV) THEN REWRITE_TAC[TAUT `~(a /\ b) <=> a ==> ~b`] THEN REWRITE_TAC[REAL_NOT_LT] THEN - CONV_TAC(ONCE_DEPTH_CONV LEFT_IMP_EXISTS_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV LEFT_IMP_EXISTS_CONV)") (ONCE_DEPTH_CONV LEFT_IMP_EXISTS_CONV) THEN DISCH_THEN(MP_TAC o GEN `n:num` o SPECL [`(f:num->real) n`; `n:num`]) THEN REWRITE_TAC[]; ALL_TAC] THEN EXISTS_TAC `n:num` THEN X_GEN_TAC `m:num` THEN @@ -3582,7 +3582,7 @@ let SEQ_MONOSUB = prove( POP_ASSUM(X_CHOOSE_TAC `N:num` o CONV_RULE NOT_FORALL_CONV) THEN POP_ASSUM(MP_TAC o CONV_RULE NOT_EXISTS_CONV) THEN REWRITE_TAC[TAUT `~(a /\ b) <=> a ==> ~b`] THEN - CONV_TAC(ONCE_DEPTH_CONV NOT_FORALL_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV NOT_FORALL_CONV)") (ONCE_DEPTH_CONV NOT_FORALL_CONV) THEN REWRITE_TAC[NOT_IMP; REAL_NOT_LE] THEN DISCH_TAC THEN SUBGOAL_THEN `!p. p >= SUC N ==> (?m. m > p /\ s(p) < s(m))` MP_TAC THENL @@ -3611,7 +3611,7 @@ let SEQ_MONOSUB = prove( ASM_REWRITE_TAC[GSYM GT]; ALL_TAC] THEN DISCH_THEN(fun th -> ASSUME_TAC th THEN REWRITE_TAC[th]) THEN FIRST_ASSUM(fun th -> REWRITE_TAC[CONJUNCT2 th]) THEN - CONV_TAC SELECT_CONV THEN FIRST_ASSUM MATCH_MP_TAC THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN FIRST_ASSUM MATCH_MP_TAC THEN FIRST_ASSUM ACCEPT_TAC; FIRST_ASSUM(UNDISCH_TAC o check((=)3 o length o conjuncts) o concl) THEN @@ -3622,7 +3622,7 @@ let SEQ_MONOSUB = prove( REWRITE_TAC[GE] THEN MATCH_MP_TAC LT_IMP_LE THEN REWRITE_TAC[GSYM GT] THEN FIRST_ASSUM ACCEPT_TAC; FIRST_ASSUM(SUBST1_TAC o SPEC `SUC n` o CONJUNCT2) THEN - CONV_TAC SELECT_CONV THEN FIRST_ASSUM MATCH_MP_TAC THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN FIRST_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[GE] THEN MATCH_MP_TAC LE_TRANS THEN EXISTS_TAC `(f:num->num) n` THEN REWRITE_TAC[GSYM GE] THEN CONJ_TAC THEN @@ -3815,12 +3815,12 @@ let SEQ_INV0 = prove( SUBGOAL_THEN `&0 < inv(f(n:num))` ASSUME_TAC THENL [MATCH_MP_TAC REAL_INV_POS THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN SUBGOAL_THEN `~(f(n:num) = &0)` ASSUME_TAC THENL - [CONV_TAC(RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN + [(CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN DISCH_TAC THEN FIRST_ASSUM(fun th -> REWRITE_TAC[MATCH_MP ABS_INV th]) THEN SUBGOAL_THEN `e = inv(inv e)` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_INVINV THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_INVINV THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN MATCH_MP_TAC REAL_LT_INV2 THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC REAL_LTE_TRANS THEN EXISTS_TAC `(f:num->real) n` THEN @@ -3836,14 +3836,14 @@ let SEQ_POWER_ABS = prove( REWRITE_TAC[REAL_LE_LT] THEN DISCH_THEN DISJ_CASES_TAC THENL [SUBGOAL_THEN `!n. abs(c) pow n = inv(inv(abs(c) pow n))` (fun th -> ONCE_REWRITE_TAC[th]) THENL - [GEN_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_INVINV THEN + [GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_INVINV THEN MATCH_MP_TAC POW_NZ THEN ASM_REWRITE_TAC[ABS_NZ; ABS_ABS]; ALL_TAC] THEN - CONV_TAC(EXACT_CONV[X_BETA_CONV `n:num` `inv(abs(c) pow n)`]) THEN + (CONV_TAC "(EXACT_CONV[X_BETA_CONV `n:num` `inv(abs(c) pow n)`])") (EXACT_CONV[X_BETA_CONV `n:num` `inv(abs(c) pow n)`]) THEN MATCH_MP_TAC SEQ_INV0 THEN BETA_TAC THEN X_GEN_TAC `y:real` THEN SUBGOAL_THEN `~(abs(c) = &0)` (fun th -> REWRITE_TAC[MATCH_MP POW_INV th]) THENL - [CONV_TAC(RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN + [(CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN REWRITE_TAC[real_gt] THEN SUBGOAL_THEN `&0 < inv(abs c) - &1` ASSUME_TAC THENL [REWRITE_TAC[REAL_LT_SUB_LADD] THEN REWRITE_TAC[REAL_ADD_LID] THEN @@ -4028,7 +4028,7 @@ let NEST_LEMMA_UNIQ = prove( ASM_REWRITE_TAC[] THEN DISCH_THEN(MP_TAC o CONJ(ASSUME `(\n. f(n) - g(n)) --> &0`)) THEN DISCH_THEN(MP_TAC o MATCH_MP SEQ_UNIQ) THEN - CONV_TAC(LAND_CONV SYM_CONV) THEN + (CONV_TAC "(LAND_CONV SYM_CONV)") (LAND_CONV SYM_CONV) THEN REWRITE_TAC[REAL_SUB_0]);; let BOLZANO_LEMMA = prove( @@ -4104,7 +4104,7 @@ let BOLZANO_LEMMA = prove( ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN REWRITE_TAC[REAL_MUL_ASSOC] THEN GEN_REWRITE_TAC (RATOR_CONV o RAND_CONV) [GSYM REAL_MUL_LID] THEN - AP_THM_TAC THEN AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + AP_THM_TAC THEN AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_MUL_RINV THEN REWRITE_TAC[REAL_INJ] THEN REWRITE_TAC[num_CONV `2`; NOT_SUC]]); ALL_TAC] THEN @@ -4170,7 +4170,7 @@ let BOLZANO_LEMMA_ALT = prove ==> !a b. a <= b ==> P a b`, GEN_TAC THEN MP_TAC(SPEC `\(x:real,y:real). P x y :bool` BOLZANO_LEMMA) THEN REWRITE_TAC[] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[]);; + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[]);; (*----------------------------------------------------------------------------*) (* Define infinite sums *) @@ -4198,7 +4198,7 @@ let SUMMABLE_SUM = prove( `!f. summable f ==> f sums (suminf f)`, GEN_TAC THEN REWRITE_TAC[summable; suminf] THEN DISCH_THEN(CHOOSE_THEN MP_TAC) THEN - CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN MATCH_ACCEPT_TAC SELECT_AX);; (*----------------------------------------------------------------------------*) @@ -4341,7 +4341,7 @@ let SER_POS_LT_PAIR = prove( REPEAT GEN_TAC THEN DISCH_THEN(CONJUNCTS_THEN2 MP_TAC ASSUME_TAC) THEN DISCH_THEN(MP_TAC o MATCH_MP SUMMABLE_SUM) THEN REWRITE_TAC[sums; SEQ] THEN BETA_TAC THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[REAL_NOT_LT] THEN DISCH_TAC THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[REAL_NOT_LT] THEN DISCH_TAC THEN DISCH_THEN(MP_TAC o SPEC `f(n) + f(n + 1)`) THEN FIRST_ASSUM(MP_TAC o SPEC `0`) THEN REWRITE_TAC[ADD_CLAUSES; MULT_CLAUSES] THEN @@ -4386,7 +4386,7 @@ let SER_POS_LT_PAIR = prove( EXISTS_TAC `sum(0,n) f + (f(n) + f(n + 1))` THEN ASM_REWRITE_TAC[REAL_LE_RADD] THEN MATCH_MP_TAC REAL_EQ_IMP_LE THEN - CONV_TAC(REDEPTH_CONV num_CONV) THEN + (CONV_TAC "(REDEPTH_CONV num_CONV)") (REDEPTH_CONV num_CONV) THEN REWRITE_TAC[ADD_CLAUSES; sum; REAL_ADD_ASSOC]; ALL_TAC] THEN SUBGOAL_THEN `suminf f <= sum(0,(2 * (SUC N)) + n) f` ASSUME_TAC THENL @@ -4406,8 +4406,8 @@ let SER_POS_LT_PAIR = prove( let SER_ADD = prove( `!x x0 y y0. x sums x0 /\ y sums y0 ==> (\n. x(n) + y(n)) sums (x0 + y0)`, REPEAT GEN_TAC THEN REWRITE_TAC[sums; SUM_ADD] THEN - CONV_TAC((RAND_CONV o EXACT_CONV)[X_BETA_CONV `n:num` `sum(0,n) x`]) THEN - CONV_TAC((RAND_CONV o EXACT_CONV)[X_BETA_CONV `n:num` `sum(0,n) y`]) THEN + (CONV_TAC "((RAND_CONV o EXACT_CONV)[X_BETA_CONV `n:num` `sum(0,n) x`])") ((RAND_CONV o EXACT_CONV)[X_BETA_CONV `n:num` `sum(0,n) x`]) THEN + (CONV_TAC "((RAND_CONV o EXACT_CONV)[X_BETA_CONV `n:num` `sum(0,n) y`])") ((RAND_CONV o EXACT_CONV)[X_BETA_CONV `n:num` `sum(0,n) y`]) THEN MATCH_ACCEPT_TAC SEQ_ADD);; let SER_CMUL = prove( @@ -4611,7 +4611,7 @@ let GP = prove( SUBGOAL_THEN `(\n. (\n. &1 - x pow n) n / (\n. &1 - x) n) --> &1 / (&1 - x)` MP_TAC THENL [ALL_TAC; REWRITE_TAC[BETA_THM]] THEN MATCH_MP_TAC SEQ_DIV THEN BETA_TAC THEN REWRITE_TAC[SEQ_CONST] THEN - REWRITE_TAC[REAL_SUB_0] THEN CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + REWRITE_TAC[REAL_SUB_0] THEN (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN ASM_REWRITE_TAC[] THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_SUB_RZERO] THEN SUBGOAL_THEN `(\n. (\n. &1) n - (\n. x pow n) n) --> &1 - &0` @@ -4630,7 +4630,7 @@ let ABS_NEG_LEMMA = prove( ASM_REWRITE_TAC[] THEN REWRITE_TAC[ABS_POS; GSYM REAL_NEG_LMUL; REAL_NEG_GE0] THEN DISCH_THEN(fun th -> DISCH_THEN(MP_TAC o C CONJ th)) THEN - DISCH_THEN(MP_TAC o MATCH_MP REAL_LE_TRANS) THEN CONV_TAC CONTRAPOS_CONV THEN + DISCH_THEN(MP_TAC o MATCH_MP REAL_LE_TRANS) THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[ABS_NZ; REAL_NOT_LE]);; let SER_RATIO = prove( @@ -4664,7 +4664,7 @@ let SER_RATIO = prove( `(a * b) * (c * d) = (a * d) * (b * c)`] THEN SUBGOAL_THEN `~(c pow N = &0)` (fun th -> REWRITE_TAC[MATCH_MP REAL_MUL_LINV th; REAL_MUL_RID]) THENL - [MATCH_MP_TAC POW_NZ THEN CONV_TAC(RAND_CONV SYM_CONV) THEN + [MATCH_MP_TAC POW_NZ THEN (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN SPEC_TAC(`d:num`,`d:num`) THEN INDUCT_TAC THEN REWRITE_TAC[pow; ADD_CLAUSES; REAL_MUL_RID; REAL_LE_REFL] THEN @@ -4742,7 +4742,7 @@ let LIM_CONST = prove( DISCH_THEN(MP_TAC o SPEC `e:real`) THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(X_CHOOSE_THEN `z:real` (ASSUME_TAC o CONJUNCT1)) THEN EXISTS_TAC `z:real` THEN REWRITE_TAC[MR1_DEF; GSYM ABS_NZ] THEN - REWRITE_TAC[REAL_SUB_0] THEN CONV_TAC(RAND_CONV SYM_CONV) THEN + REWRITE_TAC[REAL_SUB_0] THEN (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN ASM_REWRITE_TAC[]);; let LIM_ADD = prove( @@ -4899,7 +4899,7 @@ let DIFF_CONT = prove( DISCH_THEN(fun th -> REWRITE_TAC[MATCH_MP REAL_DIV_RMUL th]); ALL_TAC] THEN GEN_REWRITE_TAC (RATOR_CONV o LAND_CONV o ABS_CONV o RAND_CONV) [SYM(BETA_CONV `(\h:real. h) h`)] THEN - CONV_TAC(EXACT_CONV[X_BETA_CONV `h:real` `(f(x + h) - f(x)) / h`]) THEN + (CONV_TAC "(EXACT_CONV[X_BETA_CONV `h:real` `(f(x + h) - f(x)) / h`])") (EXACT_CONV[X_BETA_CONV `h:real` `(f(x + h) - f(x)) / h`]) THEN SUBST1_TAC(SYM(SPEC `l:real` REAL_MUL_RZERO)) THEN MATCH_MP_TAC LIM_MUL THEN BETA_TAC THEN REWRITE_TAC[REAL_MUL_RZERO] THEN ASM_REWRITE_TAC[] THEN REWRITE_TAC[LIM] THEN BETA_TAC THEN @@ -5008,11 +5008,11 @@ let IVT = prove( REPEAT GEN_TAC THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC (CONJUNCTS_THEN2 MP_TAC STRIP_ASSUME_TAC)) THEN - CONV_TAC CONTRAPOS_CONV THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_THEN(ASSUME_TAC o CONV_RULE NOT_EXISTS_CONV) THEN (MP_TAC o C SPEC BOLZANO_LEMMA) `\(u,v). a <= u /\ u <= v /\ v <= b ==> ~(f(u) <= y /\ y <= f(v))` THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN W(C SUBGOAL_THEN (fun t -> REWRITE_TAC[t]) o funpow 2 (fst o dest_imp) o snd) THENL [ALL_TAC; @@ -5020,7 +5020,7 @@ let IVT = prove( ASM_REWRITE_TAC[REAL_LE_REFL]] THEN CONJ_TAC THENL [MAP_EVERY X_GEN_TAC [`u:real`; `v:real`; `w:real`] THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[DE_MORGAN_THM; NOT_IMP] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[DE_MORGAN_THM; NOT_IMP] THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THEN MAP_EVERY ASM_CASES_TAC [`u <= v`; `v <= w`] THEN ASM_REWRITE_TAC[] THEN DISJ_CASES_TAC(SPECL [`y:real`; `(f:real->real) v`] REAL_LE_TOTAL) THEN @@ -5117,8 +5117,8 @@ let DIFF_ADD = prove( REWRITE_TAC[REAL_ADD2_SUB2] THEN REWRITE_TAC[real_div; REAL_RDISTRIB] THEN REWRITE_TAC[GSYM real_div] THEN - CONV_TAC(EXACT_CONV[X_BETA_CONV `h:real` `(f(x + h) - f(x)) / h`]) THEN - CONV_TAC(EXACT_CONV[X_BETA_CONV `h:real` `(g(x + h) - g(x)) / h`]) THEN + (CONV_TAC "(EXACT_CONV[X_BETA_CONV `h:real` `(f(x + h) - f(x)) / h`])") (EXACT_CONV[X_BETA_CONV `h:real` `(f(x + h) - f(x)) / h`]) THEN + (CONV_TAC "(EXACT_CONV[X_BETA_CONV `h:real` `(g(x + h) - g(x)) / h`])") (EXACT_CONV[X_BETA_CONV `h:real` `(g(x + h) - g(x)) / h`]) THEN MATCH_MP_TAC LIM_ADD THEN ASM_REWRITE_TAC[]);; let DIFF_MUL = prove( @@ -5139,13 +5139,9 @@ let DIFF_MUL = prove( REWRITE_TAC[REAL_RDISTRIB] THEN BINOP_TAC THEN REWRITE_TAC[REAL_MUL_AC]; ALL_TAC] THEN GEN_REWRITE_TAC LAND_CONV [REAL_ADD_SYM] THEN - CONV_TAC(EXACT_CONV(map (X_BETA_CONV `h:real`) - [`((g(x + h) - g(x)) / h) * f(x + h)`; - `((f(x + h) - f(x)) / h) * g(x)`])) THEN + (CONV_TAC "(EXACT_CONV(map (X_BETA_CONV `h:real`) [`((g(x + h) - g(x)) / h) * f(x + h)`; `((f(x + h) - f(x)) / h) * g(x)`]))") (EXACT_CONV(map (X_BETA_CONV `h:real`) [`((g(x + h) - g(x)) / h) * f(x + h)`; `((f(x + h) - f(x)) / h) * g(x)`])) THEN MATCH_MP_TAC LIM_ADD THEN - CONV_TAC(EXACT_CONV(map (X_BETA_CONV `h:real`) - [`(g(x + h) - g(x)) / h`; `f(x + h):real`; - `(f(x + h) - f(x)) / h`; `g(x:real):real`])) THEN + (CONV_TAC "(EXACT_CONV(map (X_BETA_CONV `h:real`) [`(g(x + h) - g(x)) / h`; `f(x + h):real`; `(f(x + h) - f(x)) / h`; `g(x:real):real`]))") (EXACT_CONV(map (X_BETA_CONV `h:real`) [`(g(x + h) - g(x)) / h`; `f(x + h):real`; `(f(x + h) - f(x)) / h`; `g(x:real):real`])) THEN CONJ_TAC THEN MATCH_MP_TAC LIM_MUL THEN BETA_TAC THEN ASM_REWRITE_TAC[LIM_CONST] THEN REWRITE_TAC[GSYM contl] THEN @@ -5187,7 +5183,7 @@ let DIFF_CARAT = prove( BETA_TAC THEN REWRITE_TAC[] THEN CONJ_TAC THENL [X_GEN_TAC `z:real` THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[REAL_SUB_REFL; REAL_MUL_RZERO] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_DIV_RMUL THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_DIV_RMUL THEN ASM_REWRITE_TAC[REAL_SUB_0]; POP_ASSUM MP_TAC THEN MATCH_MP_TAC EQ_IMP THEN REWRITE_TAC[diffl; contl] THEN BETA_TAC THEN REWRITE_TAC[] THEN @@ -5220,7 +5216,7 @@ let DIFF_CHAIN = prove( BETA_TAC THEN ASM_REWRITE_TAC[] THEN CONJ_TAC THENL [GEN_TAC THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[REAL_SUB_REFL; REAL_MUL_RZERO] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_DIV_RMUL THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_DIV_RMUL THEN ASM_REWRITE_TAC[REAL_SUB_0]; MP_TAC(CONJ (ASSUME `g contl x`) (ASSUME `f' contl (g(x:real))`)) THEN DISCH_THEN(MP_TAC o MATCH_MP CONT_COMPOSE) THEN @@ -5308,15 +5304,15 @@ let DIFF_XM1 = prove( MATCH_MP_TAC REAL_MUL_LINV THEN ASM_REWRITE_TAC[ABS_NZ]; REWRITE_TAC[POW_2] THEN - CONV_TAC(EXACT_CONV[X_BETA_CONV `h:real` `inv(x + h) * inv(x)`]) THEN + (CONV_TAC "(EXACT_CONV[X_BETA_CONV `h:real` `inv(x + h) * inv(x)`])") (EXACT_CONV[X_BETA_CONV `h:real` `inv(x + h) * inv(x)`]) THEN REWRITE_TAC[GSYM LIM_NEG] THEN - CONV_TAC(EXACT_CONV(map (X_BETA_CONV `h:real`) [`inv(x + h)`; `inv(x)`])) + (CONV_TAC "(EXACT_CONV(map (X_BETA_CONV `h:real`) [`inv(x + h)`; `inv(x)`]))") (EXACT_CONV(map (X_BETA_CONV `h:real`) [`inv(x + h)`; `inv(x)`])) THEN MATCH_MP_TAC LIM_MUL THEN BETA_TAC THEN REWRITE_TAC[LIM_CONST] THEN - CONV_TAC(EXACT_CONV[X_BETA_CONV `h:real` `x + h`]) THEN + (CONV_TAC "(EXACT_CONV[X_BETA_CONV `h:real` `x + h`])") (EXACT_CONV[X_BETA_CONV `h:real` `x + h`]) THEN MATCH_MP_TAC LIM_INV THEN ASM_REWRITE_TAC[] THEN GEN_REWRITE_TAC LAND_CONV [GSYM REAL_ADD_RID] THEN - CONV_TAC(EXACT_CONV(map (X_BETA_CONV `h:real`) [`x:real`; `h:real`])) THEN + (CONV_TAC "(EXACT_CONV(map (X_BETA_CONV `h:real`) [`x:real`; `h:real`]))") (EXACT_CONV(map (X_BETA_CONV `h:real`) [`x:real`; `h:real`])) THEN MATCH_MP_TAC LIM_ADD THEN BETA_TAC THEN REWRITE_TAC[LIM_CONST] THEN MATCH_ACCEPT_TAC LIM_X]);; @@ -5366,7 +5362,7 @@ let DIFF_SUM = prove( ==> ((\x. sum(m,n)(\n. f n x)) diffl (sum(m,n) (\r. f' r x)))(x)`, REPEAT GEN_TAC THEN SPEC_TAC(`n:num`,`n:num`) THEN INDUCT_TAC THEN REWRITE_TAC[sum; DIFF_CONST] THEN DISCH_TAC THEN - CONV_TAC(ONCE_DEPTH_CONV HABS_CONV) THEN MATCH_MP_TAC DIFF_ADD THEN + (CONV_TAC "(ONCE_DEPTH_CONV HABS_CONV)") (ONCE_DEPTH_CONV HABS_CONV) THEN MATCH_MP_TAC DIFF_ADD THEN BETA_TAC THEN CONJ_TAC THEN FIRST_ASSUM MATCH_MP_TAC THENL [GEN_TAC THEN DISCH_TAC THEN FIRST_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC LT_TRANS THEN @@ -5384,7 +5380,7 @@ let CONT_BOUNDED = prove( (MP_TAC o C SPEC BOLZANO_LEMMA) `\(u,v). a <= u /\ u <= v /\ v <= b ==> ?M. !x. u <= x /\ x <= v ==> f x <= M` THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN W(C SUBGOAL_THEN (fun t -> REWRITE_TAC[t]) o funpow 2(fst o dest_imp) o snd) THENL [ALL_TAC; @@ -5422,7 +5418,7 @@ let CONT_BOUNDED = prove( EXISTS_TAC `&1` THEN REWRITE_TAC[REAL_LT_01] THEN MAP_EVERY X_GEN_TAC [`u:real`; `v:real`] THEN REPEAT STRIP_TAC THEN UNDISCH_TAC `~(a <= x /\ x <= b)` THEN - CONV_TAC CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN REWRITE_TAC[] THEN CONJ_TAC THEN MATCH_MP_TAC REAL_LE_TRANS THENL [EXISTS_TAC `u:real`; EXISTS_TAC `v:real`] THEN ASM_REWRITE_TAC[]] THEN @@ -5499,10 +5495,10 @@ let CONT_HASSUP = prove( [X_GEN_TAC `x:real` THEN DISCH_TAC THEN FIRST_ASSUM(MP_TAC o SPEC (mk_comb(`sup`,tm))) THEN REWRITE_TAC[REAL_LT_REFL] THEN - CONV_TAC(ONCE_DEPTH_CONV NOT_EXISTS_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV NOT_EXISTS_CONV)") (ONCE_DEPTH_CONV NOT_EXISTS_CONV) THEN DISCH_THEN(MP_TAC o SPEC `(f:real->real) x`) THEN REWRITE_TAC[DE_MORGAN_THM; REAL_NOT_LT] THEN - CONV_TAC(ONCE_DEPTH_CONV NOT_EXISTS_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV NOT_EXISTS_CONV)") (ONCE_DEPTH_CONV NOT_EXISTS_CONV) THEN DISCH_THEN(DISJ_CASES_THEN MP_TAC) THEN REWRITE_TAC[] THEN DISCH_THEN(MP_TAC o SPEC `x:real`) THEN ASM_REWRITE_TAC[]; GEN_TAC THEN FIRST_ASSUM(SUBST1_TAC o SYM o SPEC `N:real`) THEN @@ -5525,7 +5521,7 @@ let CONT_ATTAINS = prove( FIRST_ASSUM(X_CHOOSE_THEN `M:real` STRIP_ASSUME_TAC o MATCH_MP CONT_HASSUP) THEN EXISTS_TAC `M:real` THEN ASM_REWRITE_TAC[] THEN GEN_REWRITE_TAC I [TAUT `a <=> ~ ~a`] THEN - CONV_TAC(RAND_CONV NOT_EXISTS_CONV) THEN + (CONV_TAC "(RAND_CONV NOT_EXISTS_CONV)") (RAND_CONV NOT_EXISTS_CONV) THEN REWRITE_TAC[TAUT `~(a /\ b /\ c) <=> a /\ b ==> ~c`] THEN DISCH_TAC THEN SUBGOAL_THEN `!x. a <= x /\ x <= b ==> f(x) < M` MP_TAC THENL @@ -5536,18 +5532,18 @@ let CONT_ATTAINS = prove( SUBGOAL_THEN `!x. a <= x /\ x <= b ==> (\x. inv(M - f(x))) contl x` ASSUME_TAC THENL [GEN_TAC THEN DISCH_TAC THEN - CONV_TAC(ONCE_DEPTH_CONV HABS_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV HABS_CONV)") (ONCE_DEPTH_CONV HABS_CONV) THEN MATCH_MP_TAC CONT_INV THEN BETA_TAC THEN - REWRITE_TAC[REAL_SUB_0] THEN CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + REWRITE_TAC[REAL_SUB_0] THEN (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN CONJ_TAC THENL [ALL_TAC; MATCH_MP_TAC REAL_LT_IMP_NE THEN ONCE_REWRITE_TAC[GSYM REAL_SUB_LT] THEN FIRST_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[]] THEN - CONV_TAC(ONCE_DEPTH_CONV HABS_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV HABS_CONV)") (ONCE_DEPTH_CONV HABS_CONV) THEN MATCH_MP_TAC CONT_SUB THEN BETA_TAC THEN REWRITE_TAC[CONT_CONST] THEN - CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN FIRST_ASSUM(MATCH_MP_TAC o CONJUNCT2) THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN SUBGOAL_THEN `?k. !x. a <= x /\ x <= b ==> (\x. inv(M - (f x))) x <= k` @@ -5575,7 +5571,7 @@ let CONT_ATTAINS = prove( [GEN_TAC THEN DISCH_TAC THEN SUBGOAL_THEN `~(M - f(x:real) = &0)` (SUBST1_TAC o SYM o MATCH_MP REAL_INVINV) THENL - [CONV_TAC(RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN + [(CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN FIRST_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[]; FIRST_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[]]; ALL_TAC] THEN REWRITE_TAC[REAL_LT_SUB_LADD] THEN ONCE_REWRITE_TAC[REAL_ADD_SYM] THEN @@ -5834,7 +5830,7 @@ let ROLLE = prove( ASM_REWRITE_TAC[] THEN SUBGOAL_THEN `?l. (f diffl l)(x1) /\ ?d. &0 < d /\ (!y. abs(x1 - y) < d ==> f(y) <= f(x1))` MP_TAC THENL - [CONV_TAC EXISTS_AND_CONV THEN CONJ_TAC THENL + [(CONV_TAC "EXISTS_AND_CONV") EXISTS_AND_CONV THEN CONJ_TAC THENL [REWRITE_TAC[GSYM differentiable] THEN FIRST_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[]; EXISTS_TAC `d:real` THEN ASM_REWRITE_TAC[] THEN X_GEN_TAC `y:real` THEN @@ -5850,7 +5846,7 @@ let ROLLE = prove( ASM_REWRITE_TAC[] THEN SUBGOAL_THEN `?l. (f diffl l)(x2) /\ ?d. &0 < d /\ (!y. abs(x2 - y) < d ==> f(x2) <= f(y))` MP_TAC THENL - [CONV_TAC EXISTS_AND_CONV THEN CONJ_TAC THENL + [(CONV_TAC "EXISTS_AND_CONV") EXISTS_AND_CONV THEN CONJ_TAC THENL [REWRITE_TAC[GSYM differentiable] THEN FIRST_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[]; EXISTS_TAC `d:real` THEN ASM_REWRITE_TAC[] THEN X_GEN_TAC `y:real` THEN @@ -5882,13 +5878,13 @@ let ROLLE = prove( DISCH_THEN(X_CHOOSE_THEN `d:real` STRIP_ASSUME_TAC) THEN SUBGOAL_THEN `?l. (f diffl l)(x) /\ (?d. &0 < d /\ (!y. abs(x - y) < d ==> (f(y) = f(x))))` MP_TAC THENL - [CONV_TAC(ONCE_DEPTH_CONV EXISTS_AND_CONV) THEN CONJ_TAC THENL + [(CONV_TAC "(ONCE_DEPTH_CONV EXISTS_AND_CONV)") (ONCE_DEPTH_CONV EXISTS_AND_CONV) THEN CONJ_TAC THENL [REWRITE_TAC[GSYM differentiable] THEN FIRST_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[]; EXISTS_TAC `d:real` THEN ASM_REWRITE_TAC[] THEN GEN_TAC THEN DISCH_THEN(fun th -> FIRST_ASSUM(MP_TAC o C MATCH_MP th)) THEN DISCH_THEN(fun th -> FIRST_ASSUM(MP_TAC o C MATCH_MP th)) THEN - DISCH_THEN SUBST1_TAC THEN CONV_TAC SYM_CONV THEN + DISCH_THEN SUBST1_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_ASSUM MATCH_MP_TAC THEN CONJ_TAC THEN MATCH_MP_TAC REAL_LT_IMP_LE THEN ASM_REWRITE_TAC[]]; DISCH_THEN(X_CHOOSE_THEN `l:real` (fun th -> @@ -5936,20 +5932,20 @@ let MVT = prove( funpow 2 (fst o dest_imp) o snd) THENL [ASM_REWRITE_TAC[MVT_LEMMA] THEN BETA_TAC THEN CONJ_TAC THEN X_GEN_TAC `x:real` THENL - [DISCH_TAC THEN CONV_TAC(ONCE_DEPTH_CONV HABS_CONV) THEN + [DISCH_TAC THEN (CONV_TAC "(ONCE_DEPTH_CONV HABS_CONV)") (ONCE_DEPTH_CONV HABS_CONV) THEN MATCH_MP_TAC CONT_SUB THEN CONJ_TAC THENL - [CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN + [(CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN FIRST_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[]; - CONV_TAC(ONCE_DEPTH_CONV HABS_CONV) THEN MATCH_MP_TAC CONT_MUL THEN + (CONV_TAC "(ONCE_DEPTH_CONV HABS_CONV)") (ONCE_DEPTH_CONV HABS_CONV) THEN MATCH_MP_TAC CONT_MUL THEN REWRITE_TAC[CONT_CONST] THEN MATCH_MP_TAC DIFF_CONT THEN EXISTS_TAC `&1` THEN MATCH_ACCEPT_TAC DIFF_X]; DISCH_THEN(fun th -> FIRST_ASSUM(MP_TAC o C MATCH_MP th)) THEN REWRITE_TAC[differentiable] THEN DISCH_THEN(X_CHOOSE_TAC `l:real`) THEN EXISTS_TAC `l - ((f(b) - f(a)) / (b - a))` THEN - CONV_TAC(ONCE_DEPTH_CONV HABS_CONV) THEN MATCH_MP_TAC DIFF_SUB THEN + (CONV_TAC "(ONCE_DEPTH_CONV HABS_CONV)") (ONCE_DEPTH_CONV HABS_CONV) THEN MATCH_MP_TAC DIFF_SUB THEN CONJ_TAC THENL - [CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN FIRST_ASSUM ACCEPT_TAC; - CONV_TAC(ONCE_DEPTH_CONV HABS_CONV) THEN REWRITE_TAC[] THEN + [(CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN FIRST_ASSUM ACCEPT_TAC; + (CONV_TAC "(ONCE_DEPTH_CONV HABS_CONV)") (ONCE_DEPTH_CONV HABS_CONV) THEN REWRITE_TAC[] THEN GEN_REWRITE_TAC LAND_CONV [GSYM REAL_MUL_RID] THEN MATCH_MP_TAC DIFF_CMUL THEN MATCH_ACCEPT_TAC DIFF_X]]; ALL_TAC] THEN @@ -5958,18 +5954,18 @@ let MVT = prove( DISCH_THEN((then_) (MAP_EVERY EXISTS_TAC [`((f(b) - f(a)) / (b - a))`; `z:real`]) o MP_TAC) THEN ASM_REWRITE_TAC[] THEN DISCH_THEN((then_) CONJ_TAC o MP_TAC) THENL - [ALL_TAC; DISCH_THEN(K ALL_TAC) THEN CONV_TAC SYM_CONV THEN + [ALL_TAC; DISCH_THEN(K ALL_TAC) THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_DIV_LMUL THEN REWRITE_TAC[REAL_SUB_0] THEN DISCH_THEN SUBST_ALL_TAC THEN UNDISCH_TAC `a < a` THEN REWRITE_TAC[REAL_LT_REFL]] THEN SUBGOAL_THEN `((\x. ((f(b) - f(a)) / (b - a)) * x ) diffl ((f(b) - f(a)) / (b - a)))(z)` (fun th -> DISCH_THEN(MP_TAC o C CONJ th)) THENL - [CONV_TAC(ONCE_DEPTH_CONV HABS_CONV) THEN REWRITE_TAC[] THEN + [(CONV_TAC "(ONCE_DEPTH_CONV HABS_CONV)") (ONCE_DEPTH_CONV HABS_CONV) THEN REWRITE_TAC[] THEN GEN_REWRITE_TAC LAND_CONV [GSYM REAL_MUL_RID] THEN MATCH_MP_TAC DIFF_CMUL THEN REWRITE_TAC[DIFF_X]; ALL_TAC] THEN DISCH_THEN(MP_TAC o MATCH_MP DIFF_ADD) THEN BETA_TAC THEN - REWRITE_TAC[REAL_SUB_ADD] THEN CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN + REWRITE_TAC[REAL_SUB_ADD] THEN (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN REWRITE_TAC[REAL_ADD_LID]);; (* ------------------------------------------------------------------------- *) @@ -6053,7 +6049,7 @@ let DIFF_ISCONST_ALL = prove( REPEAT GEN_TAC THEN REPEAT_TCL DISJ_CASES_THEN MP_TAC (SPECL [`x:real`; `y:real`] REAL_LT_TOTAL) THENL [DISCH_THEN SUBST1_TAC THEN REFL_TAC; - CONV_TAC(RAND_CONV SYM_CONV); + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV); ALL_TAC] THEN DISCH_TAC THEN MATCH_MP_TAC DIFF_ISCONST_END THEN ASM_REWRITE_TAC[]);; @@ -6122,7 +6118,7 @@ let CONT_INJ_LEMMA = prove( [FIRST_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[REAL_SUB_SUB; ABS_NEG] THEN ASM_REWRITE_TAC[real_abs; REAL_LE_REFL]; ALL_TAC] THEN - REWRITE_TAC[] THEN CONV_TAC(RAND_CONV SYM_CONV) THEN + REWRITE_TAC[] THEN (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN MATCH_MP_TAC REAL_LTE_TRANS THEN EXISTS_TAC `x:real` THEN ASM_REWRITE_TAC[REAL_LT_SUB_RADD; REAL_LT_ADDR]]]);; @@ -6256,7 +6252,7 @@ let DIFF_INVERSE = prove( ASM_REWRITE_TAC[] THEN REPEAT CONJ_TAC THENL [X_GEN_TAC `z:real` THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[REAL_SUB_REFL; REAL_MUL_RZERO] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_DIV_RMUL THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_DIV_RMUL THEN ASM_REWRITE_TAC[REAL_SUB_0]; ALL_TAC; FIRST_ASSUM(SUBST1_TAC o SYM) THEN REPEAT AP_TERM_TAC THEN @@ -6295,7 +6291,7 @@ let DIFF_INVERSE = prove( UNDISCH_TAC `&0 < k` THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[ABS_ZERO; REAL_SUB_0]] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[ABS_ZERO; REAL_SUB_0]] THEN SUBGOAL_THEN `~(g(y:real) - x = &0)` ASSUME_TAC THENL [REWRITE_TAC[REAL_SUB_0] THEN DISCH_THEN(MP_TAC o AP_TERM `f:real->real`) THEN @@ -6348,7 +6344,7 @@ let DIFF_INVERSE = prove( RULE_ASSUM_TAC(REWRITE_RULE[ABS_NZ]) THEN DISCH_THEN(fun th -> FIRST_ASSUM(MP_TAC o C MATCH_MP th)) THEN REWRITE_TAC[GSYM ABS_NZ] THEN - CONV_TAC CONTRAPOS_CONV THEN ASM_REWRITE_TAC[] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN ASM_REWRITE_TAC[] THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[REAL_SUB_LZERO; ABS_NEG; REAL_LT_REFL]);; @@ -6395,7 +6391,7 @@ let IVT_DERIVATIVE_0 = prove DISCH_THEN(X_CHOOSE_THEN `e:real` STRIP_ASSUME_TAC) THEN UNDISCH_TAC `!h. &0 < h /\ h < d ==> w < f (a + h)` THEN DISCH_THEN(MP_TAC o SPEC `e:real`) THEN ASM_REWRITE_TAC[] THEN - CONV_TAC CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN REWRITE_TAC[REAL_NOT_LT] THEN FIRST_ASSUM MATCH_MP_TAC THEN ONCE_REWRITE_TAC[REAL_ADD_SYM] THEN ASM_SIMP_TAC[REAL_LE_ADDL; REAL_LT_IMP_LE]; ALL_TAC] THEN @@ -6409,7 +6405,7 @@ let IVT_DERIVATIVE_0 = prove DISCH_THEN(X_CHOOSE_THEN `e:real` STRIP_ASSUME_TAC) THEN UNDISCH_TAC `!h. &0 < h /\ h < d ==> w < f (b - h)` THEN DISCH_THEN(MP_TAC o SPEC `e:real`) THEN ASM_REWRITE_TAC[] THEN - CONV_TAC CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN REWRITE_TAC[REAL_NOT_LT] THEN FIRST_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[REAL_LE_SUB_LADD; REAL_LE_SUB_RADD] THEN ONCE_REWRITE_TAC[REAL_ADD_SYM] THEN diff --git a/Library/binary.ml b/Library/binary.ml index 97f75d03..18d9849e 100644 --- a/Library/binary.ml +++ b/Library/binary.ml @@ -88,7 +88,7 @@ let BITSET_STEP = prove let BINARYSUM_BITSET = prove (`!n. binarysum (bitset n) = n`, - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN REWRITE_TAC[binarysum] THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN REWRITE_TAC[binarysum] THEN MATCH_MP_TAC BINARY_INDUCT THEN REWRITE_TAC[BITSET_0; NSUM_CLAUSES] THEN SIMP_TAC[BITSET_STEP; NSUM_IMAGE; SUC_INJ; ADD1; FINITE_BITSET; ARITH; NSUM_CLAUSES; FINITE_IMAGE; IN_IMAGE; ARITH_RULE `~(0 = x + 1)`] THEN @@ -139,7 +139,7 @@ let BINARYSUM_DIV = prove EXISTS_TAC `(nsum {i | i < k /\ i IN s} (\j. 2 EXP j) + nsum {i | k <= i /\ i IN s} (\j. 2 EXP j)) DIV (2 EXP k)` THEN CONJ_TAC THENL - [AP_THM_TAC THEN AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + [AP_THM_TAC THEN AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC NSUM_UNION_EQ THEN ASM_SIMP_TAC[EXTENSION; IN_INTER; IN_UNION; IN_ELIM_THM; NOT_IN_EMPTY] THEN CONJ_TAC THEN X_GEN_TAC `i:num` THEN diff --git a/Library/binomial.ml b/Library/binomial.ml index 70c07b9d..28edcc25 100644 --- a/Library/binomial.ml +++ b/Library/binomial.ml @@ -63,7 +63,7 @@ let BINOM_FACT = prove INDUCT_TAC THEN REWRITE_TAC[FACT; ADD_CLAUSES; MULT_CLAUSES; BINOM_REFL] THEN INDUCT_TAC THEN REWRITE_TAC[ADD_CLAUSES; FACT; MULT_CLAUSES; binom] THEN FIRST_X_ASSUM(MP_TAC o SPEC `SUC k`) THEN POP_ASSUM MP_TAC THEN - REWRITE_TAC[ADD_CLAUSES; FACT; binom] THEN CONV_TAC NUM_RING);; + REWRITE_TAC[ADD_CLAUSES; FACT; binom] THEN (CONV_TAC "NUM_RING") NUM_RING);; let BINOM_EQ_0 = prove (`!n k. binom(n,k) = 0 <=> n < k`, @@ -83,7 +83,7 @@ let BINOM_PENULT = prove let BINOM_GE_TOP = prove (`!m n. 1 <= m /\ m < n ==> n <= binom(n,m)`, INDUCT_TAC THEN INDUCT_TAC THEN REWRITE_TAC[binom] THEN - CONV_TAC NUM_REDUCE_CONV THEN STRIP_TAC THEN ASM_CASES_TAC `m = 0` THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN STRIP_TAC THEN ASM_CASES_TAC `m = 0` THEN ASM_SIMP_TAC[BINOM_1; ARITH_SUC; binom] THEN REWRITE_TAC[ADD1; LE_REFL] THEN FIRST_X_ASSUM(MP_TAC o SPEC `n:num`) THEN ANTS_TAC THENL [ASM_ARITH_TAC; ALL_TAC] THEN @@ -108,7 +108,7 @@ let BINOM_TOP_STEP = prove MP_TAC(SPECL [`d:num`; `k:num`] BINOM_FACT) THEN REWRITE_TAC[GSYM ADD1; ADD_CLAUSES; FACT; ADD_AC] THEN MAP_EVERY (fun t -> MP_TAC(SPEC t FACT_LT)) [`d:num`; `k:num`] THEN - REWRITE_TAC[LT_NZ] THEN CONV_TAC NUM_RING);; + REWRITE_TAC[LT_NZ] THEN (CONV_TAC "NUM_RING") NUM_RING);; let BINOM_BOTTOM_STEP = prove (`!n k. (k + 1) * binom(n,k + 1) = (n - k) * binom(n,k)`, @@ -124,7 +124,7 @@ let BINOM_BOTTOM_STEP = prove MP_TAC(SPECL [`d:num`; `k + 1`] BINOM_FACT) THEN REWRITE_TAC[GSYM ADD1; ADD_CLAUSES; FACT; ADD_AC] THEN MAP_EVERY (fun t -> MP_TAC(SPEC t FACT_LT)) [`d:num`; `k:num`] THEN - REWRITE_TAC[LT_NZ] THEN CONV_TAC NUM_RING);; + REWRITE_TAC[LT_NZ] THEN (CONV_TAC "NUM_RING") NUM_RING);; (* ------------------------------------------------------------------------- *) (* Binomial expansion. *) @@ -187,7 +187,7 @@ let BINOM_TOP_STEP_REAL = prove ASM_SIMP_TAC[GSYM REAL_OF_NUM_EQ; GSYM REAL_OF_NUM_MUL; GSYM REAL_OF_NUM_ADD; GSYM REAL_OF_NUM_SUB] THEN UNDISCH_TAC `k <= n:num` THEN REWRITE_TAC[GSYM REAL_OF_NUM_LE] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let BINOM_BOTTOM_STEP_REAL = prove (`!n k. &(binom(n,k+1)) = (&n - &k) / (&k + &1) * &(binom(n,k))`, @@ -196,7 +196,7 @@ let BINOM_BOTTOM_STEP_REAL = prove MP_TAC(SPECL [`n:num`; `k:num`] BINOM_BOTTOM_STEP) THEN ASM_SIMP_TAC[GSYM REAL_OF_NUM_EQ; GSYM REAL_OF_NUM_MUL; GSYM REAL_OF_NUM_ADD; GSYM REAL_OF_NUM_SUB] THEN - CONV_TAC REAL_FIELD]);; + (CONV_TAC "REAL_FIELD") REAL_FIELD]);; let REAL_OF_NUM_BINOM = prove (`!n k. &(binom(n,k)) = @@ -219,13 +219,13 @@ let BINOM_BOTH_STEP_REAL = prove REPEAT GEN_TAC THEN REWRITE_TAC[EQ_ADD_RCANCEL] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[BINOM_REFL] THEN POP_ASSUM MP_TAC THEN REWRITE_TAC[GSYM REAL_OF_NUM_ADD; GSYM REAL_OF_NUM_EQ] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let BINOM_BOTH_STEP = prove (`!p k. (k + 1) * binom(p + 1,k + 1) = (p + 1) * binom(p,k)`, REWRITE_TAC[GSYM REAL_OF_NUM_EQ; GSYM REAL_OF_NUM_MUL] THEN REWRITE_TAC[BINOM_BOTH_STEP_REAL; GSYM REAL_OF_NUM_ADD] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let BINOM_BOTH_STEP_DOWN = prove (`!p k. (k = 0 ==> p = 0) ==> k * binom(p,k) = p * binom(p - 1,k - 1)`, @@ -239,7 +239,7 @@ let BINOM = prove if k <= n then FACT(n) DIV (FACT(n - k) * FACT(k)) else 0`, REPEAT GEN_TAC THEN COND_CASES_TAC THEN - ASM_SIMP_TAC[BINOM_EQ_0; GSYM NOT_LE] THEN CONV_TAC SYM_CONV THEN + ASM_SIMP_TAC[BINOM_EQ_0; GSYM NOT_LE] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC DIV_UNIQ THEN EXISTS_TAC `0` THEN SIMP_TAC[LT_MULT; FACT_LT; ADD_CLAUSES] THEN FIRST_X_ASSUM(CHOOSE_THEN SUBST1_TAC o GEN_REWRITE_RULE I [LE_EXISTS]) THEN @@ -275,7 +275,7 @@ let BINOM_MUL_SHIFT = prove `k:num <= m /\ m <= n ==> n - k - (m - k) = n - m`] THEN MAP_EVERY (MP_TAC o C SPEC FACT_NZ) [`n:num`; `m:num`; `n - m:num`; `n - k:num`; `m - k:num`] THEN - REWRITE_TAC[GSYM REAL_OF_NUM_EQ] THEN CONV_TAC REAL_FIELD]);; + REWRITE_TAC[GSYM REAL_OF_NUM_EQ] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]);; let APPELL_SEQUENCE = prove (`!c n x y. sum (0..n) diff --git a/Library/calc_real.ml b/Library/calc_real.ml index 9462c73d..8240062c 100644 --- a/Library/calc_real.ml +++ b/Library/calc_real.ml @@ -6,7 +6,7 @@ needs "Library/transc.ml";; let REAL_SUB_SUM0 = prove (`!x y m. sum(0,m) x - sum(0,m) y = sum(0,m) (\i. x i - y i)`, - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN GEN_TAC THEN GEN_TAC THEN INDUCT_TAC THEN ASM_REWRITE_TAC[sum] THEN REAL_ARITH_TAC);; @@ -65,7 +65,7 @@ let REAL_NDIV_LEMMA1a = prove REPEAT_TCL DISJ_CASES_THEN ASSUME_TAC (SPECL [`a:num`; `2 EXP n`] LT_CASES) THEN ASM_REWRITE_TAC[] THEN - CONV_TAC CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN POP_ASSUM(X_CHOOSE_THEN `d:num` SUBST1_TAC o REWRITE_RULE[LT_EXISTS]) THEN REWRITE_TAC[GSYM REAL_OF_NUM_ADD] THEN REWRITE_TAC[REAL_ARITH `((a + b) - a = b) /\ (a - (a + b) = --b)`] THEN @@ -249,7 +249,7 @@ let REALCALC_INV_LEMMA = prove CONJ_TAC THENL [REAL_ARITH_TAC; ALL_TAC] THEN MATCH_MP_TAC REAL_LT_LMUL THEN CONJ_TAC THENL [REWRITE_TAC[GSYM REAL_ABS_NZ; REAL_POW_EQ_0] THEN - CONV_TAC(RAND_CONV(LAND_CONV REAL_INT_EQ_CONV)) THEN REWRITE_TAC[]; + (CONV_TAC "(RAND_CONV(LAND_CONV REAL_INT_EQ_CONV))") (RAND_CONV(LAND_CONV REAL_INT_EQ_CONV)) THEN REWRITE_TAC[]; REWRITE_TAC[REAL_SUB_RDISTRIB] THEN ONCE_REWRITE_TAC[REAL_ABS_SUB] THEN GEN_REWRITE_TAC (LAND_CONV o RAND_CONV o LAND_CONV) [REAL_MUL_SYM] THEN @@ -414,7 +414,7 @@ let REALCALC_INV_LEMMA = prove REWRITE_TAC[LE_SUC_LT] THEN RULE_ASSUM_TAC (REWRITE_RULE[REAL_ARITH `(--x = &0) = (x = &0)`]) THEN UNDISCH_TAC `~(&m = &0)` THEN REWRITE_TAC[REAL_OF_NUM_EQ] THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[NOT_LT; LE]; + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[NOT_LT; LE]; REWRITE_TAC[REAL_LE_ADDR; REAL_ABS_POS]]; REWRITE_TAC[REAL_OPPSIGN]]]]]);; @@ -438,7 +438,7 @@ let REALCALC_ADD = prove DISCH_THEN(SUBST_ALL_TAC o SYM) THEN REPEAT DISCH_TAC THEN MATCH_MP_TAC REAL_LT_LCANCEL_IMP THEN EXISTS_TAC `&2 pow 2` THEN - CONV_TAC(LAND_CONV REAL_INT_REDUCE_CONV) THEN + (CONV_TAC "(LAND_CONV REAL_INT_REDUCE_CONV)") (LAND_CONV REAL_INT_REDUCE_CONV) THEN REWRITE_TAC[REAL_ABS_LEMMA; REAL_SUB_LDISTRIB; REAL_MUL_RID] THEN REWRITE_TAC[REAL_MUL_ASSOC; GSYM REAL_POW_ADD] THEN ONCE_REWRITE_TAC[ADD_SYM] THEN @@ -463,13 +463,13 @@ let REALCALC_MUL = prove MATCH_MP_TAC REAL_LT_LCANCEL_IMP THEN EXISTS_TAC `&2 pow m` THEN REWRITE_TAC[REAL_LT_POW2; REAL_ABS_LEMMA; REAL_SUB_LDISTRIB] THEN MATCH_MP_TAC REAL_LT_LCANCEL_IMP THEN EXISTS_TAC `&2` THEN - CONV_TAC(LAND_CONV (EQT_INTRO o REAL_ARITH)) THEN + (CONV_TAC "(LAND_CONV (EQT_INTRO o REAL_ARITH))") (LAND_CONV (EQT_INTRO o REAL_ARITH)) THEN REWRITE_TAC[REAL_MUL_RID] THEN GEN_REWRITE_TAC RAND_CONV [REAL_MUL_2] THEN MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `&2 * abs(&2 pow m * c - a * b) + &2 * abs(a * b - &2 pow m * &2 pow n * x * y)` THEN - CONV_TAC(LAND_CONV (EQT_INTRO o REAL_ARITH)) THEN REWRITE_TAC[] THEN + (CONV_TAC "(LAND_CONV (EQT_INTRO o REAL_ARITH))") (LAND_CONV (EQT_INTRO o REAL_ARITH)) THEN REWRITE_TAC[] THEN MATCH_MP_TAC REAL_LET_ADD2 THEN ASM_REWRITE_TAC[] THEN REWRITE_TAC[REAL_MUL_ASSOC; GSYM REAL_POW_ADD] THEN ONCE_REWRITE_TAC[ADD_SYM] THEN ASM_REWRITE_TAC[] THEN @@ -486,7 +486,7 @@ let REALCALC_MUL = prove MATCH_MP_TAC REAL_LTE_TRANS THEN EXISTS_TAC `&2 * (abs(a) * &1 + abs(b) * &1 + &1 * &1)` THEN CONJ_TAC THENL [MATCH_MP_TAC REAL_LT_LMUL THEN - CONV_TAC(LAND_CONV (EQT_INTRO o REAL_ARITH)) THEN REWRITE_TAC[] THEN + (CONV_TAC "(LAND_CONV (EQT_INTRO o REAL_ARITH))") (LAND_CONV (EQT_INTRO o REAL_ARITH)) THEN REWRITE_TAC[] THEN MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `abs(a) * abs(e) + abs(b) * abs(d) + abs(d) * abs(e)` THEN CONJ_TAC THENL @@ -536,10 +536,10 @@ let REALCALC_SQRT = prove ASM_SIMP_TAC[GSYM REAL_MUL_ASSOC; GSYM POW_2; SQRT_POW_2; REAL_ARITH `&1 <= x ==> &0 <= x`] THEN FIRST_ASSUM(ASSUME_TAC o MATCH_MP(REAL_ARITH `&1 <= x ==> &0 <= x`)) THEN - UNDISCH_TAC `&1 <= x` THEN CONV_TAC CONTRAPOS_CONV THEN + UNDISCH_TAC `&1 <= x` THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[REAL_NOT_LE] THEN DISCH_TAC THEN SUBGOAL_THEN `x = sqrt(x) pow 2` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN ASM_REWRITE_TAC[SQRT_POW2]; + [(CONV_TAC "SYM_CONV") SYM_CONV THEN ASM_REWRITE_TAC[SQRT_POW2]; GEN_REWRITE_TAC RAND_CONV [GSYM REAL_MUL_LID] THEN REWRITE_TAC[POW_2] THEN MATCH_MP_TAC REAL_LT_MUL2 THEN ASM_SIMP_TAC[SQRT_POS_LE]]);; @@ -619,7 +619,7 @@ let STEP_LEMMA2 = prove REWRITE_TAC(map (GSYM o SPEC `&2`) [REAL_SUB_LDISTRIB; REAL_ADD_LDISTRIB]) THEN REWRITE_TAC[GSYM REAL_ABS_LEMMA1] THEN MATCH_MP_TAC REAL_LE_LMUL THEN - CONV_TAC(LAND_CONV (EQT_INTRO o REAL_ARITH)) THEN REWRITE_TAC[] THEN + (CONV_TAC "(LAND_CONV (EQT_INTRO o REAL_ARITH))") (LAND_CONV (EQT_INTRO o REAL_ARITH)) THEN REWRITE_TAC[] THEN GEN_REWRITE_TAC (LAND_CONV o ONCE_DEPTH_CONV) [AC REAL_MUL_AC `a * b * c * d * e * f * g = d * (a * f) * (c * g) * (e * b)`] THEN @@ -734,7 +734,7 @@ let STEP_SIN = prove <= &1 / &6` ASSUME_TAC THENL [REWRITE_TAC[real_div; REAL_MUL_LID] THEN MATCH_MP_TAC REAL_LE_INV2 THEN - CONV_TAC(LAND_CONV (EQT_INTRO o REAL_ARITH)) THEN REWRITE_TAC[] THEN + (CONV_TAC "(LAND_CONV (EQT_INTRO o REAL_ARITH))") (LAND_CONV (EQT_INTRO o REAL_ARITH)) THEN REWRITE_TAC[] THEN REWRITE_TAC[REAL_ARITH `&6 = &2 * &3`] THEN REWRITE_TAC[REAL_OF_NUM_MUL; REAL_OF_NUM_LE] THEN MATCH_MP_TAC LE_MULT2 THEN ONCE_REWRITE_TAC[ADD_SYM] THEN @@ -883,7 +883,7 @@ let STEP_LN = prove REWRITE_TAC[REAL_ADD_ASSOC; REAL_LE_RADD] THEN MATCH_MP_TAC REAL_LE_ADD2 THEN CONJ_TAC THENL [REWRITE_TAC[REAL_MUL_ASSOC] THEN MATCH_MP_TAC REAL_LE_RMUL THEN - CONV_TAC(RAND_CONV (EQT_INTRO o REAL_ARITH)) THEN REWRITE_TAC[] THEN + (CONV_TAC "(RAND_CONV (EQT_INTRO o REAL_ARITH))") (RAND_CONV (EQT_INTRO o REAL_ARITH)) THEN REWRITE_TAC[] THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_MUL_LID] THEN MATCH_MP_TAC REAL_LE_MUL2 THEN REPEAT CONJ_TAC THENL [MATCH_MP_TAC REAL_LE_RCANCEL_IMP THEN @@ -910,7 +910,7 @@ let STEP_LN = prove MATCH_MP_TAC REAL_LE_ADD2 THEN ASM_REWRITE_TAC[REAL_ABS_NEG] THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN MATCH_MP_TAC REAL_LE_INV2 THEN - CONV_TAC(LAND_CONV (EQT_INTRO o REAL_ARITH)) THEN REWRITE_TAC[] THEN + (CONV_TAC "(LAND_CONV (EQT_INTRO o REAL_ARITH))") (LAND_CONV (EQT_INTRO o REAL_ARITH)) THEN REWRITE_TAC[] THEN SUBST1_TAC(SYM(REAL_INT_REDUCE_CONV `&2 pow 2`)) THEN MATCH_MP_TAC REAL_MONO_POW2 THEN ASM_REWRITE_TAC[]]; REWRITE_TAC[real_div; REAL_ABS_MUL; REAL_ABS_NEG; REAL_ABS_INV] THEN @@ -933,11 +933,11 @@ let STEP_LN = prove MATCH_MP_TAC REAL_LE_MUL2 THEN REWRITE_TAC[REAL_LE_INV_EQ; REAL_ABS_POS] THEN REPEAT CONJ_TAC THENL - [CONV_TAC(RAND_CONV REAL_RAT_REDUCE_CONV) THEN ASM_REWRITE_TAC[]; + [(CONV_TAC "(RAND_CONV REAL_RAT_REDUCE_CONV)") (RAND_CONV REAL_RAT_REDUCE_CONV) THEN ASM_REWRITE_TAC[]; MATCH_MP_TAC REAL_POW_LE THEN REWRITE_TAC[REAL_ABS_POS]; MATCH_MP_TAC REAL_POW_1_LE THEN REWRITE_TAC[REAL_ABS_POS] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&1 / &2` THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV]]]]]);; + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]]]]]);; (* ------------------------------------------------------------------------- *) (* Expand the "!k. SUC k < r ==> P k" term for given numeral r. *) @@ -1044,7 +1044,7 @@ let STEP_EXP_4_PLUS = prove REWRITE_TAC[LT] THEN STRIP_TAC THEN MP_TAC (DISCH_ALL STEP_EXP_4) THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC(REAL_ARITH `b <= c ==> a <= b ==> a <= c`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; REWRITE_TAC[ADD_CLAUSES; lemma] THEN STRIP_TAC THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&2 / &(SUC(4 + d)) * &2 + @@ -1059,7 +1059,7 @@ let STEP_EXP_4_PLUS = prove [SYM(REAL_RAT_REDUCE_CONV `&3 / &2 + &1 / &2`)] THEN REWRITE_TAC[REAL_LE_RADD; REAL_ADD_ASSOC] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&4 / &5 + &1 / &120` THEN - CONV_TAC(RAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[] THEN + (CONV_TAC "(RAND_CONV REAL_RAT_REDUCE_CONV)") (RAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[] THEN MATCH_MP_TAC REAL_LE_ADD2 THEN CONJ_TAC THENL [ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN REWRITE_TAC[real_div; REAL_MUL_ASSOC] THEN @@ -1071,7 +1071,7 @@ let STEP_EXP_4_PLUS = prove MP_TAC(SPEC `d':num` REAL_POS) THEN REAL_ARITH_TAC; REWRITE_TAC[real_div; REAL_MUL_LID] THEN MATCH_MP_TAC REAL_LE_INV2 THEN - CONV_TAC(LAND_CONV (EQT_INTRO o REAL_ARITH)) THEN REWRITE_TAC[] THEN + (CONV_TAC "(LAND_CONV (EQT_INTRO o REAL_ARITH))") (LAND_CONV (EQT_INTRO o REAL_ARITH)) THEN REWRITE_TAC[] THEN SUBST1_TAC(SYM(NUM_FACT_CONV `FACT 5`)) THEN REWRITE_TAC[REAL_OF_NUM_LE] THEN MATCH_MP_TAC FACT_MONO THEN REWRITE_TAC[num_CONV `5`; LE_SUC; LE_ADD]]]]);; @@ -1097,10 +1097,10 @@ let STEPS_EXP_1 = prove <= &2 pow n * &(SUC k)) ==> abs(sum(0,1) t - &2 pow n * sum(0,1)(\i. x pow i / &(FACT i))) <= &2 * &1`, - CONV_TAC(ONCE_DEPTH_CONV EXPAND_RANGE_CONV) THEN REWRITE_TAC[] THEN - STRIP_TAC THEN CONV_TAC(ONCE_DEPTH_CONV REAL_SUM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV EXPAND_RANGE_CONV)") (ONCE_DEPTH_CONV EXPAND_RANGE_CONV) THEN REWRITE_TAC[] THEN + STRIP_TAC THEN (CONV_TAC "(ONCE_DEPTH_CONV REAL_SUM_CONV)") (ONCE_DEPTH_CONV REAL_SUM_CONV) THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&0` THEN - CONV_TAC(RAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[] THEN + (CONV_TAC "(RAND_CONV REAL_RAT_REDUCE_CONV)") (RAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[] THEN MP_TAC (DISCH_ALL STEP_EXP_0) THEN ASM_REWRITE_TAC[]);; let STEPS_EXP_2 = prove @@ -1112,12 +1112,12 @@ let STEPS_EXP_2 = prove <= &2 pow n * &(SUC k)) ==> abs(sum(0,2) t - &2 pow n * sum(0,2) (\i. x pow i / &(FACT i))) <= &2 * &2`, - CONV_TAC(ONCE_DEPTH_CONV EXPAND_RANGE_CONV) THEN REWRITE_TAC[] THEN - STRIP_TAC THEN CONV_TAC(ONCE_DEPTH_CONV REAL_SUM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV EXPAND_RANGE_CONV)") (ONCE_DEPTH_CONV EXPAND_RANGE_CONV) THEN REWRITE_TAC[] THEN + STRIP_TAC THEN (CONV_TAC "(ONCE_DEPTH_CONV REAL_SUM_CONV)") (ONCE_DEPTH_CONV REAL_SUM_CONV) THEN REWRITE_TAC[REAL_ADD_LDISTRIB] THEN REWRITE_TAC[REAL_ARITH `(a + b) - (c + d) = (a - c) + (b - d)`] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&0 + &3 / &2` THEN - CONV_TAC(RAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[] THEN + (CONV_TAC "(RAND_CONV REAL_RAT_REDUCE_CONV)") (RAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[] THEN MATCH_MP_TAC(REAL_LE_IMP(REAL_ARITH `abs(a + b) <= abs(a) + abs(b)`)) THEN MATCH_MP_TAC REAL_LE_ADD2 THEN CONJ_TAC THENL [MP_TAC (DISCH_ALL STEP_EXP_0) THEN ASM_REWRITE_TAC[]; @@ -1133,13 +1133,13 @@ let STEPS_EXP_3 = prove <= &2 pow n * &(SUC k)) ==> abs(sum(0,3) t - &2 pow n * sum(0,3) (\i. x pow i / &(FACT i))) <= &2 * &3`, - CONV_TAC(ONCE_DEPTH_CONV EXPAND_RANGE_CONV) THEN REWRITE_TAC[] THEN - STRIP_TAC THEN CONV_TAC(ONCE_DEPTH_CONV REAL_SUM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV EXPAND_RANGE_CONV)") (ONCE_DEPTH_CONV EXPAND_RANGE_CONV) THEN REWRITE_TAC[] THEN + STRIP_TAC THEN (CONV_TAC "(ONCE_DEPTH_CONV REAL_SUM_CONV)") (ONCE_DEPTH_CONV REAL_SUM_CONV) THEN REWRITE_TAC[REAL_ADD_LDISTRIB] THEN REWRITE_TAC[REAL_ARITH `(a + b) - (c + d) = (a - c) + (b - d)`] THEN REWRITE_TAC[GSYM REAL_ADD_ASSOC] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&0 + &3 / &2 + &5 / &2` THEN - CONV_TAC(RAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[] THEN + (CONV_TAC "(RAND_CONV REAL_RAT_REDUCE_CONV)") (RAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[] THEN REPEAT (MATCH_MP_TAC(REAL_LE_IMP(REAL_ARITH `abs(a + b) <= abs(a) + abs(b)`)) THEN MATCH_MP_TAC REAL_LE_ADD2 THEN CONJ_TAC) @@ -1157,14 +1157,14 @@ let STEPS_EXP_4 = prove <= &2 pow n * &(SUC k)) ==> abs(sum(0,4) t - &2 pow n * sum(0,4) (\i. x pow i / &(FACT i))) <= &2 * &4`, - CONV_TAC(ONCE_DEPTH_CONV EXPAND_RANGE_CONV) THEN REWRITE_TAC[] THEN - STRIP_TAC THEN CONV_TAC(ONCE_DEPTH_CONV REAL_SUM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV EXPAND_RANGE_CONV)") (ONCE_DEPTH_CONV EXPAND_RANGE_CONV) THEN REWRITE_TAC[] THEN + STRIP_TAC THEN (CONV_TAC "(ONCE_DEPTH_CONV REAL_SUM_CONV)") (ONCE_DEPTH_CONV REAL_SUM_CONV) THEN REWRITE_TAC[REAL_ADD_LDISTRIB] THEN REWRITE_TAC[REAL_ARITH `(a + b) - (c + d) = (a - c) + (b - d)`] THEN REWRITE_TAC[GSYM REAL_ADD_ASSOC] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&0 + &3 / &2 + &5 / &2 + &7 / &3` THEN - CONV_TAC(RAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[] THEN + (CONV_TAC "(RAND_CONV REAL_RAT_REDUCE_CONV)") (RAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[] THEN REPEAT (MATCH_MP_TAC(REAL_LE_IMP(REAL_ARITH `abs(a + b) <= abs(a) + abs(b)`)) THEN MATCH_MP_TAC REAL_LE_ADD2 THEN CONJ_TAC) @@ -1273,7 +1273,7 @@ let STEPS_LN = prove [REPEAT STRIP_TAC THEN REWRITE_TAC[REAL_ABS_MUL] THEN AP_TERM_TAC THEN ASM_SIMP_TAC[real_abs; REAL_LT_IMP_LE]; ALL_TAC] THEN MATCH_MP_TAC REAL_LE_LCANCEL_IMP THEN EXISTS_TAC `&2` THEN - REWRITE_TAC[REAL_MUL_ASSOC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[REAL_MUL_ASSOC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM REAL_MUL_ASSOC; REAL_MUL_LID] THEN REWRITE_TAC[REAL_SUB_RDISTRIB] THEN SUBGOAL_THEN `!a b c d. &0 < a ==> ((b * c * d / a) * a = b * c * d)` @@ -1315,7 +1315,7 @@ let STEPS_LN = prove (d * a) * (b * c) * e`] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `inv(&1) * &3 / &4 * &3` THEN - CONV_TAC(RAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[] THEN + (CONV_TAC "(RAND_CONV REAL_RAT_REDUCE_CONV)") (RAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[] THEN REWRITE_TAC[REAL_MUL_ASSOC] THEN MATCH_MP_TAC REAL_LE_RMUL THEN REWRITE_TAC[REAL_OF_NUM_LE; ARITH] THEN ONCE_REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN @@ -1348,7 +1348,7 @@ let STEPS_LN = prove REWRITE_TAC[REAL_MUL_LID; REAL_MUL_RID] THEN REWRITE_TAC[REAL_LE_SUB_LADD] THEN ONCE_REWRITE_TAC[REAL_ADD_SYM] THEN REWRITE_TAC[GSYM REAL_LE_SUB_LADD] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN MATCH_MP_TAC REAL_LE_INV2 THEN REWRITE_TAC[REAL_OF_NUM_LT; ARITH] THEN @@ -1374,17 +1374,17 @@ let STEPS_LN = prove REAL_ABS_NEG; REAL_ABS_NUM; REAL_ABS_INV] THEN REWRITE_TAC[REAL_POW_ONE; REAL_MUL_LID] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `inv(&2) pow 1 * inv(&2)` THEN - CONJ_TAC THENL [ALL_TAC; CONV_TAC REAL_RAT_REDUCE_CONV] THEN + CONJ_TAC THENL [ALL_TAC; (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN MATCH_MP_TAC REAL_LE_MUL2 THEN SIMP_TAC[REAL_ABS_POS; REAL_POW_LE; REAL_LE_INV_EQ; LE_0; REAL_OF_NUM_LE] THEN CONJ_TAC THENL [MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `inv(&2) pow (SUC p)` THEN CONJ_TAC THENL - [MATCH_MP_TAC REAL_POW_LE2 THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [MATCH_MP_TAC REAL_POW_LE2 THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[REAL_ABS_POS]; REWRITE_TAC[REAL_POW_INV] THEN MATCH_MP_TAC REAL_LE_INV2 THEN - CONJ_TAC THENL [CONV_TAC REAL_RAT_REDUCE_CONV; ALL_TAC] THEN + CONJ_TAC THENL [(CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN MATCH_MP_TAC REAL_POW_MONO THEN REWRITE_TAC[REAL_OF_NUM_LE; ARITH] THEN ARITH_TAC]; MATCH_MP_TAC REAL_LE_INV2 THEN @@ -1412,12 +1412,12 @@ let REAL_EXP_15 = prove REWRITE_TAC[REAL_EXP_ADD] THEN MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `(&1 + &2 * inv(&2)) * (&1 + &2 * inv(&2))` THEN - CONV_TAC(RAND_CONV REAL_RAT_REDUCE_CONV) THEN + (CONV_TAC "(RAND_CONV REAL_RAT_REDUCE_CONV)") (RAND_CONV REAL_RAT_REDUCE_CONV) THEN REWRITE_TAC[] THEN MATCH_MP_TAC REAL_LE_MUL2 THEN REWRITE_TAC[REAL_EXP_POS_LE] THEN MATCH_MP_TAC REAL_EXP_BOUND_LEMMA THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let TAYLOR_EXP_WEAK = prove (`abs(x) <= &1 ==> @@ -1463,13 +1463,13 @@ let TAYLOR_EXP_WEAK = prove let REAL_EXP_13 = prove (`exp(&1) < &3`, MP_TAC(INST [`&1`,`x:real`; `5`,`m:num`] TAYLOR_EXP_WEAK) THEN - CONV_TAC(ONCE_DEPTH_CONV REAL_SUM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV REAL_SUM_CONV)") (ONCE_DEPTH_CONV REAL_SUM_CONV) THEN REWRITE_TAC[ADD_CLAUSES] THEN - CONV_TAC(ONCE_DEPTH_CONV NUM_FACT_CONV) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "(ONCE_DEPTH_CONV NUM_FACT_CONV)") (ONCE_DEPTH_CONV NUM_FACT_CONV) THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(REAL_ARITH `b + e <= c ==> abs(a - b) < e ==> a < c`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let TAYLOR_EXP = prove (`abs(x) <= &1 ==> @@ -1533,7 +1533,7 @@ let TAYLOR_LN = prove REWRITE_TAC[ADD1; lemma] THEN REWRITE_TAC[ADD_CLAUSES] THEN ONCE_REWRITE_TAC[SUM_DIFF] THEN - CONV_TAC(ONCE_DEPTH_CONV REAL_SUM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV REAL_SUM_CONV)") (ONCE_DEPTH_CONV REAL_SUM_CONV) THEN REWRITE_TAC[real_div; REAL_INV_0; REAL_MUL_RZERO] THEN REWRITE_TAC[GSYM ADD1] THEN MP_TAC(SPECL [`x:real`; `SUC m`] MCLAURIN_LN_POS) THEN @@ -1587,7 +1587,7 @@ let APPROX_LEMMA1 = prove ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN (MATCH_MP_TAC o GEN_ALL) (REAL_ARITH `abs(a - b) + abs(b - c) < d ==> abs(a - c) < d`) THEN EXISTS_TAC `&2 pow n * u` THEN - CONV_TAC(funpow 4 RAND_CONV num_CONV) THEN + (CONV_TAC "(funpow 4 RAND_CONV num_CONV)") (funpow 4 RAND_CONV num_CONV) THEN REWRITE_TAC[ADD_CLAUSES; real_pow; REAL_MUL_2] THEN MATCH_MP_TAC REAL_LET_ADD2 THEN CONJ_TAC THENL [ONCE_REWRITE_TAC[REAL_POW_ADD] THEN @@ -2029,14 +2029,14 @@ let REALCALC_CONV,thm_eval,raw_eval,thm_wrap = DISCH_THEN(fun th -> ASSUME_TAC(MATCH_MP (REAL_ARITH `&1 <= x ==> &0 <= x`) th) THEN MP_TAC th) THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[REAL_NOT_LE] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[REAL_NOT_LE] THEN DISCH_TAC THEN SUBGOAL_THEN `x = sqrt(x) pow 2` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN ASM_REWRITE_TAC[SQRT_POW2]; + [(CONV_TAC "SYM_CONV") SYM_CONV THEN ASM_REWRITE_TAC[SQRT_POW2]; GEN_REWRITE_TAC RAND_CONV [GSYM REAL_MUL_LID] THEN REWRITE_TAC[POW_2] THEN MATCH_MP_TAC REAL_LT_MUL2 THEN ASM_SIMP_TAC[SQRT_POS_LE]]) in - let tac = REPEAT(MATCH_MP_TAC pth) THEN CONV_TAC REAL_RAT_LE_CONV in + let tac = REPEAT(MATCH_MP_TAC pth) THEN (CONV_TAC "REAL_RAT_LE_CONV") REAL_RAT_LE_CONV in fun tm -> try prove(tm,tac) with Failure _ -> failwith "Need root body >= &1" in fun (fn1,fn2) -> diff --git a/Library/card.ml b/Library/card.ml index 5c99847a..e3c04744 100644 --- a/Library/card.ml +++ b/Library/card.ml @@ -143,7 +143,7 @@ let EQ_C = prove REWRITE_TAC[eq_c] THEN EQ_TAC THENL [DISCH_THEN(X_CHOOSE_THEN `f:A->B` STRIP_ASSUME_TAC) THEN EXISTS_TAC `\(x:A,y:B). x IN s /\ y IN t /\ (y = f x)` THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN ASM_MESON_TAC[]; + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN ASM_MESON_TAC[]; DISCH_THEN(CHOOSE_THEN (CONJUNCTS_THEN2 ASSUME_TAC MP_TAC)) THEN DISCH_THEN(CONJUNCTS_THEN2 MP_TAC ASSUME_TAC) THEN GEN_REWRITE_TAC (LAND_CONV o TOP_DEPTH_CONV) @@ -329,7 +329,7 @@ let CARD_LE_TOTAL = prove FIRST_X_ASSUM(MP_TAC o SPEC `\(x:A,y:B). (x = a) /\ (y = b) \/ R(x,y)`) THEN REWRITE_TAC[SUBSET; FORALL_PAIR_THM; IN; EXTENSION] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN RULE_ASSUM_TAC(REWRITE_RULE[IN]) THEN ASM_MESON_TAC[]]);; (* ------------------------------------------------------------------------- *) @@ -358,7 +358,7 @@ let CARD_NOT_LT = prove let CARD_LT_LE = prove (`!s t. s <_c t <=> s <=_c t /\ ~(s =_c t)`, - REWRITE_TAC[lt_c; GSYM CARD_LE_ANTISYM] THEN CONV_TAC TAUT);; + REWRITE_TAC[lt_c; GSYM CARD_LE_ANTISYM] THEN (CONV_TAC "TAUT") TAUT);; let CARD_LE_LT = prove (`!s t. s <=_c t <=> s <_c t \/ s =_c t`, @@ -424,7 +424,7 @@ let INFINITE_CARD_LE = prove REWRITE_TAC[le_c] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `f:num->A` THEN REWRITE_TAC[IN_UNIV] THEN DISCH_TAC THEN SUBGOAL_THEN `!n. (f:num->A)(n) IN (s DIFF IMAGE f {m | m < n})` MP_TAC THENL - [GEN_TAC THEN ONCE_ASM_REWRITE_TAC[] THEN CONV_TAC SELECT_CONV THEN + [GEN_TAC THEN ONCE_ASM_REWRITE_TAC[] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN REWRITE_TAC[MEMBER_NOT_EMPTY] THEN MATCH_MP_TAC INFINITE_NONEMPTY THEN MATCH_MP_TAC INFINITE_DIFF_FINITE THEN ASM_SIMP_TAC[FINITE_IMAGE; FINITE_NUMSEG_LT]; @@ -672,7 +672,7 @@ let CARD_LE_MUL = prove (X_CHOOSE_THEN `g:C->D` STRIP_ASSUME_TAC)) THEN EXISTS_TAC `\(x,y). (f:A->B) x,(g:C->D) y` THEN REWRITE_TAC[FORALL_PAIR_THM; IN_ELIM_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[PAIR_EQ] THEN ASM_MESON_TAC[]);; let CARD_FUNSPACE_LE = prove @@ -728,7 +728,7 @@ let CARD_LE_SQUARE = prove (`!s:A->bool. s <=_c s *_c s`, GEN_TAC THEN REWRITE_TAC[le_c] THEN EXISTS_TAC `\x:A. x,(@z:A. z IN s)` THEN SIMP_TAC[IN_CARD_MUL; PAIR_EQ] THEN - CONV_TAC(ONCE_DEPTH_CONV SELECT_CONV) THEN MESON_TAC[]);; + (CONV_TAC "(ONCE_DEPTH_CONV SELECT_CONV)") (ONCE_DEPTH_CONV SELECT_CONV) THEN MESON_TAC[]);; let CARD_SQUARE_NUM = prove (`(UNIV:num->bool) *_c (UNIV:num->bool) =_c (UNIV:num->bool)`, @@ -736,7 +736,7 @@ let CARD_SQUARE_NUM = prove REWRITE_TAC[le_c; IN_UNIV; mul_c; IN_ELIM_THM] THEN EXISTS_TAC `\(x,y). NUMPAIR x y` THEN REWRITE_TAC[FORALL_PAIR_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN MESON_TAC[NUMPAIR_INJ]);; + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN MESON_TAC[NUMPAIR_INJ]);; let UNION_LE_ADD_C = prove (`!s t:A->bool. (s UNION t) <=_c s +_c t`, @@ -2099,7 +2099,7 @@ let CARD_EQ_REAL = prove [MATCH_MP_TAC SUM_EQ_NUMSEG THEN ASM_SIMP_TAC[ARITH_RULE `~(n = 0) /\ m <= n - 1 ==> m < n`]; REWRITE_TAC[real_pow; real_div; REAL_INV_MUL; REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `&1 / &2 * x < x <=> &0 < x`] THEN SIMP_TAC[REAL_LT_INV_EQ; REAL_POW_LT; REAL_OF_NUM_LT; ARITH]]]]; MP_TAC(ISPEC `{ sum (x INTER (0..n)) (\i. inv(&3 pow i)) | n IN (:num) }` @@ -2203,7 +2203,7 @@ let CARD_EXP_ADD = prove GEN_TAC THEN STRIP_TAC THEN MATCH_MP_TAC sum_INDUCT THEN REWRITE_TAC[injectivity "sum"; distinctness "sum"; PAIR_EQ] THEN REPEAT STRIP_TAC THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN - CONV_TAC SYM_CONV THEN TRY(FIRST_X_ASSUM MATCH_MP_TAC) THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN TRY(FIRST_X_ASSUM MATCH_MP_TAC) THEN ASM_MESON_TAC[injectivity "sum"; distinctness "sum"]);; let CARD_EXP_MUL = prove diff --git a/Library/floor.ml b/Library/floor.ml index 3696ddbb..5fd65267 100644 --- a/Library/floor.ml +++ b/Library/floor.ml @@ -197,7 +197,7 @@ let RATIONAL_INTEGER = prove (`!x. integer x ==> rational x`, GEN_TAC THEN DISCH_TAC THEN REWRITE_TAC[rational] THEN MAP_EVERY EXISTS_TAC [`x:real`; `&1`] THEN - ASM_SIMP_TAC[INTEGER_CLOSED] THEN CONV_TAC REAL_FIELD);; + ASM_SIMP_TAC[INTEGER_CLOSED] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let RATIONAL_NUM = prove (`!n. rational(&n)`, @@ -209,7 +209,7 @@ let RATIONAL_NEG = prove MAP_EVERY X_GEN_TAC [`x:real`; `m:real`; `n:real`] THEN STRIP_TAC THEN MAP_EVERY EXISTS_TAC [`--m:real`; `n:real`] THEN - ASM_SIMP_TAC[INTEGER_CLOSED] THEN CONV_TAC REAL_FIELD);; + ASM_SIMP_TAC[INTEGER_CLOSED] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let RATIONAL_ABS = prove (`!x. rational(x) ==> rational(abs x)`, @@ -223,7 +223,7 @@ let RATIONAL_INV = prove MAP_EVERY X_GEN_TAC [`m:real`; `n:real`] THEN STRIP_TAC THEN MAP_EVERY EXISTS_TAC [`n:real`; `m:real`] THEN ASM_SIMP_TAC[INTEGER_CLOSED] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let RATIONAL_ADD = prove (`!x y. rational(x) /\ rational(y) ==> rational(x + y)`, @@ -233,7 +233,7 @@ let RATIONAL_ADD = prove STRIP_TAC THEN MAP_EVERY EXISTS_TAC [`m1 * n2 + m2 * n1:real`; `n1 * n2:real`] THEN ASM_SIMP_TAC[INTEGER_CLOSED] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let RATIONAL_SUB = prove (`!x y. rational(x) /\ rational(y) ==> rational(x - y)`, @@ -247,7 +247,7 @@ let RATIONAL_MUL = prove STRIP_TAC THEN MAP_EVERY EXISTS_TAC [`m1 * m2:real`; `n1 * n2:real`] THEN ASM_SIMP_TAC[INTEGER_CLOSED] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let RATIONAL_DIV = prove (`!x y. rational(x) /\ rational(y) ==> rational(x / y)`, @@ -637,7 +637,7 @@ let HAS_SIZE_INTSEG_INT = prove `{x | integer(x) /\ a <= x /\ x <= b} = IMAGE (\n. a + &n) {n | &n <= b - a}` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN ASM_SIMP_TAC[IN_ELIM_THM; INTEGER_CLOSED] THEN CONJ_TAC THENL [ALL_TAC; REAL_ARITH_TAC] THEN X_GEN_TAC `c:real` THEN STRIP_TAC THEN diff --git a/Library/integer.ml b/Library/integer.ml index 3a5651fa..863d5e56 100644 --- a/Library/integer.ml +++ b/Library/integer.ml @@ -322,7 +322,7 @@ let INT_COPRIME_RPOW = prove (`!m n k. coprime(m,n pow k) <=> coprime(m,n) \/ k = 0`, GEN_TAC THEN GEN_TAC THEN INDUCT_TAC THEN ASM_SIMP_TAC[INT_POW; INT_COPRIME_1; INT_COPRIME_RMUL; NOT_SUC] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; let INT_COPRIME_LPOW = prove (`!m n k. coprime(m pow k,n) <=> coprime(m,n) \/ k = 0`, @@ -662,10 +662,10 @@ let INT_PRIME_1 = prove let INT_PRIME_2 = prove (`int_prime(&2)`, - REWRITE_TAC[int_prime] THEN CONV_TAC INT_REDUCE_CONV THEN + REWRITE_TAC[int_prime] THEN (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN X_GEN_TAC `x:int` THEN ASM_CASES_TAC `x = &0` THEN ASM_REWRITE_TAC[INT_DIVIDES_ZERO] THEN - CONV_TAC INT_REDUCE_CONV THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN DISCH_THEN(MP_TAC o MATCH_MP INT_DIVIDES_LE) THEN ASM_INT_ARITH_TAC);; let INT_PRIME_FACTOR = prove @@ -950,7 +950,7 @@ let INT_COPRIME_POW_ABS = prove [MATCH_MP_TAC(INT_RING `!p. ~(p = &0) /\ a * p = b * p ==> a = b`) THEN EXISTS_TAC `p pow n` THEN ASM_SIMP_TAC[INT_POW_EQ_0; INT_PRIME_IMP_NZ] THEN - FIRST_X_ASSUM(MP_TAC o SYM) THEN CONV_TAC INT_RING; + FIRST_X_ASSUM(MP_TAC o SYM) THEN (CONV_TAC "INT_RING") INT_RING; STRIP_TAC THEN ASM_REWRITE_TAC[INT_ABS_POW; GSYM INT_POW_MUL; INT_ABS_MUL] THEN MESON_TAC[]])]);; diff --git a/Library/multiplicative.ml b/Library/multiplicative.ml index d45c6e8a..4374fd18 100644 --- a/Library/multiplicative.ml +++ b/Library/multiplicative.ml @@ -58,10 +58,10 @@ let MULTIPLICATIVE_CONVOLUTION = prove MAP_EVERY X_GEN_TAC [`m:num`; `n:num`] THEN STRIP_TAC THEN GEN_REWRITE_TAC (RAND_CONV o ONCE_DEPTH_CONV) [MULT_SYM] THEN ASM_SIMP_TAC[GSYM NSUM_LMUL; NSUM_NSUM_PRODUCT; FINITE_DIVISORS] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC NSUM_EQ_GENERAL THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC NSUM_EQ_GENERAL THEN EXISTS_TAC `\(a:num,b). a * b` THEN REWRITE_TAC[EXISTS_UNIQUE_DEF] THEN REWRITE_TAC[FORALL_PAIR_THM; EXISTS_PAIR_THM; IN_ELIM_PAIR_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[IN_ELIM_THM] THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[IN_ELIM_THM] THEN REWRITE_TAC[PAIR_EQ] THEN CONJ_TAC THENL [GEN_TAC THEN DISCH_THEN(ASSUME_TAC o MATCH_MP DIVISION_DECOMP) THEN CONJ_TAC THENL [ASM_MESON_TAC[MULT_SYM]; ALL_TAC] THEN @@ -228,7 +228,7 @@ let REAL_MULTIPLICATIVE_CONVOLUTION = prove MAP_EVERY X_GEN_TAC [`m:num`; `n:num`] THEN STRIP_TAC THEN GEN_REWRITE_TAC (RAND_CONV o ONCE_DEPTH_CONV) [REAL_MUL_SYM] THEN ASM_SIMP_TAC[GSYM SUM_LMUL; SUM_SUM_PRODUCT; FINITE_DIVISORS] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_EQ_GENERAL THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_EQ_GENERAL THEN EXISTS_TAC `\(a:num,b). a * b` THEN REWRITE_TAC[EXISTS_UNIQUE_DEF] THEN REWRITE_TAC[FORALL_PAIR_THM; EXISTS_PAIR_THM; IN_ELIM_PAIR_THM] THEN REWRITE_TAC[IN_ELIM_THM; PAIR_EQ] THEN CONJ_TAC THENL @@ -289,7 +289,7 @@ let REAL_ABS_MOBIUS = prove (`!n. abs(mobius n) <= &1`, GEN_TAC THEN REWRITE_TAC[mobius] THEN COND_CASES_TAC THEN REWRITE_TAC[REAL_ABS_POW; REAL_ABS_NEG; REAL_POW_ONE; REAL_ABS_NUM] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let MOBIUS_MULT = prove (`!a b. coprime(a,b) ==> mobius(a * b) = mobius a * mobius b`, @@ -305,7 +305,7 @@ let MOBIUS_MULT = prove ASM_CASES_TAC `?p. prime p /\ p EXP 2 divides (a * b)` THENL [ASM_MESON_TAC[PRIME_DIVPROD_POW]; ALL_TAC] THEN ASM_REWRITE_TAC[GSYM REAL_POW_ADD] THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC CARD_UNION_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CARD_UNION_EQ THEN ASM_CASES_TAC `a = 0` THENL [ASM_MESON_TAC[PRIME_2; DIVIDES_0]; ALL_TAC] THEN ASM_CASES_TAC `b = 0` THENL [ASM_MESON_TAC[PRIME_2; DIVIDES_0]; ALL_TAC] THEN CONJ_TAC THENL @@ -316,7 +316,7 @@ let MOBIUS_MULT = prove UNDISCH_TAC `~(?p. prime p /\ p EXP 2 divides a * b)` THEN REWRITE_TAC[NOT_EXISTS_THM] THEN DISCH_THEN(MP_TAC o SPEC `p:num`) THEN ASM_CASES_TAC `prime p` THEN ASM_SIMP_TAC[PRIME_DIVPROD_EQ] THEN - REWRITE_TAC[CONTRAPOS_THM; EXP_2] THEN CONV_TAC NUMBER_RULE]);; + REWRITE_TAC[CONTRAPOS_THM; EXP_2] THEN (CONV_TAC "NUMBER_RULE") NUMBER_RULE]);; let REAL_MULTIPLICATIVE_MOBIUS = prove (`real_multiplicative mobius`, @@ -397,7 +397,7 @@ let MOBIUS_INVERSION = prove EXISTS_TAC `sum {n} (\d. f(d) * (if n DIV d = 1 then &1 else &0))` THEN CONJ_TAC THENL [ASM_SIMP_TAC[SUM_SING; DIV_REFL; LE_1; REAL_MUL_RID]; ALL_TAC] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN SIMP_TAC[SUBSET; IN_SING; IN_ELIM_THM; DIVIDES_REFL] THEN X_GEN_TAC `d:num` THEN REWRITE_TAC[DIVIDES_DIV_MULT] THEN DISCH_THEN(CONJUNCTS_THEN2 MP_TAC ASSUME_TAC) THEN diff --git a/Library/permutations.ml b/Library/permutations.ml index 3d1cb3d3..a51e2ffe 100644 --- a/Library/permutations.ml +++ b/Library/permutations.ml @@ -206,7 +206,7 @@ let PERMUTES_INSERT = prove {(b,p) | b IN a INSERT s /\ p IN {p | p permutes s}}`, REWRITE_TAC[EXTENSION; IN_ELIM_PAIR_THM; IN_IMAGE; EXISTS_PAIR_THM] THEN X_GEN_TAC `p:A->A` THEN REWRITE_TAC[IN_ELIM_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN EQ_TAC THENL + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN EQ_TAC THENL [DISCH_TAC THEN MAP_EVERY EXISTS_TAC [`(p:A->A) a`; `swap(a,p a) o (p:A->A)`] THEN ASM_SIMP_TAC[SWAP_IDEMPOTENT; o_ASSOC; I_O_ID; PERMUTES_INSERT_LEMMA] THEN @@ -226,14 +226,14 @@ let HAS_SIZE_PERMUTATIONS = prove SIMP_TAC[PERMUTES_EMPTY; CARD_CLAUSES; SET_RULE `{x | x = a} = {a}`] THEN SIMP_TAC[CARD_CLAUSES; FINITE_INSERT; FINITE_EMPTY] THEN REWRITE_TAC[NOT_IN_EMPTY] THEN CONJ_TAC THENL - [GEN_TAC THEN DISCH_THEN(SUBST1_TAC o SYM) THEN CONV_TAC NUM_REDUCE_CONV; + [GEN_TAC THEN DISCH_THEN(SUBST1_TAC o SYM) THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ALL_TAC] THEN MAP_EVERY X_GEN_TAC [`a:A`; `s:A->bool`] THEN REWRITE_TAC[GSYM HAS_SIZE] THEN STRIP_TAC THEN X_GEN_TAC `k:num` THEN DISCH_THEN(SUBST_ALL_TAC o SYM) THEN REWRITE_TAC[FACT; PERMUTES_INSERT] THEN MATCH_MP_TAC HAS_SIZE_IMAGE_INJ THEN ASM_SIMP_TAC[HAS_SIZE_PRODUCT; HAS_SIZE; FINITE_INSERT; CARD_CLAUSES] THEN REWRITE_TAC[FORALL_PAIR_THM; IN_ELIM_PAIR_THM; IN_ELIM_THM; PAIR_EQ] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN MAP_EVERY X_GEN_TAC [`b:A`; `q:A->A`; `c:A`; `r:A->A`] THEN STRIP_TAC THEN SUBGOAL_THEN `c:A = b` SUBST_ALL_TAC THENL [FIRST_X_ASSUM(MP_TAC o C AP_THM `a:A`) THEN REWRITE_TAC[o_THM; swap] THEN @@ -700,7 +700,7 @@ let SIGN_SWAP = prove let SIGN_IDEMPOTENT = prove (`!p. sign(p) * sign(p) = &1`, GEN_TAC THEN REWRITE_TAC[sign] THEN - COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV);; + COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let REAL_ABS_SIGN = prove (`!p. abs(sign p) = &1`, @@ -710,7 +710,7 @@ let REAL_SGN_SIGN = prove (`!p:A->A. real_sgn(sign p) = sign p`, GEN_TAC THEN REWRITE_TAC[sign] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[REAL_SGN_EQ] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; (* ------------------------------------------------------------------------- *) (* More lemmas about permutations. *) @@ -836,7 +836,7 @@ let CARD_EVEN_PERMUTATIONS = prove ==> {x | P x} = {x | P x /\ Q x} UNION IMAGE f {x | P x /\ Q x}`) THEN ASM_SIMP_TAC[PERMUTES_COMPOSE; PERMUTES_SWAP; SWAP_IDEMPOTENT; o_ASSOC; I_O_ID; EVENPERM_COMPOSE; PERMUTATION_SWAP; EVENPERM_SWAP] THEN - CONV_TAC TAUT; + (CONV_TAC "TAUT") TAUT; W(MP_TAC o PART_MATCH (lhs o rand) CARD_UNION o rand o snd) THEN ASM_SIMP_TAC[FINITE_IMAGE] THEN ANTS_TAC THENL [MATCH_MP_TAC(SET_RULE @@ -896,7 +896,7 @@ let SIGN_INVOLUTION = prove MATCH_MP_TAC(ARITH_RULE `2 <= n ==> n - 1 - 1 + 2 = n`) THEN TRANS_TAC LE_TRANS `CARD {a:A,p a}` THEN CONJ_TAC THENL [ASM_SIMP_TAC[CARD_CLAUSES; FINITE_RULES; IN_SING; NOT_IN_EMPTY] THEN - CONV_TAC NUM_REDUCE_CONV; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; MATCH_MP_TAC CARD_SUBSET THEN ASM SET_TAC[]]);; (* ------------------------------------------------------------------------- *) diff --git a/Library/pocklington.ml b/Library/pocklington.ml index dc59df3e..e10cc479 100644 --- a/Library/pocklington.ml +++ b/Library/pocklington.ml @@ -69,12 +69,12 @@ let FINITE_NUMBER_SEGMENT = prove [SUBGOAL_THEN `{m | 0 < m /\ m < 0} = EMPTY` SUBST1_TAC THENL [REWRITE_TAC[EXTENSION; IN_ELIM_THM; NOT_IN_EMPTY; LT]; ALL_TAC] THEN REWRITE_TAC[HAS_SIZE; FINITE_RULES; CARD_CLAUSES] THEN - CONV_TAC NUM_REDUCE_CONV; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ASM_CASES_TAC `n = 0` THENL [SUBGOAL_THEN `{m | 0 < m /\ m < SUC n} = EMPTY` SUBST1_TAC THENL [ASM_REWRITE_TAC[EXTENSION; IN_ELIM_THM; NOT_IN_EMPTY] THEN ARITH_TAC; ALL_TAC] THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NUM_REDUCE_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[HAS_SIZE_0]; SUBGOAL_THEN `{m | 0 < m /\ m < SUC n} = n INSERT {m | 0 < m /\ m < n}` SUBST1_TAC THENL @@ -104,7 +104,7 @@ let CONG = prove REWRITE_TAC[cong; nat_mod] THEN REPEAT STRIP_TAC THEN EQ_TAC THEN STRIP_TAC THENL [ASM_CASES_TAC `x <= y` THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC MOD_EQ THEN EXISTS_TAC `q1 - q2`; + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MOD_EQ THEN EXISTS_TAC `q1 - q2`; MATCH_MP_TAC MOD_EQ THEN EXISTS_TAC `q2 - q1`] THEN REWRITE_TAC[RIGHT_SUB_DISTRIB] THEN POP_ASSUM_LIST(MP_TAC o end_itlist CONJ) THEN ARITH_TAC; @@ -604,7 +604,7 @@ let PHI_PRIME_EQ = prove [ALL_TAC; REWRITE_TAC[EXTENSION; IN_ELIM_THM] THEN AP_TERM_TAC THEN ABS_TAC THEN - REWRITE_TAC[COPRIME_SYM] THEN CONV_TAC TAUT] THEN + REWRITE_TAC[COPRIME_SYM] THEN (CONV_TAC "TAUT") TAUT] THEN EQ_TAC THEN SIMP_TAC[] THEN DISCH_TAC THEN MATCH_MP_TAC CARD_SUBSET_EQ THEN ASM_REWRITE_TAC[] THEN SIMP_TAC[SUBSET; IN_ELIM_THM]);; @@ -645,7 +645,7 @@ let PHI_PRIMEPOW = prove let PHI_2 = prove (`phi 2 = 1`, - SIMP_TAC[PHI_PRIME; PRIME_2] THEN CONV_TAC NUM_REDUCE_CONV);; + SIMP_TAC[PHI_PRIME; PRIME_2] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV);; (* ------------------------------------------------------------------------- *) (* Multiplicativity property. *) @@ -657,7 +657,7 @@ let PHI_MULTIPLICATIVE = prove MAP_EVERY ASM_CASES_TAC [`a = 0`; `b = 0`] THEN ASM_REWRITE_TAC[PHI_0; MULT_CLAUSES] THEN SIMP_TAC[PHI_ALT; GSYM CARD_PRODUCT; PHI_FINITE_LEMMA] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC CARD_IMAGE_INJ_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CARD_IMAGE_INJ_EQ THEN EXISTS_TAC `\p. p MOD a,p MOD b` THEN REWRITE_TAC[PHI_FINITE_LEMMA; IN_ELIM_PAIR_THM] THEN ASM_SIMP_TAC[IN_ELIM_THM; COPRIME_MOD; DIVISION] THEN CONJ_TAC THENL @@ -688,7 +688,7 @@ let EVEN_PHI_EQ = prove GEN_TAC THEN EQ_TAC THENL [ONCE_REWRITE_TAC[GSYM CONTRAPOS_THM] THEN REWRITE_TAC[ARITH_RULE `~(n = 0 \/ 3 <= n) <=> n = 1 \/ n = 2`] THEN - STRIP_TAC THEN ASM_REWRITE_TAC[PHI_1; PHI_2] THEN CONV_TAC NUM_REDUCE_CONV; + STRIP_TAC THEN ASM_REWRITE_TAC[PHI_1; PHI_2] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; STRIP_TAC THEN ASM_SIMP_TAC[PHI_0; EVEN_PHI; EVEN]]);; let ODD_PHI_EQ = prove @@ -746,7 +746,7 @@ let ITERATE_OVER_COPRIME = prove COPRIME_LMUL] THEN REPEAT STRIP_TAC THEN TRY(FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_SIMP_TAC[CONG_LMOD]) THEN - UNDISCH_TAC `(k * m == 1) (mod n)` THEN CONV_TAC NUMBER_RULE);; + UNDISCH_TAC `(k * m == 1) (mod n)` THEN (CONV_TAC "NUMBER_RULE") NUMBER_RULE);; let ITERATE_ITERATE_DIVISORS = prove (`!op:A->A->A f x. @@ -780,7 +780,7 @@ let ITERATE_ITERATE_DIVISORS = prove let FERMAT_LITTLE = prove (`!a n. coprime(a,n) ==> (a EXP (phi n) == 1) (mod n)`, REPEAT GEN_TAC THEN ASM_CASES_TAC `n = 0` THEN - ASM_SIMP_TAC[COPRIME_0; PHI_0; CONG_MOD_0] THEN CONV_TAC NUM_REDUCE_CONV THEN + ASM_SIMP_TAC[COPRIME_0; PHI_0; CONG_MOD_0] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN DISCH_TAC THEN MATCH_MP_TAC CONG_MULT_LCANCEL THEN EXISTS_TAC `iterate (*) {m | coprime (m,n) /\ m < n} (\m. m)` THEN ONCE_REWRITE_TAC[MULT_SYM] THEN REWRITE_TAC[PHI_ALT; MULT_CLAUSES] THEN @@ -885,7 +885,7 @@ let LUCAS = prove REWRITE_TAC[divides] THEN DISCH_THEN(X_CHOOSE_THEN `r:num` SUBST_ALL_TAC) THEN SUBGOAL_THEN `~(r = 1)` MP_TAC THENL - [UNDISCH_TAC `m < m * r` THEN CONV_TAC CONTRAPOS_CONV THEN + [UNDISCH_TAC `m < m * r` THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN SIMP_TAC[MULT_CLAUSES; LT_REFL]; ALL_TAC] THEN DISCH_THEN(MP_TAC o MATCH_MP PRIME_FACTOR) THEN DISCH_THEN(X_CHOOSE_THEN `p:num` MP_TAC) THEN STRIP_TAC THEN @@ -921,7 +921,7 @@ let EXP_ITER = prove let ORDER_DIVIDES = prove (`!n a d. (a EXP d == 1) (mod n) <=> order(n) a divides d`, - GEN_TAC THEN GEN_TAC THEN REWRITE_TAC[order] THEN CONV_TAC SELECT_CONV THEN + GEN_TAC THEN GEN_TAC THEN REWRITE_TAC[order] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN MP_TAC(ISPECL [`\x y:num. (x == y) (mod n)`; `\x:num. a * x`; `1`] ORDER_EXISTENCE_ITER) THEN REWRITE_TAC[GSYM EXP_ITER] THEN DISCH_THEN MATCH_MP_TAC THEN @@ -956,7 +956,7 @@ let ORDER_EQ_0 = prove SPEC_TAC(`order n a`,`m:num`) THEN INDUCT_TAC THEN REWRITE_TAC[] THEN FIRST_ASSUM(MATCH_MP_TAC o MATCH_MP (TAUT `~p ==> (q ==> p) ==> q ==> r`)) THEN - REWRITE_TAC[EXP] THEN CONV_TAC NUMBER_RULE]);; + REWRITE_TAC[EXP] THEN (CONV_TAC "NUMBER_RULE") NUMBER_RULE]);; let ORDER_CONG = prove (`!n a b. (a == b) (mod n) ==> order n a = order n b`, @@ -1007,7 +1007,7 @@ let ORDER_UNIQUE = prove FIRST_X_ASSUM(ASSUME_TAC o GEN_REWRITE_RULE I [ORDER_EQ_0]) THEN MP_TAC(ISPECL [`n:num`; `a:num`; `k:num`] COPRIME_REXP) THEN ASM_SIMP_TAC[LE_1; LT] THEN - UNDISCH_TAC `(a EXP k == 1) (mod n)` THEN CONV_TAC NUMBER_RULE);; + UNDISCH_TAC `(a EXP k == 1) (mod n)` THEN (CONV_TAC "NUMBER_RULE") NUMBER_RULE);; (* ------------------------------------------------------------------------- *) (* Another trivial primality characterization. *) @@ -1507,7 +1507,7 @@ let EXP_MOD_CONV = DISCH_TAC THEN REWRITE_TAC[EXP] THEN REWRITE_TAC[NUMERAL; BIT0; BIT1] THEN REWRITE_TAC[EXP; EXP_ADD] THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN ASM_SIMP_TAC[MOD_MULT_LMOD; MOD_MULT_RMOD] THEN REWRITE_TAC[MULT_ASSOC] THEN ASM_SIMP_TAC[MOD_MULT_LMOD; MOD_MULT_RMOD] THEN diff --git a/Library/poly.ml b/Library/poly.ml index 4a3018ea..155b0125 100644 --- a/Library/poly.ml +++ b/Library/poly.ml @@ -566,7 +566,7 @@ let POLY_EXP_EQ_0 = prove REWRITE_TAC[poly_exp; poly; REAL_MUL_RZERO; REAL_ADD_RID; REAL_OF_NUM_EQ; ARITH; NOT_SUC] THEN ASM_REWRITE_TAC[POLY_MUL; poly; REAL_ENTIRE] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; let POLY_PRIME_EQ_0 = prove (`!a. ~(poly [a ; &1] = poly [])`, @@ -590,7 +590,7 @@ let POLY_ZERO_LEMMA = prove [REWRITE_TAC[REAL_ADD_LID]; DISCH_THEN(MP_TAC o SPEC `&0`) THEN POP_ASSUM MP_TAC THEN REAL_ARITH_TAC] THEN - CONV_TAC CONTRAPOS_CONV THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_THEN(MP_TAC o REWRITE_RULE[lemma]) THEN DISCH_THEN(X_CHOOSE_THEN `N:num` (X_CHOOSE_TAC `i:num->real`)) THEN MP_TAC(SPECL [`i:num->real`; `N:num`; `\x. poly t x = &0`] FINITE_LEMMA) THEN @@ -795,7 +795,7 @@ let POLY_ORDER_EXISTS = prove DISCH_THEN(X_CHOOSE_THEN `r:real list` MP_TAC) THEN SPEC_TAC(`n:num`,`n:num`) THEN INDUCT_TAC THEN ASM_REWRITE_TAC[] THENL - [UNDISCH_TAC `~(poly s a = &0)` THEN CONV_TAC CONTRAPOS_CONV THEN + [UNDISCH_TAC `~(poly s a = &0)` THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[] THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[poly; poly_exp; POLY_MUL] THEN REAL_ARITH_TAC; REWRITE_TAC[] THEN ONCE_ASM_REWRITE_TAC[] THEN @@ -830,12 +830,12 @@ let ORDER = prove EQ_TAC THEN STRIP_TAC THENL [SUBGOAL_THEN `~(poly p = poly [])` ASSUME_TAC THENL [FIRST_ASSUM(UNDISCH_TAC o check is_neg o concl) THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[divides] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[divides] THEN DISCH_THEN SUBST1_TAC THEN EXISTS_TAC `[]:real list` THEN REWRITE_TAC[FUN_EQ_THM; POLY_MUL; poly; REAL_MUL_RZERO]; - ASM_REWRITE_TAC[] THEN CONV_TAC SYM_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SELECT_UNIQUE THEN REWRITE_TAC[]]; - ONCE_ASM_REWRITE_TAC[] THEN CONV_TAC SELECT_CONV] THEN + ONCE_ASM_REWRITE_TAC[] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV] THEN ASM_MESON_TAC[POLY_ORDER]);; let ORDER_THM = prove diff --git a/Library/pratt.ml b/Library/pratt.ml index 1c3cf5d4..fd216ea5 100644 --- a/Library/pratt.ml +++ b/Library/pratt.ml @@ -69,12 +69,12 @@ let FINITE_NUMBER_SEGMENT = prove [SUBGOAL_THEN `{m | 0 < m /\ m < 0} = EMPTY` SUBST1_TAC THENL [REWRITE_TAC[EXTENSION; IN_ELIM_THM; NOT_IN_EMPTY; LT]; ALL_TAC] THEN REWRITE_TAC[HAS_SIZE; FINITE_RULES; CARD_CLAUSES] THEN - CONV_TAC NUM_REDUCE_CONV; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ASM_CASES_TAC `n = 0` THENL [SUBGOAL_THEN `{m | 0 < m /\ m < SUC n} = EMPTY` SUBST1_TAC THENL [ASM_REWRITE_TAC[EXTENSION; IN_ELIM_THM; NOT_IN_EMPTY] THEN ARITH_TAC; ALL_TAC] THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NUM_REDUCE_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[HAS_SIZE_0]; SUBGOAL_THEN `{m | 0 < m /\ m < SUC n} = n INSERT {m | 0 < m /\ m < n}` SUBST1_TAC THENL @@ -104,7 +104,7 @@ let CONG = prove REWRITE_TAC[cong; nat_mod] THEN REPEAT STRIP_TAC THEN EQ_TAC THEN STRIP_TAC THENL [ASM_CASES_TAC `x <= y` THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC MOD_EQ THEN EXISTS_TAC `q1 - q2`; + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MOD_EQ THEN EXISTS_TAC `q1 - q2`; MATCH_MP_TAC MOD_EQ THEN EXISTS_TAC `q2 - q1`] THEN REWRITE_TAC[RIGHT_SUB_DISTRIB] THEN POP_ASSUM_LIST(MP_TAC o end_itlist CONJ) THEN ARITH_TAC; @@ -282,7 +282,7 @@ let PHI_PRIME_EQ = prove [ALL_TAC; REWRITE_TAC[EXTENSION; IN_ELIM_THM] THEN AP_TERM_TAC THEN ABS_TAC THEN - REWRITE_TAC[COPRIME_SYM] THEN CONV_TAC TAUT] THEN + REWRITE_TAC[COPRIME_SYM] THEN (CONV_TAC "TAUT") TAUT] THEN EQ_TAC THEN SIMP_TAC[] THEN DISCH_TAC THEN MATCH_MP_TAC CARD_SUBSET_EQ THEN ASM_REWRITE_TAC[] THEN SIMP_TAC[SUBSET; IN_ELIM_THM]);; @@ -317,7 +317,7 @@ let ITSET_MODMULT = prove [ASM_SIMP_TAC[MOD_MULT_RMOD] THEN REWRITE_TAC[MULT_AC]; ALL_TAC] THEN STRIP_TAC THEN ASM_SIMP_TAC[IMAGE_CLAUSES; CARD_CLAUSES; FINITE_IMAGE] THEN CONJ_TAC THENL - [REWRITE_TAC[EXP; MULT_CLAUSES] THEN STRIP_TAC THEN CONV_TAC SYM_CONV THEN + [REWRITE_TAC[EXP; MULT_CLAUSES] THEN STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MOD_UNIQ THEN EXISTS_TAC `0` THEN REWRITE_TAC[ADD_CLAUSES; MULT_CLAUSES] THEN MAP_EVERY UNDISCH_TAC [`~(n = 0)`; `~(n = 1)`] THEN ARITH_TAC; @@ -372,7 +372,7 @@ let FERMAT_LITTLE = prove (`!a n. coprime(a,n) ==> (a EXP (phi n) == 1) (mod n)`, REPEAT GEN_TAC THEN ASM_CASES_TAC `n = 0` THEN - ASM_SIMP_TAC[COPRIME_0; PHI_0; CONG_MOD_0] THEN CONV_TAC NUM_REDUCE_CONV THEN + ASM_SIMP_TAC[COPRIME_0; PHI_0; CONG_MOD_0] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_CASES_TAC `n = 1` THEN ASM_REWRITE_TAC[CONG_MOD_1] THEN DISCH_TAC THEN SUBGOAL_THEN `{ c | ?b. 0 < b /\ b < n /\ coprime(b,n) /\ (c = (a * b) MOD n) } = @@ -422,7 +422,7 @@ let FERMAT_LITTLE = prove REWRITE_TAC[coprime] THEN REPEAT STRIP_TAC THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_SIMP_TAC[DIVIDES_ADD; DIVIDES_LMUL; DIVIDES_REFL]; ALL_TAC] THEN - ASM_SIMP_TAC[MOD_MULT_RMOD] THEN CONV_TAC SYM_CONV THEN + ASM_SIMP_TAC[MOD_MULT_RMOD] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MOD_UNIQ THEN EXISTS_TAC `c * y:num` THEN ASM_REWRITE_TAC[GSYM MULT_ASSOC] THEN ONCE_REWRITE_TAC[ARITH_RULE @@ -462,7 +462,7 @@ let FERMAT_LITTLE = prove FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_SIMP_TAC[DIVIDES_ADD; DIVIDES_LMUL; DIVIDES_REFL]; ALL_TAC] THEN ASM_SIMP_TAC[MOD_MULT_RMOD] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC MOD_UNIQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MOD_UNIQ THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC DIFFERENCE_POS_LEMMA THEN CONJ_TAC THENL [ONCE_REWRITE_TAC[ARITH_RULE @@ -627,7 +627,7 @@ let LUCAS = prove REWRITE_TAC[divides] THEN DISCH_THEN(X_CHOOSE_THEN `r:num` SUBST_ALL_TAC) THEN SUBGOAL_THEN `~(r = 1)` MP_TAC THENL - [UNDISCH_TAC `m < m * r` THEN CONV_TAC CONTRAPOS_CONV THEN + [UNDISCH_TAC `m < m * r` THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN SIMP_TAC[MULT_CLAUSES; LT_REFL]; ALL_TAC] THEN DISCH_THEN(MP_TAC o MATCH_MP PRIME_FACTOR) THEN DISCH_THEN(X_CHOOSE_THEN `p:num` MP_TAC) THEN STRIP_TAC THEN @@ -856,7 +856,7 @@ let EXP_EQ_MOD_CONV = DISCH_TAC THEN REWRITE_TAC[EXP] THEN REWRITE_TAC[NUMERAL; BIT0; BIT1] THEN REWRITE_TAC[EXP; EXP_ADD] THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN ASM_SIMP_TAC[MOD_MULT_LMOD; MOD_MULT_RMOD] THEN REWRITE_TAC[MULT_ASSOC] THEN ASM_SIMP_TAC[MOD_MULT_LMOD; MOD_MULT_RMOD] THEN diff --git a/Library/prime.ml b/Library/prime.ml index 3e398dbe..4c5ff304 100644 --- a/Library/prime.ml +++ b/Library/prime.ml @@ -198,7 +198,7 @@ let DIVIDES_1 = prove let DIVIDES_ONE = prove( `!x. (x divides 1) <=> (x = 1)`, GEN_TAC THEN REWRITE_TAC[divides] THEN - CONV_TAC(LAND_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN + (CONV_TAC "(LAND_CONV(ONCE_DEPTH_CONV SYM_CONV))") (LAND_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN REWRITE_TAC[MULT_EQ_1] THEN EQ_TAC THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THEN EXISTS_TAC `1` THEN REFL_TAC);; @@ -216,7 +216,7 @@ let DIVIDES_ANTISYM = prove [REWRITE_TAC[divides] THEN DISCH_THEN(CONJUNCTS_THEN2 MP_TAC (CHOOSE_THEN SUBST1_TAC)) THEN DISCH_THEN(CHOOSE_THEN MP_TAC) THEN - CONV_TAC(LAND_CONV SYM_CONV) THEN + (CONV_TAC "(LAND_CONV SYM_CONV)") (LAND_CONV SYM_CONV) THEN REWRITE_TAC[GSYM MULT_ASSOC; MULT_FIX; MULT_EQ_1] THEN STRIP_TAC THEN ASM_REWRITE_TAC[]; DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[DIVIDES_REFL]]);; @@ -452,7 +452,7 @@ let IND_EUCLID = prove( (MATCH_MP LT_IMP_LE th))) THEN DISJ_CASES_THEN MP_TAC (MATCH_MP DIFF_LEMMA th)) THENL [DISCH_THEN SUBST1_TAC THEN - FIRST_ASSUM (CONV_TAC o REWR_CONV) THEN + FIRST_ASSUM ((CONV_TAC "o") o REWR_CONV) THEN FIRST_ASSUM MATCH_ACCEPT_TAC; REWRITE_TAC[ASSUME `a + b = n`] THEN DISCH_TAC THEN ONCE_REWRITE_TAC[ADD_SYM] THEN @@ -462,7 +462,7 @@ let IND_EUCLID = prove( DISCH_THEN SUBST1_TAC THEN FIRST_ASSUM MATCH_ACCEPT_TAC; REWRITE_TAC[ONCE_REWRITE_RULE[ADD_SYM] (ASSUME `a + b = n`)] THEN DISCH_TAC THEN ONCE_REWRITE_TAC[ADD_SYM] THEN - FIRST_ASSUM (CONV_TAC o REWR_CONV) THEN + FIRST_ASSUM ((CONV_TAC "o") o REWR_CONV) THEN FIRST_ASSUM MATCH_MP_TAC THEN UNDISCH_TAC `b + a - b < n` THEN DISCH_THEN(ANTE_RES_THEN MATCH_MP_TAC)] THEN @@ -630,7 +630,7 @@ let BEZOUT_GCD_STRONG = prove let GCD_LMUL = prove( `!a b c. gcd(c * a, c * b) = c * gcd(a,b)`, - REPEAT GEN_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[GSYM GCD_UNIQUE] THEN REPEAT CONJ_TAC THEN TRY(MATCH_MP_TAC DIVIDES_MUL_L) THEN REWRITE_TAC[GCD] THEN REPEAT STRIP_TAC THEN @@ -679,7 +679,7 @@ let GCD_ZERO = prove( let GCD_REFL = prove( `!a. gcd(a,a) = a`, - GEN_TAC THEN CONV_TAC SYM_CONV THEN + GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[GSYM GCD_UNIQUE] THEN REWRITE_TAC[DIVIDES_REFL]);; @@ -733,7 +733,7 @@ let COPRIME = prove( REPEAT GEN_TAC THEN REWRITE_TAC[coprime] THEN REPEAT(EQ_TAC ORELSE STRIP_TAC) THEN ASM_REWRITE_TAC[DIVIDES_1] THENL [FIRST_ASSUM MATCH_MP_TAC; - FIRST_ASSUM(CONV_TAC o REWR_CONV o GSYM) THEN CONJ_TAC] THEN + FIRST_ASSUM((CONV_TAC "o") o REWR_CONV o GSYM) THEN CONJ_TAC] THEN ASM_REWRITE_TAC[]);; let COPRIME_GCD = prove @@ -821,7 +821,7 @@ let COPRIME_REXP = prove GEN_TAC THEN GEN_TAC THEN INDUCT_TAC THEN REWRITE_TAC[CONJUNCT1 EXP; COPRIME_1] THEN REPEAT STRIP_TAC THEN EQ_TAC THEN ASM_SIMP_TAC[COPRIME_EXP; NOT_SUC] THEN - REWRITE_TAC[EXP] THEN CONV_TAC NUMBER_RULE);; + REWRITE_TAC[EXP] THEN (CONV_TAC "NUMBER_RULE") NUMBER_RULE);; let COPRIME_LEXP = prove (`!m n k. coprime(m EXP k,n) <=> coprime(m,n) \/ k = 0`, @@ -880,7 +880,7 @@ let BEZOUT_GCD_POW = prove( let GCD_EXP = prove( `!n a b. gcd(a EXP n,b EXP n) = gcd(a,b) EXP n`, - REPEAT GEN_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[GSYM GCD_UNIQUE] THEN REPEAT CONJ_TAC THENL [MATCH_MP_TAC DIVIDES_EXP THEN REWRITE_TAC[GCD]; MATCH_MP_TAC DIVIDES_EXP THEN REWRITE_TAC[GCD]; @@ -1000,7 +1000,7 @@ let PRIME_2 = prove( let PRIME_GE_2 = prove( `!p. prime(p) ==> 2 <= p`, - GEN_TAC THEN CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[NOT_LE] THEN + GEN_TAC THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[NOT_LE] THEN REWRITE_TAC[num_CONV `2`; num_CONV `1`; LESS_THM; NOT_LESS_0] THEN DISCH_THEN(REPEAT_TCL DISJ_CASES_THEN SUBST1_TAC) THEN REWRITE_TAC[SYM(num_CONV `1`); PRIME_0; PRIME_1]);; @@ -1086,7 +1086,7 @@ let COPRIME_PRIME_EQ = prove( `!a b. coprime(a,b) <=> !p. ~(prime(p) /\ p divides a /\ p divides b)`, REPEAT GEN_TAC THEN EQ_TAC THENL [DISCH_THEN(fun th -> REWRITE_TAC[MATCH_MP COPRIME_PRIME th]); - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[coprime] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[coprime] THEN ONCE_REWRITE_TAC[NOT_FORALL_THM] THEN REWRITE_TAC[NOT_IMP] THEN DISCH_THEN(X_CHOOSE_THEN `d:num` STRIP_ASSUME_TAC) THEN FIRST_ASSUM(X_CHOOSE_TAC `p:num` o MATCH_MP PRIME_FACTOR) THEN @@ -1233,7 +1233,7 @@ let DIVIDES_EXP_PLUS1 = prove (`!n k. ODD k ==> (n + 1) divides (n EXP k + 1)`, GEN_TAC THEN REWRITE_TAC[ODD_EXISTS; LEFT_IMP_EXISTS_THM] THEN ONCE_REWRITE_TAC[SWAP_FORALL_THM] THEN REWRITE_TAC[FORALL_UNWIND_THM2] THEN - INDUCT_TAC THEN CONV_TAC NUM_REDUCE_CONV THEN + INDUCT_TAC THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[EXP_1; DIVIDES_REFL] THEN REWRITE_TAC[ARITH_RULE `SUC(2 * SUC n) = SUC(2 * n) + 2`] THEN REWRITE_TAC[EXP_ADD; EXP_2] THEN POP_ASSUM MP_TAC THEN NUMBER_TAC);; @@ -1242,7 +1242,7 @@ let DIVIDES_EXP_MINUS1 = prove (`!k n. (n - 1) divides (n EXP k - 1)`, REPEAT GEN_TAC THEN ASM_CASES_TAC `n = 0` THENL [STRUCT_CASES_TAC(SPEC `k:num` num_CASES) THEN - ASM_REWRITE_TAC[EXP; MULT_CLAUSES] THEN CONV_TAC NUM_REDUCE_CONV THEN + ASM_REWRITE_TAC[EXP; MULT_CLAUSES] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[DIVIDES_REFL]; REWRITE_TAC[num_divides] THEN ASM_SIMP_TAC[GSYM INT_OF_NUM_SUB; LE_1; EXP_EQ_0; ARITH] THEN @@ -1265,7 +1265,7 @@ let PRIME_IRREDUCIBLE = prove DISCH_THEN(DISJ_CASES_THEN (MP_TAC o MATCH_MP (MESON[DIVIDES_ANTISYM] `a divides b ==> b divides a ==> a = b`))) THEN SIMP_TAC[DIVIDES_LMUL; DIVIDES_RMUL; DIVIDES_REFL] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC NUM_RING);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "NUM_RING") NUM_RING);; (* ------------------------------------------------------------------------- *) (* One property of coprimality is easier to prove via prime factors. *) @@ -1321,7 +1321,7 @@ let COPRIME_POW = prove (ANTS_TAC THENL [MATCH_MP_TAC(NUM_RING `!p. ~(p = 0) /\ a * p = b * p ==> a = b`) THEN EXISTS_TAC `p EXP n` THEN ASM_SIMP_TAC[EXP_EQ_0; PRIME_IMP_NZ] THEN - FIRST_X_ASSUM(MP_TAC o SYM) THEN CONV_TAC NUM_RING; + FIRST_X_ASSUM(MP_TAC o SYM) THEN (CONV_TAC "NUM_RING") NUM_RING; STRIP_TAC THEN ASM_REWRITE_TAC[GSYM MULT_EXP] THEN MESON_TAC[]])]);; (* ------------------------------------------------------------------------- *) @@ -1605,7 +1605,7 @@ let INDEX_FACT_UNBOUNDED = prove (`!p n. prime p ==> index p (FACT n) = nsum {j | 1 <= j} (\j. n DIV (p EXP j))`, REPEAT STRIP_TAC THEN ASM_SIMP_TAC[INDEX_FACT_ALT] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC NSUM_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC NSUM_SUPERSET THEN ASM_SIMP_TAC[SUBSET; IN_ELIM_THM; IMP_CONJ; DIV_EQ_0; EXP_EQ_0; PRIME_IMP_NZ; NOT_LE]);; @@ -1709,7 +1709,7 @@ let LCM = prove CONJ_TAC THEN REWRITE_TAC[divides] THENL [EXISTS_TAC `n DIV gcd(m,n)`; EXISTS_TAC `m DIV gcd(m,n)`] THEN MATCH_MP_TAC DIV_UNIQ THEN EXISTS_TAC `0` THEN - ASM_SIMP_TAC[GCD_ZERO; LE_1; ADD_CLAUSES] THEN CONV_TAC SYM_CONV THENL + ASM_SIMP_TAC[GCD_ZERO; LE_1; ADD_CLAUSES] THEN (CONV_TAC "SYM_CONV") SYM_CONV THENL [ALL_TAC; GEN_REWRITE_TAC RAND_CONV [MULT_SYM]] THEN REWRITE_TAC[GSYM MULT_ASSOC] THEN AP_TERM_TAC THEN REWRITE_TAC[GSYM DIVIDES_DIV_MULT] THEN @@ -1742,7 +1742,7 @@ let DIVIDES_LCM_GCD = prove MP_TAC(NUMBER_RULE `gcd(m,n) divides m * n`) THEN SIMP_TAC[divides; LEFT_IMP_EXISTS_THM] THEN REWRITE_TAC[GSYM divides] THEN REPEAT STRIP_TAC THEN MP_TAC(SPECL [`m:num`; `n:num`] GCD_ZERO) THEN - ASM_SIMP_TAC[DIV_MULT] THEN CONV_TAC NUMBER_RULE);; + ASM_SIMP_TAC[DIV_MULT] THEN (CONV_TAC "NUMBER_RULE") NUMBER_RULE);; let PRIMEPOW_DIVIDES_LCM = prove (`!m n p k. @@ -1804,7 +1804,7 @@ let LCM_ASSOC = prove (`!m n p. lcm(m,lcm(n,p)) = lcm(lcm(m,n),p)`, REPEAT GEN_TAC THEN REWRITE_TAC[MULTIPLES_EQ] THEN REWRITE_TAC[LCM_DIVIDES] THEN X_GEN_TAC `q:num` THEN - REWRITE_TAC[LCM_ZERO] THEN CONV_TAC TAUT);; + REWRITE_TAC[LCM_ZERO] THEN (CONV_TAC "TAUT") TAUT);; let LCM_REFL = prove (`!n. lcm(n,n) = n`, @@ -1818,12 +1818,12 @@ let LCM_MULTIPLE = prove let LCM_GCD_DISTRIB = prove (`!a b c. lcm(a,gcd(b,c)) = gcd(lcm(a,b),lcm(a,c))`, REWRITE_TAC[PRIMEPOW_DIVISORS_EQ] THEN - SIMP_TAC[PRIMEPOW_DIVIDES_LCM; DIVIDES_GCD] THEN CONV_TAC TAUT);; + SIMP_TAC[PRIMEPOW_DIVIDES_LCM; DIVIDES_GCD] THEN (CONV_TAC "TAUT") TAUT);; let GCD_LCM_DISTRIB = prove (`!a b c. gcd(a,lcm(b,c)) = lcm(gcd(a,b),gcd(a,c))`, REWRITE_TAC[PRIMEPOW_DIVISORS_EQ] THEN - SIMP_TAC[PRIMEPOW_DIVIDES_LCM; DIVIDES_GCD] THEN CONV_TAC TAUT);; + SIMP_TAC[PRIMEPOW_DIVIDES_LCM; DIVIDES_GCD] THEN (CONV_TAC "TAUT") TAUT);; let LCM_UNIQUE = prove (`!d m n. @@ -1851,7 +1851,7 @@ let LCM_LMUL = prove ONCE_REWRITE_TAC[ARITH_RULE `a * c * b:num = (c * d) * g <=> c * d * g = c * a * b`] THEN AP_TERM_TAC THEN REWRITE_TAC[GSYM DIVIDES_DIV_MULT] THEN - CONV_TAC NUMBER_RULE);; + (CONV_TAC "NUMBER_RULE") NUMBER_RULE);; let LCM_RMUL = prove (`!a b c. lcm(a * c,b * c) = c * lcm(a,b)`, @@ -1870,8 +1870,8 @@ let LCM_EXP = prove MATCH_MP_TAC DIV_UNIQ THEN EXISTS_TAC `0` THEN ASM_SIMP_TAC[ADD_CLAUSES; LE_1; GCD_ZERO; EXP_EQ_0] THEN REWRITE_TAC[GSYM MULT_EXP] THEN AP_THM_TAC THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[GSYM DIVIDES_DIV_MULT] THEN - CONV_TAC NUMBER_RULE);; + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[GSYM DIVIDES_DIV_MULT] THEN + (CONV_TAC "NUMBER_RULE") NUMBER_RULE);; (* ------------------------------------------------------------------------- *) (* Induction principle for multiplicative functions etc. *) @@ -2010,7 +2010,7 @@ let GCD_CONV = (m * x = n * y + d) /\ (m = m' * d) /\ (n = n' * d) ==> (gcd(m,n) = d)`, REPEAT GEN_TAC THEN DISCH_THEN(CONJUNCTS_THEN2 MP_TAC STRIP_ASSUME_TAC) THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN ASM_REWRITE_TAC[GSYM GCD_UNIQUE] THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN ASM_REWRITE_TAC[GSYM GCD_UNIQUE] THEN ASM_MESON_TAC[DIVIDES_LMUL; DIVIDES_RMUL; DIVIDES_ADD_REVR; DIVIDES_REFL]) in let pth2 = prove diff --git a/Library/primitive.ml b/Library/primitive.ml index 29b01bed..94375cc9 100644 --- a/Library/primitive.ml +++ b/Library/primitive.ml @@ -82,7 +82,7 @@ let INT_POLY_LAGRANGE = prove `p divides (isum (0..n) (\i. a i * c pow i))`] THEN ASM_SIMP_TAC[CONJUNCT1 LE; ISUM_CLAUSES_NUMSEG] THEN REWRITE_TAC[INT_POW; LEFT_FORALL_IMP_THM; EXISTS_REFL; INT_MUL_RID] THEN - CONV_TAC TAUT; + (CONV_TAC "TAUT") TAUT; ALL_TAC] THEN ASM_CASES_TAC `p divides ((a:num->int) n)` THENL [ASM_SIMP_TAC[ISUM_CLAUSES_RIGHT; LE_0; LE_1] THEN @@ -212,7 +212,7 @@ let COUNT_ORDERS_MODULO_PRIME = prove `{x | x IN 1..p-1 /\ (x EXP d == 1) (mod p)} = IMAGE (\m. (a EXP m) MOD p) {m | m < d}` MP_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC CARD_SUBSET_LE THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CARD_SUBSET_LE THEN SIMP_TAC[FINITE_RESTRICT; FINITE_NUMSEG] THEN CONJ_TAC THENL [REWRITE_TAC[SUBSET; FORALL_IN_IMAGE; IN_ELIM_THM] THEN X_GEN_TAC `m:num` THEN DISCH_TAC THEN REWRITE_TAC[IN_NUMSEG] THEN @@ -230,7 +230,7 @@ let COUNT_ORDERS_MODULO_PRIME = prove MATCH_MP_TAC LE_TRANS THEN EXISTS_TAC `d:num` THEN ASM_SIMP_TAC[NUM_LAGRANGE_LEMMA] THEN GEN_REWRITE_TAC LAND_CONV [GSYM CARD_NUMSEG_LT] THEN - MATCH_MP_TAC EQ_IMP_LE THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC EQ_IMP_LE THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CARD_IMAGE_INJ THEN ASM_SIMP_TAC[GSYM CONG; PRIME_IMP_NZ; FINITE_NUMSEG_LT; IN_ELIM_THM] THEN ASM_SIMP_TAC[ORDER_DIVIDES_EXPDIFF] THEN REWRITE_TAC[CONG_IMP_EQ]]; @@ -495,20 +495,20 @@ let PRIMITIVE_ROOT_MODULO_PRIMEPOW = prove let PRIMITIVE_ROOT_MODULO_2 = prove (`?x. x IN 1..1 /\ order 2 x = phi(2)`, EXISTS_TAC `1` THEN REWRITE_TAC[IN_NUMSEG; ARITH] THEN - SIMP_TAC[PHI_PRIME; PRIME_2] THEN CONV_TAC NUM_REDUCE_CONV THEN + SIMP_TAC[PHI_PRIME; PRIME_2] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN MATCH_MP_TAC ORDER_UNIQUE THEN REWRITE_TAC[ARITH_RULE `~(0 < m /\ m < 1)`] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC(ONCE_DEPTH_CONV CONG_CONV) THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "(ONCE_DEPTH_CONV CONG_CONV)") (ONCE_DEPTH_CONV CONG_CONV) THEN REWRITE_TAC[]);; let PRIMITIVE_ROOT_MODULO_4 = prove (`?x. x IN 1..3 /\ order 4 x = phi(4)`, EXISTS_TAC `3` THEN REWRITE_TAC[IN_NUMSEG; ARITH] THEN SUBST1_TAC(ARITH_RULE `4 = 2 EXP 2`) THEN - SIMP_TAC[PHI_PRIMEPOW; PRIME_2] THEN CONV_TAC NUM_REDUCE_CONV THEN + SIMP_TAC[PHI_PRIMEPOW; PRIME_2] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN MATCH_MP_TAC ORDER_UNIQUE THEN REWRITE_TAC[FORALL_UNWIND_THM2; ARITH_RULE `0 < m /\ m < 2 <=> m = 1`] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC(ONCE_DEPTH_CONV CONG_CONV) THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "(ONCE_DEPTH_CONV CONG_CONV)") (ONCE_DEPTH_CONV CONG_CONV) THEN REWRITE_TAC[]);; let PRIMITIVE_ROOT_DOUBLE_LEMMA = prove @@ -541,7 +541,7 @@ let PRIMITIVE_ROOT_MODULO_DOUBLE_PRIMEPOW = prove MATCH_MP_TAC PRIMITIVE_ROOT_DOUBLE_LEMMA THEN ASM_REWRITE_TAC[ODD_ADD; ODD_EXP; NOT_ODD] THEN FIRST_X_ASSUM(SUBST1_TAC o SYM) THEN MATCH_MP_TAC ORDER_CONG THEN - CONV_TAC NUMBER_RULE);; + (CONV_TAC "NUMBER_RULE") NUMBER_RULE);; (* ------------------------------------------------------------------------- *) (* A couple of degenerate case not usually considered. *) @@ -564,17 +564,17 @@ let PRIMITIVE_ROOT_MODULO_1 = prove let CONG_TO_1_POW2 = prove (`!k x. ODD x /\ 1 <= k ==> (x EXP (2 EXP k) == 1) (mod (2 EXP (k + 2)))`, INDUCT_TAC THEN REWRITE_TAC[ADD_CLAUSES; EXP] THEN - CONV_TAC NUM_REDUCE_CONV THEN GEN_TAC THEN ASM_CASES_TAC `k = 0` THENL - [ASM_REWRITE_TAC[] THEN CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN GEN_TAC THEN ASM_CASES_TAC `k = 0` THENL + [ASM_REWRITE_TAC[] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN SIMP_TAC[ODD_EXISTS; LEFT_IMP_EXISTS_THM] THEN REPEAT STRIP_TAC THEN REWRITE_TAC[CONG_TO_1] THEN DISJ2_TAC THEN REWRITE_TAC[GSYM EVEN_EXISTS; ARITH_RULE `SUC(2 * m) EXP 2 = 1 + q * 8 <=> m * (m + 1) = 2 * q`] THEN - REWRITE_TAC[EVEN_MULT; EVEN_ADD; ARITH] THEN CONV_TAC TAUT; + REWRITE_TAC[EVEN_MULT; EVEN_ADD; ARITH] THEN (CONV_TAC "TAUT") TAUT; STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o SPEC `x:num`) THEN ASM_SIMP_TAC[ONCE_REWRITE_RULE[MULT_SYM] EXP_MULT; LE_1] THEN REWRITE_TAC[CONG_TO_1; EXP_EQ_1; ADD_EQ_0; MULT_EQ_1] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_THEN `m:num` SUBST1_TAC) THEN REWRITE_TAC[EQ_MULT_LCANCEL; EXP_EQ_0; ARITH; GSYM EVEN_EXISTS; ARITH_RULE `(1 + m * n) EXP 2 = 1 + q * 2 * n <=> @@ -600,7 +600,7 @@ let NO_PRIMITIVE_ROOT_MODULO_POW2 = prove ASM_SIMP_TAC[CONG_TO_1_POW2; ARITH_RULE `0 < x <=> ~(x = 0)`] THEN REWRITE_TAC[EXP_EQ_0; ARITH] THEN MATCH_MP_TAC(ARITH_RULE `a + b:num < c ==> a < c - b`) THEN - REWRITE_TAC[EXP_ADD] THEN CONV_TAC NUM_REDUCE_CONV THEN + REWRITE_TAC[EXP_ADD] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[ARITH_RULE `x + x * 2 < x * 4 <=> ~(x = 0)`] THEN REWRITE_TAC[EXP_EQ_0; ARITH]]);; @@ -627,7 +627,7 @@ let NO_PRIMITIVE_ROOT_MODULO_COMPOSITE = prove MP_TAC(ISPECL [`a * b:num`; `x:num`] ORDER_EQ_0) THEN ASM_SIMP_TAC[MULT_EQ_0; LE_1; PHI_LOWERBOUND_1_STRONG; ARITH_RULE `3 <= p ==> 1 <= p`] THEN - CONV_TAC NUMBER_RULE);; + (CONV_TAC "NUMBER_RULE") NUMBER_RULE);; (* ------------------------------------------------------------------------- *) (* Equivalences, one with some degenerate cases, one more conventional. *) @@ -646,7 +646,7 @@ let PRIMITIVE_ROOT_EXISTS = prove ASM_REWRITE_TAC[] THEN ASM_CASES_TAC `n = 1` THENL [ASM_REWRITE_TAC[PRIMITIVE_ROOT_MODULO_1] THEN MAP_EVERY EXISTS_TAC [`3`; `0`] THEN - CONV_TAC(ONCE_DEPTH_CONV PRIME_CONV) THEN CONV_TAC NUM_REDUCE_CONV; + (CONV_TAC "(ONCE_DEPTH_CONV PRIME_CONV)") (ONCE_DEPTH_CONV PRIME_CONV) THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ALL_TAC] THEN EQ_TAC THENL [ALL_TAC; @@ -675,7 +675,7 @@ let PRIMITIVE_ROOT_EXISTS = prove FIRST_X_ASSUM(MP_TAC o MATCH_MP (ARITH_RULE `~(3 <= k) ==> 1 <= k ==> k = 1 \/ k = 2`)) THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(DISJ_CASES_THEN SUBST_ALL_TAC) THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC NUM_REDUCE_CONV; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ALL_TAC] THEN ASM_CASES_TAC `m = 2` THENL [ASM_REWRITE_TAC[COPRIME_2] THEN @@ -729,15 +729,15 @@ let PRIMITIVE_ROOT_EXISTS_NONTRIVIAL = prove n = 2 \/ n = 4 \/ ?p k. prime p /\ 3 <= p /\ 1 <= k /\ (n = p EXP k \/ n = 2 * p EXP k)`, GEN_TAC THEN ASM_CASES_TAC `n = 0` THENL - [ASM_REWRITE_TAC[IN_NUMSEG] THEN CONV_TAC NUM_REDUCE_CONV THEN + [ASM_REWRITE_TAC[IN_NUMSEG] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN MATCH_MP_TAC(TAUT `~a /\ ~b ==> (a <=> b)`) THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN REWRITE_TAC[MULT_EQ_0; EXP_EQ_0] THEN ARITH_TAC; ALL_TAC] THEN ASM_CASES_TAC `n = 1` THENL - [ASM_REWRITE_TAC[IN_NUMSEG] THEN CONV_TAC NUM_REDUCE_CONV THEN + [ASM_REWRITE_TAC[IN_NUMSEG] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN MATCH_MP_TAC(TAUT `~a /\ ~b ==> (a <=> b)`) THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN REWRITE_TAC[MULT_EQ_1; EXP_EQ_1] THEN ARITH_TAC; ALL_TAC] THEN MATCH_MP_TAC EQ_TRANS THEN @@ -760,6 +760,6 @@ let PRIMITIVE_ROOT_EXISTS_NONTRIVIAL = prove ASM_CASES_TAC `n = 4` THEN ASM_REWRITE_TAC[] THEN AP_TERM_TAC THEN REWRITE_TAC[FUN_EQ_THM] THEN X_GEN_TAC `p:num` THEN AP_TERM_TAC THEN REWRITE_TAC[FUN_EQ_THM] THEN X_GEN_TAC `k:num` THEN - CONV_TAC(BINOP_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN + (CONV_TAC "(BINOP_CONV(ONCE_DEPTH_CONV SYM_CONV))") (BINOP_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN ASM_CASES_TAC `k = 0` THEN ASM_SIMP_TAC[LE_1] THEN AP_TERM_TAC THEN ASM_ARITH_TAC]);; diff --git a/Library/transc.ml b/Library/transc.ml index 051251d6..5f83775d 100644 --- a/Library/transc.ml +++ b/Library/transc.ml @@ -71,7 +71,7 @@ let POWDIFF = prove( ONCE_REWRITE_TAC[AC REAL_ADD_AC `(a + b) + (c + d) = (d + a) + (c + b)`] THEN GEN_REWRITE_TAC (funpow 2 LAND_CONV) [REAL_MUL_SYM] THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[REAL_ADD_LID_UNIQ] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[REAL_ADD_LID_UNIQ] THEN GEN_REWRITE_TAC (LAND_CONV o RAND_CONV) [REAL_MUL_SYM] THEN REWRITE_TAC[REAL_ADD_LINV]]);; @@ -124,7 +124,7 @@ let POWSER_INSIDEA = prove( REWRITE_TAC[summable] THEN EXISTS_TAC `K * inv(&1 - (abs(z) / abs(x)))` THEN REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC] THEN - CONV_TAC(ONCE_DEPTH_CONV HABS_CONV) THEN REWRITE_TAC[] THEN + (CONV_TAC "(ONCE_DEPTH_CONV HABS_CONV)") (ONCE_DEPTH_CONV HABS_CONV) THEN REWRITE_TAC[] THEN MATCH_MP_TAC SER_CMUL THEN GEN_REWRITE_TAC (RATOR_CONV o ONCE_DEPTH_CONV) [GSYM real_div] THEN SUBGOAL_THEN `!n. abs(z pow n) / abs(x pow n) = @@ -139,7 +139,7 @@ let POWSER_INSIDEA = prove( MATCH_MP_TAC REAL_LT_1 THEN ASM_REWRITE_TAC[ABS_POS]]] THEN REWRITE_TAC[GSYM POW_ABS] THEN X_GEN_TAC `n:num` THEN REWRITE_TAC[real_div; POW_MUL] THEN AP_TERM_TAC THEN - MATCH_MP_TAC POW_INV THEN CONV_TAC(RAND_CONV SYM_CONV) THEN + MATCH_MP_TAC POW_INV THEN (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `abs(z)` THEN ASM_REWRITE_TAC[ABS_POS]]);; @@ -227,7 +227,7 @@ let TERMDIFF_LEMMA1 = prove( REWRITE_TAC[REAL_SUB_LDISTRIB; GSYM POW_ADD] THEN BINOP_TAC THENL [MATCH_ACCEPT_TAC REAL_MUL_SYM; AP_TERM_TAC THEN ONCE_REWRITE_TAC[ADD_SYM] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUB_ADD THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUB_ADD THEN MATCH_MP_TAC LT_IMP_LE THEN POP_ASSUM(MP_TAC o CONJUNCT2) THEN REWRITE_TAC[ADD_CLAUSES]]);; @@ -268,7 +268,7 @@ let TERMDIFF_LEMMA2 = prove( GEN_REWRITE_TAC (RAND_CONV o ONCE_DEPTH_CONV) [REAL_MUL_SYM] THEN AP_TERM_TAC THEN MATCH_MP_TAC SUM_SUBST THEN X_GEN_TAC `q:num` THEN REWRITE_TAC[ADD_CLAUSES] THEN STRIP_TAC THEN BETA_TAC THEN - AP_TERM_TAC THEN AP_TERM_TAC THEN CONV_TAC(TOP_DEPTH_CONV num_CONV) THEN + AP_TERM_TAC THEN AP_TERM_TAC THEN (CONV_TAC "(TOP_DEPTH_CONV num_CONV)") (TOP_DEPTH_CONV num_CONV) THEN REWRITE_TAC[SUB_SUC; SUB_0; ADD_SUB]);; let TERMDIFF_LEMMA3 = prove( @@ -547,7 +547,7 @@ let TERMDIFF = prove( DISCH_THEN(MP_TAC o MATCH_MP DIFFS_EQUIV) THEN BETA_TAC THEN DISCH_THEN(MP_TAC o MATCH_MP SUM_SUMMABLE) THEN MATCH_MP_TAC EQ_IMP THEN AP_TERM_TAC THEN - CONV_TAC(X_FUN_EQ_CONV `n:num`) THEN BETA_TAC THEN GEN_TAC THEN + (CONV_TAC "(X_FUN_EQ_CONV `n:num`)") (X_FUN_EQ_CONV `n:num`) THEN BETA_TAC THEN GEN_TAC THEN REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC] THEN GEN_REWRITE_TAC RAND_CONV [AC REAL_MUL_AC @@ -562,7 +562,7 @@ let TERMDIFF = prove( ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN SUBGOAL_THEN `R * inv(R) = &1` (fun th -> REWRITE_TAC[th; REAL_MUL_RID]) THEN - MATCH_MP_TAC REAL_MUL_RINV THEN CONV_TAC(RAND_CONV SYM_CONV) THEN + MATCH_MP_TAC REAL_MUL_RINV THEN (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `abs(x)` THEN ASM_REWRITE_TAC[ABS_POS]; @@ -708,7 +708,7 @@ let POWSER_0 = prove (`!a. (\n. a n * (&0) pow n) sums a(0)`, GEN_TAC THEN SUBGOAL_THEN `a(0) = sum(0,1) (\n. a n * (&0) pow n)` SUBST1_TAC THENL - [CONV_TAC(ONCE_DEPTH_CONV REAL_SUM_CONV) THEN + [(CONV_TAC "(ONCE_DEPTH_CONV REAL_SUM_CONV)") (ONCE_DEPTH_CONV REAL_SUM_CONV) THEN REWRITE_TAC[real_pow; REAL_MUL_RID]; ALL_TAC] THEN MATCH_MP_TAC SER_0 THEN INDUCT_TAC THEN REWRITE_TAC[real_pow; REAL_MUL_LZERO; REAL_MUL_RZERO; ARITH]);; @@ -730,7 +730,7 @@ let POWSER_LIMIT_0 = prove UNDISCH_TAC `&0 < s` THEN REAL_ARITH_TAC; ALL_TAC] THEN DISCH_THEN(MP_TAC o MATCH_MP DIFF_CONT) THEN REWRITE_TAC[contl] THEN SUBGOAL_THEN `suminf (\n. a n * &0 pow n) = a(0)` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_UNIQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_UNIQ THEN REWRITE_TAC[POWSER_0]; ALL_TAC] THEN MATCH_MP_TAC(ONCE_REWRITE_RULE[IMP_CONJ] LIM_TRANSFORM) THEN @@ -758,7 +758,7 @@ let POWSER_LIMIT_0_STRONG = prove INDUCT_TAC THEN REWRITE_TAC[ARITH; ADD1] THEN DISCH_TAC THEN REWRITE_TAC[GSYM(ONCE_REWRITE_RULE[REAL_EQ_SUB_LADD] SUM_OFFSET)] THEN REWRITE_TAC[REAL_POW_ADD; REAL_POW_1; REAL_MUL_RZERO; SUM_CONST] THEN - CONV_TAC(ONCE_DEPTH_CONV REAL_SUM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV REAL_SUM_CONV)") (ONCE_DEPTH_CONV REAL_SUM_CONV) THEN REWRITE_TAC[real_pow; REAL_MUL_RID] THEN ASM_REWRITE_TAC[REAL_ADD_LID; REAL_SUB_REFL; REAL_ABS_NUM]; ALL_TAC] THEN MATCH_MP_TAC EQ_IMP THEN @@ -950,8 +950,8 @@ let POW_EQ = prove( (SPECL [`x:real`; `y:real`] REAL_LT_TOTAL) THEN ASM_REWRITE_TAC[] THEN UNDISCH_TAC `x pow (SUC n) = y pow (SUC n)` THEN - CONV_TAC CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THENL - [ALL_TAC; CONV_TAC(RAND_CONV SYM_CONV)] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THENL + [ALL_TAC; (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV)] THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN MATCH_MP_TAC POW_LT THEN ASM_REWRITE_TAC[]);; @@ -1069,10 +1069,10 @@ let COS_CONVERGES = prove( let REAL_EXP_FDIFF = prove( `diffs (\n. inv(&(FACT n))) = (\n. inv(&(FACT n)))`, REWRITE_TAC[diffs] THEN BETA_TAC THEN - CONV_TAC(X_FUN_EQ_CONV `n:num`) THEN GEN_TAC THEN BETA_TAC THEN + (CONV_TAC "(X_FUN_EQ_CONV `n:num`)") (X_FUN_EQ_CONV `n:num`) THEN GEN_TAC THEN BETA_TAC THEN REWRITE_TAC[FACT; GSYM REAL_MUL] THEN SUBGOAL_THEN `~(&(SUC n) = &0) /\ ~(&(FACT n) = &0)` ASSUME_TAC THENL - [CONJ_TAC THEN CONV_TAC(RAND_CONV SYM_CONV) THEN + [CONJ_TAC THEN (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN REWRITE_TAC[REAL_LT; LT_0; FACT_LT]; FIRST_ASSUM(fun th -> REWRITE_TAC[MATCH_MP REAL_INV_MUL_WEAK th]) THEN @@ -1084,14 +1084,14 @@ let SIN_FDIFF = prove( `diffs (\n. if EVEN n then &0 else ((--(&1)) pow ((n - 1) DIV 2)) / &(FACT n)) = (\n. if EVEN n then ((--(&1)) pow (n DIV 2)) / &(FACT n) else &0)`, REWRITE_TAC[diffs] THEN BETA_TAC THEN - CONV_TAC(X_FUN_EQ_CONV `n:num`) THEN GEN_TAC THEN BETA_TAC THEN + (CONV_TAC "(X_FUN_EQ_CONV `n:num`)") (X_FUN_EQ_CONV `n:num`) THEN GEN_TAC THEN BETA_TAC THEN COND_CASES_TAC THEN RULE_ASSUM_TAC(REWRITE_RULE[EVEN]) THEN ASM_REWRITE_TAC[REAL_MUL_RZERO] THEN REWRITE_TAC[SUC_SUB1] THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC] THEN AP_TERM_TAC THEN REWRITE_TAC[FACT; GSYM REAL_MUL] THEN SUBGOAL_THEN `~(&(SUC n) = &0) /\ ~(&(FACT n) = &0)` ASSUME_TAC THENL - [CONJ_TAC THEN CONV_TAC(RAND_CONV SYM_CONV) THEN + [CONJ_TAC THEN (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN REWRITE_TAC[REAL_LT; LT_0; FACT_LT]; FIRST_ASSUM(fun th -> REWRITE_TAC[MATCH_MP REAL_INV_MUL_WEAK th]) THEN @@ -1105,7 +1105,7 @@ let COS_FDIFF = prove( (\n. --(((\n. if EVEN n then &0 else ((--(&1)) pow ((n - 1) DIV 2)) / &(FACT n))) n))`, REWRITE_TAC[diffs] THEN BETA_TAC THEN - CONV_TAC(X_FUN_EQ_CONV `n:num`) THEN GEN_TAC THEN BETA_TAC THEN + (CONV_TAC "(X_FUN_EQ_CONV `n:num`)") (X_FUN_EQ_CONV `n:num`) THEN GEN_TAC THEN BETA_TAC THEN COND_CASES_TAC THEN RULE_ASSUM_TAC(REWRITE_RULE[EVEN]) THEN ASM_REWRITE_TAC[REAL_MUL_RZERO; REAL_NEG_0] THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN @@ -1115,7 +1115,7 @@ let COS_FDIFF = prove( REWRITE_TAC[pow] THEN REWRITE_TAC[GSYM REAL_NEG_MINUS1]; REWRITE_TAC[FACT; GSYM REAL_MUL] THEN SUBGOAL_THEN `~(&(SUC n) = &0) /\ ~(&(FACT n) = &0)` ASSUME_TAC THENL - [CONJ_TAC THEN CONV_TAC(RAND_CONV SYM_CONV) THEN + [CONJ_TAC THEN (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN REWRITE_TAC[REAL_LT; LT_0; FACT_LT]; FIRST_ASSUM(fun th -> REWRITE_TAC[MATCH_MP REAL_INV_MUL_WEAK th]) THEN @@ -1139,7 +1139,7 @@ let DIFF_EXP = prove( `!x. (exp diffl exp(x))(x)`, GEN_TAC THEN REWRITE_TAC[HALF_MK_ABS exp] THEN GEN_REWRITE_TAC (LAND_CONV o ONCE_DEPTH_CONV) [GSYM REAL_EXP_FDIFF] THEN - CONV_TAC(LAND_CONV BETA_CONV) THEN + (CONV_TAC "(LAND_CONV BETA_CONV)") (LAND_CONV BETA_CONV) THEN MATCH_MP_TAC TERMDIFF THEN EXISTS_TAC `abs(x) + &1` THEN REWRITE_TAC[REAL_EXP_FDIFF; MATCH_MP SUM_SUMMABLE (SPEC_ALL REAL_EXP_CONVERGES)] THEN MATCH_MP_TAC REAL_LTE_TRANS THEN EXISTS_TAC `abs(x) + &1` THEN @@ -1295,7 +1295,7 @@ let CONTINUOUS_CONV = EQT_INTRO o CONTINUOUS_RULE;; let REAL_EXP_0 = prove( `exp(&0) = &1`, - REWRITE_TAC[exp] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[exp] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_UNIQ THEN BETA_TAC THEN W(MP_TAC o C SPEC SER_0 o rand o rator o snd) THEN DISCH_THEN(MP_TAC o SPEC `1`) THEN @@ -1322,7 +1322,7 @@ let REAL_EXP_LE_X = prove( REWRITE_TAC[REAL_LT; FACT_LT]; MATCH_MP_TAC POW_POS THEN MATCH_MP_TAC REAL_LT_IMP_LE THEN FIRST_ASSUM ACCEPT_TAC]; - CONV_TAC(TOP_DEPTH_CONV num_CONV) THEN REWRITE_TAC[sum] THEN + (CONV_TAC "(TOP_DEPTH_CONV num_CONV)") (TOP_DEPTH_CONV num_CONV) THEN REWRITE_TAC[sum] THEN BETA_TAC THEN REWRITE_TAC[ADD_CLAUSES; FACT; pow; REAL_ADD_LID] THEN REWRITE_TAC[MULT_CLAUSES; REAL_INV1; REAL_MUL_LID; ADD_CLAUSES] THEN REWRITE_TAC[REAL_MUL_RID; SYM(num_CONV `1`)]]; @@ -1339,7 +1339,7 @@ let REAL_EXP_LT_1 = prove( let REAL_EXP_ADD_MUL = prove( `!x y. exp(x + y) * exp(--x) = exp(y)`, REPEAT GEN_TAC THEN - CONV_TAC(LAND_CONV(X_BETA_CONV `x:real`)) THEN + (CONV_TAC "(LAND_CONV(X_BETA_CONV `x:real`))") (LAND_CONV(X_BETA_CONV `x:real`)) THEN SUBGOAL_THEN `exp(y) = (\x. exp(x + y) * exp(--x))(&0)` SUBST1_TAC THENL [BETA_TAC THEN REWRITE_TAC[REAL_ADD_LID; REAL_NEG_0] THEN REWRITE_TAC[REAL_EXP_0; REAL_MUL_RID]; @@ -1385,13 +1385,13 @@ let REAL_EXP_NZ = prove( GEN_TAC THEN DISCH_TAC THEN MP_TAC(SPEC `x:real` REAL_EXP_NEG_MUL) THEN ASM_REWRITE_TAC[REAL_MUL_LZERO] THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_ACCEPT_TAC REAL_10);; let REAL_EXP_POS_LT = prove( `!x. &0 < exp(x)`, GEN_TAC THEN REWRITE_TAC[REAL_LT_LE] THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN REWRITE_TAC[REAL_EXP_POS_LE; REAL_EXP_NZ]);; let REAL_EXP_N = prove( @@ -1413,7 +1413,7 @@ let REAL_EXP_MONO_IMP = prove( REWRITE_TAC[REAL_EXP_SUB] THEN SUBGOAL_THEN `&1 < exp(y) / exp(x) <=> (&1 * exp(x)) < ((exp(y) / exp(x)) * exp(x))` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_LT_RMUL_EQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_LT_RMUL_EQ THEN MATCH_ACCEPT_TAC REAL_EXP_POS_LT; REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC; REAL_EXP_NEG_MUL2; GSYM REAL_EXP_NEG] THEN @@ -1422,7 +1422,7 @@ let REAL_EXP_MONO_IMP = prove( let REAL_EXP_MONO_LT = prove( `!x y. exp(x) < exp(y) <=> x < y`, REPEAT GEN_TAC THEN EQ_TAC THENL - [CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[REAL_NOT_LT] THEN + [(CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[REAL_NOT_LT] THEN REWRITE_TAC[REAL_LE_LT] THEN DISCH_THEN(DISJ_CASES_THEN2 ASSUME_TAC SUBST1_TAC) THEN REWRITE_TAC[] THEN DISJ1_TAC THEN MATCH_MP_TAC REAL_EXP_MONO_IMP THEN @@ -1459,7 +1459,7 @@ let REAL_EXP_TOTAL = prove( DISCH_THEN(MP_TAC o MATCH_MP REAL_LT_IMP_LE) THEN DISCH_THEN(X_CHOOSE_TAC `x:real` o MATCH_MP REAL_EXP_TOTAL_LEMMA) THEN EXISTS_TAC `--x` THEN ASM_REWRITE_TAC[REAL_EXP_NEG] THEN - MATCH_MP_TAC REAL_INVINV THEN CONV_TAC(RAND_CONV SYM_CONV) THEN + MATCH_MP_TAC REAL_INVINV THEN (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN ASM_REWRITE_TAC[]]);; let REAL_EXP_BOUND_LEMMA = prove @@ -1480,26 +1480,26 @@ let REAL_EXP_BOUND_LEMMA = prove EXISTS_TAC `inv(&1 - x)` THEN MATCH_MP_TAC GP THEN ASM_REWRITE_TAC[real_abs] THEN MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `inv(&2)` THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV]; + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]; SUBGOAL_THEN `suminf (\n. x pow n) = inv (&1 - x)` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_UNIQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_UNIQ THEN MATCH_MP_TAC GP THEN ASM_REWRITE_TAC[real_abs] THEN MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `inv(&2)` THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV; + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; MATCH_MP_TAC REAL_LE_LCANCEL_IMP THEN EXISTS_TAC `&1 - x` THEN SUBGOAL_THEN `(&1 - x) * inv (&1 - x) = &1` SUBST1_TAC THENL [MATCH_MP_TAC REAL_MUL_RINV THEN REWRITE_TAC[REAL_ARITH `(&1 - x = &0) <=> (x = &1)`] THEN DISCH_THEN SUBST_ALL_TAC THEN - POP_ASSUM MP_TAC THEN CONV_TAC REAL_RAT_REDUCE_CONV; + POP_ASSUM MP_TAC THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; CONJ_TAC THENL [MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `inv(&2) - x` THEN ASM_REWRITE_TAC[REAL_ARITH `&0 <= x - y <=> y <= x`] THEN ASM_REWRITE_TAC[REAL_ARITH `a - x < b - x <=> a < b`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; REWRITE_TAC[REAL_ADD_LDISTRIB; REAL_SUB_RDISTRIB] THEN REWRITE_TAC[REAL_MUL_RID; REAL_MUL_LID] THEN REWRITE_TAC[REAL_ARITH `&1 <= (&1 + &2 * x) - (x + x * &2 * x) <=> @@ -1507,7 +1507,7 @@ let REAL_EXP_BOUND_LEMMA = prove MATCH_MP_TAC REAL_LE_LMUL_IMP THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC REAL_LE_LCANCEL_IMP THEN EXISTS_TAC `inv(&2)` THEN REWRITE_TAC[REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[REAL_MUL_LID; real_div]]]]]);; (* ------------------------------------------------------------------------ *) @@ -1520,8 +1520,8 @@ let ln = new_definition let LN_EXP = prove( `!x. ln(exp x) = x`, GEN_TAC THEN REWRITE_TAC[ln; REAL_EXP_INJ] THEN - CONV_TAC SYM_CONV THEN CONV_TAC(RAND_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN - CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN MATCH_MP_TAC SELECT_AX THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN (CONV_TAC "(RAND_CONV(ONCE_DEPTH_CONV SYM_CONV))") (RAND_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN + (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN MATCH_MP_TAC SELECT_AX THEN EXISTS_TAC `x:real` THEN REFL_TAC);; let REAL_EXP_LN = prove( @@ -1547,7 +1547,7 @@ let LN_INJ = prove( REPEAT GEN_TAC THEN STRIP_TAC THEN EVERY_ASSUM(fun th -> GEN_REWRITE_TAC (RAND_CONV o ONCE_DEPTH_CONV) [SYM(REWRITE_RULE[GSYM REAL_EXP_LN] th)]) THEN - CONV_TAC SYM_CONV THEN MATCH_ACCEPT_TAC REAL_EXP_INJ);; + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_ACCEPT_TAC REAL_EXP_INJ);; let LN_1 = prove( `ln(&1) = &0`, @@ -1580,14 +1580,14 @@ let LN_MONO_LT = prove( REPEAT GEN_TAC THEN STRIP_TAC THEN EVERY_ASSUM(fun th -> GEN_REWRITE_TAC (RAND_CONV o ONCE_DEPTH_CONV) [SYM(REWRITE_RULE[GSYM REAL_EXP_LN] th)]) THEN - CONV_TAC SYM_CONV THEN MATCH_ACCEPT_TAC REAL_EXP_MONO_LT);; + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_ACCEPT_TAC REAL_EXP_MONO_LT);; let LN_MONO_LE = prove( `!x y. &0 < x /\ &0 < y ==> (ln(x) <= ln(y) <=> x <= y)`, REPEAT GEN_TAC THEN STRIP_TAC THEN EVERY_ASSUM(fun th -> GEN_REWRITE_TAC (RAND_CONV o ONCE_DEPTH_CONV) [SYM(REWRITE_RULE[GSYM REAL_EXP_LN] th)]) THEN - CONV_TAC SYM_CONV THEN MATCH_ACCEPT_TAC REAL_EXP_MONO_LE);; + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_ACCEPT_TAC REAL_EXP_MONO_LE);; let LN_POW = prove( `!n x. &0 < x ==> (ln(x pow n) = &n * ln(x))`, @@ -1681,7 +1681,7 @@ let ROOT_LN = prove( SUBGOAL_THEN `inv(&(SUC n)) * &(SUC n) = &1` SUBST1_TAC THENL [MATCH_MP_TAC REAL_MUL_LINV THEN REWRITE_TAC[REAL_INJ; NOT_SUC]; REWRITE_TAC[REAL_MUL_RID] THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC LN_POW THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC LN_POW THEN ASM_REWRITE_TAC[]]; REWRITE_TAC[REAL_EQ_RMUL; REAL_INJ; NOT_SUC]]; DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[REAL_EXP_POS_LT] THEN @@ -1728,7 +1728,7 @@ let POW_ROOT_POS = prove( DISCH_THEN(SUBST_ALL_TAC o SYM) THEN FIRST_ASSUM(UNDISCH_TAC o check is_conj o concl) THEN REWRITE_TAC[POW_0; REAL_LT_REFL; POW_ZERO]]; - ASM_REWRITE_TAC[REAL_LT_LE] THEN CONV_TAC CONTRAPOS_CONV THEN + ASM_REWRITE_TAC[REAL_LT_LE] THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[] THEN DISCH_THEN(SUBST1_TAC o SYM) THEN REWRITE_TAC[POW_0]]);; @@ -1770,7 +1770,7 @@ let ROOT_MONO_LT = prove (`!x y. &0 <= x /\ x < y ==> root(SUC n) x < root(SUC n) y`, REPEAT STRIP_TAC THEN SUBGOAL_THEN `&0 <= y` ASSUME_TAC THENL [ASM_MESON_TAC[REAL_LE_TRANS; REAL_LT_IMP_LE]; ALL_TAC] THEN - UNDISCH_TAC `x < y` THEN CONV_TAC CONTRAPOS_CONV THEN + UNDISCH_TAC `x < y` THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[REAL_NOT_LT] THEN DISCH_TAC THEN SUBGOAL_THEN `(x = (root(SUC n) x) pow (SUC n)) /\ (y = (root(SUC n) y) pow (SUC n))` @@ -1881,7 +1881,7 @@ let REAL_DIV_SQRT = prove (`!x. &0 <= x ==> (x / sqrt(x) = sqrt(x))`, GEN_TAC THEN ASM_CASES_TAC `x = &0` THENL [ASM_REWRITE_TAC[SQRT_0; real_div; REAL_MUL_LZERO]; ALL_TAC] THEN - DISCH_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC SQRT_POS_UNIQ THEN + DISCH_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SQRT_POS_UNIQ THEN ASM_SIMP_TAC[SQRT_POS_LE; REAL_LE_DIV] THEN REWRITE_TAC[real_div; REAL_POW_MUL; REAL_POW_INV] THEN ASM_SIMP_TAC[SQRT_POW_2] THEN @@ -1927,7 +1927,7 @@ let DIFF_SQRT = prove ASM_SIMP_TAC[SQRT_POS_LT; REAL_LT_IMP_NZ; REAL_ENTIRE] THEN REWRITE_TAC[REAL_OF_NUM_EQ; ARITH_EQ] THEN REPEAT CONJ_TAC THENL [ASM_MESON_TAC[POW_2_SQRT; REAL_ARITH `abs(x - y) < y ==> &0 <= x`]; - REPEAT STRIP_TAC THEN CONV_TAC CONTINUOUS_CONV; + REPEAT STRIP_TAC THEN (CONV_TAC "CONTINUOUS_CONV") CONTINUOUS_CONV; DIFF_TAC THEN REWRITE_TAC[ARITH; REAL_POW_1; REAL_MUL_RID]]);; let DIFF_SQRT_COMPOSITE = prove @@ -1942,7 +1942,7 @@ add_to_diff_net (SPEC_ALL DIFF_SQRT_COMPOSITE);; let SIN_0 = prove( `sin(&0) = &0`, - REWRITE_TAC[sin] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[sin] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_UNIQ THEN BETA_TAC THEN W(MP_TAC o C SPEC SER_0 o rand o rator o snd) THEN DISCH_THEN(MP_TAC o SPEC `0`) THEN REWRITE_TAC[LE_0] THEN @@ -1956,7 +1956,7 @@ let SIN_0 = prove( let COS_0 = prove( `cos(&0) = &1`, - REWRITE_TAC[cos] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[cos] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_UNIQ THEN BETA_TAC THEN W(MP_TAC o C SPEC SER_0 o rand o rator o snd) THEN DISCH_THEN(MP_TAC o SPEC `1`) THEN @@ -1978,7 +1978,7 @@ let COS_0 = prove( let SIN_CIRCLE = prove( `!x. (sin(x) pow 2) + (cos(x) pow 2) = &1`, - GEN_TAC THEN CONV_TAC(LAND_CONV(X_BETA_CONV `x:real`)) THEN + GEN_TAC THEN (CONV_TAC "(LAND_CONV(X_BETA_CONV `x:real`))") (LAND_CONV(X_BETA_CONV `x:real`)) THEN SUBGOAL_THEN `&1 = (\x.(sin(x) pow 2) + (cos(x) pow 2))(&0)` SUBST1_TAC THENL [BETA_TAC THEN REWRITE_TAC[SIN_0; COS_0] THEN REWRITE_TAC[num_CONV `2`; POW_0] THEN @@ -2033,7 +2033,7 @@ let SIN_COS_ADD = prove( `!x y. ((sin(x + y) - ((sin(x) * cos(y)) + (cos(x) * sin(y)))) pow 2) + ((cos(x + y) - ((cos(x) * cos(y)) - (sin(x) * sin(y)))) pow 2) = &0`, REPEAT GEN_TAC THEN - CONV_TAC(LAND_CONV(X_BETA_CONV `x:real`)) THEN + (CONV_TAC "(LAND_CONV(X_BETA_CONV `x:real`))") (LAND_CONV(X_BETA_CONV `x:real`)) THEN W(C SUBGOAL_THEN (SUBST1_TAC o SYM) o subst[`&0`,`x:real`] o snd) THENL [BETA_TAC THEN REWRITE_TAC[SIN_0; COS_0] THEN REWRITE_TAC[REAL_ADD_LID; REAL_MUL_LZERO; REAL_MUL_LID] THEN @@ -2056,7 +2056,7 @@ let SIN_COS_ADD = prove( let SIN_COS_NEG = prove( `!x. ((sin(--x) + (sin x)) pow 2) + ((cos(--x) - (cos x)) pow 2) = &0`, - GEN_TAC THEN CONV_TAC(LAND_CONV(X_BETA_CONV `x:real`)) THEN + GEN_TAC THEN (CONV_TAC "(LAND_CONV(X_BETA_CONV `x:real`))") (LAND_CONV(X_BETA_CONV `x:real`)) THEN W(C SUBGOAL_THEN (SUBST1_TAC o SYM) o subst[`&0`,`x:real`] o snd) THENL [BETA_TAC THEN REWRITE_TAC[SIN_0; COS_0; REAL_NEG_0] THEN REWRITE_TAC[REAL_ADD_LID; REAL_SUB_REFL] THEN @@ -2181,7 +2181,7 @@ let SIN_POS = prove( curry mk_comb `&` o funpow 3 rand o snd) THEN REWRITE_TAC[REAL_LT; LESS_SUC_REFL]; ALL_TAC] THEN MATCH_MP_TAC REAL_LTE_TRANS THEN EXISTS_TAC `&2` THEN - ASM_REWRITE_TAC[] THEN CONV_TAC(REDEPTH_CONV num_CONV) THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "(REDEPTH_CONV num_CONV)") (REDEPTH_CONV num_CONV) THEN REWRITE_TAC[REAL_LE; LE_SUC; LE_0]);; let COS_PAIRED = prove( @@ -2366,7 +2366,7 @@ let SIN_PI2 = prove( ONCE_REWRITE_TAC[GSYM REAL_SUB_0] THEN REWRITE_TAC[GSYM REAL_DIFFSQ; REAL_ENTIRE] THEN DISCH_THEN DISJ_CASES_TAC THEN ASM_REWRITE_TAC[] THEN - POP_ASSUM MP_TAC THEN CONV_TAC CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN + POP_ASSUM MP_TAC THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN REWRITE_TAC[REAL_LNEG_UNIQ] THEN DISCH_THEN(MP_TAC o AP_TERM `(--)`) THEN REWRITE_TAC[REAL_NEGNEG] THEN DISCH_TAC THEN MP_TAC REAL_LT_01 THEN POP_ASSUM(SUBST1_TAC o SYM) THEN @@ -2380,7 +2380,7 @@ let COS_PI = prove( REWRITE_TAC[SIN_PI2; COS_PI2; REAL_MUL_LZERO; REAL_MUL_LID] THEN REWRITE_TAC[REAL_SUB_LZERO] THEN DISCH_THEN(SUBST1_TAC o SYM) THEN AP_TERM_TAC THEN REWRITE_TAC[REAL_DOUBLE] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_DIV_LMUL THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_DIV_LMUL THEN REWRITE_TAC[REAL_INJ] THEN NUM_REDUCE_TAC);; let SIN_PI = prove( @@ -2388,7 +2388,7 @@ let SIN_PI = prove( MP_TAC(SPECL [`pi / &2`; `pi / &2`] SIN_ADD) THEN REWRITE_TAC[COS_PI2; REAL_MUL_LZERO; REAL_MUL_RZERO; REAL_ADD_LID] THEN DISCH_THEN(SUBST1_TAC o SYM) THEN AP_TERM_TAC THEN - REWRITE_TAC[REAL_DOUBLE] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[REAL_DOUBLE] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_DIV_LMUL THEN REWRITE_TAC[REAL_INJ] THEN NUM_REDUCE_TAC);; @@ -2502,7 +2502,7 @@ let SIN_POS_PI_LE = prove let COS_TOTAL = prove( `!y. --(&1) <= y /\ y <= &1 ==> ?!x. &0 <= x /\ x <= pi /\ (cos(x) = y)`, GEN_TAC THEN STRIP_TAC THEN - CONV_TAC EXISTS_UNIQUE_CONV THEN CONJ_TAC THENL + (CONV_TAC "EXISTS_UNIQUE_CONV") EXISTS_UNIQUE_CONV THEN CONJ_TAC THENL [MATCH_MP_TAC IVT2 THEN ASM_REWRITE_TAC[COS_0; COS_PI] THEN REWRITE_TAC[MATCH_MP REAL_LT_IMP_LE PI_POS] THEN GEN_TAC THEN DISCH_THEN(K ALL_TAC) THEN @@ -2527,7 +2527,7 @@ let COS_TOTAL = prove( REWRITE_TAC[REAL_NEG_EQ0] THEN DISCH_TAC THEN MP_TAC(SPEC `x:real` SIN_POS_PI) THEN ASM_REWRITE_TAC[REAL_LT_REFL] THEN - CONV_TAC CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN REWRITE_TAC[] THEN CONJ_TAC THENL [MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `x1:real`; MATCH_MP_TAC REAL_LTE_TRANS THEN EXISTS_TAC `x2:real`; @@ -2554,7 +2554,7 @@ let SIN_TOTAL = prove( MP_TAC(SPEC `--y` COS_TOTAL) THEN ASM_REWRITE_TAC[REAL_LE_NEG] THEN ONCE_REWRITE_TAC[GSYM REAL_LE_NEG] THEN ASM_REWRITE_TAC[REAL_NEGNEG] THEN REWRITE_TAC[REAL_LE_NEG] THEN - CONV_TAC(ONCE_DEPTH_CONV EXISTS_UNIQUE_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV EXISTS_UNIQUE_CONV)") (ONCE_DEPTH_CONV EXISTS_UNIQUE_CONV) THEN DISCH_THEN((then_) CONJ_TAC o MP_TAC) THENL [DISCH_THEN(X_CHOOSE_TAC `x:real` o CONJUNCT1) THEN EXISTS_TAC `x - pi / &2` THEN ASM_REWRITE_TAC[REAL_SUB_ADD]; @@ -2598,7 +2598,7 @@ let COS_ZERO_LEMMA = prove( ONCE_REWRITE_TAC[REAL_ADD_SYM] THEN ASM_REWRITE_TAC[] THEN AP_TERM_TAC THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN REWRITE_TAC[REAL_MUL_ASSOC] THEN AP_THM_TAC THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_DIV_RMUL THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_DIV_RMUL THEN REWRITE_TAC[REAL_INJ] THEN NUM_REDUCE_TAC]);; let SIN_ZERO_LEMMA = prove( @@ -2692,7 +2692,7 @@ let COS_ONE_2PI = prove SIMP_TAC[PI_POS; REAL_LT_IMP_NZ] THEN REWRITE_TAC[REAL_OF_NUM_EQ; REAL_OF_NUM_MUL] THEN ONCE_REWRITE_TAC[MULT_SYM] THEN REWRITE_TAC[GSYM EVEN_EXISTS] THEN - COND_CASES_TAC THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]);; + COND_CASES_TAC THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]);; (* ------------------------------------------------------------------------ *) (* Tangent *) @@ -2785,7 +2785,7 @@ let DIFF_TAN = prove( GEN_TAC THEN DISCH_TAC THEN MP_TAC(DIFF_CONV `\x. sin(x) / cos(x)`) THEN DISCH_THEN(MP_TAC o SPEC `x:real`) THEN ASM_REWRITE_TAC[REAL_MUL_RID] THEN REWRITE_TAC[GSYM tan; GSYM REAL_NEG_LMUL; REAL_NEGNEG; real_sub] THEN - CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN ONCE_REWRITE_TAC[REAL_ADD_SYM] THEN + (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN ONCE_REWRITE_TAC[REAL_ADD_SYM] THEN REWRITE_TAC[GSYM POW_2; SIN_CIRCLE; GSYM REAL_INV_1OVER]);; let DIFF_TAN_COMPOSITE = prove @@ -2800,8 +2800,8 @@ let TAN_TOTAL_LEMMA = prove( SUBGOAL_THEN `((\x. cos(x) / sin(x)) tends_real_real &0)(pi / &2)` MP_TAC THENL [SUBST1_TAC(SYM(SPEC `&1` REAL_DIV_LZERO)) THEN - CONV_TAC(ONCE_DEPTH_CONV HABS_CONV) THEN MATCH_MP_TAC LIM_DIV THEN - REWRITE_TAC[REAL_10] THEN CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV HABS_CONV)") (ONCE_DEPTH_CONV HABS_CONV) THEN MATCH_MP_TAC LIM_DIV THEN + REWRITE_TAC[REAL_10] THEN (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN SUBST1_TAC(SYM COS_PI2) THEN SUBST1_TAC(SYM SIN_PI2) THEN REWRITE_TAC[GSYM CONTL_LIM] THEN CONJ_TAC THEN MATCH_MP_TAC DIFF_CONT THENL [EXISTS_TAC `--(sin(pi / &2))`; @@ -2878,7 +2878,7 @@ let TAN_TOTAL_POS = prove( let TAN_TOTAL = prove( `!y. ?!x. --(pi / &2) < x /\ x < (pi / &2) /\ (tan(x) = y)`, - GEN_TAC THEN CONV_TAC EXISTS_UNIQUE_CONV THEN CONJ_TAC THENL + GEN_TAC THEN (CONV_TAC "EXISTS_UNIQUE_CONV") EXISTS_UNIQUE_CONV THEN CONJ_TAC THENL [DISJ_CASES_TAC(SPEC `y:real` REAL_LE_NEGTOTAL) THEN POP_ASSUM(X_CHOOSE_TAC `x:real` o MATCH_MP TAN_TOTAL_POS) THENL [EXISTS_TAC `x:real` THEN ASM_REWRITE_TAC[] THEN @@ -2898,9 +2898,9 @@ let TAN_TOTAL = prove( POP_ASSUM MP_TAC THEN SPEC_TAC(`x1:real`,`z1:real`) THEN SPEC_TAC(`x2:real`,`z2:real`) THEN MAP_EVERY X_GEN_TAC [`x1:real`; `x2:real`] THEN DISCH_TAC THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN ONCE_REWRITE_TAC[CONJ_SYM]] THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN ONCE_REWRITE_TAC[CONJ_SYM]] THEN (STRIP_TAC THEN MP_TAC(SPECL [`tan`; `x1:real`; `x2:real`] ROLLE) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC CONTRAPOS_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN REWRITE_TAC[NOT_IMP] THEN REPEAT CONJ_TAC THENL [X_GEN_TAC `x:real` THEN STRIP_TAC THEN MATCH_MP_TAC DIFF_CONT THEN @@ -2930,18 +2930,18 @@ let PI2_PI4 = prove (`pi / &2 = &2 * pi / &4`, ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let TAN_PI4 = prove (`tan(pi / &4) = &1`, REWRITE_TAC[tan; COS_SIN; real_div; GSYM REAL_SUB_LDISTRIB] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_MUL_RINV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_MUL_RINV THEN REWRITE_TAC[SIN_ZERO] THEN REWRITE_TAC[real_div; GSYM REAL_MUL_LNEG] THEN ONCE_REWRITE_TAC[AC REAL_MUL_AC `a * b * c = b * a * c`] THEN SIMP_TAC[REAL_MUL_LID; REAL_EQ_MUL_LCANCEL; PI_POS; REAL_LT_IMP_NZ] THEN SIMP_TAC[GSYM real_div; REAL_EQ_RDIV_EQ; REAL_OF_NUM_LT; ARITH] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SIMP_TAC[REAL_EQ_LDIV_EQ; REAL_OF_NUM_LT; ARITH] THEN REWRITE_TAC[REAL_MUL_LNEG; REAL_OF_NUM_MUL; REAL_OF_NUM_EQ] THEN SIMP_TAC[REAL_ARITH `&0 <= x ==> ~(&1 = --x)`; REAL_POS] THEN @@ -3137,7 +3137,7 @@ let ATN_1 = prove `&0 < a /\ a < b ==> --b < a /\ a < b`) THEN SIMP_TAC[REAL_LT_DIV; REAL_OF_NUM_LT; ARITH; PI_POS] THEN SIMP_TAC[real_div; REAL_LT_LMUL_EQ; PI_POS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let ATN_NEG = prove (`!x. atn(--x) = --(atn x)`, @@ -3155,7 +3155,7 @@ let ATN_NEG = prove let COS_ATN_NZ = prove( `!x. ~(cos(atn(x)) = &0)`, GEN_TAC THEN REWRITE_TAC[COS_ZERO; DE_MORGAN_THM] THEN CONJ_TAC THEN - CONV_TAC NOT_EXISTS_CONV THEN X_GEN_TAC `n:num` THEN + (CONV_TAC "NOT_EXISTS_CONV") NOT_EXISTS_CONV THEN X_GEN_TAC `n:num` THEN STRUCT_CASES_TAC(SPEC `n:num` num_CASES) THEN REWRITE_TAC[EVEN; DE_MORGAN_THM] THEN DISJ2_TAC THEN DISCH_TAC THEN MP_TAC(SPEC `x:real` ATN_BOUNDS) THEN @@ -3292,7 +3292,7 @@ let COS_SIN_SQRT = prove( REWRITE_TAC[GSYM REAL_EQ_SUB_LADD] THEN DISCH_THEN(SUBST1_TAC o SYM) THEN REWRITE_TAC[sqrt; num_CONV `2`] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC POW_ROOT_POS THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC POW_ROOT_POS THEN ASM_REWRITE_TAC[]);; let COS_ASN_NZ = prove( @@ -3300,7 +3300,7 @@ let COS_ASN_NZ = prove( GEN_TAC THEN DISCH_TAC THEN FIRST_ASSUM(STRIP_ASSUME_TAC o MATCH_MP ASN_BOUNDS_LT) THEN REWRITE_TAC[COS_ZERO; DE_MORGAN_THM] THEN - CONJ_TAC THEN CONV_TAC NOT_EXISTS_CONV THEN + CONJ_TAC THEN (CONV_TAC "NOT_EXISTS_CONV") NOT_EXISTS_CONV THEN X_GEN_TAC `n:num` THEN STRUCT_CASES_TAC(SPEC `n:num` num_CASES) THEN REWRITE_TAC[EVEN] THEN STRIP_TAC THENL [UNDISCH_TAC `asn(x) < (pi / &2)` THEN ASM_REWRITE_TAC[]; @@ -3369,7 +3369,7 @@ let SIN_COS_SQRT = prove( REWRITE_TAC[GSYM REAL_EQ_SUB_LADD] THEN DISCH_THEN(SUBST1_TAC o SYM) THEN REWRITE_TAC[sqrt; num_CONV `2`] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC POW_ROOT_POS THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC POW_ROOT_POS THEN ASM_REWRITE_TAC[]);; let SIN_ACS_NZ = prove( @@ -3378,7 +3378,7 @@ let SIN_ACS_NZ = prove( FIRST_ASSUM(STRIP_ASSUME_TAC o MATCH_MP ACS_BOUNDS_LT) THEN REWRITE_TAC[SIN_ZERO; REAL_NEG_EQ0] THEN REWRITE_TAC[DE_MORGAN_THM] THEN - CONJ_TAC THEN CONV_TAC NOT_EXISTS_CONV THEN + CONJ_TAC THEN (CONV_TAC "NOT_EXISTS_CONV") NOT_EXISTS_CONV THEN (INDUCT_TAC THENL [REWRITE_TAC[REAL_MUL_LZERO; EVEN; REAL_NEG_0] THEN DISCH_THEN SUBST_ALL_TAC THEN @@ -3434,7 +3434,7 @@ let DIFF_ACS = prove( MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN IMP_SUBST_TAC (GSYM REAL_NEG_INV) THENL - [CONV_TAC(RAND_CONV SYM_CONV) THEN + [(CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC SIN_ACS_NZ THEN ASM_REWRITE_TAC[]; REPEAT AP_TERM_TAC] THEN SUBGOAL_THEN `cos(acs x) = x` MP_TAC THENL @@ -3618,10 +3618,10 @@ let DIVISION_1 = prove( REWRITE_TAC[REAL_LT_REFL; NOT_LT]; POP_ASSUM(MP_TAC o SPEC `2` o CONJUNCT2) THEN REWRITE_TAC[num_CONV `2`; GE] THEN - CONV_TAC CONTRAPOS_CONV THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[num_CONV `1`; NOT_SUC_LESS_EQ; CONJUNCT1 LE] THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[NOT_SUC; NOT_IMP] THEN - REWRITE_TAC[LE_0] THEN CONV_TAC(RAND_CONV SYM_CONV) THEN + REWRITE_TAC[LE_0] THEN (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN POP_ASSUM ACCEPT_TAC]; DISCH_THEN SUBST1_TAC THEN CONJ_TAC THENL [GEN_TAC THEN REWRITE_TAC[num_CONV `1`; CONJUNCT2 LT; NOT_LESS_0] THEN @@ -3770,7 +3770,7 @@ let DIVISION_LBOUND = prove( MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `b:real` THEN CONJ_TAC THENL [MATCH_MP_TAC DIVISION_LE THEN EXISTS_TAC `D:num->real` THEN ASM_REWRITE_TAC[DIVISION_THM]; - MATCH_MP_TAC REAL_EQ_IMP_LE THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC REAL_EQ_IMP_LE THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[GE]]]);; let DIVISION_LBOUND_LT = prove( @@ -3823,7 +3823,7 @@ let DIVISION_UBOUND = prove( MATCH_MP_TAC REAL_LT_IMP_LE THEN FIRST_ASSUM MATCH_MP_TAC THEN MATCH_MP_TAC LESS_CASES_IMP THEN REWRITE_TAC[NOT_LT; LE_LT; SUB_LESS_EQ] THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN REWRITE_TAC[SUB_EQ_EQ_0; NOT_SUC] THEN DISCH_THEN SUBST_ALL_TAC THEN UNDISCH_TAC `r < 0` THEN REWRITE_TAC[NOT_LESS_0]] THEN @@ -3888,7 +3888,7 @@ let DIVISION_APPEND_LEMMA1 = prove( ONCE_REWRITE_TAC[ADD_SYM] THEN REWRITE_TAC[ADD_SUB] THEN REWRITE_TAC[NOT_LE] THEN COND_CASES_TAC THEN UNDISCH_TAC `n >= ((dsize D1) + (dsize D2))` THENL - [CONV_TAC CONTRAPOS_CONV THEN DISCH_TAC THEN + [(CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_TAC THEN REWRITE_TAC[GE; NOT_LE] THEN MATCH_MP_TAC LTE_TRANS THEN EXISTS_TAC `dsize D1` THEN ASM_REWRITE_TAC[LE_ADD]; @@ -3910,7 +3910,7 @@ let DIVISION_APPEND_LEMMA2 = prove( MATCH_MP_TAC SELECT_UNIQUE THEN X_GEN_TAC `N:num` THEN BETA_TAC THEN EQ_TAC THENL [DISCH_THEN((then_) (MATCH_MP_TAC LESS_EQUAL_ANTISYM) o MP_TAC) THEN - CONV_TAC CONTRAPOS_CONV THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[DE_MORGAN_THM; NOT_LE] THEN DISCH_THEN DISJ_CASES_TAC THENL [DISJ1_TAC THEN @@ -3944,7 +3944,7 @@ let DIVISION_APPEND_LEMMA2 = prove( ASM_REWRITE_TAC[GSYM NOT_LE]; MATCH_MP_TAC DIVISION_LBOUND THEN EXISTS_TAC `c:real` THEN ASM_REWRITE_TAC[]]; - CONV_TAC CONTRAPOS_CONV THEN ASM_REWRITE_TAC[] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN ASM_REWRITE_TAC[] THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[REAL_LT_REFL]]; RULE_ASSUM_TAC(REWRITE_RULE[]) THEN SUBGOAL_THEN `D2(N - (dsize D1)) < D2(dsize D2)` MP_TAC THENL @@ -3961,7 +3961,7 @@ let DIVISION_APPEND_LEMMA2 = prove( RULE_ASSUM_TAC(REWRITE_RULE[LT_ADD_RCANCEL]) THEN MATCH_MP_TAC LET_TRANS THEN EXISTS_TAC `d:num` THEN ASM_REWRITE_TAC[LE_0]; - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[] THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[REAL_LT_REFL]]]]; DISCH_THEN SUBST1_TAC THEN CONJ_TAC THENL [X_GEN_TAC `n:num` THEN DISCH_TAC THEN @@ -4038,7 +4038,7 @@ let DIVISION_APPEND_EXPLICIT = prove ASM_MESON_TAC[tdiv; DIVISION_LHS; DIVISION_RHS]] THEN DISJ_CASES_TAC(GSYM (SPEC `dsize(D1)` LESS_0_CASES)) THENL [ASM_REWRITE_TAC[NOT_LESS_0; SUB_0] THEN - CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN SUBGOAL_THEN `a:real = b` (fun th -> ASM_REWRITE_TAC[th]) THEN MP_TAC(SPECL [`D1:num->real`; `a:real`; `b:real`] DIVISION_EQ) THEN RULE_ASSUM_TAC(REWRITE_RULE[tdiv]) THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN @@ -4089,7 +4089,7 @@ let DIVISION_APPEND_EXPLICIT = prove (dsize D1))) (dsize(D1) + dsize(D2))` SUBST1_TAC THENL [BETA_TAC THEN REWRITE_TAC[GSYM NOT_LE; LE_ADD] THEN ONCE_REWRITE_TAC[ADD_SYM] THEN REWRITE_TAC[ADD_SUB] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC DIVISION_RHS THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC DIVISION_RHS THEN EXISTS_TAC `b:real` THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN MP_TAC(SPECL [`a:real`; `b:real`; `c:real`; `D1:num->real`; `D2:num->real`] DIVISION_APPEND_LEMMA2) THEN @@ -4143,7 +4143,7 @@ let DIVISION_EXISTS = prove( REPEAT GEN_TAC THEN DISCH_THEN(CONJUNCTS_THEN2 MP_TAC ASSUME_TAC) THEN (MP_TAC o C SPEC BOLZANO_LEMMA) `\(u,v). a <= u /\ v <= b ==> ?D p. tdiv(u,v) (D,p) /\ fine(g) (D,p)` THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN W(C SUBGOAL_THEN (fun t ->REWRITE_TAC[t]) o funpow 2 (fst o dest_imp) o snd) THENL [CONJ_TAC; @@ -4161,7 +4161,7 @@ let DIVISION_EXISTS = prove( [ALL_TAC; EXISTS_TAC `&1` THEN REWRITE_TAC[REAL_LT_01] THEN MAP_EVERY X_GEN_TAC [`w:real`; `y:real`] THEN STRIP_TAC THEN - CONV_TAC CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN FIRST_ASSUM(UNDISCH_TAC o check is_neg o concl) THEN REWRITE_TAC[DE_MORGAN_THM; REAL_NOT_LE] THEN DISCH_THEN DISJ_CASES_TAC THENL @@ -4225,7 +4225,7 @@ let DINT_UNIQ = prove( `!a b f k1 k2. a <= b /\ defint(a,b) f k1 /\ defint(a,b) f k2 ==> (k1 = k2)`, REPEAT GEN_TAC THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_SUB_0] THEN - CONV_TAC CONTRAPOS_CONV THEN ONCE_REWRITE_TAC[ABS_NZ] THEN DISCH_TAC THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN ONCE_REWRITE_TAC[ABS_NZ] THEN DISCH_TAC THEN REWRITE_TAC[defint] THEN DISCH_THEN(CONJUNCTS_THEN(MP_TAC o SPEC `abs(k1 - k2) / &2`)) THEN ASM_REWRITE_TAC[REAL_LT_HALF1] THEN @@ -4447,8 +4447,8 @@ let FTC1 = prove( [ONCE_REWRITE_TAC[SYM(BETA_CONV `(\n. (D(SUC n) - D(n))) n`)] THEN ASM_REWRITE_TAC[SUM_CMUL; SUM_CANCEL; ADD_CLAUSES] THEN MAP_EVERY (IMP_RES_THEN SUBST1_TAC) [DIVISION_LHS; DIVISION_RHS] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_DIV_RMUL THEN - REWRITE_TAC[REAL_SUB_0] THEN CONV_TAC(RAND_CONV SYM_CONV) THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_DIV_RMUL THEN + REWRITE_TAC[REAL_SUB_0] THEN (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC REAL_LT_IMP_NE THEN FIRST_ASSUM ACCEPT_TAC; ALL_TAC] THEN MATCH_MP_TAC SUM_LE THEN X_GEN_TAC `r:num` THEN REWRITE_TAC[ADD_CLAUSES] THEN STRIP_TAC THEN BETA_TAC THEN @@ -4471,7 +4471,7 @@ let integral = new_definition let INTEGRABLE_DEFINT = prove (`!f a b. integrable(a,b) f ==> defint(a,b) f (integral(a,b) f)`, REPEAT GEN_TAC THEN REWRITE_TAC[integrable; integral] THEN - CONV_TAC(RAND_CONV SELECT_CONV) THEN REWRITE_TAC[]);; + (CONV_TAC "(RAND_CONV SELECT_CONV)") (RAND_CONV SELECT_CONV) THEN REWRITE_TAC[]);; (* ------------------------------------------------------------------------- *) (* Other more or less trivial lemmas. *) @@ -5611,7 +5611,7 @@ let MCLAURIN = prove( * &(FACT n) / (h pow n)` THEN REWRITE_TAC[real_div] THEN REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN GEN_REWRITE_TAC (RATOR_CONV o RAND_CONV) [GSYM REAL_MUL_RID] THEN - AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[AC REAL_MUL_AC `a * b * c * d = (d * a) * (b * c)`] THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_MUL_LID] THEN BINOP_TAC THEN @@ -5633,23 +5633,23 @@ let MCLAURIN = prove( DISCH_THEN(fun th -> REWRITE_TAC[GSYM th]) THEN BETA_TAC THEN REWRITE_TAC[SUM_1] THEN BETA_TAC THEN REWRITE_TAC[pow; FACT] THEN ASM_REWRITE_TAC[real_div; REAL_INV1; REAL_MUL_RID] THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[REAL_ADD_LID_UNIQ] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[REAL_ADD_LID_UNIQ] THEN REWRITE_TAC[GSYM ADD1; POW_0; REAL_MUL_RZERO; SUM_0]; ALL_TAC] THEN ABBREV_TAC `difg = \m t. diff(m) t - (sum(0,n - m)(\p. (diff(m + p)(&0) / &(FACT p)) * (t pow p)) + (B * ((t pow (n - m)) / &(FACT(n - m)))))` THEN SUBGOAL_THEN `difg(0):real->real = g` ASSUME_TAC THENL [EXPAND_TAC "difg" THEN BETA_TAC THEN EXPAND_TAC "g" THEN - CONV_TAC FUN_EQ_CONV THEN GEN_TAC THEN BETA_TAC THEN + (CONV_TAC "FUN_EQ_CONV") FUN_EQ_CONV THEN GEN_TAC THEN BETA_TAC THEN ASM_REWRITE_TAC[ADD_CLAUSES; SUB_0]; ALL_TAC] THEN SUBGOAL_THEN `(!m t. m < n /\ (& 0) <= t /\ t <= h ==> (difg(m) diffl difg(SUC m)(t))(t))` ASSUME_TAC THENL [REPEAT GEN_TAC THEN DISCH_TAC THEN EXPAND_TAC "difg" THEN BETA_TAC THEN - CONV_TAC((funpow 2 RATOR_CONV o RAND_CONV) HABS_CONV) THEN + (CONV_TAC "((funpow 2 RATOR_CONV o RAND_CONV) HABS_CONV)") ((funpow 2 RATOR_CONV o RAND_CONV) HABS_CONV) THEN MATCH_MP_TAC DIFF_SUB THEN CONJ_TAC THENL - [CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN + [(CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN FIRST_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN - CONV_TAC((funpow 2 RATOR_CONV o RAND_CONV) HABS_CONV) THEN + (CONV_TAC "((funpow 2 RATOR_CONV o RAND_CONV) HABS_CONV)") ((funpow 2 RATOR_CONV o RAND_CONV) HABS_CONV) THEN MATCH_MP_TAC DIFF_ADD THEN CONJ_TAC THENL [ALL_TAC; W(MP_TAC o DIFF_CONV o rand o funpow 2 rator o snd) THEN @@ -5657,7 +5657,7 @@ let MCLAURIN = prove( REWRITE_TAC[REAL_FACT_NZ; REAL_SUB_RZERO] THEN DISCH_THEN(MP_TAC o SPEC `t:real`) THEN MATCH_MP_TAC EQ_IMP THEN - AP_THM_TAC THEN CONV_TAC(ONCE_DEPTH_CONV(ALPHA_CONV `t:real`)) THEN + AP_THM_TAC THEN (CONV_TAC "(ONCE_DEPTH_CONV(ALPHA_CONV `t:real`))") (ONCE_DEPTH_CONV(ALPHA_CONV `t:real`)) THEN AP_TERM_TAC THEN GEN_REWRITE_TAC RAND_CONV [REAL_MUL_SYM] THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[real_div] THEN REWRITE_TAC[GSYM REAL_MUL_ASSOC; POW_2] THEN @@ -5687,7 +5687,7 @@ let MCLAURIN = prove( REWRITE_TAC[ADD_SUB] THEN REWRITE_TAC[GSYM(REWRITE_RULE[REAL_EQ_SUB_LADD] SUM_OFFSET)] THEN BETA_TAC THEN REWRITE_TAC[SUM_1] THEN BETA_TAC THEN - CONV_TAC (funpow 2 RATOR_CONV (RAND_CONV HABS_CONV)) THEN + (CONV_TAC "(funpow 2 RATOR_CONV (RAND_CONV HABS_CONV))") (funpow 2 RATOR_CONV (RAND_CONV HABS_CONV)) THEN GEN_REWRITE_TAC (RATOR_CONV o RAND_CONV) [GSYM REAL_ADD_RID] THEN MATCH_MP_TAC DIFF_ADD THEN REWRITE_TAC[pow; DIFF_CONST] THEN (MP_TAC o C SPECL DIFF_SUM) @@ -5700,7 +5700,7 @@ let MCLAURIN = prove( W(MP_TAC o DIFF_CONV o rand o funpow 2 rator o snd) THEN DISCH_THEN(MP_TAC o SPEC `t:real`) THEN MATCH_MP_TAC EQ_IMP THEN - CONV_TAC(ONCE_DEPTH_CONV(ALPHA_CONV `z:real`)) THEN + (CONV_TAC "(ONCE_DEPTH_CONV(ALPHA_CONV `z:real`))") (ONCE_DEPTH_CONV(ALPHA_CONV `z:real`)) THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[REAL_MUL_LZERO; REAL_ADD_LID; REAL_MUL_RID] THEN REWRITE_TAC[GSYM ADD1; ADD_CLAUSES; real_div; GSYM REAL_MUL_ASSOC] THEN @@ -5709,10 +5709,10 @@ let MCLAURIN = prove( AP_TERM_TAC THEN REWRITE_TAC[REAL_MUL_ASSOC] THEN AP_THM_TAC THEN AP_TERM_TAC THEN SUBGOAL_THEN `&(SUC k) = inv(inv(&(SUC k)))` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_INVINV THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_INVINV THEN REWRITE_TAC[REAL_INJ; NOT_SUC]; ALL_TAC] THEN IMP_SUBST_TAC(GSYM REAL_INV_MUL_WEAK) THENL - [CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN REWRITE_TAC[REAL_FACT_NZ] THEN + [(CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN REWRITE_TAC[REAL_FACT_NZ] THEN MATCH_MP_TAC REAL_POS_NZ THEN MATCH_MP_TAC REAL_INV_POS THEN REWRITE_TAC[REAL_LT; LT_0]; ALL_TAC] THEN AP_TERM_TAC THEN REWRITE_TAC[FACT; GSYM REAL_MUL; REAL_MUL_ASSOC] THEN @@ -5831,14 +5831,14 @@ let MCLAURIN_NEG = prove [REPEAT GEN_TAC THEN DISCH_THEN(fun th -> FIRST_ASSUM(MP_TAC o C MATCH_MP th)) THEN DISCH_THEN(MP_TAC o C CONJ (SPEC `t:real` (DIFF_CONV `\x. --x`))) THEN - CONV_TAC(ONCE_DEPTH_CONV ETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV ETA_CONV)") (ONCE_DEPTH_CONV ETA_CONV) THEN DISCH_THEN(MP_TAC o MATCH_MP DIFF_CHAIN) THEN DISCH_THEN(MP_TAC o GEN_ALL o MATCH_MP DIFF_CMUL) THEN DISCH_THEN(MP_TAC o SPEC `(--(&1)) pow m`) THEN BETA_TAC THEN MATCH_MP_TAC EQ_IMP THEN - CONV_TAC(ONCE_DEPTH_CONV(ALPHA_CONV `z:real`)) THEN + (CONV_TAC "(ONCE_DEPTH_CONV(ALPHA_CONV `z:real`))") (ONCE_DEPTH_CONV(ALPHA_CONV `z:real`)) THEN AP_THM_TAC THEN AP_TERM_TAC THEN - CONV_TAC(AC REAL_MUL_AC); + (CONV_TAC "(AC REAL_MUL_AC)") (AC REAL_MUL_AC); DISCH_THEN(X_CHOOSE_THEN `t:real` STRIP_ASSUME_TAC)] THEN EXISTS_TAC `--t` THEN ONCE_REWRITE_TAC[GSYM REAL_LT_NEG] THEN ASM_REWRITE_TAC[REAL_NEGNEG; REAL_NEG_0] THEN @@ -5875,7 +5875,7 @@ let MCLAURIN_BI_LE = prove REWRITE_TAC[REWRITE_RULE[REAL_EQ_SUB_RADD] (GSYM SUM_OFFSET)] THEN REWRITE_TAC[REAL_POW_ADD; REAL_POW_1; REAL_MUL_RZERO; SUM_0] THEN REWRITE_TAC[REAL_ADD_RID; REAL_ADD_LID] THEN - CONV_TAC(ONCE_DEPTH_CONV REAL_SUM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV REAL_SUM_CONV)") (ONCE_DEPTH_CONV REAL_SUM_CONV) THEN ASM_REWRITE_TAC[real_pow; FACT; REAL_MUL_RID; REAL_DIV_1]; ALL_TAC] THEN FIRST_ASSUM(DISJ_CASES_TAC o MATCH_MP (REAL_ARITH `~(x = &0) ==> &0 < x \/ x < &0`)) @@ -6200,8 +6200,8 @@ let MCLAURIN_SIN = prove REWRITE_TAC[ARITH_EQ] THEN ABBREV_TAC `d = m MOD 4` THEN DISCH_THEN(CONJUNCTS_THEN2 SUBST1_TAC MP_TAC) THEN REWRITE_TAC[ADD1; GSYM ADD_ASSOC; MOD_MULT_ADD] THEN - SPEC_TAC(`d:num`,`d:num`) THEN CONV_TAC EXPAND_CASES_CONV THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[] THEN + SPEC_TAC(`d:num`,`d:num`) THEN (CONV_TAC "EXPAND_CASES_CONV") EXPAND_CASES_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[] THEN REPEAT CONJ_TAC THEN W(MP_TAC o DIFF_CONV o lhand o rator o snd) THEN SIMP_TAC[REAL_MUL_RID; REAL_NEG_NEG]; ALL_TAC] THEN @@ -6221,8 +6221,8 @@ let MCLAURIN_SIN = prove MP_TAC(SYM th)) THEN REWRITE_TAC[EVEN_ADD; EVEN_MULT; ARITH_EVEN] THEN UNDISCH_TAC `r MOD 4 < 4` THEN - SPEC_TAC(`r MOD 4`,`d:num`) THEN CONV_TAC EXPAND_CASES_CONV THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[] THEN + SPEC_TAC(`r MOD 4`,`d:num`) THEN (CONV_TAC "EXPAND_CASES_CONV") EXPAND_CASES_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[] THEN REWRITE_TAC[real_div; REAL_MUL_LZERO] THEN SIMP_TAC[ARITH_RULE `(x + 1) - 1 = x`; ARITH_RULE `(x + 3) - 1 = x + 2`; @@ -6261,8 +6261,8 @@ let MCLAURIN_COS = prove REWRITE_TAC[ARITH_EQ] THEN ABBREV_TAC `d = m MOD 4` THEN DISCH_THEN(CONJUNCTS_THEN2 SUBST1_TAC MP_TAC) THEN REWRITE_TAC[ADD1; GSYM ADD_ASSOC; MOD_MULT_ADD] THEN - SPEC_TAC(`d:num`,`d:num`) THEN CONV_TAC EXPAND_CASES_CONV THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[] THEN + SPEC_TAC(`d:num`,`d:num`) THEN (CONV_TAC "EXPAND_CASES_CONV") EXPAND_CASES_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[] THEN REPEAT CONJ_TAC THEN W(MP_TAC o DIFF_CONV o lhand o rator o snd) THEN SIMP_TAC[REAL_MUL_RID; REAL_NEG_NEG]; ALL_TAC] THEN @@ -6282,8 +6282,8 @@ let MCLAURIN_COS = prove MP_TAC(SYM th)) THEN REWRITE_TAC[EVEN_ADD; EVEN_MULT; ARITH_EVEN] THEN UNDISCH_TAC `r MOD 4 < 4` THEN - SPEC_TAC(`r MOD 4`,`d:num`) THEN CONV_TAC EXPAND_CASES_CONV THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[] THEN + SPEC_TAC(`r MOD 4`,`d:num`) THEN (CONV_TAC "EXPAND_CASES_CONV") EXPAND_CASES_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[] THEN REWRITE_TAC[real_div; REAL_MUL_LZERO] THEN REWRITE_TAC[ARITH_RULE `x * 4 + 2 = 2 * (2 * x + 1)`; ARITH_RULE `x * 4 + 0 = 2 * 2 * x`] THEN @@ -6359,7 +6359,7 @@ let REAL_ATN_POWSER_DIFFS_SUM = prove (\n. --(x pow 2) pow n)` SUBST1_TAC THENL [ABS_TAC THEN - CONV_TAC(LAND_CONV(LAND_CONV(RAND_CONV(TOP_DEPTH_CONV num_CONV)))) THEN + (CONV_TAC "(LAND_CONV(LAND_CONV(RAND_CONV(TOP_DEPTH_CONV num_CONV))))") (LAND_CONV(LAND_CONV(RAND_CONV(TOP_DEPTH_CONV num_CONV)))) THEN REWRITE_TAC[sum; diffs; ADD_CLAUSES; EVEN_MULT; ARITH_EVEN; EVEN] THEN REWRITE_TAC[REAL_ADD_LID; REAL_ADD_RID; REAL_MUL_LZERO; REAL_MUL_RZERO] THEN @@ -6473,7 +6473,7 @@ let REAL_ATN_POWSER = prove MP_TAC THENL [MATCH_MP_TAC(REAL_ARITH `(a = &0) /\ (b = &0) ==> (a - b = &0)`) THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_UNIQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_UNIQ THEN MP_TAC(SPEC `&0` GP) THEN REWRITE_TAC[REAL_ABS_NUM; REAL_OF_NUM_LT; ARITH] THEN DISCH_THEN(MP_TAC o SPEC `&0` o MATCH_MP SER_CMUL) THEN @@ -6481,7 +6481,7 @@ let REAL_ATN_POWSER = prove MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN ABS_TAC THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[REAL_MUL_LZERO] THEN - CONV_TAC SYM_CONV THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[REAL_ENTIRE; REAL_POW_EQ_0] THEN ASM_MESON_TAC[EVEN]; GEN_REWRITE_TAC (LAND_CONV o RAND_CONV) [GSYM TAN_0] THEN MATCH_MP_TAC TAN_ATN THEN @@ -6497,7 +6497,7 @@ let REAL_ATN_POWSER = prove `~(x = &0) ==> &0 < x \/ x < &0`)) THENL [DISCH_THEN(MP_TAC o SPECL [`&0`; `x:real`]); - CONV_TAC(RAND_CONV SYM_CONV) THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN DISCH_THEN(MP_TAC o SPECL [`x:real`; `&0`])] THEN (REWRITE_TAC[] THEN DISCH_THEN MATCH_MP_TAC THEN ASM_REWRITE_TAC[] THEN @@ -6548,7 +6548,7 @@ let MCLAURIN_ATN = prove MATCH_MP_TAC REAL_LE_RMUL THEN SIMP_TAC[REAL_POW_LE; REAL_ABS_POS] THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_INV_1] THEN - MATCH_MP_TAC REAL_LE_INV2 THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_LE_INV2 THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_OF_NUM_LE; ARITH_RULE `1 <= n <=> ~(n = 0)`] THEN ASM_MESON_TAC[EVEN]; ALL_TAC] THEN MATCH_MP_TAC REAL_LE_TRANS THEN diff --git a/Library/wo.ml b/Library/wo.ml index 3e2d39dc..0a2f2e09 100644 --- a/Library/wo.ml +++ b/Library/wo.ml @@ -24,7 +24,7 @@ open Pair;; open Wf;; open Sets;; -let PBETA_TAC = CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV);; +let PBETA_TAC = (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV);; let EXPAND_TAC s = FIRST_ASSUM(SUBST1_TAC o SYM o check((=) s o fst o dest_var o rhs o concl)) THEN BETA_TAC;; @@ -440,7 +440,7 @@ let ORDINAL_CHAINED = prove [ASM_MESON_TAC[]; ASM_MESON_TAC[]; ALL_TAC] THEN DISCH_THEN(X_CHOOSE_THEN `a:A` STRIP_ASSUME_TAC) THEN MP_TAC(ASSUME `UNIONS (\k. k inseg l /\ k inseg m) = linseg l (a:A)`) THEN - CONV_TAC CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN REWRITE_TAC[FUN_EQ_THM] THEN DISCH_THEN(MP_TAC o SPEC `(a:A,a)`) THEN REWRITE_TAC[linseg] THEN PBETA_TAC THEN REWRITE_TAC[less] THEN REWRITE_TAC[UNIONS_PRED] THEN EXISTS_TAC @@ -496,13 +496,13 @@ let ORDINAL_SUC = prove DISCH_THEN(REPEAT_TCL CONJUNCTS_THEN ASSUME_TAC) THEN ABBREV_TAC `a:A = @y. ~fl(l) y` THEN SUBGOAL_THEN `~fl(l:A#A->bool) a` ASSUME_TAC THENL - [EXPAND_TAC "a" THEN CONV_TAC SELECT_CONV THEN + [EXPAND_TAC "a" THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN PBETA_TAC THEN CONJ_TAC THENL [REWRITE_TAC[WOSET] THEN PBETA_TAC THEN CONJ_TAC THENL [REPEAT GEN_TAC THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THENL [ASM_MESON_TAC[WOSET_ANTISYM]; ALL_TAC; ALL_TAC] THEN - UNDISCH_TAC `~fl(l:A#A->bool) a` THEN CONV_TAC CONTRAPOS_CONV THEN + UNDISCH_TAC `~fl(l:A#A->bool) a` THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_TAC THEN FIRST_ASSUM(UNDISCH_TAC o check is_eq o concl) THEN DISCH_THEN SUBST_ALL_TAC THEN REWRITE_TAC[fl] THENL [EXISTS_TAC `y:A`; EXISTS_TAC `x:A`] THEN @@ -634,7 +634,7 @@ let ORDINAL_UP = prove [`\(x,y). l(x,y) \/ (y = @y:A. ~fl l y) /\ (fl(l) x \/ (x = @y. ~fl l y))`; `@y. ~fl(l:A#A->bool) y`] THEN ASM_REWRITE_TAC[FL_SUC] THEN - CONV_TAC SELECT_CONV THEN ASM_REWRITE_TAC[]);; + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_REWRITE_TAC[]);; let WO_ORDINAL = prove (`?l:A#A->bool. ordinal(l) /\ !x. fl(l) x`, @@ -827,7 +827,7 @@ let HP = prove FIRST_ASSUM(ASSUME_TAC o GEN_REWRITE_RULE I [NOT_EXISTS_THM]) THEN EXISTS_TAC `\x:A. F` THEN REWRITE_TAC[chain; SUBSET_PRED] THEN GEN_TAC THEN GEN_REWRITE_TAC RAND_CONV [FUN_EQ_THM] THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[] THEN DISCH_THEN(X_CHOOSE_THEN `u:A` MP_TAC o GEN_REWRITE_RULE I [NOT_FORALL_THM]) THEN REWRITE_TAC[] THEN DISCH_TAC THEN @@ -859,7 +859,7 @@ let HP = prove COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN ASM_CASES_TAC `x:A = b` THEN ASM_REWRITE_TAC[] THEN DISCH_TAC THEN SUBGOAL_THEN `(less w)(b:A,x)` MP_TAC THENL - [ASM_REWRITE_TAC[less] THEN CONV_TAC(RAND_CONV SYM_CONV) THEN + [ASM_REWRITE_TAC[less] THEN (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN FIRST_ASSUM ACCEPT_TAC; ALL_TAC] THEN DISCH_THEN(fun th -> FIRST_ASSUM(MP_TAC o C MATCH_MP th o CONJUNCT2)) THEN ASM_REWRITE_TAC[] THEN DISCH_THEN DISJ_CASES_TAC THEN @@ -1004,7 +1004,7 @@ let KL = prove ASM_REWRITE_TAC[SUBSET_REFL]]; DISCH_THEN(X_CHOOSE_THEN `D:A->bool` STRIP_ASSUME_TAC) THEN EXISTS_TAC `D:A->bool` THEN ASM_REWRITE_TAC[] THEN - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[]]);; (* ------------------------------------------------------------------------- *) @@ -1014,13 +1014,13 @@ let KL = prove let POSET_RESTRICTED_SUBSET = prove (`!P. poset(\(x,y). P(x) /\ P(y) /\ x SUBSET y)`, GEN_TAC THEN REWRITE_TAC[poset; fl] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[SUBSET; EXTENSION] THEN MESON_TAC[]);; let FL_RESTRICTED_SUBSET = prove (`!P. fl(\(x,y). P(x) /\ P(y) /\ x SUBSET y) = P`, REWRITE_TAC[fl; FORALL_PAIR_THM; FUN_EQ_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN MESON_TAC[SUBSET_REFL]);; + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN MESON_TAC[SUBSET_REFL]);; let ZL_SUBSETS = prove (`!P. (!c. (!x. x IN c ==> P x) /\ @@ -1031,7 +1031,7 @@ let ZL_SUBSETS = prove MP_TAC(ISPEC `\(x,y). P(x:A->bool) /\ P(y) /\ x SUBSET y` ZL) THEN REWRITE_TAC[POSET_RESTRICTED_SUBSET; FL_RESTRICTED_SUBSET] THEN REWRITE_TAC[chain] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[IN] THEN MATCH_MP_TAC MONO_IMP THEN CONJ_TAC THENL [MATCH_MP_TAC MONO_FORALL; ALL_TAC] THEN MESON_TAC[]);; @@ -1199,7 +1199,7 @@ let TOSET_COFINAL_WOSET = prove ASSUME_TAC THENL [GEN_TAC THEN ONCE_ASM_REWRITE_TAC[] THEN COND_CASES_TAC THENL [ASM_MESON_TAC[]; ALL_TAC] THEN - CONV_TAC SELECT_CONV THEN ASM_REWRITE_TAC[MEMBER_NOT_EMPTY]; + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_REWRITE_TAC[MEMBER_NOT_EMPTY]; ALL_TAC] THEN SUBGOAL_THEN `?w:A->bool. (!x. x IN fl l ==> ?v. r(v,w) /\ ~(v = w) /\ l(x:A,f v)) /\ diff --git a/Minisat/sat_script.ml b/Minisat/sat_script.ml index d227a21f..d6013c85 100644 --- a/Minisat/sat_script.ml +++ b/Minisat/sat_script.ml @@ -1,33 +1,33 @@ let AND_IMP = prove - (`!a b c. a /\ b ==> c <=> a ==> b ==> c`,CONV_TAC TAUT);; + (`!a b c. a /\ b ==> c <=> a ==> b ==> c`,(CONV_TAC "TAUT") TAUT);; let AND_IMP2 = prove - (`!a b c. a /\ b ==> c <=> (a<=>T) ==> b ==> c`,CONV_TAC TAUT);; + (`!a b c. a /\ b ==> c <=> (a<=>T) ==> b ==> c`,(CONV_TAC "TAUT") TAUT);; let AND_IMP3 = prove - (`!a b c. ~a /\ b ==> c <=> (a<=>F) ==> b ==> c`,CONV_TAC TAUT);; + (`!a b c. ~a /\ b ==> c <=> (a<=>F) ==> b ==> c`,(CONV_TAC "TAUT") TAUT);; let NOT_NOT = GEN_ALL (hd (CONJUNCTS (SPEC_ALL NOT_CLAUSES)));; let AND_INV = prove - (`!a. (~a /\ a) <=> F`,CONV_TAC TAUT);; + (`!a. (~a /\ a) <=> F`,(CONV_TAC "TAUT") TAUT);; let AND_INV_IMP = prove - (`!a. a ==> ~a ==> F`,CONV_TAC TAUT);; + (`!a. a ==> ~a ==> F`,(CONV_TAC "TAUT") TAUT);; let OR_DUAL = prove - (`(~(a \/ b) ==> F) = (~a ==> ~b ==> F)`,CONV_TAC TAUT);; + (`(~(a \/ b) ==> F) = (~a ==> ~b ==> F)`,(CONV_TAC "TAUT") TAUT);; let OR_DUAL2 = prove - (`(~(a \/ b) ==> F) = ((a==>F) ==> ~b ==> F)`,CONV_TAC TAUT);; + (`(~(a \/ b) ==> F) = ((a==>F) ==> ~b ==> F)`,(CONV_TAC "TAUT") TAUT);; let OR_DUAL3 = prove - (`(~(~a \/ b) ==> F) = (a ==> ~b ==> F)`,CONV_TAC TAUT);; + (`(~(~a \/ b) ==> F) = (a ==> ~b ==> F)`,(CONV_TAC "TAUT") TAUT);; let AND_INV2 = prove - (`(~a ==> F) ==> (a==>F) ==> F`,CONV_TAC TAUT) + (`(~a ==> F) ==> (a==>F) ==> F`,(CONV_TAC "TAUT") TAUT) let NOT_ELIM2 = prove -(`(~a ==> F) <=> a`,CONV_TAC TAUT) +(`(~a ==> F) <=> a`,(CONV_TAC "TAUT") TAUT) let IMP_F_EQ_F = prove - (`!t. (t ==> F) <=> (t <=> F)`,CONV_TAC TAUT);; + (`!t. (t ==> F) <=> (t <=> F)`,(CONV_TAC "TAUT") TAUT);; diff --git a/Model/modelset.ml b/Model/modelset.ml index dfeac710..dd93aeba 100644 --- a/Model/modelset.ml +++ b/Model/modelset.ml @@ -425,7 +425,7 @@ let SET_DECOMP = prove (I_SET (setlevel(droplevel(level s))) (set s) = element s)`, REPEAT GEN_TAC THEN REWRITE_TAC[isaset] THEN DISCH_THEN(X_CHOOSE_TAC `l:setlevel`) THEN - REWRITE_TAC[set] THEN CONV_TAC SELECT_CONV THEN + REWRITE_TAC[set] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_REWRITE_TAC[setlevel; droplevel] THEN MP_TAC(SPEC `s:V` ELEMENT_IN_LEVEL) THEN ASM_REWRITE_TAC[setlevel; IN_IMAGE; IN_ELIM_THM] THEN diff --git a/Model/semantics.ml b/Model/semantics.ml index 65a1dffc..d5ec08ec 100644 --- a/Model/semantics.ml +++ b/Model/semantics.ml @@ -422,7 +422,7 @@ let TERM_VALUATION_ITLIST = prove (ITLIST (\(t,x). DEST_VAR x |-> semantics sigma tau t) ilist sigma)`, MATCH_MP_TAC list_INDUCT THEN SIMP_TAC[ITLIST] THEN REWRITE_TAC[FORALL_PAIR_THM; MEM; PAIR_EQ] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[TAUT `a \/ b ==> c <=> (a ==> c) /\ (b ==> c)`] THEN SIMP_TAC[LEFT_FORALL_IMP_THM; FORALL_AND_THM] THEN REWRITE_TAC[LEFT_EXISTS_AND_THM; EXISTS_REFL] THEN @@ -438,7 +438,7 @@ let ITLIST_VALMOD_FILTER = prove else ITLIST (\(t,x). DEST_VAR x |-> sem x t) ilist sigma (y,yty))`, MATCH_MP_TAC list_INDUCT THEN REWRITE_TAC[FILTER; ITLIST; COND_ID] THEN REWRITE_TAC[FORALL_PAIR_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[MEM; TAUT `a \/ b ==> c <=> (a ==> c) /\ (b ==> c)`] THEN SIMP_TAC[FORALL_AND_THM; LEFT_FORALL_IMP_THM; PAIR_EQ] THEN REWRITE_TAC[WELLTYPED_CLAUSES; LEFT_EXISTS_AND_THM; EXISTS_REFL] THEN @@ -451,7 +451,7 @@ let ITLIST_VALMOD_FILTER = prove GEN_REWRITE_TAC (LAND_CONV o ONCE_DEPTH_CONV) [COND_RAND] THEN GEN_REWRITE_TAC (LAND_CONV o ONCE_DEPTH_CONV) [COND_RATOR] THEN ASM_REWRITE_TAC[ITLIST] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[DEST_VAR] THEN GEN_REWRITE_TAC (LAND_CONV o ONCE_DEPTH_CONV) [COND_RATOR] THEN REWRITE_TAC[VALMOD] THEN REWRITE_TAC[term_INJ] THEN @@ -463,7 +463,7 @@ let ITLIST_VALMOD_EQ = prove ==> (ITLIST (\(t,x). f(x) |-> g x t) l i a = ITLIST (\(t,x). f(x) |-> h x t) l j a)`, MATCH_MP_TAC list_INDUCT THEN SIMP_TAC[MEM; ITLIST; FORALL_PAIR_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[PAIR_EQ; VALMOD] THEN MESON_TAC[]);; let SEMANTICS_VSUBST = prove @@ -492,7 +492,7 @@ let SEMANTICS_VSUBST = prove FIRST_X_ASSUM(X_CHOOSE_THEN `y:string` MP_TAC) THEN DISCH_THEN(X_CHOOSE_THEN `tty:type` MP_TAC) THEN DISCH_THEN(CONJUNCTS_THEN2 SUBST_ALL_TAC ASSUME_TAC) THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[DEST_VAR; VALMOD; term_INJ; PAIR_EQ] THEN ASM_MESON_TAC[]; ALL_TAC] THEN CONJ_TAC THENL @@ -527,7 +527,7 @@ let SEMANTICS_VSUBST = prove ASM_SIMP_TAC[TERM_VALUATION_VALMOD; TERM_VALUATION_ITLIST] THEN MAP_EVERY X_GEN_TAC [`u:string`; `uty:type`] THEN DISCH_TAC THENL [EXPAND_TAC "ilist''" THEN REWRITE_TAC[ITLIST] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[DEST_VAR; VALMOD; PAIR_EQ] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[semantics; VALMOD]; ALL_TAC] THEN @@ -555,10 +555,10 @@ let SEMANTICS_VSUBST = prove FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [NOT_EX]) THEN REWRITE_TAC[GSYM ALL_MEM] THEN DISCH_THEN(MP_TAC o SPEC `(s':term,Var u uty)`) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN ASM_REWRITE_TAC[] THEN EXPAND_TAC "ilist'" THEN REWRITE_TAC[MEM_FILTER] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN ASM_REWRITE_TAC[term_INJ]] THEN MP_TAC(ISPECL [`t':term`; `x:string`; `ty:type`] VARIANT) THEN ASM_REWRITE_TAC[] THEN EXPAND_TAC "t'" THEN @@ -579,7 +579,7 @@ let SEMANTICS_VSUBST = prove MATCH_MP_TAC list_INDUCT THEN REWRITE_TAC[REV_ASSOCD; ITLIST; VFREE_IN; VALMOD; term_INJ] THEN SIMP_TAC[PAIR_EQ] THEN REWRITE_TAC[FORALL_PAIR_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[VALMOD; REV_ASSOCD; MEM] THEN REWRITE_TAC[TAUT `a \/ b ==> c <=> (a ==> c) /\ (b ==> c)`] THEN SIMP_TAC[FORALL_AND_THM; LEFT_FORALL_IMP_THM; PAIR_EQ] THEN @@ -676,7 +676,7 @@ let SEMANTICS_INST_CORE = prove REPEAT GEN_TAC THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[result_DISTINCT; result_INJ; UNWIND_THM1] THEN REWRITE_TAC[typeof; has_type_RULES] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[RESULT; semantics; VFREE_IN; term_INJ] THEN ASM_MESON_TAC[]; POP_ASSUM(K ALL_TAC) THEN REWRITE_TAC[TYPE_SUBST; RESULT; VFREE_IN; term_DISTINCT] THEN @@ -800,7 +800,7 @@ let SEMANTICS_INST_CORE = prove CONJ_TAC THENL [REWRITE_TAC[term_valuation] THEN MAP_EVERY X_GEN_TAC [`y:string`; `yty:type`] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[VALMOD; PAIR_EQ] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[TYPE_SUBST; TYPESET_LEMMA] THEN ASM_MESON_TAC[term_valuation]; @@ -809,7 +809,7 @@ let SEMANTICS_INST_CORE = prove [REWRITE_TAC[term_valuation] THEN MAP_EVERY X_GEN_TAC [`y:string`; `yty:type`] THEN REWRITE_TAC[VALMOD] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[VALMOD; PAIR_EQ] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[TYPE_SUBST; TYPESET_LEMMA] THEN ASM_MESON_TAC[term_valuation]; @@ -820,9 +820,9 @@ let SEMANTICS_INST_CORE = prove (?oty. VFREE_IN (Var u oty) t /\ (uty = TYPE_SUBST tyin oty))` (K ALL_TAC) THEN ASM_REWRITE_TAC[] THEN MAP_EVERY X_GEN_TAC [`y:string`; `yty:type`] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[VALMOD] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN ASM_CASES_TAC `y:string = x` THEN ASM_REWRITE_TAC[PAIR_EQ] THEN ASM_CASES_TAC `yty:type = ty` THEN ASM_REWRITE_TAC[] THEN UNDISCH_THEN `y:string = x` SUBST_ALL_TAC THEN COND_CASES_TAC THEN @@ -992,7 +992,7 @@ let SEMANTICS_INST_CORE = prove REWRITE_TAC[term_valuation] THEN MAP_EVERY X_GEN_TAC [`y:string`; `yty:type`] THEN REWRITE_TAC[VALMOD] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[VALMOD; PAIR_EQ] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[TYPE_SUBST; TYPESET_LEMMA] THEN ASM_MESON_TAC[term_valuation]; @@ -1003,12 +1003,12 @@ let SEMANTICS_INST_CORE = prove [REWRITE_TAC[type_valuation] THEN ASM_SIMP_TAC[TYPESET_INHABITED]; ALL_TAC] THEN REWRITE_TAC[ITLIST] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[DEST_VAR] THEN REWRITE_TAC[CONJ_ASSOC] THEN CONJ_TAC THENL [ASM_REWRITE_TAC[] THEN CONJ_TAC THEN REWRITE_TAC[term_valuation; semantics] THEN MAP_EVERY X_GEN_TAC [`k:string`; `kty:type`] THEN - REWRITE_TAC[VALMOD] THEN CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + REWRITE_TAC[VALMOD] THEN (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[TYPESET_LEMMA; TYPE_SUBST] THEN SIMP_TAC[PAIR_EQ] THEN ASM_REWRITE_TAC[] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN @@ -1016,7 +1016,7 @@ let SEMANTICS_INST_CORE = prove ALL_TAC] THEN MAP_EVERY X_GEN_TAC [`k:string`; `kty:type`] THEN DISCH_TAC THEN REWRITE_TAC[VALMOD; semantics] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN SIMP_TAC[PAIR_EQ] THEN ASM_REWRITE_TAC[] THEN ASM_MESON_TAC[]);; (* ------------------------------------------------------------------------- *) @@ -1112,5 +1112,5 @@ let HOL_IS_CONSISTENT = prove REWRITE_TAC[term_valuation] THEN REPEAT GEN_TAC THEN REWRITE_TAC[VALMOD; PAIR_EQ] THEN REPEAT(COND_CASES_TAC THEN ASM_REWRITE_TAC[typeset; IN_BOOL]) THEN - CONV_TAC SELECT_CONV THEN MATCH_MP_TAC TYPESET_INHABITED THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN MATCH_MP_TAC TYPESET_INHABITED THEN REWRITE_TAC[type_valuation] THEN MESON_TAC[IN_BOOL]);; diff --git a/Model/syntax.ml b/Model/syntax.ml index 0d353051..44cd0760 100644 --- a/Model/syntax.ml +++ b/Model/syntax.ml @@ -177,7 +177,7 @@ let ALPHAVARS_REFL = prove (`!env t. ALL (\(s,t). s = t) env ==> ALPHAVARS env (t,t)`, MATCH_MP_TAC list_INDUCT THEN REWRITE_TAC[ALL; ALPHAVARS] THEN REWRITE_TAC[FORALL_PAIR_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN MESON_TAC[PAIR_EQ]);; + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN MESON_TAC[PAIR_EQ]);; let RACONV_REFL = prove (`!t env. ALL (\(s,t). s = t) env ==> RACONV env (t,t)`, @@ -187,7 +187,7 @@ let RACONV_REFL = prove ASM_MESON_TAC[]; ASM_MESON_TAC[]; FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[ALL] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN ASM_REWRITE_TAC[]]);; + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN ASM_REWRITE_TAC[]]);; let ACONV_REFL = prove (`!t. ACONV t t`, @@ -205,7 +205,7 @@ let ALPHAVARS_TYPE = prove ==> (typeof s = typeof t)`, MATCH_MP_TAC list_INDUCT THEN REWRITE_TAC[FORALL_PAIR_THM; ALPHAVARS; ALL; PAIR_EQ] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN CONJ_TAC THENL [SIMP_TAC[]; ALL_TAC] THEN REPEAT STRIP_TAC THEN ASM_MESON_TAC[]);; @@ -222,7 +222,7 @@ let RACONV_TYPE = prove ASM_REWRITE_TAC[] THEN ASM_MESON_TAC[WELLTYPED_CLAUSES]; ASM_REWRITE_TAC[] THEN AP_TERM_TAC THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[ALL] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[typeof] THEN ASM_MESON_TAC[WELLTYPED_CLAUSES]]);; let ACONV_TYPE = prove @@ -335,7 +335,7 @@ let VFREE_IN_FINITE_ALT = prove SIMP_TAC[VFREE_IN_FINITE; FINITE_IMAGE] THEN REWRITE_TAC[SUBSET; IN_IMAGE; IN_ELIM_THM] THEN X_GEN_TAC `x:string` THEN DISCH_TAC THEN - EXISTS_TAC `Var x ty` THEN CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + EXISTS_TAC `Var x ty` THEN (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN ASM_REWRITE_TAC[]);; let VARIANT_EXISTS = prove @@ -419,7 +419,7 @@ let VSUBST_HAS_TYPE = prove EXPAND_TAC "t'" THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[] THENL [MAP_EVERY EXPAND_TAC ["ilist''"; "ilist'"]; EXPAND_TAC "ilist'"] THEN REWRITE_TAC[MEM; MEM_FILTER] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[PAIR_EQ] THEN ASM_MESON_TAC[has_type_RULES]);; let VSUBST_WELLTYPED = prove @@ -439,7 +439,7 @@ let REV_ASSOCD_FILTER = prove if P a then REV_ASSOCD a l b else b`, MATCH_MP_TAC list_INDUCT THEN REWRITE_TAC[REV_ASSOCD; FILTER; COND_ID] THEN REWRITE_TAC[FORALL_PAIR_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN MAP_EVERY X_GEN_TAC [`y:B`; `x:A`; `l:(B#A)list`] THEN REPEAT STRIP_TAC THEN ASM_REWRITE_TAC[REV_ASSOCD] THEN ASM_CASES_TAC `(P:A->bool) x` THEN ASM_REWRITE_TAC[REV_ASSOCD] THEN @@ -483,7 +483,7 @@ let VFREE_IN_VSUBST = prove MATCH_MP_TAC list_INDUCT THEN REWRITE_TAC[ALL; REV_ASSOCD; VFREE_IN] THEN REWRITE_TAC[REV_ASSOCD; FILTER; FORALL_PAIR_THM] THEN ONCE_REWRITE_TAC[COND_RAND] THEN REWRITE_TAC[ALL] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN MESON_TAC[]);; + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN MESON_TAC[]);; (* ------------------------------------------------------------------------- *) (* Sum type to model exception-raising. *) @@ -585,7 +585,7 @@ let INST_CORE_EXISTS = prove EXISTS_TAC `MEASURE(\(env:(term#term)list,tyin:(type#type)list,t). sizeof t)` THEN REWRITE_TAC[WF_MEASURE; MEASURE_LE; MEASURE] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN SIMP_TAC[MEM; PAIR_EQ; term_INJ; RIGHT_EXISTS_AND_THM; LEFT_EXISTS_AND_THM; GSYM EXISTS_REFL; SIZEOF_VSUBST; LE_REFL; sizeof] THEN REPEAT STRIP_TAC THEN ARITH_TAC);; diff --git a/Multivariate/canal.ml b/Multivariate/canal.ml index 3ed9a336..40fdb1df 100644 --- a/Multivariate/canal.ml +++ b/Multivariate/canal.ml @@ -624,14 +624,14 @@ let LIM_COMPLEX_INV_NONDEGENERATE = prove ASM_REWRITE_TAC[o_THM; LIFT_DROP; COMPLEX_NORM_0] THEN DISCH_THEN(MP_TAC o SPEC `lift(&1 / &2)`) THEN ASM_REWRITE_TAC[LIFT_DROP; NOT_IMP] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL [MATCH_MP_TAC(REAL_ARITH `x >= &1 ==> &1 / &2 <= x`) THEN ASM_MESON_TAC[NORM_SUB]; REWRITE_TAC[IN_IMAGE; o_THM; LIFT_EQ; IN_BALL; IN_DELETE; dist] THEN DISCH_THEN(X_CHOOSE_THEN `x:real^N` (STRIP_ASSUME_TAC o GSYM)) THEN FIRST_X_ASSUM(MP_TAC o SPEC `x:real^N`) THEN ASM_REWRITE_TAC[] THEN ONCE_REWRITE_TAC[NORM_SUB] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(SUBST_ALL_TAC o CONJUNCT2) THEN RULE_ASSUM_TAC(REWRITE_RULE[COMPLEX_NORM_0]) THEN ASM_REAL_ARITH_TAC]);; @@ -1238,7 +1238,7 @@ let HAS_COMPLEX_DERIVATIVE_LINEAR = prove (`!net c. ((\x. c * x) has_complex_derivative c) net`, REPEAT GEN_TAC THEN REWRITE_TAC[has_complex_derivative] THEN MATCH_MP_TAC HAS_DERIVATIVE_LINEAR THEN - REWRITE_TAC[linear; COMPLEX_CMUL] THEN CONV_TAC COMPLEX_RING);; + REWRITE_TAC[linear; COMPLEX_CMUL] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let HAS_COMPLEX_DERIVATIVE_LMUL_WITHIN = prove (`!f f' c x s. @@ -1322,7 +1322,7 @@ let HAS_COMPLEX_DERIVATIVE_MUL_WITHIN = prove DISCH_THEN(MP_TAC o MATCH_MP HAS_DERIVATIVE_BILINEAR_WITHIN) THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[FUN_EQ_THM] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let HAS_COMPLEX_DERIVATIVE_MUL_AT = prove (`!f f' g g' x. @@ -1345,8 +1345,8 @@ let HAS_COMPLEX_DERIVATIVE_POW_WITHIN = prove REWRITE_TAC[SUC_SUB1] THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN BINOP_TAC THEN REWRITE_TAC[COMPLEX_MUL_AC; GSYM REAL_OF_NUM_SUC] THEN SPEC_TAC(`n:num`,`n:num`) THEN REWRITE_TAC[CX_ADD] THEN INDUCT_TAC THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[SUC_SUB1; complex_pow] THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[SUC_SUB1; complex_pow] THEN + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let HAS_COMPLEX_DERIVATIVE_POW_AT = prove (`!f f' x n. (f has_complex_derivative f') (at x) @@ -1365,10 +1365,10 @@ let HAS_COMPLEX_DERIVATIVE_INV_BASIC = prove MAP_EVERY EXISTS_TAC [`\y. inv(norm(y - x)) % inv(x pow 2 * y) * (y - x) pow 2`; `Cx(&0)`] THEN ASM_REWRITE_TAC[COMPLEX_CMUL] THEN CONJ_TAC THENL - [POP_ASSUM MP_TAC THEN CONV_TAC COMPLEX_FIELD; ALL_TAC] THEN + [POP_ASSUM MP_TAC THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; ALL_TAC] THEN SUBGOAL_THEN `((\y. inv(x pow 2 * y) * (y - x)) --> Cx(&0)) (at x)` MP_TAC THENL - [LIM_TAC THEN POP_ASSUM MP_TAC THEN CONV_TAC COMPLEX_FIELD; ALL_TAC] THEN + [LIM_TAC THEN POP_ASSUM MP_TAC THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; ALL_TAC] THEN MATCH_MP_TAC EQ_IMP THEN REWRITE_TAC[LIM_AT] THEN REWRITE_TAC[dist; COMPLEX_SUB_RZERO] THEN REWRITE_TAC[COMPLEX_NORM_MUL; COMPLEX_NORM_INV; COMPLEX_NORM_POW] THEN @@ -1380,7 +1380,7 @@ let HAS_COMPLEX_DERIVATIVE_INV_BASIC = prove MAP_EVERY ABBREV_TAC [`n = norm(x' - x:complex)`; `m = inv (norm(x:complex) pow 2 * norm(x':complex))`] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let HAS_COMPLEX_DERIVATIVE_INV_WITHIN = prove (`!f f' x s. (f has_complex_derivative f') (at x within s) /\ @@ -1417,7 +1417,7 @@ let HAS_COMPLEX_DERIVATIVE_DIV_WITHIN = prove DISCH_THEN(MP_TAC o MATCH_MP HAS_COMPLEX_DERIVATIVE_MUL_WITHIN) THEN REWRITE_TAC[GSYM complex_div] THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - POP_ASSUM MP_TAC THEN CONV_TAC COMPLEX_FIELD);; + POP_ASSUM MP_TAC THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let HAS_COMPLEX_DERIVATIVE_DIV_AT = prove (`!f f' g g' x. @@ -1836,7 +1836,7 @@ let HAS_COMPLEX_DERIVATIVE_CARATHEODORY_AT = prove EQ_TAC THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THENL [EXISTS_TAC `\w. if w = z then f':complex else (f(w) - f(z)) / (w - z)` THEN ASM_SIMP_TAC[FUN_EQ_THM; COND_RAND; COND_RATOR; COMPLEX_SUB_REFL] THEN - CONV_TAC COMPLEX_FIELD; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; FIRST_X_ASSUM SUBST_ALL_TAC THEN FIRST_X_ASSUM SUBST1_TAC THEN ASM_SIMP_TAC[COMPLEX_RING `(z + a) - (z + b * (w - w)):complex = a`] THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ_ALT] @@ -1856,7 +1856,7 @@ let HAS_COMPLEX_DERIVATIVE_CARATHEODORY_WITHIN = prove EQ_TAC THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THENL [EXISTS_TAC `\w. if w = z then f':complex else (f(w) - f(z)) / (w - z)` THEN ASM_SIMP_TAC[FUN_EQ_THM; COND_RAND; COND_RATOR; COMPLEX_SUB_REFL] THEN - CONV_TAC COMPLEX_FIELD; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; FIRST_X_ASSUM SUBST_ALL_TAC THEN FIRST_X_ASSUM SUBST1_TAC THEN ASM_SIMP_TAC[COMPLEX_RING `(z + a) - (z + b * (w - w)):complex = a`] THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ_ALT] @@ -2241,7 +2241,7 @@ let HAS_COMPLEX_DERIVATIVE_INVERSE_BASIC = prove MAP_EVERY EXISTS_TAC [`f:complex->complex`; `\x:complex. f' * x`; `t:complex->bool`] THEN ASM_REWRITE_TAC[LINEAR_COMPLEX_MUL; FUN_EQ_THM; o_THM; I_THM] THEN - UNDISCH_TAC `~(f' = Cx(&0))` THEN CONV_TAC COMPLEX_FIELD);; + UNDISCH_TAC `~(f' = Cx(&0))` THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let HAS_COMPLEX_DERIVATIVE_INVERSE_STRONG = prove (`!f g f' s x. @@ -2256,7 +2256,7 @@ let HAS_COMPLEX_DERIVATIVE_INVERSE_STRONG = prove MATCH_MP_TAC HAS_DERIVATIVE_INVERSE_STRONG THEN MAP_EVERY EXISTS_TAC [`\x:complex. f' * x`; `s:complex->bool`] THEN ASM_REWRITE_TAC[] THEN ASM_SIMP_TAC[FUN_EQ_THM; o_THM; I_THM] THEN - UNDISCH_TAC `~(f' = Cx(&0))` THEN CONV_TAC COMPLEX_FIELD);; + UNDISCH_TAC `~(f' = Cx(&0))` THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let HAS_COMPLEX_DERIVATIVE_INVERSE_STRONG_X = prove (`!f g f' s y. @@ -2269,7 +2269,7 @@ let HAS_COMPLEX_DERIVATIVE_INVERSE_STRONG_X = prove MATCH_MP_TAC HAS_DERIVATIVE_INVERSE_STRONG_X THEN MAP_EVERY EXISTS_TAC [`f:complex->complex`; `\x:complex. f' * x`; `s:complex->bool`] THEN ASM_REWRITE_TAC[] THEN ASM_SIMP_TAC[FUN_EQ_THM; o_THM; I_THM] THEN - UNDISCH_TAC `~(f' = Cx(&0))` THEN CONV_TAC COMPLEX_FIELD);; + UNDISCH_TAC `~(f' = Cx(&0))` THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; (* ------------------------------------------------------------------------- *) (* Cauchy-Riemann condition and relation to conformal. *) @@ -2398,7 +2398,7 @@ let HOLOMORPHIC_CONSTANT_RE = prove SIMP_TAC[MATRIX_VECTOR_MUL_COMPONENT; DIMINDEX_2; ARITH] THEN SIMP_TAC[DOT_2; VEC_COMPONENT] THEN STRIP_TAC THEN REPEAT(FIRST_X_ASSUM(MP_TAC o SPEC `z:complex`)) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RING]);; + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RING") REAL_RING]);; let HOLOMORPHIC_CONSTANT_IM = prove (`!f s. open s /\ connected s /\ @@ -2435,7 +2435,7 @@ let HOLOMORPHIC_CONSTANT_IM = prove SIMP_TAC[MATRIX_VECTOR_MUL_COMPONENT; DIMINDEX_2; ARITH] THEN SIMP_TAC[DOT_2; VEC_COMPONENT] THEN STRIP_TAC THEN REPEAT(FIRST_X_ASSUM(MP_TAC o SPEC `z:complex`)) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RING]);; + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RING") REAL_RING]);; (* ------------------------------------------------------------------------- *) (* Differentiation conversion. *) @@ -2577,7 +2577,7 @@ let COMPLEX_TAYLOR = prove MATCH_MP_TAC HAS_COMPLEX_DERIVATIVE_MUL_WITHIN THEN ASM_SIMP_TAC[ETA_AX] THEN W(MP_TAC o COMPLEX_DIFF_CONV o snd) THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - REWRITE_TAC[complex_div] THEN CONV_TAC COMPLEX_RING; + REWRITE_TAC[complex_div] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN ASM_SIMP_TAC[] THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[VSUM_ADD_NUMSEG] THEN @@ -2593,7 +2593,7 @@ let COMPLEX_TAYLOR = prove REWRITE_TAC[COMPLEX_ADD_LINV; GSYM COMPLEX_VEC_0; VSUM_0] THEN REWRITE_TAC[COMPLEX_VEC_0; COMPLEX_ADD_RID] THEN REWRITE_TAC[COMPLEX_MUL_LZERO; COMPLEX_MUL_RZERO; COMPLEX_NEG_0] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN DISCH_THEN(MP_TAC o SPECL [`z:complex`; `w:complex`]) THEN ANTS_TAC THEN ASM_REWRITE_TAC[ENDS_IN_SEGMENT] THEN MATCH_MP_TAC EQ_IMP THEN @@ -2666,7 +2666,7 @@ let COMPLEX_MVT_LINE = prove REWRITE_TAC[GSYM has_complex_derivative] THEN FIRST_X_ASSUM MATCH_MP_TAC; REWRITE_TAC[o_THM; GSYM LIFT_SUB; LIFT_EQ; DROP_VEC; VECTOR_SUB_RZERO] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[VECTOR_MUL_LID; VECTOR_MUL_LZERO] THEN REWRITE_TAC[VECTOR_ADD_LID; VECTOR_ADD_RID] THEN DISCH_THEN(X_CHOOSE_THEN `t:real^1` STRIP_ASSUME_TAC) THEN @@ -2715,7 +2715,7 @@ let COMPLEX_TAYLOR_MVT = prove MATCH_MP_TAC HAS_COMPLEX_DERIVATIVE_MUL_AT THEN ASM_SIMP_TAC[ETA_AX] THEN W(MP_TAC o COMPLEX_DIFF_CONV o snd) THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - REWRITE_TAC[complex_div] THEN CONV_TAC COMPLEX_RING; + REWRITE_TAC[complex_div] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN ASM_SIMP_TAC[] THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[VSUM_ADD_NUMSEG] THEN @@ -2731,7 +2731,7 @@ let COMPLEX_TAYLOR_MVT = prove REWRITE_TAC[COMPLEX_ADD_LINV; GSYM COMPLEX_VEC_0; VSUM_0] THEN REWRITE_TAC[COMPLEX_VEC_0; COMPLEX_ADD_RID] THEN REWRITE_TAC[COMPLEX_MUL_LZERO; COMPLEX_MUL_RZERO; COMPLEX_NEG_0] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `u:complex` THEN MATCH_MP_TAC MONO_AND THEN REWRITE_TAC[RE_ADD] THEN @@ -3041,7 +3041,7 @@ let HAS_INTEGRAL_COMPLEX_LMUL = prove (`!f y i c. (f has_integral y) i ==> ((\x. c * f(x)) has_integral (c * y)) i`, REPEAT STRIP_TAC THEN MATCH_MP_TAC (REWRITE_RULE[o_DEF] HAS_INTEGRAL_LINEAR) THEN - ASM_REWRITE_TAC[linear; COMPLEX_CMUL] THEN CONV_TAC COMPLEX_RING);; + ASM_REWRITE_TAC[linear; COMPLEX_CMUL] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let HAS_INTEGRAL_COMPLEX_RMUL = prove (`!f y i c. (f has_integral y) i ==> ((\x. f(x) * c) has_integral (y * c)) i`, @@ -3503,14 +3503,14 @@ let POWER_SERIES_UNIFORM_CONVERGENCE_STOLZ_1 = prove vsum(m..n) a * z pow n`, GEN_TAC THEN INDUCT_TAC THEN REWRITE_TAC[NOT_SUC; SUC_SUB1] THEN SIMP_TAC[VSUM_CLAUSES_NUMSEG; LT; LT_IMP_LE] THEN STRIP_TAC THENL - [ASM_REWRITE_TAC[VSUM_SING_NUMSEG; complex_pow] THEN CONV_TAC COMPLEX_RING; + [ASM_REWRITE_TAC[VSUM_SING_NUMSEG; complex_pow] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ASM_SIMP_TAC[] THEN UNDISCH_TAC `m:num < n` THEN POP_ASSUM(K ALL_TAC)] THEN SPEC_TAC(`n:num`,`n:num`) THEN INDUCT_TAC THEN REWRITE_TAC[CONJUNCT1 LT] THEN POP_ASSUM(K ALL_TAC) THEN SIMP_TAC[SUC_SUB1; VSUM_CLAUSES_NUMSEG; LT_IMP_LE] THEN ASM_REWRITE_TAC[VSUM_SING_NUMSEG; complex_pow] THEN - CONV_TAC COMPLEX_RING) in + (CONV_TAC "COMPLEX_RING") COMPLEX_RING) in SUBGOAL_THEN `!M a e. summable (:num) a /\ &0 < M /\ &0 < e @@ -3769,7 +3769,7 @@ let POWER_SERIES_CONTINUOUS = prove REWRITE_TAC[INTERIOR_CBALL; IN_BALL] THEN CONJ_TAC THENL [ALL_TAC; EXPAND_TAC "R" THEN UNDISCH_TAC `dist(z:complex,w) < r` THEN - CONV_TAC NORM_ARITH] THEN + (CONV_TAC "NORM_ARITH") NORM_ARITH] THEN MATCH_MP_TAC(ISPEC `sequentially` CONTINUOUS_UNIFORM_LIMIT) THEN EXISTS_TAC `\n w. vsum(k INTER (0..n)) (\i. (a:num->complex) i * (w - z) pow i)` THEN @@ -3800,14 +3800,14 @@ let POWER_SERIES_CONTINUOUS = prove ALL_TAC] THEN REWRITE_TAC[COMPLEX_NORM_CX] THEN EXPAND_TAC "R" THEN UNDISCH_TAC `dist(z:complex,w) < r` THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; EXISTS_TAC `1` THEN REWRITE_TAC[IN_CBALL; dist] THEN REPEAT STRIP_TAC THEN REWRITE_TAC[COMPLEX_NORM_MUL] THEN REWRITE_TAC[COMPLEX_NORM_CX; REAL_ABS_MUL; REAL_ABS_NORM] THEN MATCH_MP_TAC REAL_LE_LMUL THEN REWRITE_TAC[NORM_POS_LE] THEN REWRITE_TAC[COMPLEX_NORM_POW] THEN MATCH_MP_TAC REAL_POW_LE2 THEN REWRITE_TAC[NORM_POS_LE; COMPLEX_NORM_CX] THEN - UNDISCH_TAC `norm(z - x:complex) <= R` THEN CONV_TAC NORM_ARITH]; + UNDISCH_TAC `norm(z - x:complex) <= R` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]; DISCH_THEN(X_CHOOSE_TAC `g:complex->complex`) THEN SUBGOAL_THEN `!x. x IN cball(z,R) ==> (f:complex->complex) x = g x` MP_TAC THENL [ALL_TAC; ASM_MESON_TAC[]] THEN @@ -3817,7 +3817,7 @@ let POWER_SERIES_CONTINUOUS = prove EXISTS_TAC `k:num->bool` THEN REWRITE_TAC[] THEN CONJ_TAC THENL [FIRST_X_ASSUM MATCH_MP_TAC THEN FIRST_X_ASSUM(K ALL_TAC o SPEC `&0`) THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC NORM_ARITH; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; REWRITE_TAC[sums; LIM_SEQUENTIALLY; dist] THEN RULE_ASSUM_TAC(REWRITE_RULE[IN_CBALL]) THEN ASM_MESON_TAC[]]]);; diff --git a/Multivariate/cauchy.ml b/Multivariate/cauchy.ml index d3dca0c2..c97acf32 100644 --- a/Multivariate/cauchy.ml +++ b/Multivariate/cauchy.ml @@ -533,7 +533,7 @@ let HAS_PATH_INTEGRAL_REVERSEPATH = prove DISCH_THEN(MP_TAC o MATCH_MP HAS_INTEGRAL_AFFINITY) THEN DISCH_THEN(MP_TAC o SPEC `vec 1:real^1`) THEN REWRITE_TAC[IMAGE_AFFINITY_INTERVAL; INTERVAL_EQ_EMPTY_1; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[VECTOR_ARITH `x + --x:real^1 = vec 0`] THEN REWRITE_TAC[VECTOR_MUL_RZERO; VECTOR_ADD_LID; VECTOR_MUL_LNEG] THEN REWRITE_TAC[VECTOR_MUL_LID; VECTOR_NEG_NEG; REAL_POW_ONE] THEN @@ -719,7 +719,7 @@ let VALID_PATH_SYM = prove (`!p q:real^1->complex. pathfinish p = pathstart q /\ pathfinish q = pathstart p ==> (valid_path(p ++ q) <=> valid_path(q ++ p))`, - SIMP_TAC[VALID_PATH_JOIN_EQ] THEN CONV_TAC TAUT);; + SIMP_TAC[VALID_PATH_JOIN_EQ] THEN (CONV_TAC "TAUT") TAUT);; let HAS_PATH_INTEGRAL_JOIN = prove (`!f g1 g2 i1 i2. @@ -733,10 +733,10 @@ let HAS_PATH_INTEGRAL_JOIN = prove (MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ] HAS_INTEGRAL_AFFINITY))) THEN DISCH_THEN(ASSUME_TAC o SPECL [`&2`; `--(vec 1):real^1`]) THEN DISCH_THEN(MP_TAC o SPECL [`&2`; `vec 0:real^1`]) THEN POP_ASSUM MP_TAC THEN - REWRITE_TAC[DIMINDEX_1] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[DIMINDEX_1] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[IMAGE_AFFINITY_INTERVAL] THEN REWRITE_TAC[INTERVAL_EQ_EMPTY_1; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[VECTOR_MUL_RNEG; VECTOR_NEG_NEG; VECTOR_MUL_RZERO; VECTOR_ADD_LID; VECTOR_NEG_0; VECTOR_ADD_RID; VECTOR_ARITH `&1 / &2 % x + &1 / &2 % x = x:real^N`] THEN @@ -755,7 +755,7 @@ let HAS_PATH_INTEGRAL_JOIN = prove Cx(&2) * (a * Cx(inv(&2)) * b) = a * b`] THEN DISCH_TAC) THEN MATCH_MP_TAC HAS_INTEGRAL_COMBINE THEN EXISTS_TAC `&1 / &2 % vec 1:real^1` THEN ASM_REWRITE_TAC[] THEN - REWRITE_TAC[DROP_CMUL; DROP_VEC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[DROP_CMUL; DROP_VEC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN CONJ_TAC THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE [TAUT `a1 /\ a2 /\ b ==> c <=> b ==> a1 /\ a2 ==> c`] @@ -826,17 +826,17 @@ let PATH_INTEGRABLE_JOIN = prove [DISCH_THEN(MP_TAC o SPECL [`lift(&0)`; `lift(&1 / &2)`]); DISCH_THEN(MP_TAC o SPECL [`lift(&1 / &2)`; `lift(&1)`])] THEN REWRITE_TAC[SUBSET_INTERVAL_1; DROP_VEC; LIFT_DROP] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ] INTEGRABLE_AFFINITY)) THENL [DISCH_THEN(MP_TAC o SPECL [`&1 / &2`; `vec 0:real^1`]); DISCH_THEN(MP_TAC o SPECL [`&1 / &2`; `lift(&1 / &2)`])] THEN - REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[IMAGE_AFFINITY_INTERVAL; INTERVAL_EQ_EMPTY_1] THEN REWRITE_TAC[LIFT_DROP; LIFT_NUM; VECTOR_MUL_RZERO; VECTOR_NEG_0; GSYM LIFT_CMUL; VECTOR_ADD_RID; VECTOR_MUL_RNEG] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_NUM] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_NUM] THEN REWRITE_TAC[VECTOR_ARITH `vec 2 + --vec 1:real^1 = vec 1`; VECTOR_ARITH `vec 1 + --vec 1:real^1 = vec 0`] THEN DISCH_THEN(MP_TAC o SPEC `&1 / &2` o MATCH_MP INTEGRABLE_CMUL) THEN @@ -1119,7 +1119,7 @@ let HAS_PATH_INTEGRAL_SHIFTPATH_EQ = prove ASM_SIMP_TAC[FINITE_UNION; FINITE_RULES] THEN REWRITE_TAC[SET_RULE `s DIFF (t UNION u) = (s DIFF u) DIFF t`] THEN REWRITE_TAC[GSYM OPEN_CLOSED_INTERVAL_1] THEN X_GEN_TAC `x:real^1` THEN - STRIP_TAC THEN BINOP_TAC THEN CONV_TAC SYM_CONV THENL + STRIP_TAC THEN BINOP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THENL [AP_TERM_TAC THEN MATCH_MP_TAC SHIFTPATH_SHIFTPATH THEN ASM_SIMP_TAC[] THEN ASM_MESON_TAC[INTERVAL_OPEN_SUBSET_CLOSED; SUBSET; IN_DIFF]; ALL_TAC] THEN @@ -1130,7 +1130,7 @@ let HAS_PATH_INTEGRAL_SHIFTPATH_EQ = prove ASM_SIMP_TAC[GSYM VECTOR_DERIVATIVE_WORKS; OPEN_DIFF; FINITE_IMP_CLOSED; OPEN_INTERVAL] THEN REPEAT STRIP_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SHIFTPATH_SHIFTPATH; + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SHIFTPATH_SHIFTPATH; FIRST_X_ASSUM MATCH_MP_TAC] THEN ASM_MESON_TAC[INTERVAL_OPEN_SUBSET_CLOSED; SUBSET; IN_DIFF]);; @@ -1301,7 +1301,7 @@ let HAS_PATH_INTEGRAL_SUBPATH = prove REWRITE_TAC[VECTOR_SUB_REFL; VECTOR_MUL_RZERO] THEN SUBGOAL_THEN `inv(drop v - drop u) % (v - u) = vec 1` SUBST1_TAC THENL [REWRITE_TAC[GSYM DROP_EQ; DROP_VEC; DROP_CMUL; DROP_SUB] THEN - UNDISCH_TAC `drop u < drop v` THEN CONV_TAC REAL_FIELD; + UNDISCH_TAC `drop u < drop v` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN DISCH_THEN(MP_TAC o SPEC `drop(v - u)` o MATCH_MP HAS_INTEGRAL_CMUL) THEN ASM_SIMP_TAC[real_abs; REAL_LT_IMP_LE; REAL_SUB_LE] THEN @@ -1316,7 +1316,7 @@ let HAS_PATH_INTEGRAL_SUBPATH = prove EXISTS_TAC `{t | ((drop v - drop u) % t + u) IN k}` THEN CONJ_TAC THENL [MATCH_MP_TAC FINITE_IMAGE_INJ THEN ASM_REWRITE_TAC[GSYM DROP_EQ; DROP_CMUL; DROP_SUB; DROP_ADD] THEN - UNDISCH_TAC `drop u < drop v` THEN CONV_TAC REAL_FIELD; + UNDISCH_TAC `drop u < drop v` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN ASM_REWRITE_TAC[IN_DIFF; IN_ELIM_THM] THEN X_GEN_TAC `t:real^1` THEN STRIP_TAC THEN REWRITE_TAC[COMPLEX_CMUL] THEN @@ -1374,7 +1374,7 @@ let HAS_INTEGRAL_PATH_INTEGRAL_SUBPATH = prove EXISTS_TAC `interval[vec 0:real^1,vec 1]` THEN ASM_REWRITE_TAC[GSYM PATH_INTEGRABLE_ON; SUBSET_INTERVAL_1] THEN ASM_MESON_TAC[IN_INTERVAL_1]; - CONV_TAC SYM_CONV THEN MATCH_MP_TAC PATH_INTEGRAL_UNIQUE THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC PATH_INTEGRAL_UNIQUE THEN ASM_SIMP_TAC[HAS_PATH_INTEGRAL_SUBPATH]]);; let PATH_INTEGRAL_SUBPATH_INTEGRAL = prove @@ -1423,7 +1423,7 @@ let PATH_INTEGRAL_SUBPATH_COMBINE = prove subpath w v g = reversepath(subpath v w g)`) THEN ASM_SIMP_TAC[PATH_INTEGRAL_REVERSEPATH; PATH_INTEGRABLE_SUBPATH; VALID_PATH_REVERSEPATH; VALID_PATH_SUBPATH] THEN - CONV_TAC COMPLEX_RING] THEN + (CONV_TAC "COMPLEX_RING") COMPLEX_RING] THEN REPEAT GEN_TAC THEN STRIP_TAC THEN SUBGOAL_THEN `drop u <= drop w` ASSUME_TAC THENL [ASM_REAL_ARITH_TAC; STRIP_TAC] THEN @@ -1920,7 +1920,7 @@ let HAS_PATH_INTEGRAL_SPLIT = prove `x % (k % (b - a) + a) + y % b = (x * (&1 - k)) % a + (y + x * k) % b`] THEN GEN_TAC THEN BINOP_TAC THEN BINOP_TAC THEN REWRITE_TAC[] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN SUBGOAL_THEN `!x. (&1 - inv k * drop x) % a + (inv k * drop x) % (k % (b - a) + a) = @@ -1930,7 +1930,7 @@ let HAS_PATH_INTEGRAL_SPLIT = prove `x % a + y % (k % (b - a) + a) = (x + y * (&1 - k)) % a + (y * k) % b`] THEN GEN_TAC THEN BINOP_TAC THEN BINOP_TAC THEN REWRITE_TAC[] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN DISCH_TAC THEN DISCH_THEN(MP_TAC o SPEC `inv(k:real)` o MATCH_MP HAS_INTEGRAL_CMUL) THEN @@ -1991,7 +1991,7 @@ let HAS_PATH_INTEGRAL_MIDPOINT = prove ==> (f has_path_integral (i + j)) (linepath(a,b))`, REPEAT STRIP_TAC THEN MATCH_MP_TAC HAS_PATH_INTEGRAL_SPLIT THEN MAP_EVERY EXISTS_TAC [`midpoint(a:complex,b)`; `&1 / &2`] THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[midpoint] THEN VECTOR_ARITH_TAC);; let PATH_INTEGRAL_MIDPOINT = prove @@ -2002,7 +2002,7 @@ let PATH_INTEGRAL_MIDPOINT = prove path_integral(linepath(midpoint(a,b),b)) f`, REPEAT STRIP_TAC THEN MATCH_MP_TAC PATH_INTEGRAL_SPLIT THEN EXISTS_TAC `&1 / &2` THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[midpoint] THEN VECTOR_ARITH_TAC);; (* ------------------------------------------------------------------------- *) @@ -2016,8 +2016,8 @@ let TRIANGLE_LINEAR_HAS_CHAIN_INTEGRAL = prove MAP_EVERY EXISTS_TAC [`\x. m / Cx(&2) * x pow 2 + d * x`; `(:complex)`] THEN SIMP_TAC[PATHSTART_JOIN; PATHFINISH_JOIN; PATHSTART_LINEPATH; SUBSET_UNIV; PATHFINISH_LINEPATH; VALID_PATH_JOIN; VALID_PATH_LINEPATH] THEN - REPEAT STRIP_TAC THEN COMPLEX_DIFF_TAC THEN CONV_TAC NUM_REDUCE_CONV THEN - CONV_TAC COMPLEX_RING);; + REPEAT STRIP_TAC THEN COMPLEX_DIFF_TAC THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let HAS_CHAIN_INTEGRAL_CHAIN_INTEGRAL = prove (`!f i a b c d. @@ -2032,7 +2032,7 @@ let HAS_CHAIN_INTEGRAL_CHAIN_INTEGRAL = prove SIMP_TAC[PATH_INTEGRABLE_JOIN; VALID_PATH_LINEPATH; VALID_PATH_JOIN; PATHSTART_JOIN; PATHFINISH_JOIN; PATHSTART_LINEPATH; PATHFINISH_LINEPATH] THEN - STRIP_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC PATH_INTEGRAL_UNIQUE THEN + STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC PATH_INTEGRAL_UNIQUE THEN REPEAT(MATCH_MP_TAC HAS_PATH_INTEGRAL_JOIN THEN SIMP_TAC[VALID_PATH_LINEPATH; VALID_PATH_JOIN; PATHSTART_JOIN; PATHFINISH_JOIN; PATHSTART_LINEPATH; @@ -2063,7 +2063,7 @@ let PATH_INTEGRAL_SWAP = prove CONJ_TAC THENL [MATCH_MP_TAC INTEGRAL_EQ THEN X_GEN_TAC `x:real^1` THEN DISCH_TAC THEN REWRITE_TAC[] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC PATH_INTEGRAL_COMPLEX_RMUL THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC PATH_INTEGRAL_COMPLEX_RMUL THEN REWRITE_TAC[PATH_INTEGRABLE_ON] THEN MATCH_MP_TAC INTEGRABLE_CONTINUOUS THEN MATCH_MP_TAC CONTINUOUS_ON_COMPLEX_MUL THEN ASM_REWRITE_TAC[] THEN @@ -2229,7 +2229,7 @@ let CAUCHY_THEOREM_QUADRISECTION = prove ASM_REWRITE_TAC[] THEN REPEAT(MATCH_MP_TAC(TAUT `((a /\ c ==> b /\ d) ==> e) ==> (a ==> b) ==> (c ==> d) ==> e`)) THEN - ANTS_TAC THENL [ALL_TAC; CONV_TAC COMPLEX_RING] THEN + ANTS_TAC THENL [ALL_TAC; (CONV_TAC "COMPLEX_RING") COMPLEX_RING] THEN REWRITE_TAC[SEGMENT_CONVEX_HULL] THEN REPEAT CONJ_TAC THEN MATCH_MP_TAC CONTINUOUS_ON_SUBSET THEN EXISTS_TAC `convex hull {a:complex,b,c}` THEN ASM_REWRITE_TAC[] THEN @@ -2802,7 +2802,7 @@ let CAUCHY_THEOREM_TRIANGLE_INTERIOR = prove CONJ_TAC THENL [ALL_TAC; MATCH_MP_TAC REAL_EQ_IMP_LE THEN - MAP_EVERY UNDISCH_TAC [`&0 < B`; `&0 < C`] THEN CONV_TAC REAL_FIELD] THEN + MAP_EVERY UNDISCH_TAC [`&0 < B`; `&0 < C`] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD] THEN MATCH_MP_TAC REAL_LE_ADD2 THEN CONJ_TAC THEN MATCH_MP_TAC REAL_LE_MUL2 THEN REWRITE_TAC[NORM_POS_LE] THENL [CONJ_TAC THENL @@ -2967,7 +2967,7 @@ let CAUCHY_THEOREM_TRIANGLE_COFINITE = prove [ALL_TAC; DISCH_THEN(REPEAT_TCL CONJUNCTS_THEN (MP_TAC o MATCH_MP PATH_INTEGRAL_REVERSE_LINEPATH)) THEN - CONV_TAC COMPLEX_RING] THEN + (CONV_TAC "COMPLEX_RING") COMPLEX_RING] THEN REPEAT CONJ_TAC THEN MATCH_MP_TAC CONTINUOUS_ON_SUBSET THEN EXISTS_TAC `convex hull {a:complex,b,c}` THEN ASM_REWRITE_TAC[SEGMENT_CONVEX_HULL] THEN @@ -3548,7 +3548,7 @@ let PATH_INTEGRAL_NEARBY_ENDS,PATH_INTEGRAL_NEARBY_LOOP = (CONJ_PAIR o prove) FIRST_X_ASSUM(DISJ_CASES_THEN MP_TAC) THEN REWRITE_TAC[pathstart; pathfinish] THEN STRIP_TAC THEN ASM_REWRITE_TAC[SUBPATH_TRIVIAL; PATH_INTEGRAL_TRIVIAL] THEN - CONV_TAC COMPLEX_RING] THEN + (CONV_TAC "COMPLEX_RING") COMPLEX_RING] THEN INDUCT_TAC THENL [REWRITE_TAC[real_div; REAL_MUL_LZERO; VECTOR_MUL_LZERO] THEN FIRST_X_ASSUM(DISJ_CASES_THEN MP_TAC) THEN @@ -3688,7 +3688,7 @@ let VALID_PATH_VECTOR_POLYNOMIAL_FUNCTION = prove MATCH_MP_TAC DIFFERENTIABLE_AT_IMP_DIFFERENTIABLE_ON THEN REWRITE_TAC[VECTOR_DERIVATIVE_WORKS] THEN REPEAT STRIP_TAC THEN REWRITE_TAC[vector_derivative] THEN - CONV_TAC SELECT_CONV THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_MESON_TAC[HAS_VECTOR_DERIVATIVE_VECTOR_POLYNOMIAL_FUNCTION]);; let PATH_INTEGRAL_BOUND_EXISTS = prove @@ -3785,7 +3785,7 @@ let WINDING_NUMBER = prove Cx(&2) * Cx(pi) * ii * winding_number(g,z)`, REWRITE_TAC[IMP_CONJ; RIGHT_FORALL_IMP_THM] THEN GEN_TAC THEN DISCH_TAC THEN GEN_TAC THEN DISCH_TAC THEN - REWRITE_TAC[winding_number] THEN CONV_TAC SELECT_CONV THEN + REWRITE_TAC[winding_number] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN MP_TAC(ISPECL [`(:complex) DELETE z`; `g:real^1->complex`] PATH_INTEGRAL_NEARBY_ENDS) THEN ASM_SIMP_TAC[OPEN_DELETE; OPEN_UNIV] THEN @@ -3855,7 +3855,7 @@ let WINDING_NUMBER_UNIQUE = prove REPEAT STRIP_TAC THEN COMPLEX_DIFFERENTIABLE_TAC THEN ASM_REWRITE_TAC[COMPLEX_SUB_0]; ASM_REWRITE_TAC[] THEN MP_TAC CX_2PII_NZ THEN - CONV_TAC COMPLEX_RING]);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING]);; let WINDING_NUMBER_UNIQUE_LOOP = prove (`!g z e n. @@ -3888,7 +3888,7 @@ let WINDING_NUMBER_UNIQUE_LOOP = prove REPEAT STRIP_TAC THEN COMPLEX_DIFFERENTIABLE_TAC THEN ASM_REWRITE_TAC[COMPLEX_SUB_0]; ASM_REWRITE_TAC[] THEN MP_TAC CX_2PII_NZ THEN - CONV_TAC COMPLEX_RING]);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING]);; let WINDING_NUMBER_VALID_PATH = prove (`!g z. valid_path g /\ ~(z IN path_image g) @@ -3900,7 +3900,7 @@ let WINDING_NUMBER_VALID_PATH = prove X_GEN_TAC `e:real` THEN DISCH_TAC THEN EXISTS_TAC `g:real^1->complex` THEN ASM_REWRITE_TAC[VECTOR_SUB_REFL; NORM_0] THEN - MP_TAC CX_2PII_NZ THEN CONV_TAC COMPLEX_FIELD);; + MP_TAC CX_2PII_NZ THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let HAS_PATH_INTEGRAL_WINDING_NUMBER = prove (`!g z. valid_path g /\ ~(z IN path_image g) @@ -4088,7 +4088,7 @@ let RE_WINDING_NUMBER = prove REWRITE_TAC[COMPLEX_INV_MUL; GSYM CX_INV; COMPLEX_INV_II] THEN REWRITE_TAC[COMPLEX_MUL_LNEG; COMPLEX_MUL_RNEG; RE_NEG] THEN REWRITE_TAC[GSYM COMPLEX_MUL_ASSOC; RE_MUL_CX; RE_MUL_II] THEN - MP_TAC PI_POS THEN CONV_TAC REAL_FIELD);; + MP_TAC PI_POS THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let WINDING_NUMBER_POS_LE = prove (`!g z. valid_path g /\ ~(z IN path_image g) /\ @@ -4219,7 +4219,7 @@ let WINDING_NUMBER_AHLFORS_LEMMA = prove (SUBST1_TAC o SYM) THENL [FIRST_X_ASSUM(MP_TAC o check (is_neg o concl)) THEN - CONV_TAC COMPLEX_FIELD; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; ALL_TAC] THEN MATCH_MP_TAC(ISPEC `( * ):complex->complex->complex` HAS_VECTOR_DERIVATIVE_BILINEAR_WITHIN) THEN @@ -4406,7 +4406,7 @@ let WINDING_NUMBER_AHLFORS_LEMMA = prove integral (interval [t,u]) (\x. vector_derivative g (at x within interval [a,b]) / (g x - z))` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC INTEGRAL_COMBINE THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_COMBINE THEN ASM_MESON_TAC[IN_INTERVAL_1]; ALL_TAC] THEN SIMP_TAC[COMPLEX_RING `a + x = a + y <=> y:complex = x`]; @@ -4418,7 +4418,7 @@ let WINDING_NUMBER_AHLFORS_LEMMA = prove integral (interval [u,t]) (\x. vector_derivative g (at x within interval [a,b]) / (g x - z))` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC INTEGRAL_COMBINE THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_COMBINE THEN ASM_MESON_TAC[IN_INTERVAL_1]; ALL_TAC] THEN SIMP_TAC[COMPLEX_RING `(a + x) + (w - z) = a <=> x:complex = z - w`]] THEN @@ -4744,7 +4744,7 @@ let CONTINUOUS_AT_WINDING_NUMBER = prove FIRST_X_ASSUM(MP_TAC o SPEC `t:real^1`) THEN ASM_SIMP_TAC[path_image; FUN_IN_IMAGE] THEN UNDISCH_TAC `dist (w:complex,z) < min d e / &2` THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NORM_ARITH; + ASM_REWRITE_TAC[] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; DISCH_TAC THEN X_GEN_TAC `k:real` THEN DISCH_TAC THEN MP_TAC(ISPECL [`g:real^1->complex`; `w:complex`; `min k (min d e) / &2`] WINDING_NUMBER) THEN @@ -4756,12 +4756,12 @@ let CONTINUOUS_AT_WINDING_NUMBER = prove EXISTS_TAC `p:real^1->complex` THEN ASM_REWRITE_TAC[] THEN ASM_REWRITE_TAC[VECTOR_SUB_REFL; NORM_0] THEN FIRST_X_ASSUM(fun th -> GEN_REWRITE_TAC RAND_CONV [SYM th]) THEN - CONV_TAC SYM_CONV THEN FIRST_X_ASSUM(MP_TAC o SPECL + (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM(MP_TAC o SPECL [`p:real^1->complex`; `q:real^1->complex`]) THEN ASM_REWRITE_TAC[] THEN ANTS_TAC THENL [X_GEN_TAC `t:real^1` THEN DISCH_TAC THEN REPEAT(FIRST_X_ASSUM(MP_TAC o SPEC `t:real^1`)) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NORM_ARITH; + ASM_REWRITE_TAC[] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; DISCH_THEN(MATCH_MP_TAC o last o CONJUNCTS)] THEN MATCH_MP_TAC HOLOMORPHIC_ON_DIV THEN SIMP_TAC[HOLOMORPHIC_ON_SUB; HOLOMORPHIC_ON_ID; HOLOMORPHIC_ON_CONST; @@ -4809,14 +4809,14 @@ let CONTINUOUS_AT_WINDING_NUMBER = prove MATCH_MP_TAC(REAL_ARITH `!d. &0 < e /\ d = e / &2 /\ x <= d ==> x < e`) THEN EXISTS_TAC `L * (e / &2 * d pow 2 / L / &4) * inv(d / &2) pow 2` THEN ASM_REWRITE_TAC[] THEN CONJ_TAC THENL - [MAP_EVERY UNDISCH_TAC [`&0 < d`; `&0 < L`] THEN CONV_TAC REAL_FIELD; + [MAP_EVERY UNDISCH_TAC [`&0 < d`; `&0 < L`] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN SUBGOAL_THEN `path_integral g (\x. Cx(&1) / (x - w)) - path_integral g (\x. Cx(&1) / (x - z)) = path_integral g (\x. Cx(&1) / (x - w) - Cx(&1) / (x - z))` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC PATH_INTEGRAL_SUB THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC PATH_INTEGRAL_SUB THEN CONJ_TAC THEN MATCH_MP_TAC PATH_INTEGRABLE_INVERSEDIFF THEN ASM_REWRITE_TAC[] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ONCE_REWRITE_TAC[DIST_SYM] THEN ASM_REAL_ARITH_TAC; @@ -4830,7 +4830,7 @@ let CONTINUOUS_AT_WINDING_NUMBER = prove SUBGOAL_THEN `~(x:complex = w) /\ ~(x = z)` STRIP_ASSUME_TAC THENL [CONJ_TAC THEN DISCH_THEN SUBST_ALL_TAC THEN REPEAT(FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM REAL_NOT_LE])) THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; ALL_TAC] THEN CONJ_TAC THENL [MATCH_MP_TAC COMPLEX_DIFFERENTIABLE_SUB THEN @@ -4849,7 +4849,7 @@ let CONTINUOUS_AT_WINDING_NUMBER = prove ASM_SIMP_TAC[REAL_POW_2; REAL_LT_MUL; REAL_HALF; COMPLEX_NORM_MUL] THEN MATCH_MP_TAC REAL_LE_MUL2 THEN ASM_SIMP_TAC[REAL_HALF; REAL_LT_IMP_LE] THEN REPEAT(FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM REAL_NOT_LE])) THEN - CONV_TAC NORM_ARITH);; + (CONV_TAC "NORM_ARITH") NORM_ARITH);; let CONTINUOUS_ON_WINDING_NUMBER = prove (`!g. path g @@ -5056,11 +5056,11 @@ let WINDING_NUMBER_SUBPATH_CONTINUOUS = prove `Cx(&1) / (Cx(&2) * Cx pi * ii) * path_integral (subpath (vec 0) a g) (\w. Cx(&1) / (w - z))` THEN CONJ_TAC THENL - [AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + [AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC PATH_INTEGRAL_SUBPATH_INTEGRAL THEN ASM_SIMP_TAC[ENDS_IN_UNIT_INTERVAL; PATH_INTEGRABLE_INVERSEDIFF] THEN ASM_MESON_TAC[IN_INTERVAL_1]; - REPEAT STRIP_TAC THEN REWRITE_TAC[] THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN REWRITE_TAC[] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC WINDING_NUMBER_VALID_PATH THEN ASM_MESON_TAC[VALID_PATH_SUBPATH; SUBSET; VALID_PATH_IMP_PATH; ENDS_IN_UNIT_INTERVAL; PATH_IMAGE_SUBPATH_SUBSET]]; @@ -5127,7 +5127,7 @@ let WINDING_NUMBER_LT_HALF = prove REPEAT STRIP_TAC THEN REWRITE_TAC[GSYM REAL_NOT_LE] THEN STRIP_TAC THEN MP_TAC(ISPECL [`g:real^1->complex`; `z:complex`; `&1 / &2`] WINDING_NUMBER_IVT_POS) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[NOT_EXISTS_THM] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[NOT_EXISTS_THM] THEN X_GEN_TAC `t:real^1` THEN STRIP_TAC THEN MP_TAC(ISPECL [`subpath (vec 0) t (g:real^1->complex)`; `z:complex`] WINDING_NUMBER_AHLFORS_FULL) THEN @@ -5369,7 +5369,7 @@ let WINDING_NUMBER_TRIANGLE = prove MP_TAC THENL [MATCH_MP_TAC lemma3 THEN ASM_REWRITE_TAC[] THEN ASM_MESON_TAC[INSERT_AC]; COND_CASES_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC]] THEN - DISCH_THEN(SUBST1_TAC o SYM) THEN CONV_TAC SYM_CONV THEN + DISCH_THEN(SUBST1_TAC o SYM) THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[COMPLEX_NORM_CX; REAL_ABS_NUM] THEN RULE_ASSUM_TAC(REWRITE_RULE [INTERIOR_OF_TRIANGLE; IN_DIFF; IN_UNION; DE_MORGAN_THM]) THEN @@ -5379,7 +5379,7 @@ let WINDING_NUMBER_TRIANGLE = prove PATHSTART_LINEPATH; PATHFINISH_LINEPATH; PATH_IMAGE_LINEPATH] THEN ASM_SIMP_TAC[COMPLEX_NEG_ADD; GSYM WINDING_NUMBER_REVERSEPATH; PATH_IMAGE_LINEPATH; PATH_LINEPATH; REVERSEPATH_LINEPATH] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; (* ------------------------------------------------------------------------- *) (* Cauchy's integral formula, again for a convex enclosing set. *) @@ -5433,7 +5433,7 @@ let CAUCHY_INTEGRAL_FORMULA_WEAK = prove MATCH_MP_TAC LIM_TRANSFORM_AWAY_WITHIN THEN EXISTS_TAC `\w:complex. (f w - f z) / (w - z)` THEN SIMP_TAC[] THEN EXISTS_TAC `z + Cx(&1)` THEN - CONJ_TAC THENL [CONV_TAC COMPLEX_RING; ALL_TAC] THEN + CONJ_TAC THENL [(CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN REWRITE_TAC[GSYM HAS_COMPLEX_DERIVATIVE_WITHIN] THEN ASM_SIMP_TAC[HAS_COMPLEX_DERIVATIVE_AT_WITHIN]; ALL_TAC] THEN @@ -5449,7 +5449,7 @@ let CAUCHY_INTEGRAL_FORMULA_WEAK = prove X_GEN_TAC `w:complex` THEN DISCH_TAC THEN SUBGOAL_THEN `~(w:complex = z)` MP_TAC THENL [ASM SET_TAC[]; ALL_TAC] THEN - ASM_REWRITE_TAC[] THEN CONV_TAC COMPLEX_FIELD);; + ASM_REWRITE_TAC[] THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CAUCHY_INTEGRAL_FORMULA_CONVEX_SIMPLE = prove (`!f s g z. @@ -5530,7 +5530,7 @@ let CAUCHY_THEOREM_HOMOTOPIC_PATHS = prove `(!t x t' x'. P t x t' x') ==> (!t t' u. P t u t' u)`)) THEN REWRITE_TAC[dist; NORM_PASTECART; PASTECART_SUB] THEN REWRITE_TAC[VECTOR_SUB_REFL; NORM_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[TAUT `a /\ b /\ c /\ b /\ d <=> a /\ c /\ b /\ d`] THEN SIMP_TAC[REAL_ADD_RID; POW_2_SQRT; NORM_POS_LE] THEN DISCH_TAC THEN ASM_REWRITE_TAC[] THEN @@ -5721,7 +5721,7 @@ let CAUCHY_THEOREM_HOMOTOPIC_LOOPS = prove `(!t x t' x'. P t x t' x') ==> (!t t' u. P t u t' u)`)) THEN REWRITE_TAC[dist; NORM_PASTECART; PASTECART_SUB] THEN REWRITE_TAC[VECTOR_SUB_REFL; NORM_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[TAUT `a /\ b /\ c /\ b /\ d <=> a /\ c /\ b /\ d`] THEN SIMP_TAC[REAL_ADD_RID; POW_2_SQRT; NORM_POS_LE] THEN DISCH_TAC THEN ASM_REWRITE_TAC[] THEN @@ -5942,7 +5942,7 @@ let WINDING_NUMBER_HOMOTOPIC_PATHS = prove EXISTS_TAC `h:real^1->complex` THEN ASM_REWRITE_TAC[] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_MESON_TAC[NORM_SUB; VALID_PATH_IMP_PATH]]; - ASM_REWRITE_TAC[] THEN MP_TAC CX_2PII_NZ THEN CONV_TAC COMPLEX_RING]);; + ASM_REWRITE_TAC[] THEN MP_TAC CX_2PII_NZ THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING]);; let WINDING_NUMBER_HOMOTOPIC_LOOPS = prove (`!g h z. homotopic_loops ((:complex) DELETE z) g h @@ -5989,7 +5989,7 @@ let WINDING_NUMBER_HOMOTOPIC_LOOPS = prove EXISTS_TAC `h:real^1->complex` THEN ASM_REWRITE_TAC[] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_MESON_TAC[NORM_SUB; VALID_PATH_IMP_PATH]]; - ASM_REWRITE_TAC[] THEN MP_TAC CX_2PII_NZ THEN CONV_TAC COMPLEX_RING]);; + ASM_REWRITE_TAC[] THEN MP_TAC CX_2PII_NZ THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING]);; let WINDING_NUMBER_PATHS_LINEAR_EQ = prove (`!g h z. @@ -5998,7 +5998,7 @@ let WINDING_NUMBER_PATHS_LINEAR_EQ = prove pathfinish h = pathfinish g /\ (!t. t IN interval[vec 0,vec 1] ==> ~(z IN segment[g t,h t])) ==> winding_number(h,z) = winding_number(g,z)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC WINDING_NUMBER_HOMOTOPIC_PATHS THEN MATCH_MP_TAC HOMOTOPIC_PATHS_LINEAR THEN ASM SET_TAC[]);; @@ -6009,7 +6009,7 @@ let WINDING_NUMBER_LOOPS_LINEAR_EQ = prove pathfinish h = pathstart h /\ (!t. t IN interval[vec 0,vec 1] ==> ~(z IN segment[g t,h t])) ==> winding_number(h,z) = winding_number(g,z)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC WINDING_NUMBER_HOMOTOPIC_LOOPS THEN MATCH_MP_TAC HOMOTOPIC_LOOPS_LINEAR THEN ASM SET_TAC[]);; @@ -6020,7 +6020,7 @@ let WINDING_NUMBER_NEARBY_PATHS_EQ = prove pathfinish h = pathfinish g /\ (!t. t IN interval[vec 0,vec 1] ==> norm(h t - g t) < norm(g t - z)) ==> winding_number(h,z) = winding_number(g,z)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC WINDING_NUMBER_HOMOTOPIC_PATHS THEN MATCH_MP_TAC HOMOTOPIC_PATHS_NEARBY_EXPLICIT THEN ASM SET_TAC[]);; @@ -6031,7 +6031,7 @@ let WINDING_NUMBER_NEARBY_LOOPS_EQ = prove pathfinish h = pathstart h /\ (!t. t IN interval[vec 0,vec 1] ==> norm(h t - g t) < norm(g t - z)) ==> winding_number(h,z) = winding_number(g,z)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC WINDING_NUMBER_HOMOTOPIC_LOOPS THEN MATCH_MP_TAC HOMOTOPIC_LOOPS_NEARBY_EXPLICIT THEN ASM SET_TAC[]);; @@ -6047,7 +6047,7 @@ let WINDING_NUMBER_SUBPATH_COMBINE = prove REPEAT STRIP_TAC THEN MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `winding_number(subpath u v g ++ subpath v w g,z)` THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC WINDING_NUMBER_JOIN THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC WINDING_NUMBER_JOIN THEN ASM_SIMP_TAC[PATH_SUBPATH; PATHSTART_SUBPATH; PATHFINISH_SUBPATH] THEN ASM_MESON_TAC[SUBSET; PATH_IMAGE_SUBPATH_SUBSET]; MATCH_MP_TAC WINDING_NUMBER_HOMOTOPIC_PATHS THEN @@ -6138,7 +6138,7 @@ let WINDING_NUMBER_FROM_INNERPATH = prove ANTS_TAC THENL [ASM_REWRITE_TAC[OUTSIDE_INSIDE; IN_DIFF; IN_UNION; IN_UNIV] THEN ONCE_REWRITE_TAC[UNION_COMM] THEN ASM SET_TAC[]; - CONV_TAC COMPLEX_RING]]);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING]]);; let SIMPLE_CLOSED_PATH_WINDING_NUMBER_INSIDE = prove (`!g. simple_path g @@ -6171,7 +6171,7 @@ let SIMPLE_CLOSED_PATH_WINDING_NUMBER_INSIDE = prove STRIP_TAC THEN ASM_SIMP_TAC[PATH_IMAGE_JOIN; PATHSTART_LINEPATH] THEN REWRITE_TAC[IN_UNION; PATH_IMAGE_LINEPATH] THEN DISJ2_TAC THEN REWRITE_TAC[IN_SEGMENT] THEN EXISTS_TAC `&1 / &2` THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN VECTOR_ARITH_TAC; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN VECTOR_ARITH_TAC; ALL_TAC] THEN REWRITE_TAC[FRONTIER_STRADDLE] THEN DISCH_THEN(MP_TAC o SPEC `e:real`) THEN ASM_REWRITE_TAC[] THEN @@ -6208,7 +6208,7 @@ let SIMPLE_CLOSED_PATH_WINDING_NUMBER_INSIDE = prove [ASM_SIMP_TAC[INTERIOR_CONVEX_HULL_3_MINIMAL] THEN REWRITE_TAC[GSYM MEMBER_NOT_EMPTY; IN_ELIM_THM] THEN REPEAT(ONCE_REWRITE_TAC[SWAP_EXISTS_THM] THEN EXISTS_TAC `&1 / &3`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN MESON_TAC[]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MESON_TAC[]; ALL_TAC] THEN REWRITE_TAC[GSYM MEMBER_NOT_EMPTY] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `z:complex` THEN DISCH_TAC THEN @@ -6326,7 +6326,7 @@ let SIMPLE_CLOSED_PATH_WINDING_NUMBER_INSIDE = prove ASM_SIMP_TAC[WINDING_NUMBER_JOIN; PATH_JOIN; PATH_LINEPATH; PATH_IMAGE_JOIN; IN_UNION; PATHSTART_JOIN; PATHFINISH_JOIN; PATHSTART_LINEPATH; PATHFINISH_LINEPATH; PATH_IMAGE_LINEPATH] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; DISCH_THEN SUBST_ALL_TAC THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE LAND_CONV [COMPLEX_NORM_CX]) THEN REAL_ARITH_TAC]) in @@ -6506,7 +6506,7 @@ let SIMPLE_CLOSED_PATH_WINDING_NUMBER_INSIDE = prove EXISTS_TAC `winding_number(linepath (a - d % basis 1:complex,a - kde % basis 1),z) + winding_number(linepath (a - kde % basis 1,a + e % basis 1),z)` THEN - CONJ_TAC THENL [AP_TERM_TAC; ALL_TAC] THEN CONV_TAC SYM_CONV THEN + CONJ_TAC THENL [AP_TERM_TAC; ALL_TAC] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC WINDING_NUMBER_SPLIT_LINEPATH THEN ASM_REWRITE_TAC[] THENL [CONJ_TAC THENL @@ -6951,7 +6951,7 @@ let HAS_VECTOR_DERIVATIVE_PARTCIRCLEPATH = prove (at x)`, REWRITE_TAC[partcirclepath; linepath; COMPLEX_CMUL; CX_SUB] THEN REPEAT GEN_TAC THEN MATCH_MP_TAC HAS_VECTOR_DERIVATIVE_REAL_COMPLEX THEN - COMPLEX_DIFF_TAC THEN CONV_TAC COMPLEX_RING);; + COMPLEX_DIFF_TAC THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let VECTOR_DERIVATIVE_PARTCIRCLEPATH = prove (`!z r s t x. @@ -6999,7 +6999,7 @@ let PATH_IMAGE_PARTCIRCLEPATH = prove AP_TERM_TAC THEN AP_TERM_TAC THEN AP_TERM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[COMPLEX_CMUL; CX_SUB; CX_DIV] THEN SUBGOAL_THEN `~(Cx(s) = Cx(t))` MP_TAC THENL - [ASM_SIMP_TAC[CX_INJ; REAL_LT_IMP_NE]; CONV_TAC COMPLEX_FIELD]; + [ASM_SIMP_TAC[CX_INJ; REAL_LT_IMP_NE]; (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]; UNDISCH_TAC `s:real <= t` THEN ASM_REWRITE_TAC[REAL_LE_LT] THEN DISCH_THEN SUBST_ALL_TAC THEN EXISTS_TAC `vec 0:real^1` THEN SIMP_TAC[IN_INTERVAL_1; DROP_VEC; linepath; VECTOR_MUL_LZERO; @@ -7037,7 +7037,7 @@ let RECTIFIABLE_PATH_PARTCIRCLEPATH,PATH_LENGTH_PARTCIRCLEPATH = REWRITE_TAC[partcirclepath; linepath; COMPLEX_CMUL; CX_SUB] THEN MATCH_MP_TAC HAS_VECTOR_DERIVATIVE_REAL_COMPLEX THEN COMPLEX_DIFF_TAC THEN REWRITE_TAC[CX_MUL; CX_SUB; CX_ADD] THEN - CONV_TAC COMPLEX_RING) in + (CONV_TAC "COMPLEX_RING") COMPLEX_RING) in let RECTIFIABLE_PATH_PARTCIRCLEPATH = prove (`!z r s t. rectifiable_path(partcirclepath(z,r,s,t))`, REPEAT GEN_TAC THEN REWRITE_TAC[rectifiable_path; PATH_PARTCIRCLEPATH] THEN @@ -7213,7 +7213,7 @@ let PATH_INTEGRABLE_CONTINUOUS_PARTCIRCLEPATH = prove MATCH_MP_TAC LINEAR_CONTINUOUS_ON THEN REWRITE_TAC[linear; DROP_ADD; DROP_CMUL; CX_ADD; COMPLEX_CMUL; CX_MUL; CX_SUB] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let WINDING_NUMBER_PARTCIRCLEPATH_POS_LT = prove (`!r z s t w. @@ -7264,13 +7264,13 @@ let SIMPLE_PATH_PARTCIRCLEPATH = prove ASM_CASES_TAC `r = &0` THEN ASM_REWRITE_TAC[] THENL [DISCH_THEN(MP_TAC o SPECL [`lift(&1 / &3)`; `lift(&1 / &2)`]) THEN REWRITE_TAC[IN_INTERVAL_1; LIFT_DROP; GSYM LIFT_NUM; LIFT_EQ] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN ASM_CASES_TAC `s:real = t` THEN ASM_REWRITE_TAC[] THENL [DISCH_THEN(MP_TAC o SPECL [`lift(&1 / &3)`; `lift(&1 / &2)`]) THEN REWRITE_TAC[linepath; VECTOR_ARITH `(&1 - t) % x + t % x = x`] THEN REWRITE_TAC[IN_INTERVAL_1; LIFT_DROP; GSYM LIFT_NUM; LIFT_EQ] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[COMPLEX_SUB_0]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[COMPLEX_SUB_0]; ALL_TAC] THEN REWRITE_TAC[COMPLEX_SUB_0; CEXP_EQ] THEN REWRITE_TAC[COMPLEX_RING @@ -7370,7 +7370,7 @@ let WINDING_NUMBER_PARTCIRCLEPATH = prove [MATCH_MP_TAC(SET_RULE `!s. ~(z IN s) /\ t SUBSET s ==> ~(z IN t)`) THEN EXISTS_TAC `sphere(z:complex,abs r)` THEN ASM_REWRITE_TAC[PATH_IMAGE_PARTCIRCLEPATH_SUBSET_ABS; IN_SPHERE] THEN - POP_ASSUM MP_TAC THEN CONV_TAC NORM_ARITH; + POP_ASSUM MP_TAC THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; DISCH_THEN SUBST1_TAC] THEN REWRITE_TAC[complex_div; CX_DIV; CX_MUL; COMPLEX_INV_MUL] THEN MATCH_MP_TAC(COMPLEX_FIELD @@ -7414,7 +7414,7 @@ let PATHFINISH_CIRCLEPATH = prove REWRITE_TAC[circlepath; PATHFINISH_PARTCIRCLEPATH] THEN REWRITE_TAC[CEXP_EULER; GSYM CX_COS; GSYM CX_SIN] THEN REWRITE_TAC[SIN_NPI; COS_NPI; REAL_POW_NEG; ARITH; REAL_POW_ONE] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let HAS_VECTOR_DERIVATIVE_CIRCLEPATH = prove (`((circlepath (z,r)) has_vector_derivative @@ -7422,7 +7422,7 @@ let HAS_VECTOR_DERIVATIVE_CIRCLEPATH = prove (at x)`, REWRITE_TAC[CIRCLEPATH] THEN MATCH_MP_TAC HAS_VECTOR_DERIVATIVE_REAL_COMPLEX THEN - COMPLEX_DIFF_TAC THEN CONV_TAC COMPLEX_RING);; + COMPLEX_DIFF_TAC THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let VECTOR_DERIVATIVE_CIRCLEPATH = prove (`vector_derivative (circlepath (z,r)) (at x) = @@ -7504,7 +7504,7 @@ let PATH_IMAGE_CIRCLEPATH = prove SIMPLE_COMPLEX_ARITH `Im(w * Cx x) = Im(w) * x`] THEN REWRITE_TAC[COMPLEX_ADD_LDISTRIB; GSYM CX_MUL] THEN SUBGOAL_THEN `!z:real. r * z * inv r = z` MP_TAC THENL - [SUBGOAL_THEN `~(r = &0)` MP_TAC THENL [ALL_TAC; CONV_TAC REAL_FIELD] THEN + [SUBGOAL_THEN `~(r = &0)` MP_TAC THENL [ALL_TAC; (CONV_TAC "REAL_FIELD") REAL_FIELD] THEN ASM_MESON_TAC[COMPLEX_NORM_ZERO]; ONCE_REWRITE_TAC[COMPLEX_RING `t * ii * s = ii * t * s`] THEN SIMP_TAC[GSYM CX_MUL; GSYM COMPLEX_EXPAND]]; @@ -7585,7 +7585,7 @@ let RECTIFIABLE_LOOP_RELATIVE_FRONTIER_CONVEX = prove BILIPSCHITZ_HOMEOMORPHISM_RELATIVE_FRONTIERS) THEN ASM_REWRITE_TAC[CONVEX_CBALL; BOUNDED_CBALL; AFF_DIM_CBALL] THEN REWRITE_TAC[RELATIVE_FRONTIER_CBALL; DIMINDEX_2; homeomorphism] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN MAP_EVERY X_GEN_TAC [`f:complex->real^N`; `g:real^N->complex`] THEN DISCH_THEN(REPEAT_TCL CONJUNCTS_THEN ASSUME_TAC) THEN EXISTS_TAC `(f:complex->real^N) o circlepath(Cx(&0),&1)` THEN @@ -7600,7 +7600,7 @@ let RECTIFIABLE_LOOP_RELATIVE_FRONTIER_CONVEX = prove MP_TAC(SPECL [`Cx(&0)`; `&1`] SIMPLE_PATH_CIRCLEPATH) THEN MP_TAC(SPECL [`Cx(&0)`; `&1`] PATH_IMAGE_CIRCLEPATH) THEN REWRITE_TAC[simple_path] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[path_image; EXTENSION; IN_IMAGE] THEN REPEAT STRIP_TAC THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_MESON_TAC[]; MATCH_MP_TAC HAS_BOUNDED_VARIATION_LIPSCHITZ_COMPOSE THEN @@ -7681,7 +7681,7 @@ let CAUCHY_INTEGRAL_CIRCLEPATH = prove SIMP_TAC[NORM_POS_LE; PATH_IMAGE_CIRCLEPATH] THEN REWRITE_TAC[SET_RULE `s SUBSET c DELETE q <=> s SUBSET c /\ ~(q IN s)`] THEN REWRITE_TAC[SPHERE_SUBSET_CBALL; IN_SPHERE] THEN - UNDISCH_TAC `norm(w - z:complex) < r` THEN CONV_TAC NORM_ARITH);; + UNDISCH_TAC `norm(w - z:complex) < r` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH);; let CAUCHY_INTEGRAL_CIRCLEPATH_SIMPLE = prove (`!f z r w. @@ -7921,7 +7921,7 @@ let CAUCHY_NEXT_DERIVATIVE = prove REWRITE_TAC[SUBSET] THEN DISCH_THEN(MP_TAC o SPEC `x:complex`) THEN ASM_REWRITE_TAC[IN_DIFF; IN_BALL] THEN UNDISCH_TAC `norm(w - v:complex) < d / &2` THEN - CONV_TAC NORM_ARITH] THEN + (CONV_TAC "NORM_ARITH") NORM_ARITH] THEN GEN_TAC THEN X_GEN_TAC `y:complex` THEN REWRITE_TAC[IN_BALL; dist] THEN STRIP_TAC THEN SUBGOAL_THEN `~(y:complex = x)` ASSUME_TAC THENL @@ -7956,7 +7956,7 @@ let CAUCHY_NEXT_DERIVATIVE = prove ANTS_TAC THENL [ASM_MESON_TAC[NORM_SUB]; ALL_TAC] THEN REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY; ARITH] THEN REWRITE_TAC[complex_pow; VECTOR_ADD_RID; ARITH; FACT] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[COMPLEX_DIV_1; COMPLEX_MUL_RID; COMPLEX_POW_1] THEN SUBGOAL_THEN `~(u:complex = w)` ASSUME_TAC THENL [ASM_MESON_TAC[COMPLEX_SUB_REFL; COMPLEX_NORM_0; REAL_LT_REFL]; @@ -8001,7 +8001,7 @@ let CAUCHY_NEXT_DERIVATIVE_CIRCLEPATH = prove [ALL_TAC; GEN_TAC THEN REWRITE_TAC[IN_BALL] THEN MATCH_MP_TAC(TAUT `~p ==> p ==> q`) THEN - UNDISCH_TAC `~(&0 <= r)` THEN CONV_TAC NORM_ARITH] THEN + UNDISCH_TAC `~(&0 <= r)` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH] THEN MP_TAC(ISPECL [`f:complex->complex`; `g:complex->complex`; `circlepath(z,r)`; `ball(z:complex,r)`; `k:num`; `&2 * pi * r`] CAUCHY_NEXT_DERIVATIVE) THEN @@ -8050,7 +8050,7 @@ let CAUCHY_DERIVATIVE_INTEGRAL_CIRCLEPATH = prove DISCH_THEN(MP_TAC o SPEC `Cx(&1) / (Cx(&2) * Cx pi * ii)` o MATCH_MP HAS_COMPLEX_DERIVATIVE_LMUL_AT) THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_THM_TAC THEN AP_TERM_TAC THEN - REWRITE_TAC[FUN_EQ_THM] THEN MP_TAC CX_2PII_NZ THEN CONV_TAC COMPLEX_FIELD);; + REWRITE_TAC[FUN_EQ_THM] THEN MP_TAC CX_2PII_NZ THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; (* ------------------------------------------------------------------------- *) (* Existence of all higher derivatives. *) @@ -8342,7 +8342,7 @@ let HIGHER_COMPLEX_DERIVATIVE_MUL = prove SIMP_TAC [VSUM_ADD; FINITE_NUMSEG] THEN BINOP_TAC THENL [REWRITE_TAC [VSUM_CLAUSES_NUMSEG; LE_0] THEN SUBGOAL_THEN `binom(n,SUC n)=0` SUBST1_TAC THENL - [REWRITE_TAC [BINOM_EQ_0] THEN ARITH_TAC; CONV_TAC COMPLEX_RING]; + [REWRITE_TAC [BINOM_EQ_0] THEN ARITH_TAC; (CONV_TAC "COMPLEX_RING") COMPLEX_RING]; SIMP_TAC [VSUM_CLAUSES_LEFT; SPEC `SUC n` LE_0] THEN REWRITE_TAC [COMPLEX_MUL_LZERO; COMPLEX_ADD_LID; GSYM ADD1; VSUM_SUC; o_DEF; SUB_SUC; NOT_SUC; PRE]]; @@ -9339,7 +9339,7 @@ let POWER_SERIES_AND_DERIVATIVE_0 = prove MATCH_MP_TAC SERIES_AND_DERIVATIVE_COMPARISON_COMPLEX THEN REWRITE_TAC[OPEN_BALL; IN_BALL; dist; COMPLEX_SUB_LZERO; NORM_NEG] THEN CONJ_TAC THENL - [REPEAT STRIP_TAC THEN COMPLEX_DIFF_TAC THEN CONV_TAC COMPLEX_RING; + [REPEAT STRIP_TAC THEN COMPLEX_DIFF_TAC THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN X_GEN_TAC `z:complex` THEN DISCH_TAC THEN MAP_EVERY EXISTS_TAC @@ -9506,7 +9506,7 @@ let CLOG_CONVERGES = prove DISCH_THEN(MP_TAC o SPEC `z:complex`) THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(MP_TAC o SPEC `1` o MATCH_MP (REWRITE_RULE[IMP_CONJ] SUMS_OFFSET)) THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[VSUM_SING_NUMSEG] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[VSUM_SING_NUMSEG] THEN REWRITE_TAC[o_DEF; higher_complex_derivative; CLOG_1; COMPLEX_ADD_RID] THEN REWRITE_TAC[complex_div; COMPLEX_MUL_LZERO; COMPLEX_SUB_RZERO] THEN MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] SUMS_EQ) THEN @@ -9522,7 +9522,7 @@ let CLOG_CONVERGES = prove REPEAT STRIP_TAC THEN ASM_CASES_TAC `n = 0` THENL [ASM_REWRITE_TAC[higher_complex_derivative] THEN MATCH_MP_TAC HAS_COMPLEX_DERIVATIVE_DERIVATIVE THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[COMPLEX_POW_1] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[COMPLEX_POW_1] THEN COMPLEX_DIFF_TAC THEN REWRITE_TAC[complex_div; COMPLEX_POW_NEG; COMPLEX_ADD_LID] THEN REWRITE_TAC[COMPLEX_POW_ONE; ARITH; COMPLEX_MUL_LID] THEN @@ -9556,7 +9556,7 @@ let CLOG_CONVERGES = prove REWRITE_TAC[COMPLEX_MUL_AC] THEN MP_TAC(SPEC `&1` COMPLEX_NORM_CX) THEN UNDISCH_TAC `norm(w:complex) < &1` THEN - REWRITE_TAC[GSYM COMPLEX_VEC_0] THEN CONV_TAC NORM_ARITH]; + REWRITE_TAC[GSYM COMPLEX_VEC_0] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]; MATCH_MP_TAC num_INDUCTION THEN REWRITE_TAC[ARITH] THEN X_GEN_TAC `n:num` THEN REPEAT(DISCH_THEN(K ALL_TAC)) THEN DISJ2_TAC THEN REWRITE_TAC[FACT; ARITH_RULE `SUC n - 1 = n`; COMPLEX_ADD_RID] THEN @@ -9624,7 +9624,7 @@ let CLOG_CONVERGES_STRONG = prove EXISTS_TAC `&1` THEN REWRITE_TAC[REAL_LT_01; FORALL_LIFT] THEN REWRITE_TAC[IN_INTERVAL_1; LIFT_DROP; GSYM LIFT_NUM; DIST_LIFT] THEN X_GEN_TAC `t:real` THEN STRIP_TAC THEN - CONV_TAC SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN FIRST_ASSUM(MATCH_MP_TAC o MATCH_MP (REAL_ARITH `norm z = &1 ==> x < &1 * norm z ==> x < &1`)) THEN REWRITE_TAC[NORM_MUL] THEN MATCH_MP_TAC REAL_LT_RMUL THEN @@ -9676,9 +9676,9 @@ let CLOG_CONVERGES_STRONG = prove FIRST_X_ASSUM MATCH_MP_TAC THEN REPEAT STRIP_TAC THEN UNDISCH_TAC `norm(z - w:complex) <= norm(z) - norm(w)` THEN ASM_REWRITE_TAC[NORM_NEG; COMPLEX_NORM_CX] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[NORM_ARITH `norm(x - y) <= &0 <=> x = y`] THEN - CONV_TAC NORM_ARITH]]);; + (CONV_TAC "NORM_ARITH") NORM_ARITH]]);; let TAYLOR_CLOG = prove (`!n z. norm(z) < &1 @@ -9726,10 +9726,10 @@ let LOG2_APPROX_32 = prove SIMP_TAC[GSYM CX_DIV; GSYM CX_POW; GSYM CX_NEG; GSYM CX_ADD; GSYM CX_MUL; VSUM_CX; COMPLEX_NORM_CX; GSYM CX_LOG; GSYM CX_SUB; REAL_ARITH `&0 < &1 + --inv(&2)`] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `a * b / c:real = a / c * b`] THEN - CONV_TAC(ONCE_DEPTH_CONV EXPAND_SUM_CONV) THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "(ONCE_DEPTH_CONV EXPAND_SUM_CONV)") (ONCE_DEPTH_CONV EXPAND_SUM_CONV) THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN SIMP_TAC[LOG_INV; REAL_ARITH `&0 < &2`] THEN REAL_ARITH_TAC);; @@ -9864,7 +9864,7 @@ let CEXP_LIMIT = prove DISCH_THEN(MP_TAC o AP_TERM `norm:complex->real`) THEN REWRITE_TAC[NORM_NEG; COMPLEX_NORM_CX; REAL_ABS_NUM] THEN REPEAT(POP_ASSUM MP_TAC) THEN REWRITE_TAC[GSYM REAL_OF_NUM_LE] THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; MATCH_MP_TAC(ISPEC `cexp` LIM_CONTINUOUS_FUNCTION) THEN REWRITE_TAC[CONTINUOUS_AT_CEXP] THEN ONCE_REWRITE_TAC[LIM_NULL_COMPLEX] THEN @@ -9886,7 +9886,7 @@ let CEXP_LIMIT = prove REWRITE_TAC[GSYM REAL_POW_2] THEN MP_TAC(ISPECL [`1`; `z / Cx(&n)`] TAYLOR_CLOG) THEN REWRITE_TAC[GSYM CX_ADD; VSUM_SING_NUMSEG; COMPLEX_NORM_CX] THEN - REWRITE_TAC[VSUM_CLAUSES_NUMSEG] THEN CONV_TAC NUM_REDUCE_CONV THEN + REWRITE_TAC[VSUM_CLAUSES_NUMSEG] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[COMPLEX_NORM_DIV; COMPLEX_NORM_CX; REAL_ABS_NUM] THEN REWRITE_TAC[REAL_ABS_INV; REAL_ABS_NUM; COMPLEX_DIV_1] THEN ASM_SIMP_TAC[REAL_LT_LDIV_EQ; REAL_OF_NUM_LT; LE_1] THEN ANTS_TAC THENL @@ -9904,7 +9904,7 @@ let CEXP_LIMIT = prove REAL_ABS_POW; real_div] THEN MATCH_MP_TAC REAL_LE_LMUL THEN SIMP_TAC[REAL_POW_LE; NORM_POS_LE] THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_INV_INV] THEN - MATCH_MP_TAC REAL_LE_INV2 THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_LE_INV2 THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `&1 / &2 <= &1 - x * &1 / n <=> x / n <= &1 / &2`] THEN ASM_SIMP_TAC[REAL_LE_LDIV_EQ; REAL_OF_NUM_LT; LE_1] THEN @@ -9923,7 +9923,7 @@ let LIM_LOGPLUS1_OVER_X = prove EXISTS_TAC `\x. Cx(&2) * x` THEN CONJ_TAC THENL [ALL_TAC; LIM_TAC THEN REWRITE_TAC[COMPLEX_MUL_RZERO]] THEN REWRITE_TAC[EVENTUALLY_AT] THEN EXISTS_TAC `&1 / &2` THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[dist; COMPLEX_SUB_RZERO; COMPLEX_NORM_NZ] THEN X_GEN_TAC `z:complex` THEN STRIP_TAC THEN MATCH_MP_TAC REAL_LE_LCANCEL_IMP THEN EXISTS_TAC `norm(z:complex)` THEN @@ -9932,7 +9932,7 @@ let LIM_LOGPLUS1_OVER_X = prove `~(z = Cx(&0)) ==> z * (l / z - Cx(&1)) = l - z`] THEN MP_TAC(ISPECL [`1`; `z:complex`] TAYLOR_CLOG) THEN ANTS_TAC THENL [ASM_REAL_ARITH_TAC; REWRITE_TAC[VSUM_SING_NUMSEG]] THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[COMPLEX_POW_1; COMPLEX_DIV_1] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[COMPLEX_POW_1; COMPLEX_DIV_1] THEN REWRITE_TAC[COMPLEX_POW_NEG; ARITH_EVEN; COMPLEX_POW_ONE] THEN REWRITE_TAC[COMPLEX_MUL_LID] THEN MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ_ALT] REAL_LE_TRANS) THEN @@ -9970,7 +9970,7 @@ let LIM_N_MUL_SUB_CLOG = prove [REWRITE_TAC[CX_INJ; REAL_OF_NUM_EQ] THEN DISCH_THEN SUBST_ALL_TAC THEN UNDISCH_TAC `max (norm(w:complex)) (norm (z:complex)) + &1 <= &N` THEN RULE_ASSUM_TAC(REWRITE_RULE[CONJUNCT1 LE]) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NORM_ARITH; + ASM_REWRITE_TAC[] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; ASM_SIMP_TAC[COMPLEX_FIELD `~(n + z = Cx(&0)) /\ ~(n = Cx(&0)) ==> (n + z) / (Cx(&1) + z / n) = n`] THEN @@ -9979,7 +9979,7 @@ let LIM_N_MUL_SUB_CLOG = prove ==> Cx(&1) + (w - z) / (n + z) = (n + w) / (n + z)`] THEN REWRITE_TAC[complex_div] THEN IMP_REWRITE_TAC[CLOG_MUL_SIMPLE] THEN ASM_REWRITE_TAC[COMPLEX_INV_EQ_0] THEN ASM_SIMP_TAC[CLOG_INV] THEN - CONJ_TAC THENL [CONV_TAC COMPLEX_RING; REWRITE_TAC[IM_NEG]] THEN + CONJ_TAC THENL [(CONV_TAC "COMPLEX_RING") COMPLEX_RING; REWRITE_TAC[IM_NEG]] THEN MATCH_MP_TAC(REAL_ARITH `abs(x) < pi / &2 /\ abs(y) < pi / &2 ==> --pi < x + --y /\ x + --y <= pi`) THEN @@ -9989,7 +9989,7 @@ let LIM_N_MUL_SUB_CLOG = prove MATCH_MP_TAC LIM_COMPLEX_MUL THEN CONJ_TAC THENL [GEN_REWRITE_TAC LAND_CONV [GSYM COMPLEX_INV_1] THEN MATCH_MP_TAC LIM_COMPLEX_INV THEN - CONJ_TAC THENL [ALL_TAC; CONV_TAC COMPLEX_RING] THEN + CONJ_TAC THENL [ALL_TAC; (CONV_TAC "COMPLEX_RING") COMPLEX_RING] THEN GEN_REWRITE_TAC LAND_CONV [GSYM COMPLEX_ADD_RID] THEN MATCH_MP_TAC LIM_ADD THEN REWRITE_TAC[LIM_CONST; complex_div] THEN SIMP_TAC[LIM_NULL_COMPLEX_LMUL; LIM_INV_N]; @@ -10000,7 +10000,7 @@ let LIM_N_MUL_SUB_CLOG = prove SUBST1_TAC THENL [REWRITE_TAC[FUN_EQ_THM; o_THM; complex_div] THEN REWRITE_TAC[COMPLEX_INV_MUL; COMPLEX_INV_INV] THEN - POP_ASSUM MP_TAC THEN CONV_TAC COMPLEX_FIELD; + POP_ASSUM MP_TAC THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; ALL_TAC] THEN MATCH_MP_TAC LIM_COMPOSE_AT THEN EXISTS_TAC `Cx(&0)` THEN REPEAT CONJ_TAC THENL @@ -10026,7 +10026,7 @@ let LIM_SUB_CLOG = prove CONJ_TAC THENL [REWRITE_TAC[EVENTUALLY_SEQUENTIALLY] THEN EXISTS_TAC `1` THEN REWRITE_TAC[ARITH_RULE `1 <= n <=> ~(n = 0)`; GSYM REAL_OF_NUM_EQ] THEN - REWRITE_TAC[GSYM CX_INJ] THEN CONV_TAC COMPLEX_FIELD; + REWRITE_TAC[GSYM CX_INJ] THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; MATCH_MP_TAC LIM_COMPLEX_MUL THEN REWRITE_TAC[LIM_INV_N; LIM_N_MUL_SUB_CLOG]]);; @@ -10164,7 +10164,7 @@ let POLE_LEMMA = prove [X_GEN_TAC `w:complex` THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[REAL_LT_REFL] THEN STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o SPEC `w:complex`) THEN ASM_REWRITE_TAC[] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC COMPLEX_FIELD; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; MATCH_MP_TAC COMPLEX_DIFFERENTIABLE_DIV_WITHIN THEN ASM_REWRITE_TAC[COMPLEX_SUB_0] THEN CONJ_TAC THEN MATCH_MP_TAC COMPLEX_DIFFERENTIABLE_SUB THEN @@ -10253,7 +10253,7 @@ let POLE_THEOREM = prove COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN FIRST_X_ASSUM(MP_TAC o SPEC `z:complex` o last o CONJUNCTS) THEN ASM_REWRITE_TAC[] THEN REPEAT(POP_ASSUM MP_TAC) THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let POLE_THEOREM_OPEN = prove (`!f g s a. @@ -10269,7 +10269,7 @@ let POLE_THEOREM_OPEN = prove COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN FIRST_X_ASSUM(MP_TAC o SPEC `z:complex` o last o CONJUNCTS) THEN ASM_REWRITE_TAC[] THEN REPEAT(POP_ASSUM MP_TAC) THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let POLE_THEOREM_0 = prove (`!f g s a. @@ -10285,7 +10285,7 @@ let POLE_THEOREM_0 = prove MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] HOLOMORPHIC_TRANSFORM) THEN X_GEN_TAC `z:complex` THEN DISCH_TAC THEN REWRITE_TAC[] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[complex_div] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let POLE_THEOREM_OPEN_0 = prove (`!f g s a. @@ -10301,7 +10301,7 @@ let POLE_THEOREM_OPEN_0 = prove MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] HOLOMORPHIC_TRANSFORM) THEN X_GEN_TAC `z:complex` THEN DISCH_TAC THEN REWRITE_TAC[] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[complex_div] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let POLE_THEOREM_ANALYTIC = prove (`!f g s a. @@ -10339,7 +10339,7 @@ let POLE_THEOREM_ANALYTIC_0 = prove MP_TAC THENL [ASM_SIMP_TAC[POLE_THEOREM_ANALYTIC]; ALL_TAC] THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[FUN_EQ_THM] THEN GEN_TAC THEN COND_CASES_TAC THEN - ASM_REWRITE_TAC[complex_div] THEN CONV_TAC COMPLEX_RING);; + ASM_REWRITE_TAC[complex_div] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let POLE_THEOREM_ANALYTIC_OPEN_SUPERSET = prove (`!f g s a t. @@ -10365,7 +10365,7 @@ let POLE_THEOREM_ANALYTIC_OPEN_SUPERSET_0 = prove ALL_TAC] THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[FUN_EQ_THM] THEN GEN_TAC THEN COND_CASES_TAC THEN - ASM_REWRITE_TAC[complex_div] THEN CONV_TAC COMPLEX_RING);; + ASM_REWRITE_TAC[complex_div] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let HOLOMORPHIC_ON_EXTEND_LIM,HOLOMORPHIC_ON_EXTEND_BOUNDED = (CONJ_PAIR o prove) @@ -10397,7 +10397,7 @@ let HOLOMORPHIC_ON_EXTEND_LIM,HOLOMORPHIC_ON_EXTEND_BOUNDED = FIRST_ASSUM(fun th -> REWRITE_TAC[GSYM(MATCH_MP EVENTUALLY_WITHIN_INTERIOR th)]) THEN ASM_SIMP_TAC[EVENTUALLY_WITHIN; GSYM DIST_NZ] THEN - EXISTS_TAC `&1` THEN CONV_TAC NORM_ARITH; + EXISTS_TAC `&1` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; DISCH_THEN(X_CHOOSE_THEN `B:real` STRIP_ASSUME_TAC) THEN MATCH_MP_TAC LIM_NULL_COMPLEX_RMUL_BOUNDED THEN EXISTS_TAC `B:real` THEN SUBST1_TAC(COMPLEX_RING `Cx(&0) = a - a`) THEN @@ -10410,7 +10410,7 @@ let HOLOMORPHIC_ON_EXTEND_LIM,HOLOMORPHIC_ON_EXTEND_BOUNDED = [EXPAND_TAC "h" THEN REWRITE_TAC[HAS_COMPLEX_DERIVATIVE_AT] THEN MATCH_MP_TAC LIM_TRANSFORM_AT THEN MAP_EVERY EXISTS_TAC [`\z:complex. (z - a) * f z`; `&1`] THEN - ASM_SIMP_TAC[REAL_LT_01; GSYM DIST_NZ] THEN CONV_TAC COMPLEX_FIELD; + ASM_SIMP_TAC[REAL_LT_01; GSYM DIST_NZ] THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; ALL_TAC] THEN SUBGOAL_THEN `h holomorphic_on s` ASSUME_TAC THENL [REWRITE_TAC[holomorphic_on; GSYM complex_differentiable] THEN @@ -10442,7 +10442,7 @@ let HOLOMORPHIC_ON_EXTEND_LIM,HOLOMORPHIC_ON_EXTEND_BOUNDED = FIRST_ASSUM(fun th -> REWRITE_TAC[MATCH_MP HAS_COMPLEX_DERIVATIVE_DERIVATIVE th]) THEN SIMP_TAC[COMPLEX_SUB_RZERO] THEN - EXPAND_TAC "h" THEN SIMP_TAC[] THEN CONV_TAC COMPLEX_FIELD]]);; + EXPAND_TAC "h" THEN SIMP_TAC[] THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]]);; (* ------------------------------------------------------------------------- *) (* General, homology form of Cauchy's theorem. Proof is based on Dixon's, *) @@ -10548,7 +10548,7 @@ let CAUCHY_INTEGRAL_FORMULA_GLOBAL = prove MATCH_MP_TAC LIM_TRANSFORM_AWAY_AT THEN EXISTS_TAC `\w:complex. (f w - f y) / (w - y)` THEN SIMP_TAC[] THEN EXISTS_TAC `y + Cx(&1)` THEN - CONJ_TAC THENL [CONV_TAC COMPLEX_RING; ALL_TAC] THEN + CONJ_TAC THENL [(CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN REWRITE_TAC[GSYM HAS_COMPLEX_DERIVATIVE_AT] THEN REWRITE_TAC[HAS_COMPLEX_DERIVATIVE_DIFFERENTIABLE] THEN ASM_MESON_TAC[HOLOMORPHIC_ON_IMP_DIFFERENTIABLE_AT]; @@ -10681,7 +10681,7 @@ let CAUCHY_INTEGRAL_FORMULA_GLOBAL = prove MATCH_MP_TAC(TAUT `(a /\ ~c ==> ~b) ==> a /\ b ==> c`) THEN STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o SPECL [`y:complex`; `y + k:complex`]) THEN - ASM_REWRITE_TAC[IN_DIFF; IN_UNIV; IN_BALL] THEN CONV_TAC NORM_ARITH; + ASM_REWRITE_TAC[IN_DIFF; IN_UNIV; IN_BALL] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; ALL_TAC] THEN EXISTS_TAC `{y + k:complex | y IN path_image g /\ k IN cball(vec 0,dd / &2)}` THEN @@ -10693,12 +10693,12 @@ let CAUCHY_INTEGRAL_FORMULA_GLOBAL = prove X_GEN_TAC `x:complex` THEN REWRITE_TAC[IN_BALL] THEN DISCH_TAC THEN MAP_EVERY EXISTS_TAC [`y:complex`; `x - y:complex`] THEN ASM_REWRITE_TAC[IN_CBALL] THEN - UNDISCH_TAC `dist(y:complex,x) < dd / &2` THEN CONV_TAC NORM_ARITH; + UNDISCH_TAC `dist(y:complex,x) < dd / &2` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (SET_RULE `{x + y:real^N | x IN s /\ y IN t} SUBSET u ==> t' SUBSET t ==> {x + y | x IN s /\ y IN t'} SUBSET u`)) THEN REWRITE_TAC[SUBSET; IN_BALL; IN_CBALL] THEN - UNDISCH_TAC `&0 < dd` THEN CONV_TAC NORM_ARITH]; + UNDISCH_TAC `&0 < dd` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]; ALL_TAC] THEN MP_TAC(ISPECL [`interior t:complex->bool`; `g:real^1->complex`] PATH_INTEGRAL_BOUND_EXISTS) THEN @@ -10718,7 +10718,7 @@ let CAUCHY_INTEGRAL_FORMULA_GLOBAL = prove X_GEN_TAC `y:complex` THEN DISCH_TAC THEN REWRITE_TAC[dist; COMPLEX_SUB_RZERO] THEN SUBGOAL_THEN `h y = path_integral g (\w. f w / (w - y))` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC PATH_INTEGRAL_UNIQUE THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC PATH_INTEGRAL_UNIQUE THEN FIRST_X_ASSUM MATCH_MP_TAC THEN EXPAND_TAC "v" THEN REWRITE_TAC[IN_ELIM_THM] THEN CONJ_TAC THENL [DISCH_TAC THEN @@ -10948,7 +10948,7 @@ let CAUCHY_INTEGRAL_FORMULA_GLOBAL = prove SIMP_TAC[IN_ELIM_PASTECART_THM; FSTCART_PASTECART; SNDCART_PASTECART] THEN ASM_SIMP_TAC[CENTRE_IN_CBALL; REAL_LT_IMP_LE; dist; PASTECART_SUB] THEN REWRITE_TAC[VECTOR_SUB_REFL; NORM_0; NORM_PASTECART] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[TAUT `b /\ (a /\ b) /\ c ==> d <=> a /\ b /\ c ==> d`] THEN SIMP_TAC[REAL_ADD_RID; POW_2_SQRT; NORM_POS_LE] THEN DISCH_TAC THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [LIM_SEQUENTIALLY]) THEN @@ -11047,7 +11047,7 @@ let CAUCHY_INTEGRAL_FORMULA_GLOBAL = prove SIMP_TAC[IN_ELIM_PASTECART_THM; FSTCART_PASTECART; SNDCART_PASTECART] THEN ASM_SIMP_TAC[CENTRE_IN_CBALL; REAL_LT_IMP_LE; dist; PASTECART_SUB] THEN REWRITE_TAC[VECTOR_SUB_REFL; NORM_0; NORM_PASTECART] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[TAUT `(a /\ b) /\ a /\ c ==> d <=> a /\ b /\ c ==> d`] THEN SIMP_TAC[REAL_ADD_LID; POW_2_SQRT; NORM_POS_LE] THEN DISCH_TAC THEN EXISTS_TAC `min dd kk:real` THEN ASM_REWRITE_TAC[REAL_LT_MIN] THEN @@ -11122,7 +11122,7 @@ let CAUCHY_INTEGRAL_FORMULA_GLOBAL = prove CONJ_TAC THENL [MATCH_MP_TAC PATH_INTEGRAL_EQ THEN REWRITE_TAC[PATH_IMAGE_LINEPATH] THEN - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC PATH_INTEGRAL_UNIQUE THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_MESON_TAC[SUBSET]; MATCH_MP_TAC(REWRITE_RULE[PCROSS] PATH_INTEGRAL_SWAP) THEN @@ -11639,7 +11639,7 @@ let CAUCHY_HIGHER_COMPLEX_DERIVATIVE_BOUND = prove REWRITE_TAC [GSYM ADD1; real_pow] THEN SUBGOAL_THEN `~(&(FACT n) = &0) /\ &0 < r` MP_TAC THENL [ASM_REWRITE_TAC[FACT_NZ; REAL_OF_NUM_EQ]; - CONV_TAC REAL_FIELD]; + (CONV_TAC "REAL_FIELD") REAL_FIELD]; ASM_MESON_TAC [REAL_LE_LCANCEL_IMP]]);; let FIRST_CARTAN_THM_DIM_1 = prove @@ -11757,7 +11757,7 @@ let SECOND_CARTAN_THM_DIM_1 = prove SUBGOAL_THEN `f(Cx(&0)) = Cx(&0)` ASSUME_TAC THENL [FIRST_X_ASSUM (MP_TAC o SPECL [`--Cx(&1)`;`Cx(&0)`]) THEN ASM_REWRITE_TAC [NORM_NEG; COMPLEX_NORM_NUM; COMPLEX_MUL_RZERO] THEN - CONV_TAC COMPLEX_RING; ALL_TAC] THEN + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN SUBGOAL_THEN `!n u z. norm u = &1 /\ z IN s ==> @@ -11824,7 +11824,7 @@ let SECOND_CARTAN_THM_DIM_1 = prove REWRITE_TAC [CONTRAPOS_THM] THEN SUBGOAL_THEN `~(u = Cx(&0))` MP_TAC THENL [ASM_REWRITE_TAC [GSYM COMPLEX_NORM_ZERO; REAL_OF_NUM_EQ; ARITH_EQ]; - CONV_TAC COMPLEX_FIELD]; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]; EXISTS_TAC `n:num` THEN ASM_REWRITE_TAC[] THEN REPEAT STRIP_TAC THEN FIRST_X_ASSUM (MP_TAC o SPECL [`n:num`;`u:complex`;`Cx(&0)`]) THEN ASM_REWRITE_TAC[COMPLEX_MUL_RZERO]]; @@ -11942,7 +11942,7 @@ let SECOND_CARTAN_THM_DIM_1 = prove EXISTS_TAC `ball(Cx(&0),r)` THEN EXISTS_TAC `ball(Cx(&0),r)` THEN ASM_REWRITE_TAC [OPEN_BALL; CENTRE_IN_BALL]]; ASM_REWRITE_TAC [COMPLEX_MUL_RZERO] THEN - POP_ASSUM MP_TAC THEN CONV_TAC COMPLEX_RING]]; + POP_ASSUM MP_TAC THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING]]; SUBGOAL_THEN `f(u*g(z)) = f (g (u * z)) : complex` MP_TAC THENL [MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `u * z:complex` THEN CONJ_TAC THENL [SUBGOAL_THEN `!x y:complex. x / u = y ==> x = u * y` MATCH_MP_TAC THENL @@ -11984,7 +11984,7 @@ let SECOND_CARTAN_THM_DIM_1 = prove [ASM_REWRITE_TAC [COMPLEX_MUL_LZERO]; ASM_MESON_TAC[]]; ASM_MESON_TAC[]]]; ALL_TAC] THEN SUBGOAL_THEN `&0 < norm (c:complex)` ASSUME_TAC THENL - [POP_ASSUM MP_TAC THEN CONV_TAC NORM_ARITH; ALL_TAC] THEN + [POP_ASSUM MP_TAC THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; ALL_TAC] THEN REWRITE_TAC [GSYM REAL_LE_ANTISYM] THEN CONJ_TAC THENL [MATCH_MP_TAC LEMMA_2 THEN EXISTS_TAC `r : real` THEN ASM_REWRITE_TAC [NORM_POS_LE] THEN GEN_TAC THEN STRIP_TAC THEN @@ -12057,12 +12057,12 @@ let CAUCHY_INEQUALITY = prove (&2 * pi) / &(FACT n) * (((&(FACT n) * B) * r/ r pow (n+1)))` SUBST1_TAC THENL [SUBGOAL_THEN `~(&(FACT n) = &0)` MP_TAC THENL [REWRITE_TAC [FACT_NZ;REAL_OF_NUM_EQ];ALL_TAC] - THEN CONV_TAC REAL_FIELD;SUBGOAL_THEN `&0 < (&2 * pi) / &(FACT n)` ASSUME_TAC + THEN (CONV_TAC "REAL_FIELD") REAL_FIELD;SUBGOAL_THEN `&0 < (&2 * pi) / &(FACT n)` ASSUME_TAC THENL[MATCH_MP_TAC REAL_LT_DIV THEN SIMP_TAC[FACT_LT;REAL_OF_NUM_LT] THEN MP_TAC PI_POS THEN REAL_ARITH_TAC;SUBGOAL_THEN `(&(FACT n) * B) * r / r pow (n + 1) = &(FACT n) * B / r pow n` SUBST1_TAC THENL [REWRITE_TAC[GSYM ADD1; real_pow] THEN MP_TAC (ASSUME `&0 < r`) THEN - CONV_TAC REAL_FIELD; ASM_MESON_TAC [REAL_LE_LCANCEL_IMP]]]]]]);; + (CONV_TAC "REAL_FIELD") REAL_FIELD; ASM_MESON_TAC [REAL_LE_LCANCEL_IMP]]]]]]);; let LIOUVILLE_POLYNOMIAL = prove (`!f A B n. @@ -12230,7 +12230,7 @@ let ISOLATED_ZEROS = prove SUBGOAL_THEN `(\n. higher_complex_derivative n f z / Cx(&(FACT n)) * (x - z) pow n / (x - z) pow k) = (\n. (higher_complex_derivative n f z / Cx(&(FACT n)) *(x - z) pow n) / (x - z) pow k) ` SUBST1_TAC - THENL [REWRITE_TAC [FUN_EQ_THM] THEN GEN_TAC THEN CONV_TAC COMPLEX_FIELD; + THENL [REWRITE_TAC [FUN_EQ_THM] THEN GEN_TAC THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; MATCH_MP_TAC SUMMABLE_COMPLEX_DIV THEN MATCH_MP_TAC SUMMABLE_FROM_ELSEWHERE THEN EXISTS_TAC `0` THEN ASM_MESON_TAC[summable]]]];ALL_TAC] THEN ASSERT_TAC `~(g (z:complex) = Cx(&0)) /\ @@ -12270,7 +12270,7 @@ let ISOLATED_ZEROS = prove EXISTS_TAC `\n:num. Cx(&0)` THEN CONJ_TAC THENL [REWRITE_TAC[IN_FROM;COMPLEX_POW_ZERO] THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN COND_CASES_TAC THENL [ - ASM_REWRITE_TAC[higher_complex_derivative] THEN CONV_TAC COMPLEX_FIELD; + ASM_REWRITE_TAC[higher_complex_derivative] THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; REWRITE_TAC[COMPLEX_MUL_RZERO]]; ASM_REWRITE_TAC[COMPLEX_POW_ZERO;COMPLEX_MUL_LZERO] THEN ASM_REWRITE_TAC[SERIES_0;GSYM COMPLEX_VEC_0]];ALL_TAC] THEN @@ -12278,7 +12278,7 @@ let ISOLATED_ZEROS = prove higher_complex_derivative n f z / Cx(&(FACT n)) *(x - z) pow (n - k)` THEN CONJ_TAC THENL [REWRITE_TAC[IN_FROM] THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN ASM_CASES_TAC `n:num < k` THENL [ASM_SIMP_TAC[] - THEN CONV_TAC COMPLEX_FIELD; + THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; SUBGOAL_THEN `(x:complex-z) pow (n-k) = (x-z) pow n / (x-z) pow k` SUBST1_TAC THENL [MATCH_MP_TAC COMPLEX_DIV_POW THEN ASM_SIMP_TAC[COMPLEX_SUB_0; ARITH_RULE `~(n:num < k) ==> k <= n`]; @@ -12296,7 +12296,7 @@ let ISOLATED_ZEROS = prove REWRITE_TAC [GSYM COMPLEX_VEC_0] THEN MATCH_MP_TAC VSUM_EQ_0 THEN REWRITE_TAC [IN_NUMSEG] THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN ASM_SIMP_TAC[ARITH_RULE ` ~(k = 0) /\ n <= k - 1 ==> n < k`] THEN - REWRITE_TAC[COMPLEX_VEC_0] THEN CONV_TAC COMPLEX_FIELD; + REWRITE_TAC[COMPLEX_VEC_0] THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; MATCH_MP_TAC SUMS_OFFSET_REV THEN ASM_SIMP_TAC[ARITH_RULE `0 <= k /\ ~(k = 0) ==> 0 < k`;LE_0]]]];ALL_TAC] THEN ASSERT_TAC `?r. &0 < r /\ (!x:complex. dist (z,x) < r ==> @@ -12422,7 +12422,7 @@ let HOLOMORPHIC_FUNCTION_ENTIRE = prove REPEAT(FIRST_X_ASSUM(MP_TAC o SPEC `z:complex`)) THEN ASM_CASES_TAC `(z:complex) IN s` THEN ASM_SIMP_TAC[] THEN ONCE_REWRITE_TAC[DIST_SYM; COMPLEX_ENTIRE] THEN - ASM_REWRITE_TAC[GSYM COMPLEX_VEC_0] THEN CONV_TAC NORM_ARITH);; + ASM_REWRITE_TAC[GSYM COMPLEX_VEC_0] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH);; let HOLOMORPHIC_FUNCTION_ENTIRE_PRODUCT = prove (`!f s k:A->bool. @@ -13052,16 +13052,16 @@ let MAXIMUM_MODULUS_BOUNDED_FUNCTION = prove EXISTS_TAC `min (&1 / &2) (d / &4 / dist(z:complex,c))` THEN REWRITE_TAC[VECTOR_ARITH `c + a % (z - c) = (&1 - a) % c + a % z`] THEN REWRITE_TAC[REAL_LT_MIN; REAL_MIN_LT] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; REWRITE_TAC[NORM_ARITH `dist(c + z:complex,c) = norm z`] THEN REWRITE_TAC[NORM_MUL] THEN ASM_SIMP_TAC[GSYM dist; GSYM REAL_LT_RDIV_EQ; GSYM DIST_NZ] THEN MATCH_MP_TAC(REAL_ARITH `&0 < a /\ &0 < b /\ c / &2 = b ==> abs(min a b) < c`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL [ALL_TAC; REAL_ARITH_TAC]] THEN REPEAT(MATCH_MP_TAC REAL_LT_DIV THEN CONJ_TAC) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[GSYM DIST_NZ]; MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `p:complex` THEN STRIP_TAC THEN SUBGOAL_THEN `(p:complex) IN interior s` MP_TAC THENL @@ -13085,9 +13085,9 @@ let MAXIMUM_MODULUS_BOUNDED_FUNCTION = prove [ASM_MESON_TAC[SUBSET; IN_CBALL; CLOSURE_SUBSET]; MAP_EVERY UNDISCH_TAC [`dist(p:complex,w) <= d / &2`; `dist(p:complex,c) < d / &2`] THEN - CONV_TAC NORM_ARITH]; + (CONV_TAC "NORM_ARITH") NORM_ARITH]; FIRST_X_ASSUM(MP_TAC o SPEC `c:complex`) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NORM_ARITH]]]; + ASM_REWRITE_TAC[] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]]]; ALL_TAC] THEN SUBGOAL_THEN `&0 < C /\ &0 < D` STRIP_ASSUME_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN @@ -13276,7 +13276,7 @@ let HOLOMORPHIC_CONSTANT_ON_SPHERE_SEGMENT = prove SUBGOAL_THEN `(\x:complex. inv r % (x - a)) = (\x. inv r % x) o (\x. --a + x)` SUBST1_TAC THENL - [REWRITE_TAC[o_DEF; FUN_EQ_THM] THEN CONV_TAC VECTOR_ARITH; + [REWRITE_TAC[o_DEF; FUN_EQ_THM] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; REWRITE_TAC[IMAGE_o]] THEN W(MP_TAC o PART_MATCH (lhand o rand) OPEN_IN_INJECTIVE_LINEAR_IMAGE o snd) THEN @@ -13350,7 +13350,7 @@ let HOLOMORPHIC_CONSTANT_ON_SPHERE_SEGMENT = prove ALL_TAC] THEN X_GEN_TAC `z:complex` THEN REWRITE_TAC[COMPLEX_IN_SPHERE_0] THEN ASM_CASES_TAC `z = Cx(&0)` THEN - ASM_REWRITE_TAC[COMPLEX_NORM_0] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[COMPLEX_NORM_0] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_TAC THEN SIMP_TAC[CPRODUCT_EQ_0; FINITE_NUMSEG] THEN MP_TAC(ISPEC `Arg(cexp(ii * Cx a) / z) / d` FLOOR_POS) THEN ASM_SIMP_TAC[ARG; REAL_LE_DIV; REAL_LT_IMP_LE] THEN @@ -13420,7 +13420,7 @@ let FRONTIER_PROPER_HOLOMORPHIC_IMAGE = prove SUBGOAL_THEN `~(frontier s:complex->bool = {})` MP_TAC THENL [ALL_TAC; REWRITE_TAC[frontier] THEN ASM SET_TAC[]] THEN ASM_MESON_TAC[FRONTIER_EQ_EMPTY; NOT_BOUNDED_UNIV]; - CONV_TAC SYM_CONV THEN MATCH_MP_TAC FRONTIER_PROPER_OPEN_MAP_IMAGE THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC FRONTIER_PROPER_OPEN_MAP_IMAGE THEN EXISTS_TAC `IMAGE (f:complex->complex) s` THEN ASM_SIMP_TAC[SUBSET_REFL] THEN MP_TAC(ISPECL [`s:complex->bool`; `f:complex->complex`] @@ -13721,7 +13721,7 @@ let HADAMARD_THREE_LINE_RE = prove GEN_REWRITE_TAC LAND_CONV [GSYM REAL_POW_1] THEN REWRITE_TAC[GSYM RPOW_POW] THEN FIRST_ASSUM(SUBST1_TAC o SYM) THEN MATCH_MP_TAC RPOW_ADD_ALT THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_REAL_ARITH_TAC]; REPEAT GEN_TAC THEN GEN_REWRITE_TAC (RAND_CONV o ONCE_DEPTH_CONV) [REAL_ADD_SYM; REAL_MUL_SYM] THEN @@ -13779,7 +13779,7 @@ let HADAMARD_THREE_LINE_IM = prove AP_TERM_TAC THEN MATCH_MP_TAC(SET_RULE `(!z. Q(ii * z) <=> P z) /\ (!z. ii * --ii * z = z) ==> {f(ii * z) | P z} = {f z | Q z}`) THEN - REWRITE_TAC[IM_MUL_II] THEN CONV_TAC COMPLEX_RING]);; + REWRITE_TAC[IM_MUL_II] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING]);; (* ------------------------------------------------------------------------- *) (* Likewise the three-circle theorem. *) @@ -13961,7 +13961,7 @@ let HOLOMORPHIC_FACTOR_ORDER_OF_ZERO = prove ANTS_TAC THENL [ASM_MESON_TAC[HOLOMORPHIC_ON_SUBSET]; ALL_TAC] THEN DISCH_THEN(MP_TAC o SPEC `1` o MATCH_MP (ONCE_REWRITE_RULE[IMP_CONJ] SUMS_OFFSET)) THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[VSUM_SING_NUMSEG] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[VSUM_SING_NUMSEG] THEN REWRITE_TAC[FACT; higher_complex_derivative; COMPLEX_DIV_1] THEN REWRITE_TAC[complex_pow; COMPLEX_MUL_RID] THEN ASM_CASES_TAC `n = 1` THEN ASM_REWRITE_TAC[] THEN @@ -14038,7 +14038,7 @@ let HOLOMORPHIC_FACTOR_ORDER_OF_ZERO = prove DISCH_THEN(MP_TAC o SPEC `1` o MATCH_MP (REWRITE_RULE[IMP_CONJ] SUMS_OFFSET)) THEN ANTS_TAC THENL [ASM_ARITH_TAC; ALL_TAC] THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[VSUM_SING_NUMSEG] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[VSUM_SING_NUMSEG] THEN DISCH_THEN(MP_TAC o SPEC `Cx(&0)` o MATCH_MP(REWRITE_RULE[IMP_CONJ] SERIES_UNIQUE)) THEN REWRITE_TAC[complex_pow; ADD_CLAUSES; COMPLEX_MUL_RID] THEN ANTS_TAC THENL @@ -14244,7 +14244,7 @@ let POLE_AT_INFINITY = prove REWRITE_TAC[tendsto] THEN DISCH_THEN(MP_TAC o SPEC `&1`) THEN REWRITE_TAC[REAL_LT_01] THEN MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] EVENTUALLY_MONO) THEN - REWRITE_TAC[o_THM; dist; COMPLEX_SUB_RZERO] THEN CONV_TAC NORM_ARITH; + REWRITE_TAC[o_THM; dist; COMPLEX_SUB_RZERO] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; REWRITE_TAC[o_THM] THEN DISCH_THEN(X_CHOOSE_THEN `g:complex->complex` STRIP_ASSUME_TAC)] THEN SUBGOAL_THEN `(g:complex->complex)(Cx(&0)) = Cx(&0)` ASSUME_TAC THENL @@ -14467,7 +14467,7 @@ let COVERING_SPACE_POW_PUNCTURED_PLANE = prove PROPER_MAP_COMPLEX_POLYFUN) THEN ASM_REWRITE_TAC[CLOSED_UNIV] THEN ANTS_TAC THENL [EXISTS_TAC `n:num` THEN ASM_SIMP_TAC[IN_NUMSEG; LE_1; LE_REFL] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; MATCH_MP_TAC EQ_IMP THEN AP_TERM_TAC THEN REWRITE_TAC[EXTENSION; IN_ELIM_THM; IN_UNIV] THEN REWRITE_TAC[COND_RAND; COND_RATOR; COMPLEX_MUL_LZERO] THEN @@ -14487,7 +14487,7 @@ let COVERING_SPACE_POW_PUNCTURED_PLANE = prove MATCH_MP_TAC(SET_RULE `~(f(Cx(&1)) = f(Cx(&0))) ==> ~(?c. !z. f z = c)`) THEN ASM_SIMP_TAC[COMPLEX_POW_ZERO; COMPLEX_POW_EQ_0; LE_1] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; X_GEN_TAC `z:complex` THEN REWRITE_TAC[IN_UNIV] THEN DISCH_TAC THEN SIMP_TAC[OPEN_IN_OPEN_EQ; OPEN_DIFF; OPEN_UNIV; CLOSED_SING] THEN MP_TAC(ISPECL [`\w:complex. w`; `ball(z:complex,norm z)`] @@ -14496,7 +14496,7 @@ let COVERING_SPACE_POW_PUNCTURED_PLANE = prove [SIMP_TAC[CONVEX_IMP_LOCALLY_PATH_CONNECTED; CONVEX_BALL; CONVEX_IMP_SIMPLY_CONNECTED] THEN ONCE_REWRITE_TAC[GSYM CONTRAPOS_THM] THEN - SIMP_TAC[GSYM COMPLEX_VEC_0; IN_BALL] THEN CONV_TAC NORM_ARITH; + SIMP_TAC[GSYM COMPLEX_VEC_0; IN_BALL] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; SIMP_TAC[CONTINUOUS_ON_EQ_CONTINUOUS_AT; OPEN_BALL] THEN DISCH_THEN(X_CHOOSE_THEN `l:complex->complex` (STRIP_ASSUME_TAC o GSYM))] THEN @@ -14682,7 +14682,7 @@ let HOLOMORPHIC_INJECTIVE_IMP_REGULAR = prove ANTS_TAC THENL [EXPAND_TAC "u" THEN REWRITE_TAC[IN_IMAGE] THEN EXISTS_TAC `z:complex` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN REWRITE_TAC[NOT_EXISTS_THM; SUBSET; IN_CBALL; dist; COMPLEX_SUB_LZERO; NORM_NEG] THEN @@ -14930,7 +14930,7 @@ let SCHWARZ_LEMMA = prove = h (Cx(&0))` THENL [CONJ_TAC THENL [GEN_TAC THEN DISCH_TAC THEN EXPAND_TAC "h" THEN COND_CASES_TAC THENL [ASM_REWRITE_TAC[COMPLEX_MUL_LZERO]; - POP_ASSUM MP_TAC THEN CONV_TAC COMPLEX_FIELD]; + POP_ASSUM MP_TAC THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]; EXPAND_TAC "h" THEN ASM_REWRITE_TAC[]];ALL_TAC] THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC POLE_THEOREM_OPEN_0 THEN EXISTS_TAC `(f:complex->complex)` THEN EXISTS_TAC `Cx(&0)` THEN @@ -14998,7 +14998,7 @@ let SCHWARZ_LEMMA = prove MP_TAC (MESON [GSYM COMPLEX_NORM_ZERO;REAL_NOT_EQ; ASSUME `norm(w:complex) =r`; ASSUME `&0 < r`] `~(w=Cx(&0))`) THEN - CONV_TAC(COMPLEX_FIELD); + (CONV_TAC "(COMPLEX_FIELD)") (COMPLEX_FIELD); ASM_REWRITE_TAC[COMPLEX_NORM_DIV] THEN MATCH_MP_TAC REAL_LT_TRANS THEN EXISTS_TAC `&1/(r:real)` THEN ASM_SIMP_TAC [REAL_LT_DIV2_EQ] THEN MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `inv (r:real)` THEN @@ -15016,7 +15016,7 @@ let SCHWARZ_LEMMA = prove [SUBGOAL_THEN `(h:complex->complex) z = f z/z` SUBST1_TAC THENL [UNDISCH_THEN `!z:complex. norm z < &1 ==> f z = z * h z` (MP_TAC o SPEC `z:complex`) THEN ASM_REWRITE_TAC[] THEN - UNDISCH_TAC `~(z = Cx(&0))` THEN CONV_TAC(COMPLEX_FIELD); + UNDISCH_TAC `~(z = Cx(&0))` THEN (CONV_TAC "(COMPLEX_FIELD)") (COMPLEX_FIELD); ASM_SIMP_TAC[COMPLEX_NORM_ZERO;REAL_DIV_REFL;COMPLEX_NORM_DIV]]; SUBGOAL_THEN `?c. (!z. norm z < &1 ==> (h:complex->complex) z = c)` STRIP_ASSUME_TAC THENL [MATCH_MP_TAC LEMMA2 @@ -15104,7 +15104,7 @@ let HOLOMORPHIC_SUBORDINATION = prove X_GEN_TAC `z:complex` THEN REWRITE_TAC[IN_BALL; dist; IN_IMAGE] THEN STRIP_TAC THEN EXISTS_TAC `(h:complex->complex) (f(z:complex))` THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN FIRST_X_ASSUM(MATCH_MP_TAC o GEN_REWRITE_RULE I [SUBSET]) THEN MATCH_MP_TAC FUN_IN_IMAGE THEN REWRITE_TAC[IN_BALL; dist] THEN ASM_REAL_ARITH_TAC; @@ -15119,7 +15119,7 @@ let HOLOMORPHIC_SUBORDINATION = prove `y:real^2 = x ==> norm(x - a) <= norm(a - y)`) THEN AP_TERM_TAC THEN AP_TERM_TAC THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE RAND_CONV [GSYM CX_INJ]) THEN - CONV_TAC COMPLEX_FIELD]]);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]]);; (* ------------------------------------------------------------------------- *) (* The Schwarz reflection principle. *) @@ -15242,7 +15242,7 @@ let HOLOMORPHIC_ON_PASTE_ACROSS_LINE = prove PATHSTART_JOIN; PATHFINISH_JOIN; PATH_IMAGE_JOIN; VALID_PATH_LINEPATH; PATHSTART_LINEPATH; PATHFINISH_LINEPATH; PATH_INTEGRAL_JOIN] - THENL [CONV_TAC COMPLEX_RING; ALL_TAC] THEN + THENL [(CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN REWRITE_TAC[PATH_IMAGE_LINEPATH; UNION_SUBSET; SUBSET_INTER] THEN ASM_SIMP_TAC[fst(EQ_IMP_RULE(SPEC_ALL CONVEX_CONTAINS_SEGMENT_EQ)); CONVEX_HALFSPACE_LE; REWRITE_RULE[real_ge] CONVEX_HALFSPACE_GE; @@ -15411,7 +15411,7 @@ let SCHWARZ_REFLECTION_UNIQUE = prove [ASM_MESON_TAC[REAL_CNJ; real]; REMOVE_THEN "*" (MP_TAC o SPEC `cnj z`) THEN ASM_SIMP_TAC[IM_CNJ; REAL_ARITH `&0 <= --z <=> ~(&0 < z)`; CNJ_CNJ] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; REMOVE_THEN "*" (MP_TAC o SPEC `z:complex`) THEN ASM_SIMP_TAC[GSYM REAL_NOT_LT; COMPLEX_SUB_0] THEN MESON_TAC[CNJ_CNJ]]] THEN @@ -15580,7 +15580,7 @@ let BLOCH_LEMMA = prove MATCH_MP_TAC REAL_LE_INV2 THEN ASM_SIMP_TAC[REAL_LT_MUL; REAL_SUB_LT; COMPLEX_NORM_MUL] THEN ASM_SIMP_TAC[REAL_LE_LMUL_EQ] THEN - UNDISCH_TAC `norm(x:complex) = R` THEN CONV_TAC NORM_ARITH; + UNDISCH_TAC `norm(x:complex) = R` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; DISCH_TAC THEN MP_TAC(ISPECL [`\x. lift(norm(z:complex) / (drop x - norm z) * C)`; `interval(lift((norm(z:complex) + r) / &2),lift r)`; `lift r`; @@ -15658,10 +15658,10 @@ let BLOCH_LEMMA = prove [`\x. inv(&2) * x pow 2`; `\x:real. x`; `&0`; `&1`] REAL_FUNDAMENTAL_THEOREM_OF_CALCULUS) THEN REWRITE_TAC[REAL_POS] THEN ANTS_TAC THENL - [REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN CONV_TAC NUM_REDUCE_CONV THEN + [REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REAL_ARITH_TAC; REWRITE_TAC[has_real_integral; o_DEF; IMAGE_LIFT_REAL_INTERVAL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_DROP; LIFT_NUM] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_DROP; LIFT_NUM] THEN DISCH_THEN(MP_TAC o SPEC `norm(z:complex) pow 2 / (r - norm z) * C` o MATCH_MP HAS_INTEGRAL_CMUL) THEN REWRITE_TAC[HAS_INTEGRAL_INTEGRABLE_INTEGRAL] THEN @@ -15768,7 +15768,7 @@ let BLOCH_LEMMA = prove `&0 < r ==> a * r - (b * r) pow 2 * x * inv r = (a - b pow 2 * x) * r`] THEN MATCH_MP_TAC REAL_EQ_IMP_LE THEN - MP_TAC(SPEC `&2` SQRT_WORKS) THEN CONV_TAC REAL_FIELD);; + MP_TAC(SPEC `&2` SQRT_WORKS) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let BLOCH_UNIT = prove (`!f a. f holomorphic_on ball(a,&1) /\ @@ -15843,7 +15843,7 @@ let BLOCH_UNIT = prove REWRITE_TAC[REAL_ARITH `a < b * c / &2 * d <=> a < (d * c) * (b / &2)`] THEN SUBGOAL_THEN `sqrt (&2) < &2113 / &1494` ASSUME_TAC THENL - [MATCH_MP_TAC REAL_LT_LSQRT THEN CONV_TAC REAL_RAT_REDUCE_CONV; + [MATCH_MP_TAC REAL_LT_LSQRT THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN SUBGOAL_THEN `&0 < &3 - &2 * sqrt(&2)` ASSUME_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN @@ -15889,7 +15889,7 @@ let BLOCH = prove MATCH_MP_TAC HAS_COMPLEX_DERIVATIVE_CDIV_AT THEN GEN_REWRITE_TAC (RATOR_CONV o LAND_CONV) [GSYM o_DEF] THEN MATCH_MP_TAC COMPLEX_DIFF_CHAIN_AT THEN CONJ_TAC THENL - [COMPLEX_DIFF_TAC THEN CONV_TAC COMPLEX_RING; ALL_TAC] THEN + [COMPLEX_DIFF_TAC THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN REWRITE_TAC[HAS_COMPLEX_DERIVATIVE_DIFFERENTIABLE] THEN FIRST_ASSUM(MATCH_MP_TAC o MATCH_MP (ONCE_REWRITE_RULE[IMP_CONJ] @@ -16016,7 +16016,7 @@ let SCHOTTKY = prove SIMP_TAC[] THEN MATCH_MP_TAC(TAUT `p /\ (q ==> r) ==> (p <=> q) ==> r`) THEN REPEAT CONJ_TAC THENL - [EXISTS_TAC `1` THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [EXISTS_TAC `1` THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[ARITH; SQRT_0; REAL_ADD_RID; LOG_1] THEN REWRITE_TAC[real_div; REAL_MUL_LZERO] THEN ASM_REAL_ARITH_TAC; MP_TAC(ISPEC `exp(x * pi)` REAL_ARCH_SIMPLE) THEN @@ -16047,8 +16047,8 @@ let SCHOTTKY = prove FIRST_ASSUM(DISJ_CASES_TAC o MATCH_MP (ARITH_RULE `0 < n ==> n = 1 \/ 2 <= n`)) THENL - [ASM_REWRITE_TAC[] THEN CONV_TAC NUM_REDUCE_CONV THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + [ASM_REWRITE_TAC[] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[SQRT_0; REAL_ADD_RID; REAL_DIV_1] THEN ONCE_REWRITE_TAC[GSYM REAL_EXP_MONO_LE] THEN SIMP_TAC[EXP_LOG; REAL_LTE_ADD; SQRT_POS_LE; REAL_POS; REAL_OF_NUM_LT; @@ -16056,7 +16056,7 @@ let SCHOTTKY = prove MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&1 + &3` THEN SIMP_TAC[REAL_EXP_LE_X; REAL_POS] THEN REWRITE_TAC[REAL_ARITH `&2 + s <= a <=> s <= a - &2`] THEN - MATCH_MP_TAC REAL_LE_LSQRT THEN CONV_TAC REAL_RAT_REDUCE_CONV; + MATCH_MP_TAC REAL_LE_LSQRT THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `log(&2)` THEN CONJ_TAC THENL [MATCH_MP_TAC LOG_MONO_LE_IMP THEN @@ -16153,7 +16153,7 @@ let SCHOTTKY = prove REPEAT(FIRST_X_ASSUM(MP_TAC o SPEC `z:complex`)) THEN ASM_REWRITE_TAC[COMPLEX_MUL_RID; COMPLEX_MUL_RNEG; CCOS_NEG; GSYM CX_COS; COS_PI; CX_NEG] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; DISCH_THEN(X_CHOOSE_THEN `g:complex->complex` STRIP_ASSUME_TAC)] THEN MAP_EVERY UNDISCH_TAC [`!z. z IN cball (Cx(&0),&1) @@ -16168,7 +16168,7 @@ let SCHOTTKY = prove FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REAL_ARITH `h <= p ==> p / &3 <= &1 + f ==> &1 + h / &3 <= &2 + f`)) THEN MP_TAC(ISPEC `&1` COMPLEX_NORM_CX) THEN - REWRITE_TAC[GSYM COMPLEX_CMUL] THEN CONV_TAC NORM_ARITH; + REWRITE_TAC[GSYM COMPLEX_CMUL] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; MAP_EVERY (C UNDISCH_THEN (K ALL_TAC)) [`h holomorphic_on cball(Cx(&0),&1)`; `norm(g(Cx(&0)):complex) <= &1 + norm(h(Cx(&0)):complex) / &3`; @@ -16210,7 +16210,7 @@ let SCHOTTKY = prove [ASM_REAL_ARITH_TAC; MAP_EVERY UNDISCH_TAC [`norm(w:complex) <= norm(z:complex)`; `norm(z:complex) <= t`] THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; MATCH_MP_TAC(SET_RULE `!t u. (!b. (?w. w IN t /\ w IN ball(b,&1)) \/ (?w. w IN u /\ w IN ball(b,&1))) /\ @@ -16240,7 +16240,7 @@ let SCHOTTKY = prove X_GEN_TAC `v:complex` THEN DISCH_TAC THEN DISCH_THEN(DISJ_CASES_TAC o MATCH_MP lemma3) THEN REPEAT(FIRST_X_ASSUM(MP_TAC o SPEC `v:complex`)) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC COMPLEX_RING]; + ASM_REWRITE_TAC[] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING]; REWRITE_TAC[REAL_ARITH `a * c / &12 < &1 <=> c * a < &12`] THEN ASM_SIMP_TAC[GSYM REAL_LT_RDIV_EQ; REAL_SUB_LT] THEN MATCH_MP_TAC (NORM_ARITH `x = y ==> norm(x) < d ==> norm(y) <= d`) THEN @@ -16287,7 +16287,7 @@ let SCHOTTKY = prove FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ] REAL_LE_TRANS)) THEN UNDISCH_TAC `norm(f(Cx(&0)):complex) <= r` THEN - CONV_TAC NORM_ARITH]);; + (CONV_TAC "NORM_ARITH") NORM_ARITH]);; (* ------------------------------------------------------------------------- *) (* The Little Picard Theorem. *) @@ -16333,7 +16333,7 @@ let LANDAU_PICARD = prove FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_SIMP_TAC[]; ALL_TAC] THEN DISCH_THEN(MP_TAC o SPEC `&1 / &2`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MP_TAC(ASSUME `(R:complex->real)(f(Cx(&0))) = r`) THEN EXPAND_TAC "R" THEN SIMP_TAC[REAL_ARITH `&3 * x = r <=> x = r / &3`] THEN @@ -16341,7 +16341,7 @@ let LANDAU_PICARD = prove MP_TAC(ISPECL [`g:complex->complex`; `Cx(&0)`; `&1 / &2`; `r / &3`; `1`] CAUCHY_INEQUALITY) THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[HIGHER_COMPLEX_DERIVATIVE_1] THEN ASM_SIMP_TAC[COMPLEX_SUB_LZERO; NORM_NEG; REAL_EQ_IMP_LE] THEN ANTS_TAC THENL @@ -16349,7 +16349,7 @@ let LANDAU_PICARD = prove [MATCH_MP_TAC HOLOMORPHIC_ON_IMP_CONTINUOUS_ON; ALL_TAC] THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ] HOLOMORPHIC_ON_SUBSET)) THEN - REWRITE_TAC[SUBSET_BALLS; DIST_REFL] THEN CONV_TAC REAL_RAT_REDUCE_CONV; + REWRITE_TAC[SUBSET_BALLS; DIST_REFL] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN SUBGOAL_THEN `complex_derivative g (Cx(&0)) = Cx r * complex_derivative f (Cx(&0))` @@ -16427,7 +16427,7 @@ let LITTLE_PICARD = prove [SET_RULE `IMAGE f UNIV INTER t = {} <=> !x. ~(f x IN t)`]) THEN MATCH_MP_TAC MONO_FORALL THEN REWRITE_TAC[CONTRAPOS_THM; IN_INSERT; NOT_IN_EMPTY] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; (* ------------------------------------------------------------------------- *) (* A couple of little applications of Little Picard. *) @@ -16451,7 +16451,7 @@ let HOLOMORPHIC_PERIODIC_FIXPOINT = prove MP_TAC(SPEC `p + p:complex` th) THEN MP_TAC(SPEC `p:complex` th)) THEN ASM_REWRITE_TAC[] THEN - UNDISCH_TAC `~(p = Cx(&0))` THEN CONV_TAC COMPLEX_RING]);; + UNDISCH_TAC `~(p = Cx(&0))` THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING]);; let HOLOMORPHIC_INVOLUTION_POINT = prove (`!f. f holomorphic_on (:complex) /\ ~(?a. f = \x. a + x) ==> ?x. f(f x) = x`, @@ -16511,7 +16511,7 @@ let HOLOMORPHIC_INVOLUTION_POINT = prove THENL [DISCH_THEN(MP_TAC o SPEC `(f:complex->complex) z`); DISCH_THEN(MP_TAC o SPEC `z:complex`)] THEN ASM_REWRITE_TAC[] THEN - UNDISCH_TAC `~(c = Cx(&1))` THEN CONV_TAC COMPLEX_RING]; + UNDISCH_TAC `~(c = Cx(&1))` THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING]; REWRITE_TAC[FUN_EQ_THM; o_THM] THEN DISCH_THEN(X_CHOOSE_TAC `k:complex`) THEN SUBGOAL_THEN `open(IMAGE (f:complex->complex) (:complex))` @@ -16545,7 +16545,7 @@ let HOLOMORPHIC_INVOLUTION_POINT = prove [ASM_MESON_TAC[HAS_COMPLEX_DERIVATIVE_DIFFERENTIABLE; HOLOMORPHIC_ON_OPEN; OPEN_UNIV; IN_UNIV; complex_differentiable]; - COMPLEX_DIFF_TAC THEN CONV_TAC COMPLEX_RING]; + COMPLEX_DIFF_TAC THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING]; DISCH_THEN(X_CHOOSE_THEN `l:complex` MP_TAC) THEN REWRITE_TAC[COMPLEX_RING `a - b:complex = c <=> a = b + c`] THEN DISCH_THEN(fun th -> RULE_ASSUM_TAC(REWRITE_RULE[th; FUN_EQ_THM])) THEN @@ -16686,7 +16686,7 @@ let MONTEL = prove MAP_EVERY UNDISCH_TAC [`norm(w - z:complex) = &2 / &3 * r`; `norm(z - y:complex) < r / &3`] THEN - CONV_TAC NORM_ARITH]; + (CONV_TAC "NORM_ARITH") NORM_ARITH]; ALL_TAC] THEN REWRITE_TAC[RIGHT_EXISTS_AND_THM] THEN DISCH_THEN(fun th -> X_GEN_TAC `f:num->complex->complex` THEN @@ -16780,11 +16780,11 @@ let MOEBIUS_FUNCTION_SIMPLE = prove let MOEBIUS_FUNCTION_EQ_ZERO = prove (`!t w. moebius_function t w w = Cx(&0)`, - REWRITE_TAC [moebius_function] THEN CONV_TAC COMPLEX_FIELD);; + REWRITE_TAC [moebius_function] THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let MOEBIUS_FUNCTION_OF_ZERO = prove (`!t w. moebius_function t w (Cx(&0)) = -- cexp(ii * Cx t) * w`, - REWRITE_TAC [moebius_function] THEN CONV_TAC COMPLEX_FIELD);; + REWRITE_TAC [moebius_function] THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let MOEBIUS_FUNCTION_NORM_LT_1 = prove (`!t w z. norm w < &1 /\ norm z < &1 @@ -16819,7 +16819,7 @@ let MOEBIUS_FUNCTION_NORM_LT_1 = prove SUBGOAL_THEN `cnj (cexp(ii * Cx t)) * (cexp(ii * Cx t)) = Cx(&1) /\ ~(Cx(&1) - cnj w * z = Cx(&0)) /\ ~(Cx(&1) - w * cnj z = Cx(&0))` - MP_TAC THENL [ALL_TAC; CONV_TAC COMPLEX_FIELD] THEN + MP_TAC THENL [ALL_TAC; (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD] THEN REWRITE_TAC [CNJ_CEXP; CNJ_MUL; CNJ_II; CNJ_CX; COMPLEX_MUL_LNEG; CEXP_NEG_LMUL] THEN ASM_REWRITE_TAC [] THEN SUBGOAL_THEN `~(cnj (Cx(&1) - cnj w * z) = Cx(&0))` MP_TAC THENL @@ -16899,7 +16899,7 @@ let MOEBIUS_FUNCTION_COMPOSE = prove CONJ_TAC THENL [ALL_TAC; MP_TAC (SPECL [`cnj w2`;`z:complex`] LEMMA_1) THEN ASM_REWRITE_TAC [COMPLEX_NORM_CNJ] THEN EXPAND_TAC "w2" THEN - REWRITE_TAC [CNJ_NEG] THEN CONV_TAC COMPLEX_FIELD] THEN + REWRITE_TAC [CNJ_NEG] THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD] THEN MATCH_MP_TAC (COMPLEX_FIELD `!a b c d. ~(d = Cx(&0)) /\ ~(d * a - b * c = Cx(&0)) ==> ~(a - b * c / d = Cx(&0))`) THEN @@ -16908,7 +16908,7 @@ let MOEBIUS_FUNCTION_COMPOSE = prove SUBGOAL_THEN `Cx(&1) - cnj w2 * z - cnj w1 * (z - w2) = Cx(&1) + cnj w1 * w2` SUBST1_TAC THENL - [EXPAND_TAC "w2" THEN REWRITE_TAC [CNJ_NEG] THEN CONV_TAC COMPLEX_RING; + [EXPAND_TAC "w2" THEN REWRITE_TAC [CNJ_NEG] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ASM_SIMP_TAC [LEMMA_1_ALT; COMPLEX_NORM_CNJ]]);; let BALL_BIHOLOMORPHISM_EXISTS = prove @@ -16975,7 +16975,7 @@ let BALL_BIHOLOMORPHISM_MOEBIUS_FUNCTION = prove COMPLEX_MUL_LNEG; COMPLEX_NEG_NEG; CEXP_NEG] THEN ABBREV_TAC `a = cexp(ii * Cx s)` THEN SUBGOAL_THEN `inv a * a = Cx(&1)` MP_TAC THENL - [ALL_TAC; CONV_TAC COMPLEX_RING] THEN + [ALL_TAC; (CONV_TAC "COMPLEX_RING") COMPLEX_RING] THEN MATCH_MP_TAC COMPLEX_MUL_LINV THEN EXPAND_TAC "a" THEN REWRITE_TAC [CEXP_NZ]]) in REWRITE_TAC [COMPLEX_IN_BALL_0] THEN REPEAT STRIP_TAC THEN @@ -17100,7 +17100,7 @@ let HURWITZ_NO_ZEROS = prove FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ_ALT] SUBSET_TRANS)) THEN REWRITE_TAC[SUBSET; IN_BALL; IN_ELIM_THM] THEN - UNDISCH_TAC `&0 < r` THEN CONV_TAC NORM_ARITH; + UNDISCH_TAC `&0 < r` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; REWRITE_TAC[bounded; FORALL_IN_IMAGE; IN_ELIM_THM] THEN MATCH_MP_TAC MONO_EXISTS THEN GEN_TAC THEN DISCH_TAC THEN MATCH_MP_TAC ALWAYS_EVENTUALLY THEN ASM_SIMP_TAC[]]; @@ -17122,7 +17122,7 @@ let HURWITZ_NO_ZEROS = prove FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ_ALT] SUBSET_TRANS)) THEN REWRITE_TAC[SUBSET; IN_BALL; IN_ELIM_THM] THEN - UNDISCH_TAC `&0 < r` THEN CONV_TAC NORM_ARITH; + UNDISCH_TAC `&0 < r` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; REWRITE_TAC[GSYM MEMBER_NOT_EMPTY; IN_ELIM_THM] THEN EXISTS_TAC `z0 + Cx(r / &2)` THEN REWRITE_TAC[VECTOR_ARITH `(a + b) - a:real^N = b`] THEN @@ -17133,7 +17133,7 @@ let HURWITZ_NO_ZEROS = prove DISCH_THEN(ASSUME_TAC o REWRITE_RULE[COMPLEX_NORM_ZERO]) THEN UNDISCH_TAC `!w. w IN ball(z0,r) ==> g w = (w - z0) pow m * h w` THEN DISCH_THEN(MP_TAC o SPEC `ww:complex`) THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN ASM_SIMP_TAC[COMPLEX_ENTIRE; COMPLEX_POW_EQ_0] THEN REWRITE_TAC[IN_BALL; GSYM COMPLEX_NORM_ZERO] THEN ASM_REWRITE_TAC[ONCE_REWRITE_RULE[DIST_SYM] dist] THEN @@ -17146,7 +17146,7 @@ let HURWITZ_NO_ZEROS = prove FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ_ALT] SUBSET_TRANS)) THEN REWRITE_TAC[SUBSET; IN_BALL; IN_CBALL; IN_ELIM_THM] THEN - UNDISCH_TAC `&0 < r` THEN CONV_TAC NORM_ARITH; + UNDISCH_TAC `&0 < r` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; REWRITE_TAC[GE; EVENTUALLY_SEQUENTIALLY; IN_CBALL; dist] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `N:num` THEN MATCH_MP_TAC MONO_FORALL THEN X_GEN_TAC `n:num` THEN @@ -17159,7 +17159,7 @@ let HURWITZ_NO_ZEROS = prove CAUCHY_HIGHER_COMPLEX_DERIVATIVE_BOUND) THEN REWRITE_TAC[HIGHER_COMPLEX_DERIVATIVE_1; COMPLEX_IN_BALL_0] THEN ANTS_TAC THENL - [CONJ_TAC THENL [ASM_REAL_ARITH_TAC; CONV_TAC NUM_REDUCE_CONV] THEN + [CONJ_TAC THENL [ASM_REAL_ARITH_TAC; (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV] THEN REPEAT CONJ_TAC THENL [ALL_TAC; MATCH_MP_TAC HOLOMORPHIC_ON_IMP_CONTINUOUS_ON; @@ -17167,7 +17167,7 @@ let HURWITZ_NO_ZEROS = prove DISCH_TAC THEN FIRST_X_ASSUM MATCH_MP_TAC THEN MAP_EVERY UNDISCH_TAC [`norm(w - z0:complex) = r / &2`; `dist(w:complex,y) < r / &4`] THEN - CONV_TAC NORM_ARITH] THEN + (CONV_TAC "NORM_ARITH") NORM_ARITH] THEN (MATCH_MP_TAC HOLOMORPHIC_ON_SUB THEN CONJ_TAC THEN MATCH_MP_TAC HOLOMORPHIC_ON_SUBSET THEN EXISTS_TAC `s:complex->bool` THEN ASM_REWRITE_TAC[ETA_AX] THEN @@ -17175,8 +17175,8 @@ let HURWITZ_NO_ZEROS = prove SUBSET_TRANS)) THEN REWRITE_TAC[SUBSET; IN_BALL; IN_CBALL; IN_ELIM_THM] THEN UNDISCH_TAC `norm(w - z0:complex) = r / &2` THEN - UNDISCH_TAC `&0 < r` THEN CONV_TAC NORM_ARITH); - CONV_TAC NUM_REDUCE_CONV THEN + UNDISCH_TAC `&0 < r` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH); + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_FIELD `&0 < r /\ &0 < e ==> &1 * (r / &4 * e / &2) / (r / &4) pow 1 = e / &2`] THEN @@ -17200,7 +17200,7 @@ let HURWITZ_NO_ZEROS = prove FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ_ALT] SUBSET_TRANS)) THEN REWRITE_TAC[SUBSET; IN_BALL; IN_ELIM_THM] THEN - UNDISCH_TAC `&0 < r` THEN CONV_TAC NORM_ARITH]; + UNDISCH_TAC `&0 < r` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]; FIRST_ASSUM(ASSUME_TAC o GEN `n:num` o MATCH_MP PATH_INTEGRAL_UNIQUE o SPEC `n:num`) THEN DISCH_THEN(MP_TAC o CONJUNCT2) THEN @@ -17222,7 +17222,7 @@ let HURWITZ_NO_ZEROS = prove SUBGOAL_THEN `w IN ball(z0:complex,r)` ASSUME_TAC THENL [REWRITE_TAC[IN_BALL] THEN MAP_EVERY UNDISCH_TAC [`norm (w - z0) = r / &2`; `&0 < r`] THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; ALL_TAC] THEN ASM_SIMP_TAC[] THEN ASM_SIMP_TAC[COMPLEX_ENTIRE; COMPLEX_POW_EQ_0; COMPLEX_SUB_0; @@ -17243,7 +17243,7 @@ let HURWITZ_NO_ZEROS = prove ASM_REWRITE_TAC[COMPLEX_SUB_0; GSYM(CONJUNCT2 complex_pow)] THEN AP_TERM_TAC THEN ASM_ARITH_TAC; MATCH_MP_TAC HAS_COMPLEX_DERIVATIVE_MUL_AT THEN CONJ_TAC THENL - [COMPLEX_DIFF_TAC THEN CONV_TAC COMPLEX_RING; + [COMPLEX_DIFF_TAC THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; REWRITE_TAC[HAS_COMPLEX_DERIVATIVE_DIFFERENTIABLE] THEN ASM_MESON_TAC[HOLOMORPHIC_ON_IMP_DIFFERENTIABLE_AT; OPEN_BALL]]]; GEN_REWRITE_TAC RAND_CONV [GSYM COMPLEX_ADD_RID] THEN @@ -17409,13 +17409,13 @@ let GREAT_PICARD,MONTEL_OMITTING = (CONJ_PAIR o prove) REWRITE_TAC[COMPLEX_MUL_ASSOC; GSYM CX_MUL] THEN ASM_SIMP_TAC[REAL_MUL_RINV; COMPLEX_NORM_MUL; REAL_LT_IMP_NZ] THEN REWRITE_TAC[COMPLEX_RING `w + Cx(&1) * (z - w) = z`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN DISCH_THEN MATCH_MP_TAC THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN MATCH_MP_TAC THEN REWRITE_TAC[COMPLEX_NORM_CX; REAL_ABS_INV] THEN ASM_SIMP_TAC[real_abs; REAL_LT_IMP_LE] THEN ONCE_REWRITE_TAC[REAL_ARITH `inv e * x:real = x / e`] THEN ASM_SIMP_TAC[REAL_LE_LDIV_EQ] THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [IN_BALL]) THEN - CONV_TAC NORM_ARITH]) in + (CONV_TAC "NORM_ARITH") NORM_ARITH]) in let lemma2 = prove (`!s t:real^N->bool. connected t /\ ~(s = {}) /\ s SUBSET t /\ open s /\ @@ -17682,7 +17682,7 @@ let GREAT_PICARD,MONTEL_OMITTING = (CONJ_PAIR o prove) STRIP_ASSUME_TAC THENL [EXISTS_TAC `Cx(&1 / &2)` THEN REWRITE_TAC[IN_DELETE; COMPLEX_IN_BALL_0; COMPLEX_NORM_CX; CX_INJ] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN MP_TAC(ISPECL [`{g | g holomorphic_on ball(Cx(&0),&1) DELETE Cx(&0) /\ @@ -17717,7 +17717,7 @@ let GREAT_PICARD,MONTEL_OMITTING = (CONJ_PAIR o prove) (ANTS_TAC THENL [REWRITE_TAC[SUBSET; COMPLEX_IN_SPHERE_0; IN_DELETE; COMPLEX_IN_BALL_0; COMPACT_SPHERE; GSYM COMPLEX_NORM_NZ] THEN - SIMP_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV; + SIMP_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC]) THEN REWRITE_TAC[IMP_CONJ; RIGHT_FORALL_IMP_THM; FORALL_IN_GSPEC] THEN EXPAND_TAC "h" THEN REWRITE_TAC[] THEN @@ -17765,7 +17765,7 @@ let GREAT_PICARD,MONTEL_OMITTING = (CONJ_PAIR o prove) [`n:num`; `Cx(&(r(n:num)) + &1) * z`]) THEN ASM_REWRITE_TAC[COMPLEX_IN_SPHERE_0; COMPLEX_NORM_MUL; COMPLEX_NORM_CX; REAL_ARITH `abs(&n + &1) = &n + &1`] THEN - ANTS_TAC THENL [CONV_TAC REAL_FIELD; ALL_TAC] THEN + ANTS_TAC THENL [(CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN MATCH_MP_TAC(NORM_ARITH `x = y ==> norm x <= b ==> norm y <= abs b + &1`) THEN REPEAT AP_TERM_TAC THEN MATCH_MP_TAC(COMPLEX_FIELD @@ -18038,7 +18038,7 @@ let GREAT_PICARD,MONTEL_OMITTING = (CONJ_PAIR o prove) SUBST1_TAC(COMPLEX_FIELD `Cx(&0) = Cx(&0) / (Cx(&1) + a * Cx(&0))`) THEN MATCH_MP_TAC LIM_COMPLEX_DIV THEN REPEAT CONJ_TAC THENL - [ASM_MESON_TAC[]; ALL_TAC; CONV_TAC COMPLEX_RING] THEN + [ASM_MESON_TAC[]; ALL_TAC; (CONV_TAC "COMPLEX_RING") COMPLEX_RING] THEN MATCH_MP_TAC LIM_ADD THEN REWRITE_TAC[LIM_CONST] THEN MATCH_MP_TAC LIM_COMPLEX_MUL THEN REWRITE_TAC[LIM_CONST] THEN ASM_MESON_TAC[]]; @@ -18125,7 +18125,7 @@ let GREAT_PICARD,MONTEL_OMITTING = (CONJ_PAIR o prove) (REWRITE_RULE[IMP_CONJ_ALT] REAL_LT_INV2)) THEN REWRITE_TAC[REAL_INV_INV; REAL_LT_INV_EQ; COMPLEX_NORM_NZ] THEN REWRITE_TAC[COMPLEX_SUB_0] THEN - ANTS_TAC THENL [ASM SET_TAC[]; CONV_TAC NORM_ARITH]; + ANTS_TAC THENL [ASM SET_TAC[]; (CONV_TAC "NORM_ARITH") NORM_ARITH]; DISCH_THEN(X_CHOOSE_THEN `g:complex->complex` STRIP_ASSUME_TAC) THEN MATCH_MP_TAC(MESON[] `(!g. R g ==> Q g) /\ (?g. P g /\ R g) ==> ?g. P g /\ Q g /\ R g`) THEN @@ -18373,7 +18373,7 @@ let [SIMPLY_CONNECTED_EQ_WINDING_NUMBER_ZERO; VALID_PATH_LINEPATH; VALID_PATH_REVERSEPATH; UNION_SUBSET; PATH_INTEGRAL_JOIN; PATH_INTEGRABLE_JOIN; PATH_INTEGRABLE_REVERSEPATH; PATH_INTEGRAL_REVERSEPATH] THEN - REWRITE_TAC[COMPLEX_VEC_0] THEN CONV_TAC COMPLEX_RING; + REWRITE_TAC[COMPLEX_VEC_0] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; REWRITE_TAC[LIM_AT] THEN X_GEN_TAC `e:real` THEN DISCH_TAC THEN SUBGOAL_THEN `(f:complex->complex) continuous at x` MP_TAC THENL [ASM_MESON_TAC[HOLOMORPHIC_ON_IMP_CONTINUOUS_ON; @@ -18477,7 +18477,7 @@ let [SIMPLY_CONNECTED_EQ_WINDING_NUMBER_ZERO; REWRITE_TAC[HOLOMORPHIC_ON_CEXP] THEN MATCH_MP_TAC HOLOMORPHIC_ON_DIV THEN ASM_SIMP_TAC[HOLOMORPHIC_ON_CONST] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; MATCH_MP_TAC MONO_AND THEN REWRITE_TAC[] THEN MATCH_MP_TAC MONO_FORALL THEN MESON_TAC[]; @@ -19009,19 +19009,19 @@ let [SIMPLY_CONNECTED_EQ_WINDING_NUMBER_ZERO; W(MP_TAC o PART_MATCH (lhand o rand) th o lhand o lhand o snd)) THEN REWRITE_TAC[COMPLEX_NORM_DIV; COMPLEX_NORM_CX; NORM_NEG] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN DISCH_THEN SUBST1_TAC THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN SUBST1_TAC THEN MATCH_MP_TAC(COMPLEX_RING `x = --(Cx(&1) / Cx(&2)) ==> ~(Cx(&1) / Cx(&2) = x)`) THEN FIRST_X_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[COMPLEX_NORM_DIV; COMPLEX_NORM_CX; NORM_NEG] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; REWRITE_TAC[o_DEF] THEN AP_TERM_TAC THEN MATCH_MP_TAC(COMPLEX_RING `x = Cx(&1) / Cx(&2) /\ y = --(Cx(&1) / Cx(&2)) ==> x pow 2 = y pow 2`) THEN CONJ_TAC THEN FIRST_X_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[COMPLEX_NORM_DIV; COMPLEX_NORM_CX; NORM_NEG] THEN - CONV_TAC REAL_RAT_REDUCE_CONV]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]; REWRITE_TAC[GSYM REAL_LT_LE] THEN DISCH_TAC THEN UNDISCH_TAC `&1 <= norm (complex_derivative f (Cx(&0)))` THEN SUBGOAL_THEN @@ -19569,7 +19569,7 @@ let SIMPLY_CONNECTED_EQ_CONTINUOUS_LOG,SIMPLY_CONNECTED_EQ_CONTINUOUS_SQRT = REWRITE_TAC[CONTINUOUS_ON_CEXP] THEN MATCH_MP_TAC CONTINUOUS_ON_COMPLEX_DIV THEN ASM_SIMP_TAC[CONTINUOUS_ON_CONST] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; DISCH_TAC THEN ASM_SIMP_TAC[SIMPLY_CONNECTED_EQ_HOLOMORPHIC_SQRT] THEN X_GEN_TAC `f:complex->complex` THEN STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o SPEC `f:complex->complex`) THEN @@ -19684,7 +19684,7 @@ let WINDING_NUMBER_COMPOSE_CEXP = prove ASM_REWRITE_TAC[REAL_LT_MIN; REAL_LT_01; LEFT_IMP_EXISTS_THM] THEN X_GEN_TAC `g:real^1->complex` THEN STRIP_TAC THEN MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `winding_number(cexp o g,Cx(&0))` THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC WINDING_NUMBER_NEARBY_PATHS_EQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC WINDING_NUMBER_NEARBY_PATHS_EQ THEN ASM_SIMP_TAC[PATH_CONTINUOUS_IMAGE; CONTINUOUS_ON_CEXP; PATH_VECTOR_POLYNOMIAL_FUNCTION] THEN ASM_REWRITE_TAC[PATHSTART_COMPOSE; PATHFINISH_COMPOSE] THEN @@ -19734,7 +19734,7 @@ let WINDING_NUMBER_COMPOSE_CEXP = prove REWRITE_TAC[has_vector_derivative; o_DEF] THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[FUN_EQ_THM; COMPLEX_CMUL] THEN - CONV_TAC COMPLEX_RING]; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING]; MP_TAC(ISPECL [`g:real^1->complex`; `\x. vector_derivative (g:real^1->complex) (at x)`; `vec 0:real^1`; `vec 1:real^1`] @@ -19830,7 +19830,7 @@ let MONODROMY_CONTINUOUS_LOG = prove `path p /\ path_image p SUBSET c /\ pathstart p = z0 /\ pathfinish p = (z:complex)` STRIP_ASSUME_TAC THENL - [EXPAND_TAC "p" THEN CONV_TAC SELECT_CONV THEN + [EXPAND_TAC "p" THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN FIRST_X_ASSUM(MATCH_MP_TAC o REWRITE_RULE[path_connected]) THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN @@ -19844,7 +19844,7 @@ let MONODROMY_CONTINUOUS_LOG = prove REWRITE_TAC[GSYM path_image] THEN ASM SET_TAC[]]; ASM_REWRITE_TAC[PATHSTART_COMPOSE; PATHFINISH_COMPOSE] THEN REWRITE_TAC[COMPLEX_SUB_RZERO] THEN DISCH_THEN SUBST1_TAC THEN - AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC CEXP_CLOG THEN + AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CEXP_CLOG THEN ASM SET_TAC[]]] THEN MATCH_MP_TAC CONTINUOUS_ON_COMPONENTS_OPEN THEN ASM_REWRITE_TAC[] THEN X_GEN_TAC `c:complex->bool` THEN DISCH_TAC THEN @@ -19857,7 +19857,7 @@ let MONODROMY_CONTINUOUS_LOG = prove clog(f(z0:complex))` THEN EXISTS_TAC `g:complex->complex` THEN REWRITE_TAC[] THEN CONJ_TAC THENL [X_GEN_TAC `z:complex` THEN DISCH_TAC THEN EXPAND_TAC "g" THEN - CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN EXPAND_TAC "z0" THEN + (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN EXPAND_TAC "z0" THEN SUBGOAL_THEN `connected_component s (z:complex) = c` (fun th -> REWRITE_TAC[th]) THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [IN_COMPONENTS]) THEN @@ -19887,8 +19887,8 @@ let MONODROMY_CONTINUOUS_LOG = prove ABBREV_TAC `p = @p. path p /\ path_image p SUBSET c /\ pathstart p = z0 /\ pathfinish p = (z:complex)` THEN EXISTS_TAC `p:real^1->complex` THEN - CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN REWRITE_TAC[] THEN - EXPAND_TAC "p" THEN CONV_TAC SELECT_CONV THEN + (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN REWRITE_TAC[] THEN + EXPAND_TAC "p" THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN FIRST_X_ASSUM(MATCH_MP_TAC o GEN_REWRITE_RULE I [path_connected]) THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN @@ -20083,7 +20083,7 @@ let WINDING_NUMBER_AS_CONTINUOUS_LOGARITHM = prove `u:real^1`; `z:complex`] WINDING_NUMBER_SUBPATH_COMBINE) THEN ASM_REWRITE_TAC[ENDS_IN_UNIT_INTERVAL] THEN - CONV_TAC COMPLEX_RING]; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING]; REWRITE_TAC[COMPLEX_VEC_0] THEN MATCH_MP_TAC LIM_NULL_COMPLEX_LMUL THEN REWRITE_TAC[PATHSTART_COMPOSE; PATHSTART_SUBPATH; PATHFINISH_COMPOSE; PATHFINISH_SUBPATH] THEN @@ -20346,8 +20346,8 @@ let FINITE_ORDER_FUNDAMENTAL_GROUP_IMP_BORSUKIAN = prove W(MP_TAC o PART_MATCH (lhand o rand) WINDING_NUMBER_JOIN o lhand o snd) THEN ASM_REWRITE_TAC[CX_ADD; GSYM REAL_OF_NUM_SUC] THEN - ANTS_TAC THENL [ALL_TAC; CONV_TAC COMPLEX_RING] THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + ANTS_TAC THENL [ALL_TAC; (CONV_TAC "COMPLEX_RING") COMPLEX_RING] THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN SPEC_TAC(`n:num`,`n:num`) THEN INDUCT_TAC THEN ASM_SIMP_TAC[ITER; PATH_JOIN; PATHSTART_JOIN; PATH_IMAGE_JOIN] THEN ASM SET_TAC[]) in @@ -20360,7 +20360,7 @@ let FINITE_ORDER_FUNDAMENTAL_GROUP_IMP_BORSUKIAN = prove COVERING_SPACE_CEXP_PUNCTURED_PLANE)) THEN ASM_REWRITE_TAC[SUBSET_UNIV; IN_UNIV] THEN ANTS_TAC THENL [ALL_TAC; MESON_TAC[]] THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC CEXP_CLOG THEN ASM SET_TAC[]; + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CEXP_CLOG THEN ASM SET_TAC[]; ALL_TAC] THEN X_GEN_TAC `p:real^1->real^N` THEN STRIP_TAC THEN EXISTS_TAC `(f:real^N->complex) a` THEN @@ -20454,7 +20454,7 @@ let FINITE_FUNDAMENTAL_GROUP_IMP_BORSUKIAN = prove [ASM_MESON_TAC[HOMOTOPIC_PATHS_RID; HOMOTOPIC_PATHS_SYM]; MATCH_MP_TAC HOMOTOPIC_PATHS_JOIN THEN ASM_REWRITE_TAC[HOMOTOPIC_PATHS_REFL] THEN - CONV_TAC SYM_CONV THEN SPEC_TAC(`q:num`,`k:num`) THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN SPEC_TAC(`q:num`,`k:num`) THEN INDUCT_TAC THEN ASM_REWRITE_TAC[ITER; PATHSTART_JOIN]]; FIRST_X_ASSUM(MP_TAC o C AP_THM `ITER m ((++) p) (linepath(a:real^N,a))`) THEN @@ -20663,7 +20663,7 @@ let TORHORST_CONFORMAL_EXTENSION_THEOREM = prove (MP_TAC o GEN_REWRITE_RULE RAND_CONV [SEGMENT_CLOSED_OPEN]) THEN ASM_REWRITE_TAC[IN_UNION; IN_INSERT; NOT_IN_EMPTY] THEN DISCH_THEN(MP_TAC o MATCH_MP DIST_IN_OPEN_SEGMENT) THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; REPEAT(MATCH_MP_TAC CONNECTED_UNION THEN REWRITE_TAC[CONNECTED_SEGMENT] THEN CONJ_TAC THEN ASM_REWRITE_TAC[]) THEN @@ -20699,11 +20699,11 @@ let TORHORST_CONFORMAL_EXTENSION_THEOREM = prove EXISTS_TAC `setdist({(f:complex->complex)(Cx(&0))},frontier s) * &2` THEN CONJ_TAC THENL [MESON_TAC[REAL_LTE_TRANS]; ALL_TAC] THEN SIMP_TAC[REAL_ARITH `a < b * &2 <=> a / &2 < b`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[SETDIST_POS_LT; SETDIST_EQ_0_SING] THEN SUBGOAL_THEN `~(s:complex->bool = {})` ASSUME_TAC THENL [EXPAND_TAC "s" THEN REWRITE_TAC[IMAGE_EQ_EMPTY; BALL_EQ_EMPTY] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN SUBGOAL_THEN `~(frontier s:complex->bool = {})` ASSUME_TAC THENL [ASM_REWRITE_TAC[FRONTIER_EQ_EMPTY] THEN ASM_MESON_TAC[NOT_BOUNDED_UNIV]; @@ -20740,7 +20740,7 @@ let TORHORST_CONFORMAL_EXTENSION_THEOREM = prove STRIP_ASSUME_TAC THENL [REWRITE_TAC[GSYM REAL_LT_MIN; GSYM REAL_LT_BETWEEN] THEN ASM_REWRITE_TAC[REAL_LT_MIN; REAL_EXP_POS_LT] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN EXISTS_TAC `k:real` THEN ASM_REWRITE_TAC[] THEN MAP_EVERY X_GEN_TAC [`z:complex`; `z':complex`] THEN STRIP_TAC THEN @@ -20767,7 +20767,7 @@ let TORHORST_CONFORMAL_EXTENSION_THEOREM = prove REWRITE_TAC[HAS_INTEGRAL_INTEGRABLE_INTEGRAL]] THEN MATCH_MP_TAC MONO_AND THEN CONJ_TAC THENL [MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] INTEGRABLE_EQ); - DISCH_THEN SUBST1_TAC THEN CONV_TAC SYM_CONV THEN + DISCH_THEN SUBST1_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_EQ] THEN X_GEN_TAC `w:complex` THEN DISCH_TAC THEN REWRITE_TAC[] THEN AP_TERM_TAC THEN REWRITE_TAC[COMPLEX_SQNORM; DET_2; matrix] THEN @@ -20879,7 +20879,7 @@ let TORHORST_CONFORMAL_EXTENSION_THEOREM = prove `interval[vec 0,lift(&2 * pi)]`] ABSOLUTELY_INTEGRABLE_SQUARE_INTEGRABLE_PRODUCT) THEN ASM_REWRITE_TAC[NORM_1; LIFT_DROP; NORM_LIFT; DROP_VEC; o_THM] THEN - REWRITE_TAC[REAL_ABS_NORM] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[REAL_ABS_NORM] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_NUM; REAL_MUL_LID; MEASURABLE_ON_CONST_EQ] THEN REWRITE_TAC[INTEGRABLE_ON_CONST; INTEGRAL_CONST] THEN REWRITE_TAC[LEBESGUE_MEASURABLE_INTERVAL; MEASURABLE_INTERVAL] THEN @@ -21036,7 +21036,7 @@ let TORHORST_CONFORMAL_EXTENSION_THEOREM = prove [UNDISCH_TAC `(z:complex) IN A` THEN ONCE_REWRITE_TAC[GSYM CONTRAPOS_THM] THEN EXPAND_TAC "A" THEN SIMP_TAC[IN_ELIM_THM; COMPLEX_NORM_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN SUBGOAL_THEN `r < &1 / &2` ASSUME_TAC THENL [TRANS_TAC REAL_LTE_TRANS `sqrt k` THEN ASM_REWRITE_TAC[] THEN @@ -21198,7 +21198,7 @@ let TORHORST_CONFORMAL_EXTENSION_THEOREM = prove ASM_SIMP_TAC[dist; COMPLEX_SUB_RZERO; DE_MORGAN_THM] THEN UNDISCH_TAC `(z:complex) IN A` THEN EXPAND_TAC "A" THEN REWRITE_TAC[IN_ELIM_THM] THEN ASM_REAL_ARITH_TAC; - CONV_TAC(LAND_CONV HAS_SIZE_CONV)] THEN + (CONV_TAC "(LAND_CONV HAS_SIZE_CONV)") (LAND_CONV HAS_SIZE_CONV)] THEN SUBST1_TAC(SYM(ASSUME `path_image g = sphere(z:complex,r)`)) THEN REWRITE_TAC[path_image] THEN DISCH_THEN(MP_TAC o MATCH_MP lemma) THEN REWRITE_TAC[RIGHT_EXISTS_AND_THM; EXISTS_IN_IMAGE] THEN @@ -21495,7 +21495,7 @@ let TORHORST_CONFORMAL_EXTENSION_THEOREM = prove [MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] ABSOLUTELY_INTEGRABLE_EQ); MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN AP_TERM_TAC THEN MATCH_MP_TAC INTEGRAL_EQ] THEN - REWRITE_TAC[] THEN REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[] THEN REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REPEAT AP_TERM_TAC THEN MATCH_MP_TAC HAS_VECTOR_DERIVATIVE_UNIQUE_AT THEN ASM_SIMP_TAC[]] THEN REWRITE_TAC[ABSOLUTELY_INTEGRABLE_MEASURABLE; GSYM CONJ_ASSOC] THEN @@ -21551,7 +21551,7 @@ let TORHORST_CONFORMAL_EXTENSION_THEOREM = prove MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN AP_TERM_TAC THEN MATCH_MP_TAC INTEGRAL_EQ] THEN REWRITE_TAC[] THEN X_GEN_TAC `t:real^1` THEN STRIP_TAC THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[o_DEF] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[o_DEF] THEN AP_TERM_TAC THEN AP_TERM_TAC THEN (SUBGOAL_THEN `g(t:real^1) IN ball(Cx(&0),&1)` MP_TAC THENL [FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (SET_RULE @@ -21695,7 +21695,7 @@ let TORHORST_CONFORMAL_EXTENSION_THEOREM = prove AP_TERM_TAC THEN REWRITE_TAC[GSYM INTEGRAL_TRANSLATION] THEN MATCH_MP_TAC INTEGRAL_EQ] THEN X_GEN_TAC `x:real^1` THEN DISCH_TAC THEN REWRITE_TAC[] THEN - REPLICATE_TAC 4 AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + REPLICATE_TAC 4 AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[CEXP_EQ] THEN EXISTS_TAC `floor(u / (&2 * pi))` THEN REWRITE_TAC[FLOOR] THEN MATCH_MP_TAC(COMPLEX_RING `y + x = z ==> ii * z = ii * x + y * ii`) THEN @@ -21984,7 +21984,7 @@ let TORHORST_CONFORMAL_EXTENSION_THEOREM = prove `{a,b} SUBSET interval[a,b] /\ ~(a = b) ==> ~(?c. interval[a,b] = {c})`) THEN REWRITE_TAC[ENDS_IN_UNIT_INTERVAL; INSERT_SUBSET; EMPTY_SUBSET] THEN - REWRITE_TAC[VEC_EQ] THEN CONV_TAC NUM_REDUCE_CONV; + REWRITE_TAC[VEC_EQ] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; MATCH_MP_TAC LIM_TRANSFORM_EQ THEN MATCH_MP_TAC LIM_EVENTUALLY THEN REWRITE_TAC[EVENTUALLY_WITHIN] THEN EXISTS_TAC `&1` THEN REWRITE_TAC[REAL_LT_01; IN_INTERVAL_1; DIST_0; DROP_VEC; NORM_REAL] THEN @@ -21994,7 +21994,7 @@ let TORHORST_CONFORMAL_EXTENSION_THEOREM = prove ASM_REWRITE_TAC[VECTOR_SUB_EQ] THEN STRIP_TAC THEN TRANS_TAC EQ_TRANS `(f':complex->complex)(f((g:real^1->complex) x))` THEN CONJ_TAC THENL - [AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC; + [AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC; FIRST_X_ASSUM MATCH_MP_TAC THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (SET_RULE `IMAGE g i SUBSET b ==> x IN i ==> g x IN b`))] THEN ASM_REWRITE_TAC[IN_INTERVAL_1; DROP_VEC] THEN ASM_REAL_ARITH_TAC; @@ -22046,7 +22046,7 @@ let TORHORST_CONFORMAL_EXTENSION_THEOREM = prove STRIP_ASSUME_TAC THENL [REWRITE_TAC[EXISTS_IN_INSERT; NOT_IN_EMPTY; IN_BALL] THEN UNDISCH_TAC `e <= dist((f:complex->complex) z',f z)` THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; ALL_TAC] THEN MP_TAC(ISPECL [`B:complex->bool`; `(:complex) DIFF s`; `c:complex`; @@ -22211,7 +22211,7 @@ let CARATHEODORY_CONFORMAL_EXTENSION_LEMMA = prove ASM_SIMP_TAC[GSYM BALL_UNION_SPHERE; SET_RULE `~(a IN IMAGE f s) ==> {x | x IN b UNION s /\ f x = a} = {x | x IN b /\ f x = a}`] THEN - CONV_TAC HAS_SIZE_CONV THEN EXISTS_TAC `(f':complex->complex) a` THEN + (CONV_TAC "HAS_SIZE_CONV") HAS_SIZE_CONV THEN EXISTS_TAC `(f':complex->complex) a` THEN ASM SET_TAC[]]; ALL_TAC] THEN SUBGOAL_THEN `(a:complex) IN frontier s` ASSUME_TAC THENL @@ -22219,7 +22219,7 @@ let CARATHEODORY_CONFORMAL_EXTENSION_LEMMA = prove ASM_SIMP_TAC[GSYM BALL_UNION_SPHERE; SET_RULE `~(a IN IMAGE f b) ==> {x | x IN b UNION s /\ f x = a} = {x | x IN s /\ f x = a}`] THEN - CONV_TAC(LAND_CONV HAS_SIZE_CONV) THEN EQ_TAC THENL + (CONV_TAC "(LAND_CONV HAS_SIZE_CONV)") (LAND_CONV HAS_SIZE_CONV) THEN EQ_TAC THENL [DISCH_THEN(X_CHOOSE_THEN `u:complex` MP_TAC) THEN DISCH_THEN(MP_TAC o MATCH_MP (SET_RULE `{x | x IN s /\ f x = y} = {a} @@ -22318,7 +22318,7 @@ let CARATHEODORY_CONFORMAL_EXTENSION_LEMMA = prove AFF_DIM_EQ_AFFINE_HULL) THEN ASM_REWRITE_TAC[AFF_DIM_2; INSERT_SUBSET; EMPTY_SUBSET] THEN ASM_SIMP_TAC[AFFINE_HYPERPLANE; AFF_DIM_HYPERPLANE; HULL_P] THEN - REWRITE_TAC[DIMINDEX_2] THEN CONV_TAC INT_REDUCE_CONV THEN ANTS_TAC THENL + REWRITE_TAC[DIMINDEX_2] THEN (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN ANTS_TAC THENL [ASM_MESON_TAC[SUBSET; ENDS_IN_SEGMENT]; DISCH_THEN SUBST1_TAC] THEN DISCH_TAC THEN MAP_EVERY ABBREV_TAC @@ -22473,7 +22473,7 @@ let CARATHEODORY_CONFORMAL_EXTENSION_LEMMA = prove ==> ~(!x. x IN b UNION s ==> f x = a)`)) THEN MAP_EVERY EXISTS_TAC [`Cx(&0)`; `Cx(&1 / &2)`] THEN REWRITE_TAC[COMPLEX_IN_BALL_0; CX_INJ; COMPLEX_NORM_CX] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC]) THEN ONCE_REWRITE_TAC[INTER_COMM] THEN SIMP_TAC[GSYM FRONTIER_BALL; REAL_LT_01] THEN @@ -22569,7 +22569,7 @@ let CARATHEODORY_CONFORMAL_EXTENSION_THEOREM,JORDAN_SCHOENFLIES_CIRCLE = FIRST_ASSUM(MP_TAC o MATCH_MP INTERIOR_INSIDE_FRONTIER) THEN ASM_SIMP_TAC[INTERIOR_OPEN; SUBSET_EMPTY] THEN EXPAND_TAC "s" THEN REWRITE_TAC[IMAGE_EQ_EMPTY; BALL_EQ_EMPTY] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN EXISTS_TAC `f:complex->complex` THEN ASM_REWRITE_TAC[] THEN SUBGOAL_THEN @@ -22804,7 +22804,7 @@ let CARATHEODORY_CONFORMAL_EXTENSION_THEOREM,JORDAN_SCHOENFLIES_CIRCLE = MP_TAC THENL [ASM_SIMP_TAC[GSYM FRONTIER_UNION_INTERIOR; IN_UNION] THEN TRANS_TAC EQ_TRANS `(g:complex->complex)(h(y:complex))` THEN - CONJ_TAC THEN CONV_TAC SYM_CONV THEN + CONJ_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM SET_TAC[]; DISCH_THEN(MP_TAC o AP_TERM `h':complex->complex`) THEN MATCH_MP_TAC EQ_IMP THEN BINOP_TAC THEN @@ -23151,7 +23151,7 @@ let CARATHEODORY_CONFORMAL_EXTENSION_THEOREM,JORDAN_SCHOENFLIES_CIRCLE = REWRITE_TAC[NORM_MUL; COMPLEX_IN_CBALL_0; COMPLEX_IN_BALL_0] THEN REWRITE_TAC[REAL_ABS_POW; REAL_ABS_INV; REAL_ABS_NORM] THEN REWRITE_TAC[GSYM COMPLEX_VEC_0; VECTOR_MUL_EQ_0; REAL_POW_EQ_0] THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[REAL_INV_EQ_0; NORM_EQ_0] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[REAL_INV_EQ_0; NORM_EQ_0] THEN REWRITE_TAC[REAL_NOT_LE; REAL_NOT_LT] THEN SIMP_TAC[NORM_EQ_0; REAL_FIELD `~(n = &0) ==> inv n pow 2 * n = inv n`; REAL_FIELD `&1 <= n ==> inv n pow 2 * n = inv n`; @@ -23161,11 +23161,11 @@ let CARATHEODORY_CONFORMAL_EXTENSION_THEOREM,JORDAN_SCHOENFLIES_CIRCLE = CONJ_TAC THEN X_GEN_TAC `x:complex` THEN ASM_CASES_TAC `x:complex = vec 0` THEN ASM_REWRITE_TAC[NORM_0; VECTOR_MUL_RZERO] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN GEN_REWRITE_TAC RAND_CONV [GSYM VECTOR_MUL_LID] THEN REWRITE_TAC[VECTOR_MUL_ASSOC; VECTOR_MUL_RCANCEL] THEN DISJ1_TAC THEN UNDISCH_TAC `~(x:complex = vec 0)` THEN REWRITE_TAC[GSYM NORM_EQ_0] THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN REPEAT CONJ_TAC THENL [GEN_REWRITE_TAC (RAND_CONV o LAND_CONV) [o_ASSOC] THEN @@ -23182,7 +23182,7 @@ let CARATHEODORY_CONFORMAL_EXTENSION_THEOREM,JORDAN_SCHOENFLIES_CIRCLE = ONCE_REWRITE_TAC[GSYM CONTRAPOS_THM] THEN SIMP_TAC[COMPLEX_NORM_ZERO; IN_DIFF; IN_UNIV; IN_DELETE] THEN REWRITE_TAC[CENTRE_IN_BALL; CENTRE_IN_CBALL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN ONCE_REWRITE_TAC[CONJ_ASSOC] THEN CONJ_TAC THENL [MATCH_MP_TAC(SET_RULE @@ -23196,12 +23196,12 @@ let CARATHEODORY_CONFORMAL_EXTENSION_THEOREM,JORDAN_SCHOENFLIES_CIRCLE = GSYM COMPLEX_VEC_0] THEN ASM_CASES_TAC `x:complex = vec 0` THEN ASM_REWRITE_TAC[CENTRE_IN_CBALL; CENTRE_IN_BALL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN DISCH_THEN(K ALL_TAC)] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(K ALL_TAC)] THEN GEN_REWRITE_TAC RAND_CONV [GSYM VECTOR_MUL_LID] THEN REWRITE_TAC[VECTOR_MUL_ASSOC; VECTOR_MUL_RCANCEL] THEN DISJ1_TAC THEN REWRITE_TAC[NORM_MUL; REAL_ABS_POW; REAL_ABS_INV; REAL_ABS_NORM] THEN UNDISCH_TAC `~(x:complex = vec 0)` THEN - REWRITE_TAC[GSYM NORM_EQ_0] THEN CONV_TAC REAL_FIELD; + REWRITE_TAC[GSYM NORM_EQ_0] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; MATCH_MP_TAC HOMEOMORPHISM_COMPOSE THEN EXISTS_TAC `closure(inside(path_image q)) DELETE Cx(&0)` THEN CONJ_TAC THENL [ALL_TAC; ASM_MESON_TAC[HOMEOMORPHISM_SYM]] THEN @@ -23353,7 +23353,7 @@ let CARATHEODORY_CONFORMAL_EXTENSION_THEOREM,JORDAN_SCHOENFLIES_CIRCLE = FIRST_ASSUM(MP_TAC o MATCH_MP INTERIOR_INSIDE_FRONTIER) THEN ASM_SIMP_TAC[INTERIOR_OPEN; SUBSET_EMPTY] THEN EXPAND_TAC "s" THEN REWRITE_TAC[IMAGE_EQ_EMPTY; BALL_EQ_EMPTY] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN MP_TAC(ISPEC `p:real^1->real^2` JORDAN_INSIDE_OUTSIDE) THEN ASM_REWRITE_TAC[] THEN STRIP_TAC THEN diff --git a/Multivariate/clifford.ml b/Multivariate/clifford.ml index 75112fc6..0dd6dfe4 100644 --- a/Multivariate/clifford.ml +++ b/Multivariate/clifford.ml @@ -53,7 +53,7 @@ let CARD_UNION_LEMMA = prove let CARD_DIFF_INTER = prove (`!s t. FINITE s ==> CARD s = CARD(s DIFF t) + CARD(s INTER t)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC CARD_UNION_EQ THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CARD_UNION_EQ THEN ASM_REWRITE_TAC[] THEN SET_TAC[]);; let CARD_ADD_SYMDIFF_INTER = prove @@ -512,12 +512,12 @@ let GEOM_ASSOC = prove EXISTS_TAC(end_itlist (curry mk_eq) [st; su; tu])) THEN CONJ_TAC THENL [MATCH_MP_TAC(TAUT `(x <=> y <=> z) ==> ((a <=> x) <=> (y <=> z <=> a))`); - AP_TERM_TAC THEN CONV_TAC SYM_CONV] THEN + AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV] THEN MATCH_MP_TAC SYMDIFF_PARITY_LEMMA THEN REWRITE_TAC[FINITE_CART_SUBSET_LEMMA] THEN REWRITE_TAC[EXTENSION; FORALL_PAIR_THM; IN_ELIM_PAIR_THM; IN_UNION; IN_DIFF] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; (* ------------------------------------------------------------------------- *) (* Outer product. *) @@ -909,7 +909,7 @@ let seqiterate_EXISTS = prove REPEAT GEN_TAC THEN REWRITE_TAC[INFINITE] THEN MATCH_MP_TAC(MATCH_MP WF_REC (ISPEC `CARD:(num->bool)->num` WF_MEASURE)) THEN REPEAT STRIP_TAC THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN - LET_TAC THEN CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN + LET_TAC THEN (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN AP_TERM_TAC THEN FIRST_X_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[MEASURE] THEN RULE_ASSUM_TAC(REWRITE_RULE[DE_MORGAN_THM]) THEN diff --git a/Multivariate/complexes.ml b/Multivariate/complexes.ml index db1b4bb1..713e871e 100644 --- a/Multivariate/complexes.ml +++ b/Multivariate/complexes.ml @@ -123,7 +123,7 @@ let COMPLEX = prove let COMPLEX_EQ_0 = prove (`z = Cx(&0) <=> Re(z) pow 2 + Im(z) pow 2 = &0`, REWRITE_TAC[COMPLEX_EQ; CX_DEF; RE; IM] THEN - EQ_TAC THEN SIMP_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + EQ_TAC THEN SIMP_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(MP_TAC o MATCH_MP (REAL_ARITH `!x y:real. x + y = &0 ==> &0 <= x /\ &0 <= y ==> x = &0 /\ y = &0`)) THEN REWRITE_TAC[REAL_POW_2; REAL_LE_SQUARE; REAL_ENTIRE]);; @@ -170,7 +170,7 @@ let SIMPLE_COMPLEX_ARITH_TAC = REWRITE_TAC[COMPLEX_EQ; RE; IM; CX_DEF; complex_add; complex_neg; complex_sub; complex_mul; complex_inv; complex_div] THEN - CONV_TAC REAL_FIELD;; + (CONV_TAC "REAL_FIELD") REAL_FIELD;; let SIMPLE_COMPLEX_ARITH tm = prove(tm,SIMPLE_COMPLEX_ARITH_TAC);; @@ -479,13 +479,13 @@ let COMPLEX_POW_MUL = prove let COMPLEX_POW_II_2 = prove (`ii pow 2 = --Cx(&1)`, REWRITE_TAC[ii; COMPLEX_POW_2; complex_mul; CX_DEF; RE; IM; complex_neg] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let COMPLEX_POW_EQ_0 = prove (`!x n. (x pow n = Cx(&0)) <=> (x = Cx(&0)) /\ ~(n = 0)`, GEN_TAC THEN INDUCT_TAC THEN ASM_REWRITE_TAC[NOT_SUC; complex_pow; COMPLEX_ENTIRE] THENL - [SIMPLE_COMPLEX_ARITH_TAC; CONV_TAC TAUT]);; + [SIMPLE_COMPLEX_ARITH_TAC; (CONV_TAC "TAUT") TAUT]);; let COMPLEX_POW_ZERO = prove (`!n. Cx(&0) pow n = if n = 0 then Cx(&1) else Cx(&0)`, @@ -515,8 +515,8 @@ let CX_INV = prove (`!x. Cx(inv x) = inv(Cx x)`, GEN_TAC THEN REWRITE_TAC[CX_DEF; complex_inv; RE; IM; COMPLEX_EQ] THEN ASM_CASES_TAC `x = &0` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN - POP_ASSUM MP_TAC THEN CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + POP_ASSUM MP_TAC THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let CX_MUL = prove (`!x y. Cx(x * y) = Cx(x) * Cx(y)`, @@ -617,7 +617,7 @@ let IM_MUL_II = prove let COMPLEX_NORM_II = prove (`norm ii = &1`, REWRITE_TAC[complex_norm; RE_II; IM_II] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[SQRT_1]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[SQRT_1]);; (* ------------------------------------------------------------------------- *) (* Limited "multiplicative" theorems for Re and Im. *) @@ -824,7 +824,7 @@ let COMPLEX_INV_MUL = prove ASM_REWRITE_TAC[COMPLEX_INV_0; COMPLEX_MUL_LZERO; COMPLEX_MUL_RZERO] THEN REPEAT(POP_ASSUM MP_TAC) THEN REWRITE_TAC[complex_mul; complex_inv; RE; IM; COMPLEX_EQ; CX_DEF] THEN - REWRITE_TAC[GSYM REAL_SOS_EQ_0] THEN CONV_TAC REAL_FIELD);; + REWRITE_TAC[GSYM REAL_SOS_EQ_0] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let COMPLEX_POW_INV = prove (`!x n. (inv x) pow n = inv(x pow n)`, @@ -838,7 +838,7 @@ let COMPLEX_INV_INV = prove POP_ASSUM MP_TAC THEN MAP_EVERY (fun t -> MP_TAC(SPEC t COMPLEX_MUL_RINV)) [`x:complex`; `inv(x):complex`] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let COMPLEX_INV_DIV = prove (`!w z:complex. inv(w / z) = z / w`, @@ -874,11 +874,11 @@ let RE_COMPLEX_INV_GE_0 = prove let COMPLEX_EQ_MUL_LCANCEL = prove (`!x y z. (x * y = x * z) <=> (x = Cx(&0)) \/ (y = z)`, - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let COMPLEX_EQ_MUL_RCANCEL = prove (`!x y z. (x * z = y * z) <=> (x = y) \/ (z = Cx(&0))`, - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let COMPLEX_FIELD = let norm_net = @@ -935,31 +935,31 @@ let COMPLEX_FIELD = let COMPLEX_DIV_1 = prove (`!z. z / Cx(&1) = z`, - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COMPLEX_DIV_LMUL = prove (`!x y. ~(y = Cx(&0)) ==> y * x / y = x`, - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COMPLEX_DIV_RMUL = prove (`!x y. ~(y = Cx(&0)) ==> x / y * y = x`, - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COMPLEX_INV_II = prove (`inv ii = --ii`, - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COMPLEX_INV_EQ_0 = prove (`!x. inv x = Cx(&0) <=> x = Cx(&0)`, GEN_TAC THEN ASM_CASES_TAC `x = Cx(&0)` THEN ASM_REWRITE_TAC[COMPLEX_INV_0] THEN POP_ASSUM MP_TAC THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COMPLEX_INV_NEG = prove (`!x:complex. inv(--x) = --(inv x)`, GEN_TAC THEN ASM_CASES_TAC `x = Cx(&0)` THEN ASM_REWRITE_TAC[COMPLEX_INV_0; COMPLEX_NEG_0] THEN - POP_ASSUM MP_TAC THEN CONV_TAC COMPLEX_FIELD);; + POP_ASSUM MP_TAC THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COMPLEX_NEG_INV = prove (`!x:complex. --(inv x) = inv(--x)`, @@ -969,7 +969,7 @@ let COMPLEX_INV_EQ_1 = prove (`!x. inv x = Cx(&1) <=> x = Cx(&1)`, GEN_TAC THEN ASM_CASES_TAC `x = Cx(&0)` THEN ASM_REWRITE_TAC[COMPLEX_INV_0] THEN POP_ASSUM MP_TAC THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COMPLEX_DIV_EQ_0 = prove (`!w z. w / z = Cx(&0) <=> w = Cx(&0) \/ z = Cx(&0)`, @@ -1041,7 +1041,7 @@ let COMPLEX_NORM_INV = prove (r * r + i * i) * d * d:real`] THEN ASM_CASES_TAC `Re z * Re z + Im z * Im z = &0` THENL [ASM_REWRITE_TAC[REAL_INV_0; SQRT_0; REAL_MUL_LZERO]; ALL_TAC] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_MUL_RINV_UNIQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_MUL_RINV_UNIQ THEN SIMP_TAC[GSYM SQRT_MUL; REAL_LE_MUL; REAL_LE_INV_EQ; REAL_LE_ADD; REAL_LE_SQUARE] THEN ONCE_REWRITE_TAC[AC REAL_MUL_AC @@ -1070,7 +1070,7 @@ let COMPLEX_POW_EQ_1 = prove REPEAT GEN_TAC THEN DISCH_THEN(MP_TAC o AP_TERM `norm:complex->real`) THEN SIMP_TAC[COMPLEX_NORM_POW; COMPLEX_NORM_CX; REAL_POW_EQ_1; REAL_ABS_NUM] THEN - SIMP_TAC[REAL_ABS_NORM] THEN CONV_TAC TAUT);; + SIMP_TAC[REAL_ABS_NORM] THEN (CONV_TAC "TAUT") TAUT);; (* ------------------------------------------------------------------------- *) (* Complex conjugate. *) @@ -1144,7 +1144,7 @@ let IM_CNJ = prove let CNJ_EQ_CX = prove (`!x z. cnj z = Cx x <=> z = Cx x`, REWRITE_TAC[COMPLEX_EQ; RE_CNJ; IM_CNJ; RE_CX; IM_CX] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let CNJ_EQ_0 = prove (`!z. cnj z = Cx(&0) <=> z = Cx(&0)`, @@ -1186,14 +1186,14 @@ let COMPLEX_NORM_POW_2 = prove (`!z. Cx(norm z) pow 2 = z * cnj z`, GEN_TAC THEN REWRITE_TAC [GSYM CX_POW; COMPLEX_SQNORM] THEN REWRITE_TAC [cnj; complex_mul; CX_DEF; RE; IM; COMPLEX_EQ] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let COMPLEX_MUL_CNJ = prove (`!z. cnj z * z = Cx(norm(z)) pow 2 /\ z * cnj z = Cx(norm(z)) pow 2`, GEN_TAC THEN REWRITE_TAC[COMPLEX_MUL_SYM] THEN REWRITE_TAC[cnj; complex_mul; RE; IM; GSYM CX_POW; COMPLEX_SQNORM] THEN REWRITE_TAC[CX_DEF] THEN AP_TERM_TAC THEN BINOP_TAC THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let COMPLEX_INV_CNJ = prove (`!z. inv z = cnj z / Cx(norm z) pow 2`, @@ -1374,7 +1374,7 @@ let CSQRT = prove REAL_POW_EQ_0; REAL_DIV_REFL] THEN REWRITE_TAC[real_div; REAL_MUL_LID; GSYM REAL_SUB_RDISTRIB] THEN REWRITE_TAC[REAL_ARITH `(m + r) - (m - r) = r * &2`] THEN - REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_RID]; ALL_TAC] THEN REWRITE_TAC[real_div] THEN ONCE_REWRITE_TAC[AC REAL_MUL_AC @@ -1388,7 +1388,7 @@ let CSQRT = prove REWRITE_TAC[REAL_ABS_MUL; REAL_ABS_INV; REAL_ABS_NUM] THEN ONCE_REWRITE_TAC[AC REAL_MUL_AC `&2 * (i * a') * a * h = i * (&2 * h) * a * a'`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_LID; GSYM real_div] THEN ASM_SIMP_TAC[REAL_DIV_REFL; REAL_ABS_ZERO; REAL_MUL_RID]);; @@ -1447,7 +1447,7 @@ let POW_2_CSQRT = prove let CSQRT_EQ_0 = prove (`!z. csqrt z = Cx(&0) <=> z = Cx(&0)`, - GEN_TAC THEN MP_TAC (SPEC `z:complex` CSQRT) THEN CONV_TAC COMPLEX_RING);; + GEN_TAC THEN MP_TAC (SPEC `z:complex` CSQRT) THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; (* ------------------------------------------------------------------------- *) (* A few more complex-specific cases of vector notions. *) @@ -1465,11 +1465,11 @@ let DOT_CNJ = prove let LINEAR_COMPLEX_MUL = prove (`!c. linear (\x. c * x)`, - REWRITE_TAC[linear; COMPLEX_CMUL] THEN CONV_TAC COMPLEX_RING);; + REWRITE_TAC[linear; COMPLEX_CMUL] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let BILINEAR_COMPLEX_MUL = prove (`bilinear( * )`, - REWRITE_TAC[bilinear; linear; COMPLEX_CMUL] THEN CONV_TAC COMPLEX_RING);; + REWRITE_TAC[bilinear; linear; COMPLEX_CMUL] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let LINEAR_CNJ = prove (`linear cnj`, @@ -1482,7 +1482,7 @@ let ORTHOGONAL_TRANSFORMATION_CNJ = prove let LINEAR_COMPLEX_LMUL = prove (`!f:real^N->complex c. linear f ==> linear (\x. c * f x)`, SIMP_TAC[linear; COMPLEX_CMUL] THEN - REPEAT STRIP_TAC THEN CONV_TAC COMPLEX_RING);; + REPEAT STRIP_TAC THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let LINEAR_COMPLEX_RMUL = prove (`!f:real^N->complex c. linear f ==> linear (\x. f x * c)`, @@ -1557,7 +1557,7 @@ let COMPLEX_ORTHOGONAL_ROTATION = prove REWRITE_TAC[GSYM ORTHOGONAL_TRANSFORMATION] THEN REWRITE_TAC[ORTHOGONAL_TRANSFORMATION_MATRIX] THEN REWRITE_TAC[GSYM CONJ_ASSOC] THEN AP_TERM_TAC THEN - REWRITE_TAC[ORTHOGONAL_MATRIX_2; DET_2] THEN CONV_TAC REAL_RING; + REWRITE_TAC[ORTHOGONAL_MATRIX_2; DET_2] THEN (CONV_TAC "REAL_RING") REAL_RING; REWRITE_TAC[RIGHT_AND_EXISTS_THM] THEN AP_TERM_TAC THEN GEN_REWRITE_TAC I [FUN_EQ_THM] THEN X_GEN_TAC `c:complex` THEN REWRITE_TAC[] THEN @@ -1591,7 +1591,7 @@ let COMPLEX_ORTHOGONAL_ROTOINVERSION = prove SIMP_TAC[DET_2; MATRIX_COMPONENT; DIMINDEX_2; ARITH] THEN REWRITE_TAC[COMPLEX_BASIS; CNJ_II; CNJ_CX] THEN REWRITE_TAC[GSYM IM_DEF; GSYM RE_DEF; IM; RE; CX_DEF; ii; complex_neg] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let COMPLEX_ORTHOGONAL_TRANSFORMATION = prove (`!f:complex->complex. @@ -1782,7 +1782,7 @@ let IN_SEGMENT_CX = prove [ASM_REAL_ARITH_TAC; EXISTS_TAC `(a - x:real) / (a - b)`]] THEN (CONJ_TAC THENL - [ALL_TAC; UNDISCH_TAC `~(a:real = b)` THEN CONV_TAC REAL_FIELD]) THEN + [ALL_TAC; UNDISCH_TAC `~(a:real = b)` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]) THEN ASM_SIMP_TAC[REAL_LE_LDIV_EQ; REAL_LE_RDIV_EQ] THEN ASM_REAL_ARITH_TAC);; @@ -1835,7 +1835,7 @@ let INTERIOR_REAL = prove let REAL_NORM = prove (`!z. real z ==> norm(z) = abs(Re z)`, - SIMP_TAC[real; complex_norm] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + SIMP_TAC[real; complex_norm] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[POW_2_SQRT_ABS; REAL_ADD_RID]);; let REAL_NORM_POS = prove @@ -2079,7 +2079,7 @@ let COMPLEX_POLYFUN_ROOTBOUND = prove REWRITE_TAC[COMPLEX_VEC_0; COMPLEX_MUL_RZERO; COMPLEX_NORM_NUM] THEN REWRITE_TAC[COMPLEX_MUL_RID; real_ge; EVENTUALLY_AT_INFINITY] THEN REPEAT STRIP_TAC THENL [ASM_MESON_TAC[LE_1]; ALL_TAC] THEN - FIRST_X_ASSUM(MP_TAC o SPEC `&1`) THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + FIRST_X_ASSUM(MP_TAC o SPEC `&1`) THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(TAUT `~a ==> a ==> b`) THEN REWRITE_TAC[NOT_EXISTS_THM; NOT_FORALL_THM] THEN X_GEN_TAC `b:real` THEN MP_TAC(SPEC `b:real` (INST_TYPE [`:2`,`:N`] VECTOR_CHOOSE_SIZE)) THEN @@ -2259,7 +2259,7 @@ let CNJ_CPRODUCT = prove let CX_PRODUCT = prove (`!f s. FINITE s ==> Cx(product s f) = cproduct s (\i. Cx(f i))`, - GEN_TAC THEN CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + GEN_TAC THEN (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN MATCH_MP_TAC FINITE_INDUCT_STRONG THEN SIMP_TAC[CPRODUCT_CLAUSES; PRODUCT_CLAUSES; GSYM CX_MUL]);; diff --git a/Multivariate/convex.ml b/Multivariate/convex.ml index 86c7160a..483e4c16 100644 --- a/Multivariate/convex.ml +++ b/Multivariate/convex.ml @@ -179,7 +179,7 @@ let AFFINE_UNIV = prove let AFFINE_HYPERPLANE = prove (`!a b. affine {x | a dot x = b}`, REWRITE_TAC[affine; IN_ELIM_THM; DOT_RADD; DOT_RMUL] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let AFFINE_STANDARD_HYPERPLANE = prove (`!a b k. affine {x:real^N | x$k = b}`, @@ -260,7 +260,7 @@ let SAME_DISTANCES_TO_AFFINE_HULL = prove `((&1 - u) % x + u % y) - a:real^N = (&1 - u) % (x - a) + u % (y - a)`] THEN REWRITE_TAC[NORM_POW_2; DOT_LMUL; DOT_RMUL; VECTOR_ARITH `(x + y) dot (x + y):real^N = (x dot x + y dot y) + &2 * x dot y`] THEN - SIMP_TAC[DOT_LSUB; DOT_RSUB; DOT_SYM] THEN CONV_TAC REAL_RING);; + SIMP_TAC[DOT_LSUB; DOT_RSUB; DOT_SYM] THEN (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* Some convenient lemmas about common affine combinations. *) @@ -280,7 +280,7 @@ let IN_AFFINE_ADD_MUL_DIFF = prove `x + a % (y - z):real^N = &1 / &2 % ((&1 - &2 * a) % x + (&2 * a) % y) + &1 / &2 % ((&1 + &2 * a) % x + (-- &2 * a) % z)`] THEN - FIRST_ASSUM MATCH_MP_TAC THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + FIRST_ASSUM MATCH_MP_TAC THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN CONJ_TAC THEN FIRST_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[] THEN REAL_ARITH_TAC);; @@ -352,7 +352,7 @@ let AFFINE_VSUM_STRONG = prove MATCH_MP_TAC AFFINE_VSUM THEN ASM_REWRITE_TAC[] THEN REPEAT CONJ_TAC THENL [ASM_MESON_TAC[SUM_DEGENERATE; REAL_ARITH `~(&1 = &0)`]; FIRST_X_ASSUM(SUBST1_TAC o SYM) THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN ASM SET_TAC[]; + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN ASM SET_TAC[]; ASM SET_TAC[]]]);; let AFFINE_INDEXED = prove @@ -436,7 +436,7 @@ let AFFINE_EXPLICIT = prove X_GEN_TAC `t:real^N->bool` THEN REWRITE_TAC[] THEN AP_TERM_TAC THEN ABS_TAC THEN ASM_CASES_TAC `t:real^N->bool = {}` THEN - ASM_REWRITE_TAC[SUM_CLAUSES] THEN CONV_TAC REAL_RAT_REDUCE_CONV);; + ASM_REWRITE_TAC[SUM_CLAUSES] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let AFFINE_HULL_EXPLICIT = prove (`!(p:real^N -> bool). @@ -530,7 +530,7 @@ let AFFINE_HULL_FINITE = prove ASM_SIMP_TAC[SUM_CLAUSES; REAL_OF_NUM_EQ; ARITH] THEN DISCH_TAC THEN REWRITE_TAC[SUPPORT_SUBSET] THEN FIRST_X_ASSUM(fun th -> GEN_REWRITE_TAC RAND_CONV [GSYM th]) THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN REWRITE_TAC[SUPPORT_SUBSET] THEN REWRITE_TAC[support; IN_ELIM_THM; NEUTRAL_REAL_ADD] THEN MESON_TAC[VECTOR_MUL_LZERO]]);; @@ -707,7 +707,7 @@ let AFFINE_HULL_INSERT_SUBSET_SPAN = prove `t SUBSET (a INSERT s) ==> t DELETE a SUBSET s`] THEN MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `a + vsum t (\x. u x % (x - a)):real^N` THEN CONJ_TAC THENL - [AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN + [AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN REWRITE_TAC[VECTOR_MUL_EQ_0; VECTOR_SUB_EQ] THEN SET_TAC[]; ASM_SIMP_TAC[VECTOR_SUB_LDISTRIB; FINITE_DELETE; VSUM_SUB] THEN ASM_REWRITE_TAC[VSUM_RMUL] THEN @@ -835,9 +835,9 @@ let MIDPOINT_IN_CONVEX = prove REPEAT STRIP_TAC THEN MP_TAC(ISPECL [`s:real^N->bool`; `x:real^N`; `y:real^N`; `&1 / &2`] IN_CONVEX_SET) THEN - ASM_REWRITE_TAC[midpoint] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[midpoint] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - CONV_TAC VECTOR_ARITH);; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH);; let CONVEX_CONTAINS_SEGMENT = prove (`!s. convex s <=> !a b. a IN s /\ b IN s ==> segment[a,b] SUBSET s`, @@ -1016,7 +1016,7 @@ let LIMPT_OF_CONVEX = prove ABBREV_TAC `u = min (&1 / &2) (e / &2 / norm(y - x:real^N))` THEN SUBGOAL_THEN `&0 < u /\ u < &1` STRIP_ASSUME_TAC THENL [EXPAND_TAC "u" THEN REWRITE_TAC[REAL_LT_MIN; REAL_MIN_LT] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_HALF; REAL_LT_DIV; NORM_POS_LT; VECTOR_SUB_EQ]; ALL_TAC] THEN EXISTS_TAC `(&1 - u) % x + u % y:real^N` THEN REPEAT CONJ_TAC THENL @@ -1078,7 +1078,7 @@ let CONVEX_VSUM = prove ASM_REWRITE_TAC[IMP_CONJ; RIGHT_FORALL_IMP_THM] THEN MATCH_MP_TAC FINITE_INDUCT_STRONG THEN SIMP_TAC[SUM_CLAUSES; VSUM_CLAUSES; FORALL_IN_INSERT] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MAP_EVERY X_GEN_TAC [`i:A`; `k:A->bool`] THEN GEN_REWRITE_TAC (BINOP_CONV o DEPTH_CONV) [RIGHT_IMP_FORALL_THM] THEN REWRITE_TAC[IMP_IMP] THEN STRIP_TAC THEN @@ -1131,7 +1131,7 @@ let CONVEX_VSUM_STRONG = prove MATCH_MP_TAC CONVEX_VSUM THEN ASM_REWRITE_TAC[] THEN REPEAT CONJ_TAC THENL [ASM_MESON_TAC[SUM_DEGENERATE; REAL_ARITH `~(&1 = &0)`]; FIRST_X_ASSUM(SUBST1_TAC o SYM) THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN ASM SET_TAC[]; + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN ASM SET_TAC[]; ASM SET_TAC[]]]);; let CONVEX_INDEXED = prove @@ -1184,7 +1184,7 @@ let CONVEX = prove X_GEN_TAC `t:real^N->bool` THEN REWRITE_TAC[] THEN AP_TERM_TAC THEN ABS_TAC THEN ASM_CASES_TAC `t:real^N->bool = {}` THEN - ASM_REWRITE_TAC[SUM_CLAUSES] THEN CONV_TAC REAL_RAT_REDUCE_CONV);; + ASM_REWRITE_TAC[SUM_CLAUSES] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let CONVEX_FINITE = prove (`!s:real^N->bool. @@ -1514,15 +1514,15 @@ let CONIC_HULL_INTER_AFFINE_HULL = prove ONCE_REWRITE_TAC[GSYM CONTRAPOS_THM] THEN DISCH_THEN(K ALL_TAC) THEN SUBGOAL_THEN `vec 0:real^N = inv(&1 - c) % c % x + (&1 - inv(&1 - c)) % x` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[VECTOR_MUL_ASSOC; GSYM VECTOR_ADD_RDISTRIB] THEN REWRITE_TAC[VECTOR_MUL_EQ_0] THEN DISJ1_TAC THEN - UNDISCH_TAC `~(c = &1)` THEN CONV_TAC REAL_FIELD; + UNDISCH_TAC `~(c = &1)` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; MP_TAC(ISPEC `affine hull s:real^N->bool` affine) THEN REWRITE_TAC[AFFINE_AFFINE_HULL] THEN DISCH_THEN MATCH_MP_TAC THEN ASM_REWRITE_TAC[] THEN CONJ_TAC THENL [ASM_MESON_TAC[HULL_INC; SUBSET]; - UNDISCH_TAC `~(c = &1)` THEN CONV_TAC REAL_FIELD]]);; + UNDISCH_TAC `~(c = &1)` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]]);; let SEPARATE_CLOSED_CONES = prove (`!c d:real^N->bool. @@ -1819,7 +1819,7 @@ let COPLANAR_SMALL = prove REWRITE_TAC[LEFT_OR_DISTRIB; GSYM HAS_SIZE] THEN DISCH_THEN(DISJ_CASES_THEN MP_TAC) THEN SIMP_TAC[COLLINEAR_IMP_COPLANAR; COLLINEAR_SMALL] THEN - CONV_TAC(LAND_CONV HAS_SIZE_CONV) THEN REWRITE_TAC[coplanar] THEN + (CONV_TAC "(LAND_CONV HAS_SIZE_CONV)") (LAND_CONV HAS_SIZE_CONV) THEN REWRITE_TAC[coplanar] THEN REPEAT(MATCH_MP_TAC MONO_EXISTS THEN GEN_TAC) THEN STRIP_TAC THEN ASM_REWRITE_TAC[HULL_INC; SUBSET]);; @@ -1948,7 +1948,7 @@ let COLLINEAR_3_IN_AFFINE_HULL = prove REWRITE_TAC[COLLINEAR_LEMMA; AFFINE_HULL_2] THEN REPEAT STRIP_TAC THEN ASM_REWRITE_TAC[VECTOR_MUL_RZERO; VECTOR_ADD_LID; IN_ELIM_THM] THEN ASM_CASES_TAC `x:real^N = vec 0` THEN ASM_REWRITE_TAC[] THENL - [MAP_EVERY EXISTS_TAC [`&1`; `&0`] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [MAP_EVERY EXISTS_TAC [`&1`; `&0`] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN VECTOR_ARITH_TAC; MESON_TAC[REAL_ARITH `u + v = &1 <=> u = &1 - v`]]);; @@ -1970,7 +1970,7 @@ let COLLINEAR_3_EXPLICIT = prove CONJ_TAC THENL [REPEAT GEN_TAC THEN REWRITE_TAC[INSERT_AC; COLLINEAR_2] THEN MAP_EVERY EXISTS_TAC [`&1`; `-- &1`; `&0`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN VECTOR_ARITH_TAC; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN VECTOR_ARITH_TAC; ALL_TAC] THEN REPEAT STRIP_TAC THEN ASM_REWRITE_TAC[COLLINEAR_3_EQ_AFFINE_DEPENDENT] THEN @@ -2089,7 +2089,7 @@ let CONVEX_ON_IMP_MIDPOINT_CONVEX = prove REWRITE_TAC[convex_on] THEN REPEAT STRIP_TAC THEN REWRITE_TAC[midpoint; VECTOR_ADD_LDISTRIB; REAL_ARITH `(x + y) / &2 = inv(&2) * x + inv(&2) * y`] THEN - FIRST_X_ASSUM MATCH_MP_TAC THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + FIRST_X_ASSUM MATCH_MP_TAC THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]);; let CONVEX_LOWER = prove @@ -2254,10 +2254,10 @@ let LINEAR_CONVEX_ON_1 = prove MP_TAC(SPECL[`x + y:real^N`; `vec 0:real^N`; `&1 / &2`; `&1 / &2`] th)) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[VECTOR_MUL_RZERO; VECTOR_ADD_RID] THEN REWRITE_TAC[VECTOR_ADD_LDISTRIB] THEN - DISCH_THEN SUBST1_TAC THEN CONV_TAC VECTOR_ARITH; + DISCH_THEN SUBST1_TAC THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; DISCH_TAC] THEN SUBGOAL_THEN `!c x:real^N. &0 <= c /\ c <= &1 ==> (f:real^N->real^1)(c % x) = c % f x` @@ -2283,9 +2283,9 @@ let LINEAR_CONVEX_ON_1 = prove [GEN_TAC THEN FIRST_X_ASSUM(MP_TAC o SPECL [`x:real^N`; `--x:real^N`; `inv(&2)`; `inv(&2)`]) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[VECTOR_ARITH `a % x + a % --x:real^N = vec 0`] THEN - ASM_REWRITE_TAC[] THEN CONV_TAC VECTOR_ARITH; + ASM_REWRITE_TAC[] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN MAP_EVERY X_GEN_TAC [`c:real`; `x:real^N`] THEN ASM_CASES_TAC `&0 <= c` THEN ASM_SIMP_TAC[] THEN @@ -2763,7 +2763,7 @@ let CONVEX_SUMS_MULTIPLES = prove ASM_SIMP_TAC[REAL_DIV_LMUL; REAL_LT_IMP_NZ]; FIRST_X_ASSUM(MATCH_MP_TAC o GEN_REWRITE_RULE I [convex]) THEN ASM_SIMP_TAC[REAL_LE_DIV; REAL_LT_IMP_LE] THEN - UNDISCH_TAC `&0 < c + d` THEN CONV_TAC REAL_FIELD]]);; + UNDISCH_TAC `&0 < c + d` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]]);; let CONVEX_TRANSLATION_SUBSET_PREIMAGE = prove (`!s t:real^N->bool. @@ -2829,7 +2829,7 @@ let SUBSET_SUMS_LCANCEL = prove (&n + &2) * &1 / (&n + &2) = &1`] THEN ASM_REWRITE_TAC[VECTOR_ARITH `n % b - (n % c + d):real^N = n % (b - c) - d`] THEN - CONV_TAC VECTOR_ARITH]]; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH]]; FIRST_X_ASSUM(K ALL_TAC o check is_forall o concl) THEN MP_TAC(ISPECL [`s:real^N->bool`; `s:real^N->bool`] BOUNDED_DIFFS) THEN ASM_REWRITE_TAC[] THEN REWRITE_TAC[BOUNDED_POS; FORALL_IN_GSPEC] THEN @@ -2969,7 +2969,7 @@ let CONVEX_HULL_INSERT = prove MAP_EVERY EXISTS_TAC [`&0`; `&1`]] THEN ASM_REWRITE_TAC[VECTOR_MUL_LID; VECTOR_MUL_LZERO] THEN ASM_REWRITE_TAC[VECTOR_ADD_LID; VECTOR_ADD_RID] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_MESON_TAC[MEMBER_NOT_EMPTY; HULL_SUBSET; SUBSET]; ALL_TAC]; REWRITE_TAC[SUBSET; IN_ELIM_THM] THEN @@ -3110,7 +3110,7 @@ let CONVEX_HULL_FINITE_IMAGE_EXPLICIT = prove EXPAND_TAC "y" THEN REWRITE_TAC[VECTOR_ARITH `c % f + v:real^N = &1 % f + &0 % b <=> v = (&1 - c) % f`] THEN ASM_SIMP_TAC[VECTOR_MUL_LZERO; VSUM_0; REAL_SUB_REFL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[CONJ_ASSOC] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[CONJ_ASSOC] THEN ONCE_REWRITE_TAC[CONJ_SYM] THEN ONCE_REWRITE_TAC[SWAP_EXISTS_THM] THEN REWRITE_TAC[UNWIND_THM1] THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM MEMBER_NOT_EMPTY]) THEN @@ -3224,7 +3224,7 @@ let CONVEX_HULL_FINITE = prove DISCH_TAC THEN REWRITE_TAC[SUPPORT_SUBSET] THEN CONJ_TAC THENL [ASM_SIMP_TAC[support; IN_ELIM_THM]; ALL_TAC] THEN FIRST_X_ASSUM(fun th -> GEN_REWRITE_TAC RAND_CONV [GSYM th]) THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN REWRITE_TAC[SUPPORT_SUBSET] THEN REWRITE_TAC[support; IN_ELIM_THM; NEUTRAL_REAL_ADD] THEN MESON_TAC[VECTOR_MUL_LZERO]]);; @@ -3286,7 +3286,7 @@ let CONVEX_HULL_IMAGE_LT = prove ASM_SIMP_TAC[FINITE_RESTRICT; IN_ELIM_THM] THEN CONJ_TAC THENL [ASM SET_TAC[]; ALL_TAC] THEN CONJ_TAC THEN FIRST_X_ASSUM(fun th -> GEN_REWRITE_TAC RAND_CONV [SYM th]) THEN - CONV_TAC SYM_CONV THENL + (CONV_TAC "SYM_CONV") SYM_CONV THENL [MATCH_MP_TAC SUM_SUPERSET; MATCH_MP_TAC VSUM_SUPERSET] THEN REWRITE_TAC[SUBSET_RESTRICT; IN_ELIM_THM] THEN ASM_SIMP_TAC[IMP_CONJ; REAL_LT_LE] THEN MESON_TAC[VECTOR_MUL_LZERO]);; @@ -3679,9 +3679,9 @@ let AFFINE_HULL_EQ_SPAN = prove [SUBST1_TAC(VECTOR_ARITH `x + y:real^N = &2 % (&1 / &2 % x + &1 / &2 % y) + --(&1) % vec 0`) THEN MATCH_MP_TAC(REWRITE_RULE[affine] AFFINE_AFFINE_HULL) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC(REWRITE_RULE[affine] AFFINE_AFFINE_HULL) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]; SUBST1_TAC(VECTOR_ARITH `c % x:real^N = c % x + (&1 - c) % vec 0`) THEN MATCH_MP_TAC(REWRITE_RULE[affine] AFFINE_AFFINE_HULL) THEN @@ -4099,7 +4099,7 @@ let AFFINE_TRANSLATION_UNIQUE_SUBSPACE = prove REPEAT(DISCH_THEN(CONJUNCTS_THEN2 STRIP_ASSUME_TAC MP_TAC)) THEN DISCH_THEN(fun th -> ASSUME_TAC th THEN MP_TAC th) THEN ASM_REWRITE_TAC[] THEN ONCE_REWRITE_TAC[TRANSLATION_GALOIS] THEN - DISCH_THEN SUBST1_TAC THEN CONV_TAC SYM_CONV THEN + DISCH_THEN SUBST1_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[GSYM IMAGE_o; o_DEF; VECTOR_ADD_ASSOC] THEN MATCH_MP_TAC SUBSPACE_TRANSLATION_SELF THEN ASM_REWRITE_TAC[] THEN ONCE_REWRITE_TAC[VECTOR_ARITH `--a' + a:real^N = --(a' - a)`] THEN @@ -4149,7 +4149,7 @@ let AFFINE_PARALLEL_SLICE = prove `u + (b - a dot u) / (a dot v - a dot u) % (v - u):real^N` THEN ASM_SIMP_TAC[IN_AFFINE_ADD_MUL_DIFF] THEN REWRITE_TAC[DOT_RADD; DOT_RMUL; DOT_RSUB] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM MEMBER_NOT_EMPTY]) THEN DISCH_THEN(X_CHOOSE_THEN `z:real^N` MP_TAC) THEN REWRITE_TAC[IN_INTER; IN_ELIM_THM] THEN POP_ASSUM MP_TAC THEN @@ -4232,7 +4232,7 @@ let EXTEND_TO_AFFINE_BASIS = prove REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN DISCH_THEN(MP_TAC o SPEC `c:real^N->bool`) THEN ANTS_TAC THENL [ASM SET_TAC[]; DISCH_TAC] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC CARD_SUBSET_LE THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CARD_SUBSET_LE THEN ASM_MESON_TAC[AFFINE_INDEPENDENT_IMP_FINITE]);; let AFFINE_BASIS_EXISTS = prove @@ -4255,7 +4255,7 @@ let AFF_DIM = prove aff_dim s = &(CARD b) - &1`, GEN_TAC THEN REWRITE_TAC[aff_dim; INT_ARITH `y:int = x + &1 <=> x = y - &1`] THEN - CONV_TAC SELECT_CONV THEN ONCE_REWRITE_TAC[SWAP_EXISTS_THM] THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ONCE_REWRITE_TAC[SWAP_EXISTS_THM] THEN REWRITE_TAC[RIGHT_EXISTS_AND_THM; EXISTS_REFL] THEN MESON_TAC[AFFINE_BASIS_EXISTS]);; @@ -4378,7 +4378,7 @@ let AFF_DIM_LINEAR_IMAGE_LE = prove ONCE_REWRITE_TAC[GSYM o_DEF] THEN REWRITE_TAC[IMAGE_o] THEN MATCH_MP_TAC DIM_LINEAR_IMAGE_LE THEN ASM_REWRITE_TAC[]; MATCH_MP_TAC EQ_IMP THEN REWRITE_TAC[GSYM INT_OF_NUM_LE] THEN - BINOP_TAC THEN CONV_TAC SYM_CONV THEN + BINOP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC AFF_DIM_DIM_AFFINE_DIFFS THEN ASM_SIMP_TAC[AFFINE_LINEAR_IMAGE; FUN_IN_IMAGE]]);; @@ -4434,7 +4434,7 @@ let AFF_DIM_SING = prove let AFF_DIM_LE_CARD = prove (`!s:real^N->bool. FINITE s ==> aff_dim s <= &(CARD s) - &1`, MATCH_MP_TAC SET_PROVE_CASES THEN - SIMP_TAC[AFF_DIM_EMPTY; CARD_CLAUSES] THEN CONV_TAC INT_REDUCE_CONV THEN + SIMP_TAC[AFF_DIM_EMPTY; CARD_CLAUSES] THEN (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN GEOM_ORIGIN_TAC `a:real^N` THEN SIMP_TAC[AFF_DIM_DIM_0; IN_INSERT; HULL_INC] THEN SIMP_TAC[CARD_IMAGE_INJ; VECTOR_ARITH `a + x:real^N = a + y <=> x = y`] THEN @@ -4488,7 +4488,7 @@ let AFF_DIM_2 = prove MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `&(CARD {a:real^N,b}) - &1:int` THEN ASM_SIMP_TAC[AFF_DIM_AFFINE_INDEPENDENT; AFFINE_INDEPENDENT_2] THEN ASM_SIMP_TAC[CARD_CLAUSES; FINITE_RULES; IN_INSERT; NOT_IN_EMPTY] THEN - CONV_TAC NUM_REDUCE_CONV THEN INT_ARITH_TAC);; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN INT_ARITH_TAC);; let AFF_DIM_EQ_MINUS1 = prove (`!s:real^N->bool. aff_dim s = -- &1 <=> s = {}`, @@ -4510,7 +4510,7 @@ let AFF_DIM_EQ_0 = prove (`!s:real^N->bool. aff_dim s = &0 <=> ?a. s = {a}`, GEN_TAC THEN EQ_TAC THEN SIMP_TAC[AFF_DIM_SING; LEFT_IMP_EXISTS_THM] THEN ASM_CASES_TAC `s:real^N->bool = {}` THEN ASM_REWRITE_TAC[AFF_DIM_EMPTY] THEN - CONV_TAC INT_REDUCE_CONV THEN DISCH_TAC THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN DISCH_TAC THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM MEMBER_NOT_EMPTY]) THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `a:real^N` THEN MATCH_MP_TAC(SET_RULE @@ -4621,7 +4621,7 @@ let AFFINE_HULL_CONVEX_INTER_NONEMPTY_INTERIOR = prove SUBGOAL_THEN `&0 < k /\ k < &1` STRIP_ASSUME_TAC THENL [EXPAND_TAC "k" THEN ASM_SIMP_TAC[REAL_LT_MIN; REAL_LT_DIV; NORM_POS_LT; REAL_MIN_LT] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN SUBGOAL_THEN `x:real^N = inv k % k % x` SUBST1_TAC THENL [ASM_SIMP_TAC[VECTOR_MUL_ASSOC; REAL_MUL_LINV; VECTOR_MUL_LID; @@ -4666,7 +4666,7 @@ let CONVEX_AND_AFFINE_INTER_OPEN = prove [`affine hull (s INTER u:real^N->bool)`; `affine hull t:real^N->bool`] THEN REPEAT CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC AFFINE_HULL_CONVEX_INTER_OPEN THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC AFFINE_HULL_CONVEX_INTER_OPEN THEN ASM_REWRITE_TAC[]; ASM_REWRITE_TAC[] THEN MATCH_MP_TAC AFFINE_HULL_CONVEX_INTER_OPEN THEN ASM_SIMP_TAC[AFFINE_IMP_CONVEX] THEN ASM SET_TAC[]; @@ -4761,7 +4761,7 @@ let AFF_DIM_INSERT = prove if a IN affine hull s then aff_dim s else aff_dim s + &1`, ONCE_REWRITE_TAC[SWAP_FORALL_THM] THEN MATCH_MP_TAC SET_PROVE_CASES THEN SIMP_TAC[AFF_DIM_EMPTY; AFF_DIM_SING; AFFINE_HULL_EMPTY; NOT_IN_EMPTY] THEN - CONV_TAC INT_REDUCE_CONV THEN REWRITE_TAC[RIGHT_IMP_FORALL_THM] THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN REWRITE_TAC[RIGHT_IMP_FORALL_THM] THEN MAP_EVERY X_GEN_TAC [`b:real^N`; `s:real^N->bool`; `a:real^N`] THEN GEOM_ORIGIN_TAC `b:real^N` THEN SIMP_TAC[AFFINE_HULL_EQ_SPAN; AFF_DIM_DIM_0; HULL_INC; IN_INSERT] THEN @@ -4915,7 +4915,7 @@ let DIM_OPEN_IN = prove REWRITE_TAC[GSYM INT_OF_NUM_LE] THEN MATCH_MP_TAC INT_LE_TRANS THEN EXISTS_TAC `aff_dim(s:real^N->bool)` THEN REWRITE_TAC[AFF_DIM_LE_DIM] THEN ASM_SIMP_TAC[GSYM AFF_DIM_DIM_SUBSPACE] THEN - MATCH_MP_TAC INT_EQ_IMP_LE THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC INT_EQ_IMP_LE THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC AFF_DIM_OPEN_IN THEN ASM_SIMP_TAC[SUBSPACE_IMP_AFFINE]);; let AFF_DIM_CONVEX_INTER_NONEMPTY_INTERIOR = prove @@ -5305,7 +5305,7 @@ let RIGID_TRANSFORMATION_BETWEEN_CONGRUENT_SETS = prove REWRITE_TAC[FORALL_IN_IMAGE; o_THM; IN_NUMSEG] THEN X_GEN_TAC `j:num` THEN STRIP_TAC THEN MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `dist(x(r(j:num)),(x:A->real^N) k)` THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_SIMP_TAC[]; + [(CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_SIMP_TAC[]; REWRITE_TAC[dist] THEN ASM_SIMP_TAC[NORM_ARITH `(a + x) - (a + y):real^N = x - y`] THEN ASM_MESON_TAC[ORTHOGONAL_TRANSFORMATION; LINEAR_SUB]]; @@ -5442,7 +5442,7 @@ let CONVEX_HULL_CARATHEODORY_AFF_DIM = prove MATCH_MP_TAC REAL_LE_DIV THEN ASM_SIMP_TAC[] THEN MATCH_MP_TAC(REAL_ARITH `w < &0 ==> &0 <= --w`) THEN ASM_REWRITE_TAC[]; EXISTS_TAC `a:real^N` THEN ASM_REWRITE_TAC[] THEN - UNDISCH_TAC `w(a:real^N) < &0` THEN CONV_TAC REAL_FIELD]; + UNDISCH_TAC `w(a:real^N) < &0` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]; ALL_TAC] THEN MAP_EVERY EXISTS_TAC [`s DELETE (a:real^N)`; `(\v. u(v) + t * w(v)):real^N->real`] THEN @@ -5538,7 +5538,7 @@ let AFFINE_HULL_INTER,CONVEX_HULL_INTER = (CONJ_PAIR o prove) [EXISTS_TAC `sum s (u:real^N->real)`; EXISTS_TAC `vsum s (\x. (u:real^N->real) x % x)`] THEN (CONJ_TAC THENL [ALL_TAC; FIRST_X_ASSUM ACCEPT_TAC]) THEN - CONV_TAC SYM_CONV THENL + (CONV_TAC "SYM_CONV") SYM_CONV THENL [MATCH_MP_TAC SUM_EQ_SUPERSET; MATCH_MP_TAC VSUM_EQ_SUPERSET] THEN ASM_SIMP_TAC[FINITE_INTER; INTER_SUBSET; IN_INTER] THEN X_GEN_TAC `x:real^N` THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN @@ -5783,7 +5783,7 @@ let IN_CONVEX_HULL_EXCHANGE_UNIQUE = prove VECTOR_ARITH `u' + u:real^N = y <=> u = y - u'`] THEN (CONJ_TAC THEN FIRST_X_ASSUM(fun th -> GEN_REWRITE_TAC RAND_CONV [GSYM th]) THEN - CONV_TAC SYM_CONV THENL + (CONV_TAC "SYM_CONV") SYM_CONV THENL [MATCH_MP_TAC SUM_EQ_SUPERSET; MATCH_MP_TAC VSUM_EQ_SUPERSET]) THEN ASM_SIMP_TAC[FINITE_INTER; INTER_SUBSET; IN_INTER] THEN (CONJ_TAC THENL [ASM SET_TAC[]; ALL_TAC]) THEN @@ -6044,7 +6044,7 @@ let AFF_LOWDIM_SUBSET_HYPERPLANE = prove [DISCH_TAC THEN EXISTS_TAC `basis 1:real^N` THEN SIMP_TAC[EMPTY_SUBSET; BASIS_NONZERO; LE_REFL; DIMINDEX_GE_1]; MAP_EVERY X_GEN_TAC [`c:real^N`; `s:real^N->bool`] THEN - CONV_TAC(ONCE_DEPTH_CONV(GEN_ALPHA_CONV `a:real^N`)) THEN + (CONV_TAC "(ONCE_DEPTH_CONV(GEN_ALPHA_CONV `a:real^N`))") (ONCE_DEPTH_CONV(GEN_ALPHA_CONV `a:real^N`)) THEN GEN_GEOM_ORIGIN_TAC `c:real^N` ["a"] THEN SIMP_TAC[AFF_DIM_DIM_0; HULL_INC; IN_INSERT; INT_OF_NUM_LT] THEN REPEAT GEN_TAC THEN DISCH_TAC THEN @@ -6123,7 +6123,7 @@ let COMPACT_CONVEX_COMBINATIONS = prove [REWRITE_TAC[EXTENSION; IN_ELIM_THM; IN_IMAGE] THEN X_GEN_TAC `x:real^N` THEN REWRITE_TAC[RIGHT_AND_EXISTS_THM; LEFT_AND_EXISTS_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV UNWIND_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV UNWIND_CONV)") (ONCE_DEPTH_CONV UNWIND_CONV) THEN REWRITE_TAC[FSTCART_PASTECART; SNDCART_PASTECART] THEN REWRITE_TAC[IN_INTERVAL_1; GSYM EXISTS_DROP; DROP_VEC] THEN MESON_TAC[]; ALL_TAC] THEN @@ -6148,7 +6148,7 @@ let COMPACT_CONVEX_HULL = prove SPEC_TAC(`dimindex(:N) + 1`,`n:num`) THEN ASM_CASES_TAC `s:real^N->bool = {}` THENL [ASM_REWRITE_TAC[SUBSET_EMPTY] THEN - CONV_TAC(ONCE_DEPTH_CONV UNWIND_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV UNWIND_CONV)") (ONCE_DEPTH_CONV UNWIND_CONV) THEN REWRITE_TAC[CONVEX_HULL_EMPTY; NOT_IN_EMPTY] THEN REWRITE_TAC[SET_RULE `{x | F} = {}`; COMPACT_EMPTY]; ALL_TAC] THEN @@ -6170,7 +6170,7 @@ let COMPACT_CONVEX_HULL = prove (a /\ c) /\ (b /\ e) \/ (a /\ d) /\ (b /\ e)`] THEN REWRITE_TAC[GSYM HAS_SIZE; num_CONV `1`; HAS_SIZE_CLAUSES] THEN REWRITE_TAC[EXISTS_OR_THM; LEFT_AND_EXISTS_THM; RIGHT_AND_EXISTS_THM] THEN - CONV_TAC(TOP_DEPTH_CONV UNWIND_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV UNWIND_CONV)") (TOP_DEPTH_CONV UNWIND_CONV) THEN REWRITE_TAC[NOT_IN_EMPTY; CONVEX_HULL_EMPTY] THEN REWRITE_TAC[CONVEX_HULL_SING] THEN SET_TAC[]; ALL_TAC] THEN @@ -6530,7 +6530,7 @@ let ANY_CLOSEST_POINT_AFFINE_ORTHOGONAL = prove ASM_SIMP_TAC[REAL_NOT_LE; REAL_DIV_RMUL; DOT_EQ_0] THEN MATCH_MP_TAC(REAL_ARITH `~(x = &0) ==> x < &2 * abs x`) THEN RULE_ASSUM_TAC(REWRITE_RULE[GSYM DOT_EQ_0]) THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let ORTHOGONAL_ANY_CLOSEST_POINT = prove (`!s a b:real^N. @@ -6558,7 +6558,7 @@ let CLOSEST_POINT_AFFINE_ORTHOGONAL_EQ = prove !x. x IN s ==> orthogonal (x - b) (a - b))`, REPEAT STRIP_TAC THEN EQ_TAC THENL [ASM_MESON_TAC[CLOSEST_POINT_AFFINE_ORTHOGONAL; MEMBER_NOT_EMPTY]; - DISCH_TAC THEN CONV_TAC SYM_CONV THEN + DISCH_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CLOSEST_POINT_UNIQUE THEN ASM_SIMP_TAC[CLOSED_AFFINE; AFFINE_IMP_CONVEX] THEN MATCH_MP_TAC ORTHOGONAL_ANY_CLOSEST_POINT THEN ASM_REWRITE_TAC[]]);; @@ -6629,7 +6629,7 @@ let MATRIX_INV_PROJECTION_IMAGE,MATRIX_INV_PROJECTION_IMAGE_ALT = matrix(closest_point (IMAGE (\x. A ** x) UNIV))) /\ (!A:real^M^N x. (A ** matrix_inv A) ** x = closest_point (IMAGE (\x. A ** x) UNIV) x)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN SIMP_TAC[MATRIX_EQ; MATRIX_WORKS; GSYM MATRIX_VECTOR_MUL_ASSOC; LINEAR_CLOSEST_POINT; MATRIX_VECTOR_MUL_LINEAR; SUBSPACE_LINEAR_IMAGE; SUBSPACE_UNIV; @@ -7208,7 +7208,7 @@ let CARD_COMPONENTS_COMPLEMENT_CONVEX,FINITE_COMPONENTS_COMPLEMENT_CONVEX = REWRITE_TAC[GSYM REAL_INV_NEG; REAL_LT_INV_EQ] THEN ASM_REAL_ARITH_TAC; REPEAT DISJ2_TAC THEN MAP_EVERY EXPAND_TAC ["a2"; "a3"] THEN REWRITE_TAC[VECTOR_MUL_ASSOC; VECTOR_MUL_RCANCEL] THEN DISJ1_TAC THEN - UNDISCH_TAC `~(c2 = &0)` THEN CONV_TAC REAL_FIELD]; + UNDISCH_TAC `~(c2 = &0)` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]; ALL_TAC] THEN STRIP_TAC THENL [SUBGOAL_THEN @@ -8427,7 +8427,7 @@ let JUNG = prove REWRITE_TAC[ARITH_RULE `2 * n + 2 = (n + 1) * 2`; GSYM REAL_OF_NUM_MUL; real_div; REAL_INV_MUL; REAL_MUL_ASSOC] THEN MATCH_MP_TAC REAL_LE_RMUL THEN REWRITE_TAC[GSYM real_div] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SUBGOAL_THEN `&(dimindex(:N)) = &(dimindex(:N) + 1) - &1` SUBST1_TAC THENL [REWRITE_TAC[GSYM REAL_OF_NUM_ADD] THEN REAL_ARITH_TAC; @@ -8957,7 +8957,7 @@ let KIRSZBRAUN = prove MATCH_MP_TAC SUM_POS_LE THEN REWRITE_TAC[] THEN REPEAT STRIP_TAC THEN REPEAT(MATCH_MP_TAC REAL_LE_MUL THEN CONJ_TAC) THEN REWRITE_TAC[REAL_LE_POW_2] THEN ASM SET_TAC[]; - REWRITE_TAC[REAL_ENTIRE] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[REAL_ENTIRE] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(TAUT `~p /\ ~r /\ (s ==> ~q) ==> ~((p \/ q) /\ (r \/ s))`) THEN REPEAT(CONJ_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC]) THEN @@ -8987,13 +8987,13 @@ let KIRSZBRAUN = prove [ASM_MESON_TAC[REAL_LT_IMP_NZ]; SIMP_TAC[REAL_ENTIRE]] THEN UNDISCH_TAC `(x:real^M) IN d` THEN SIMP_TAC[] THEN REWRITE_TAC[REAL_POW_EQ_0; NORM_EQ_0] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[VECTOR_SUB_EQ] THEN REPLICATE_TAC 3 DISCH_TAC THEN UNDISCH_TAC `sum (d:real^M->bool) l = &1` THEN SUBGOAL_THEN `d = {x:real^M}` SUBST1_TAC THENL [ASM SET_TAC[]; REWRITE_TAC[VSUM_SING; SUM_SING]] THEN REWRITE_TAC[VECTOR_MUL_EQ_0; VECTOR_SUB_EQ; DE_MORGAN_THM] THEN - DISCH_THEN SUBST1_TAC THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + DISCH_THEN SUBST1_TAC THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM SET_TAC[]]] THEN REWRITE_TAC[NORM_POW_2] THEN UNDISCH_TAC `FINITE(d:real^M->bool)` THEN @@ -9034,7 +9034,7 @@ let KIRSZBRAUN = prove ALL_TAC] THEN SUBGOAL_THEN `!x y. (g:real^M->real^N) x - g y = (g x - b) - (g y - b)` - MP_TAC THENL [CONV_TAC VECTOR_ARITH; ALL_TAC] THEN + MP_TAC THENL [(CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN DISCH_THEN(fun th -> REWRITE_TAC[th]) THEN ONCE_REWRITE_TAC[REAL_ARITH `(x * y) * (a - b) = &2 * (x * y * (a - b) / &2)`] THEN @@ -9046,7 +9046,7 @@ let KIRSZBRAUN = prove SIMP_TAC[GSYM DOT_RSUM] THEN SIMP_TAC[GSYM DOT_LSUM] THEN REWRITE_TAC[DOT_EQ_0; VECTOR_SUB_LDISTRIB] THEN SIMP_TAC[VSUM_SUB; VSUM_RMUL] THEN DISCH_TAC THEN - ASM_REWRITE_TAC[] THEN CONV_TAC VECTOR_ARITH) in + ASM_REWRITE_TAC[] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH) in REPEAT GEN_TAC THEN ASM_CASES_TAC `B = &0` THENL [ASM_REWRITE_TAC[REAL_LE_REFL; REAL_MUL_LZERO; NORM_ARITH `norm(x - y:real^N) <= &0 <=> x = y`] THEN @@ -9153,7 +9153,7 @@ let DUGUNDJI = prove DISCH_THEN(MP_TAC o SPEC `v:real^M`) THEN ASM_REWRITE_TAC[] THEN MP_TAC(ISPECL [`{v:real^M}`; `s:real^M->bool`; `v:real^M`; `a:real^M`] SETDIST_LE_DIST) THEN - ASM_REWRITE_TAC[IN_SING] THEN CONV_TAC NORM_ARITH; + ASM_REWRITE_TAC[IN_SING] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; ALL_TAC] THEN MP_TAC(ISPECL [`c:(real^M->bool)->bool`; `u DIFF s:real^M->bool`] SUBORDINATE_PARTITION_OF_UNITY) THEN @@ -9188,7 +9188,7 @@ let DUGUNDJI = prove ASM_SIMP_TAC[OPEN_IN_DIFF; OPEN_IN_REFL; OPEN_IN_INTER_OPEN; IN_INTER; IN_DIFF] THEN CONJ_TAC THENL - [REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + [REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN REWRITE_TAC[VECTOR_MUL_EQ_0] THEN ASM SET_TAC[]; MATCH_MP_TAC CONTINUOUS_VSUM THEN ASM_REWRITE_TAC[IN_ELIM_THM] THEN @@ -9340,7 +9340,7 @@ let CONVEX_CONE = prove MAP_EVERY X_GEN_TAC [`x:real^N`; `y:real^N`] THEN STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o SPECL [`&2 % (x:real^N)`; `&2 % (y:real^N)`; `&1 / &2`; `&1 / &2`]) THEN - REWRITE_TAC[VECTOR_MUL_ASSOC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[VECTOR_MUL_ASSOC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[VECTOR_MUL_LID; REAL_POS]);; let CONVEX_CONE_ADD = prove @@ -9573,7 +9573,7 @@ let SPAN_CONVEX_CONE_ALLSIGNS = prove SUBGOAL_THEN `!s. {x:real^N | (--x) IN s} = IMAGE (--) s` (fun th -> SIMP_TAC[th; CONVEX_CONE_NEGATIONS; CONVEX_CONE_CONVEX_CONE_HULL]) THEN - GEN_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_ELIM_THM] THEN MESON_TAC[VECTOR_NEG_NEG]]; MATCH_MP_TAC HULL_MINIMAL THEN REWRITE_TAC[CONVEX_CONE_SPAN] THEN REWRITE_TAC[UNION_SUBSET; SPAN_INC] THEN @@ -9604,7 +9604,7 @@ let CONVEX_EPIGRAPH = prove let CONVEX_EPIGRAPH_CONVEX = prove (`!f s. convex s ==> (f convex_on s <=> convex(epigraph s f))`, - REWRITE_TAC[GSYM CONVEX_EPIGRAPH] THEN CONV_TAC TAUT);; + REWRITE_TAC[GSYM CONVEX_EPIGRAPH] THEN (CONV_TAC "TAUT") TAUT);; let CONVEX_ON_EPIGRAPH_SLICE_LE = prove (`!f:real^N->real s a. @@ -9647,7 +9647,7 @@ let CONVEX_ON_SUP = prove REWRITE_TAC[GSYM FORALL_DROP] THEN MAP_EVERY X_GEN_TAC [`x:real^N`; `y:real`] THEN ASM_CASES_TAC `(x:real^N) IN s` THEN ASM_REWRITE_TAC[] THENL - [CONV_TAC SYM_CONV; ASM_MESON_TAC[MEMBER_NOT_EMPTY]] THEN + [(CONV_TAC "SYM_CONV") SYM_CONV; ASM_MESON_TAC[MEMBER_NOT_EMPTY]] THEN W(MP_TAC o PART_MATCH (lhs o rand) REAL_SUP_LE_EQ o lhand o snd) THEN REWRITE_TAC[FORALL_IN_GSPEC] THEN DISCH_THEN MATCH_MP_TAC THEN ASM SET_TAC[]);; @@ -10376,7 +10376,7 @@ let MIDPOINT_CONVEX_SET = prove X_GEN_TAC `e:real` THEN DISCH_TAC] THEN MP_TAC(ISPECL [`inv(&2)`; `e / dist(a:real^N,b)`] REAL_ARCH_POW_INV) THEN ASM_SIMP_TAC[REAL_LT_DIV; DIST_POS_LT; REAL_POW_INV] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_TAC `N:num`) THENL + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_TAC `N:num`) THENL [SUBGOAL_THEN `!n. ?c d:real^N. ball(c,e) SUBSET s /\ ball(d,e) SUBSET s /\ x IN segment[c,d] /\ @@ -10467,7 +10467,7 @@ let COLLINEAR_DESCALE = prove [`a' * a:real`; `b' * b:real`; `c' * c:real`]) THEN ASM_SIMP_TAC[] THEN FIRST_X_ASSUM(K ALL_TAC o check ((=) `vec 0:real^N` o rand o concl)) THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_RING);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_RING") REAL_RING);; let CLOSED_SEGMENT_DESCALE = prove (`!a b c x y z:real^N. @@ -10494,12 +10494,12 @@ let CLOSED_SEGMENT_DESCALE = prove REAL_ENTIRE; REAL_LT_IMP_NZ] THEN ASM_REAL_ARITH_TAC; DISCH_THEN(fun th -> CONJ_TAC THEN MP_TAC th) THENL - [UNDISCH_TAC `~(b = &0)` THEN CONV_TAC REAL_FIELD; + [UNDISCH_TAC `~(b = &0)` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; DISCH_TAC THEN FIRST_X_ASSUM(MP_TAC o AP_TERM `(%) (inv b):real^N->real^N`) THEN REWRITE_TAC[VECTOR_MUL_RZERO; VECTOR_ADD_LDISTRIB; VECTOR_MUL_ASSOC] THEN ASM_SIMP_TAC[REAL_MUL_RNEG; REAL_MUL_LINV] THEN - REWRITE_TAC[real_div; REAL_MUL_AC] THEN CONV_TAC VECTOR_ARITH]]);; + REWRITE_TAC[real_div; REAL_MUL_AC] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH]]);; let OPEN_SEGMENT_DESCALE = prove (`!a b c x y z:real^N. @@ -10527,7 +10527,7 @@ let OPEN_SEGMENT_DESCALE = prove FIRST_X_ASSUM(MP_TAC o SPECL [`(&1 - u) * a - b`; `u * c:real`]) THEN ASM_REWRITE_TAC[VECTOR_ARITH `(a - b) % x + z:real^N = vec 0 <=> b % x = a % x + z`] THEN - CONJ_TAC THENL [CONV_TAC VECTOR_ARITH; ALL_TAC] THEN + CONJ_TAC THENL [(CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN UNDISCH_TAC `~(b % x:real^N = c % z)` THEN ASM_REWRITE_TAC[CONTRAPOS_THM; VECTOR_ARITH `y + u % c % z = c % z <=> y = (&1 - u) % c % z`] THEN @@ -10887,7 +10887,7 @@ let RELATIVE_INTERIOR_RELATIVE_INTERIOR = prove REWRITE_TAC[IN_BALL; IN_INTER; SUBSET] THEN X_GEN_TAC `z:real^N` THEN STRIP_TAC THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[] THEN REPEAT(FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM REAL_NOT_LE])) THEN - CONV_TAC NORM_ARITH);; + (CONV_TAC "NORM_ARITH") NORM_ARITH);; let RELATIVE_INTERIOR_EQ_EMPTY = prove (`!s:real^N->bool. @@ -11401,7 +11401,7 @@ let RELATIVE_INTERIOR_PROLONG = prove STRIP_ASSUME_TAC)) THEN ASM_CASES_TAC `y:real^N = x` THENL [ASM_REWRITE_TAC[VECTOR_ARITH `y + t % (x - x):real^N = y`] THEN - EXISTS_TAC `&2` THEN CONV_TAC REAL_RAT_REDUCE_CONV; + EXISTS_TAC `&2` THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; EXISTS_TAC `&1 + e / norm(x - y:real^N)` THEN ASM_SIMP_TAC[REAL_LT_ADDR; REAL_LT_DIV; NORM_POS_LT; VECTOR_SUB_EQ] THEN REWRITE_TAC[VECTOR_ARITH @@ -11620,7 +11620,7 @@ let SEGMENT_TO_RELATIVE_FRONTIER = prove REWRITE_TAC[IN_SEGMENT] THEN EXISTS_TAC `inv(d:real)` THEN ASM_SIMP_TAC[VECTOR_ADD_LDISTRIB; REAL_LE_INV_EQ; REAL_LT_IMP_LE; VECTOR_MUL_ASSOC; REAL_MUL_LINV; REAL_LT_IMP_NZ] THEN - CONJ_TAC THENL [MATCH_MP_TAC REAL_INV_LE_1; CONV_TAC VECTOR_ARITH] THEN + CONJ_TAC THENL [MATCH_MP_TAC REAL_INV_LE_1; (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH] THEN REWRITE_TAC[GSYM REAL_NOT_LT] THEN DISCH_TAC THEN MP_TAC(ISPECL [`s:real^N->bool`; `x:real^N`; `y:real^N`] IN_RELATIVE_INTERIOR_CLOSURE_CONVEX_SEGMENT) THEN @@ -11629,7 +11629,7 @@ let SEGMENT_TO_RELATIVE_FRONTIER = prove DISCH_THEN(MP_TAC o SPEC `x + d % (y - x):real^N`) THEN RULE_ASSUM_TAC(REWRITE_RULE[IN_DIFF; relative_frontier]) THEN ASM_REWRITE_TAC[] THEN EXISTS_TAC `d:real` THEN - ASM_REWRITE_TAC[] THEN CONV_TAC VECTOR_ARITH);; + ASM_REWRITE_TAC[] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH);; let SEGMENT_TO_RELATIVE_FRONTIER_SIMPLE = prove (`!s x:real^N. @@ -11665,9 +11665,9 @@ let SEGMENT_TO_RELATIVE_FRONTIER_SIMPLE = prove REWRITE_TAC[VECTOR_MUL_ASSOC; VECTOR_MUL_RNEG] THEN REWRITE_TAC[GSYM VECTOR_MUL_LNEG; GSYM VECTOR_ADD_RDISTRIB] THEN ASM_SIMP_TAC[REAL_LE_RDIV_EQ; REAL_LE_LDIV_EQ; REAL_LT_ADD] THEN - CONV_TAC(RAND_CONV(RAND_CONV SYM_CONV)) THEN + (CONV_TAC "(RAND_CONV(RAND_CONV SYM_CONV))") (RAND_CONV(RAND_CONV SYM_CONV)) THEN ASM_REWRITE_TAC[VECTOR_MUL_EQ_0] THEN - MAP_EVERY UNDISCH_TAC [`&0 < u`; `&0 < v`] THEN CONV_TAC REAL_FIELD);; + MAP_EVERY UNDISCH_TAC [`&0 < u`; `&0 < v`] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let SEGMENT_TO_FRONTIER_SIMPLE = prove (`!s x:real^N. @@ -11703,9 +11703,9 @@ let SEGMENT_TO_FRONTIER_SIMPLE = prove REWRITE_TAC[VECTOR_MUL_ASSOC; VECTOR_MUL_RNEG] THEN REWRITE_TAC[GSYM VECTOR_MUL_LNEG; GSYM VECTOR_ADD_RDISTRIB] THEN ASM_SIMP_TAC[REAL_LE_RDIV_EQ; REAL_LE_LDIV_EQ; REAL_LT_ADD] THEN - CONV_TAC(RAND_CONV(RAND_CONV SYM_CONV)) THEN + (CONV_TAC "(RAND_CONV(RAND_CONV SYM_CONV))") (RAND_CONV(RAND_CONV SYM_CONV)) THEN ASM_REWRITE_TAC[VECTOR_MUL_EQ_0] THEN - MAP_EVERY UNDISCH_TAC [`&0 < u`; `&0 < v`] THEN CONV_TAC REAL_FIELD);; + MAP_EVERY UNDISCH_TAC [`&0 < u`; `&0 < v`] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let SUBSET_CONVEX_HULL_RELATIVE_FRONTIER = prove (`!s:real^N->bool. @@ -11795,7 +11795,7 @@ let RELATIVE_FRONTIER_NOT_SING = prove ASM_SIMP_TAC[VECTOR_SUB_EQ; IN_AFFINE_ADD_MUL_DIFF; AFFINE_AFFINE_HULL; HULL_INC; VECTOR_MUL_EQ_0] THEN DISCH_THEN(fun th -> MP_TAC(SPEC `&1` th) THEN MP_TAC(SPEC `--(&1)` th)) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[IN_SING] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[IN_SING] THEN DISCH_THEN(X_CHOOSE_THEN `e:real` (STRIP_ASSUME_TAC o GSYM)) THEN ASM_REWRITE_TAC[VECTOR_MUL_RCANCEL; VECTOR_MUL_ASSOC; VECTOR_SUB_EQ; VECTOR_ARITH `a + x:real^N = a + y <=> x = y`] THEN @@ -12040,7 +12040,7 @@ let IN_RELATIVE_INTERIOR_IN_OPEN_SEGMENT_STRONG = prove MATCH_MP_TAC BETWEEN_TRANS_2 THEN EXISTS_TAC `b:real^N` THEN REWRITE_TAC[BETWEEN_MIDPOINT] THEN ASM_MESON_TAC[BETWEEN_IN_SEGMENT; segment; IN_DIFF; SEGMENT_SYM]; - CONV_TAC(RAND_CONV SYM_CONV) THEN REWRITE_TAC[MIDPOINT_EQ_ENDPOINT] THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN REWRITE_TAC[MIDPOINT_EQ_ENDPOINT] THEN ASM_MESON_TAC[ENDS_NOT_IN_SEGMENT]]]);; let IN_RELATIVE_INTERIOR_IN_OPEN_SEGMENT_EQ = prove @@ -12153,13 +12153,13 @@ let SUBSET_RELATIVE_INTERIOR_INTERSECTING_CONVEX = prove let CONVEX_HULL_SPHERE = prove (`!s:real^N r. convex hull (sphere(a,r)) = cball(a,r)`, REPEAT GEN_TAC THEN REWRITE_TAC[GSYM FRONTIER_CBALL] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC KREIN_MILMAN_FRONTIER THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC KREIN_MILMAN_FRONTIER THEN REWRITE_TAC[CONVEX_CBALL; COMPACT_CBALL]);; let SPHERE_SUBSET_CONVEX = prove (`!s a:real^N r. convex s ==> (sphere(a,r) SUBSET s <=> cball(a,r) SUBSET s)`, REWRITE_TAC[GSYM CONVEX_HULL_SPHERE] THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN REWRITE_TAC[SUBSET_HULL]);; + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN REWRITE_TAC[SUBSET_HULL]);; let DIAMETER_SPHERE = prove (`!a:real^N r. diameter(sphere(a,r)) = if r < &0 then &0 else &2 * r`, @@ -12190,7 +12190,7 @@ let CONVEX_NEARBY_IN_SCALING = prove MAP_EVERY EXISTS_TAC [`x:real^N`; `inv(r - &1) % (y - x):real^N`] THEN ASM_SIMP_TAC[VECTOR_MUL_ASSOC; REAL_MUL_RINV; REAL_LT_IMP_NZ; REAL_SUB_LT] THEN - CONJ_TAC THENL [ALL_TAC; CONV_TAC VECTOR_ARITH] THEN + CONJ_TAC THENL [ALL_TAC; (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH] THEN FIRST_X_ASSUM(MATCH_MP_TAC o GEN_REWRITE_RULE I [SUBSET]) THEN REWRITE_TAC[IN_CBALL_0; IN_INTER; NORM_MUL; REAL_ABS_INV] THEN ASM_SIMP_TAC[SPAN_MUL; SPAN_SUB; SPAN_SUPERSET] THEN @@ -12221,7 +12221,7 @@ let CONVEX_NEARBY_IN_SCALING_RELATIVE_INTERIOR = prove SUBST1_TAC THENL [REWRITE_TAC[o_DEF; VECTOR_MUL_ASSOC] THEN ABS_TAC THEN AP_THM_TAC THEN AP_TERM_TAC THEN - UNDISCH_TAC `&1 < r` THEN CONV_TAC REAL_FIELD; + UNDISCH_TAC `&1 < r` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; REWRITE_TAC[IMAGE_o] THEN MATCH_MP_TAC IMAGE_SUBSET] THEN REWRITE_TAC[SUBSET; FORALL_IN_IMAGE] THEN X_GEN_TAC `z:real^N` THEN STRIP_TAC THEN @@ -12292,7 +12292,7 @@ let IS_INTERVAL_RELATIVE_INTERIOR = prove REWRITE_TAC[SUBSET] THEN DISCH_THEN MATCH_MP_TAC THEN ASM_REWRITE_TAC[IN_CBALL; IN_INTER] THEN (CONJ_TAC THENL - [UNDISCH_TAC `dist(x:real^N,y) <= min d e` THEN CONV_TAC NORM_ARITH; + [UNDISCH_TAC `dist(x:real^N,y) <= min d e` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; ONCE_REWRITE_TAC[VECTOR_ARITH `a + b:real^N = a + &1 % b`] THEN MATCH_MP_TAC IN_AFFINE_ADD_MUL_DIFF THEN ASM_SIMP_TAC[AFFINE_AFFINE_HULL; HULL_INC]]));; @@ -12378,7 +12378,7 @@ let CONVEX_PREIMAGE_CONCAVE_SCALING = prove DISCH_THEN(X_CHOOSE_THEN `u:real` (STRIP_ASSUME_TAC o GSYM)) THEN EXISTS_TAC `(&1 - u) * (f:real^N->real) a / f x` THEN EXISTS_TAC `u * (f:real^N->real) b / f x` THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [REAL_LE_MUL; REAL_LE_DIV; REAL_SUB_LE; REAL_LT_IMP_LE] THEN CONJ_TAC THENL [ASM_SIMP_TAC[REAL_LE_LDIV_EQ; REAL_ARITH @@ -12430,11 +12430,11 @@ let CONVEXITY_PRESERVING_SHRINK_0 = prove X_GEN_TAC `x:real^N` THEN REWRITE_TAC[VECTOR_MUL_ASSOC] THEN GEN_REWRITE_TAC RAND_CONV [GSYM VECTOR_MUL_LID] THEN AP_THM_TAC THEN AP_TERM_TAC THEN - MP_TAC(ISPEC `x:real^N` NORM_POS_LE) THEN CONV_TAC REAL_FIELD; + MP_TAC(ISPEC `x:real^N` NORM_POS_LE) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; GEN_TAC THEN REWRITE_TAC[VECTOR_MUL_ASSOC] THEN MATCH_MP_TAC(MESON[VECTOR_MUL_LID] `(P ==> a = &1) ==> P ==> a % y = y`) THEN - CONV_TAC REAL_FIELD]; + (CONV_TAC "REAL_FIELD") REAL_FIELD]; DISCH_TAC] THEN MATCH_MP_TAC(TAUT `p /\ (p ==> q) ==> p /\ q`) THEN CONJ_TAC THENL [X_GEN_TAC `s:real^N->bool` THEN MATCH_MP_TAC SUBSET_ANTISYM THEN @@ -12829,7 +12829,7 @@ let EMPTY_INTERIOR_SUBSET_HYPERPLANE = prove SUBGOAL_THEN `~(relative_interior(s:real^N->bool) = {})` MP_TAC THENL [ASM_MESON_TAC[RELATIVE_INTERIOR_EQ_EMPTY; MEMBER_NOT_EMPTY]; ALL_TAC] THEN ASM_REWRITE_TAC[CONTRAPOS_THM] THEN MATCH_MP_TAC EQ_IMP THEN - AP_THM_TAC THEN AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + AP_THM_TAC THEN AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC RELATIVE_INTERIOR_INTERIOR THEN ASM_SIMP_TAC[AFFINE_HULL_EQ_SPAN; HULL_INC] THEN ONCE_REWRITE_TAC[GSYM SPAN_UNIV] THEN MATCH_MP_TAC DIM_EQ_SPAN THEN @@ -13340,7 +13340,7 @@ let RELATIVE_INTERIOR_CONVEX_INTER_AFFINE = prove ASM_REAL_ARITH_TAC; REWRITE_TAC[SUBSET; IN_INTERIOR_CBALL; IN_CBALL] THEN DISCH_THEN MATCH_MP_TAC THEN REWRITE_TAC[IN_SEGMENT] THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN ASM_REWRITE_TAC[VECTOR_MUL_EQ_0; VECTOR_MUL_RZERO; VECTOR_ADD_LID] THEN REWRITE_TAC[RIGHT_AND_EXISTS_THM] THEN EXISTS_TAC `inv(&1 + e / norm(x:real^N))` THEN @@ -13427,7 +13427,7 @@ let SEGMENT_AS_BALL = prove REPEAT STRIP_TAC THEN (ASM_CASES_TAC `b:real^N = a` THEN ASM_REWRITE_TAC[SEGMENT_REFL; VECTOR_SUB_REFL; NORM_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[BALL_TRIVIAL; CBALL_TRIVIAL] THENL [REWRITE_TAC[INTER_EMPTY; INSERT_AC] THEN REWRITE_TAC[VECTOR_ARITH `&1 / &2 % (a + a) = a`] THEN @@ -13628,7 +13628,7 @@ let SUBSET_SEGMENT_OPEN_CLOSED = prove min a b <= x /\ x <= max a b`; REAL_ARITH `a < x /\ x < b \/ b < x /\ x < a <=> min a b < x /\ x < max a b`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[SUBSET; IN_ELIM_THM] THEN DISCH_TAC THEN X_GEN_TAC `x:real` THEN FIRST_X_ASSUM(fun th -> MAP_EVERY (MP_TAC o C SPEC th) @@ -13738,7 +13738,7 @@ let SEGMENT_EQ = prove REPEAT GEN_TAC THEN ASM_CASES_TAC `c:real^N = d` THEN ASM_REWRITE_TAC[SEGMENT_EQ_EMPTY; SEGMENT_REFL] THENL [ASM SET_TAC[]; ALL_TAC] THEN - CONV_TAC(BINOP_CONV SYM_CONV)THEN + (CONV_TAC "(BINOP_CONV SYM_CONV)") (BINOP_CONV SYM_CONV)THEN ASM_CASES_TAC `a:real^N = b` THEN ASM_REWRITE_TAC[SEGMENT_EQ_EMPTY; SEGMENT_REFL] THENL [ASM SET_TAC[]; ALL_TAC] THEN @@ -13835,7 +13835,7 @@ let CONVEX_LINE_INTERSECTION_UNIQUE_OPEN = prove CONVEX_LINE_INTERSECTION_UNIQUE_CLOSED) THEN ASM_SIMP_TAC[RELATIVE_FRONTIER_CLOSURE; CONVEX_RELATIVE_INTERIOR_CLOSURE; RELATIVE_INTERIOR_OPEN; CONVEX_CLOSURE; CLOSED_CLOSURE] THEN - DISCH_TAC THEN CONV_TAC SYM_CONV THEN + DISCH_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MP_TAC(ISPECL [`closure s:real^N->bool`; `affine hull {a:real^N,b}`] RELATIVE_INTERIOR_CONVEX_INTER_AFFINE) THEN ASM_SIMP_TAC[CONVEX_CLOSURE; AFFINE_AFFINE_HULL] THEN @@ -13977,7 +13977,7 @@ let DENSE_COMPLEMENT_OPEN_IN_AFFINE_HULL = prove ASM_REWRITE_TAC[OPEN_IN_RELATIVE_INTERIOR; SUBSET_DIFF] THEN ASM_SIMP_TAC[DENSE_COMPLEMENT_AFFINE; AFFINE_AFFINE_HULL; AFF_DIM_AFFINE_HULL] THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN MATCH_MP_TAC EQ_IMP THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC EQ_IMP THEN BINOP_TAC THEN AP_TERM_TAC THEN MP_TAC(ISPECL [`affine:(real^N->bool)->bool`; `s:real^N->bool`] HULL_SUBSET) THEN SET_TAC[]);; @@ -14285,7 +14285,7 @@ let STARLIKE_COMPACT_PROJECTIVE = prove ASM_REWRITE_TAC[IN_DELETE; IN_INTER; IN_CBALL; NORM_POS_LT] THEN X_GEN_TAC `y:real^N` THEN ASM_CASES_TAC `(y:real^N) IN affine hull s` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC NORM_ARITH]]; + (CONV_TAC "NORM_ARITH") NORM_ARITH]]; ALL_TAC] THEN CONJ_TAC THENL [ALL_TAC; @@ -14295,7 +14295,7 @@ let STARLIKE_COMPACT_PROJECTIVE = prove ASM SET_TAC[]; ALL_TAC] THEN ASM_CASES_TAC `x:real^N = vec 0` THENL - [CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + [(CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN ASM_SIMP_TAC[VECTOR_MUL_LZERO; VECTOR_MUL_EQ_0; NORM_0; NORM_EQ_0] THEN ASM SET_TAC[]; ALL_TAC] THEN @@ -14326,14 +14326,14 @@ let STARLIKE_COMPACT_PROJECTIVE = prove EXISTS_TAC `inv(norm(surf(proj x:real^N):real^N)) % x:real^N` THEN FIRST_ASSUM(fun th -> GEN_REWRITE_TAC LAND_CONV [GSYM th]) THEN REWRITE_TAC[GSYM CONJ_ASSOC] THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [NORM_POS_LT; REAL_LT_INV_EQ; HULL_INC; REAL_LT_MUL; NORM_MUL; REAL_ABS_INV; REAL_ABS_NORM] THEN REPEAT CONJ_TAC THENL [MATCH_MP_TAC(REAL_FIELD `~(y = &0) ==> x = (inv y * x) * y`) THEN ASM_SIMP_TAC[NORM_EQ_0; HULL_INC]; ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [GSYM real_div; REAL_LE_LDIV_EQ; NORM_POS_LT; HULL_INC; REAL_MUL_LID] THEN FIRST_X_ASSUM(MP_TAC o SPECL [`x:real^N`; `norm(surf(proj x:real^N):real^N) / norm(x:real^N)`]) THEN @@ -14344,7 +14344,7 @@ let STARLIKE_COMPACT_PROJECTIVE = prove `norm(surf(proj x)) / norm x % x:real^N = surf(proj x:real^N)` SUBST1_TAC THENL [FIRST_X_ASSUM(fun th -> GEN_REWRITE_TAC I [GSYM th]) THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [NORM_POS_LT; REAL_LT_INV_EQ; HULL_INC; REAL_LT_MUL; NORM_MUL; REAL_ABS_INV; REAL_ABS_NORM; REAL_ABS_DIV; REAL_LT_DIV; REAL_DIV_RMUL; NORM_EQ_0]; @@ -14383,7 +14383,7 @@ let [HOMEOMORPHIC_CONVEX_COMPACT_SETS; EMPTY_DIFF; HOMEOMORPHIC_EMPTY; RELATIVE_INTERIOR_EQ_EMPTY]; FIRST_X_ASSUM(X_CHOOSE_THEN `b:real^N` MP_TAC o GEN_REWRITE_RULE I [GSYM MEMBER_NOT_EMPTY])] THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN ASM_CASES_TAC `relative_interior s:real^M->bool = {}` THENL [UNDISCH_TAC `relative_interior s:real^M->bool = {}` THEN ASM_SIMP_TAC[AFF_DIM_EMPTY; AFF_DIM_EQ_MINUS1; RELATIVE_INTERIOR_EMPTY; @@ -14682,7 +14682,7 @@ let INVERSE_LIPSCHITZ_CONVEX_SPHERICAL_PROJECTION_EXPLICIT = prove ONCE_REWRITE_TAC[REAL_RING `x = &0 <=> x pow 2 = &0`] THEN REWRITE_TAC[COLLINEAR_3_2D; dist; orthogonal; NORM_POW_2] THEN REWRITE_TAC[DOT_2; VECTOR_SUB_COMPONENT; VEC_COMPONENT] THEN - CONV_TAC REAL_RING) in + (CONV_TAC "REAL_RING") REAL_RING) in let mainlemma = prove (`collinear {z:real^N,x,x'} /\ collinear {w,x,y} /\ orthogonal (z - w) (x - y) /\ @@ -15370,7 +15370,7 @@ let GRAPH_EMBEDS_IN_R3 = prove MP_TAC THENL [EXPAND_TAC "v" THEN REWRITE_TAC[DET_3; VECTOR_3; VECTOR_SUB_COMPONENT] THEN - POP_ASSUM MP_TAC THEN REWRITE_TAC[PAIRWISE; ALL] THEN CONV_TAC REAL_RING; + POP_ASSUM MP_TAC THEN REWRITE_TAC[PAIRWISE; ALL] THEN (CONV_TAC "REAL_RING") REAL_RING; DISCH_THEN(MP_TAC o MATCH_MP (ONCE_REWRITE_RULE[GSYM CONTRAPOS_THM] DET_DEPENDENT_ROWS))] THEN REWRITE_TAC[rows] THEN ONCE_REWRITE_TAC[SIMPLE_IMAGE_GEN] THEN @@ -15381,7 +15381,7 @@ let GRAPH_EMBEDS_IN_R3 = prove REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY] THEN ASM_REWRITE_TAC[VECTOR_ARITH `x - z:real^3 = y - z <=> x = y`] THEN RULE_ASSUM_TAC(REWRITE_RULE[PAIRWISE; ALL]) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NUM_REDUCE_CONV; + ASM_REWRITE_TAC[] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ALL_TAC] THEN SUBGOAL_THEN `!a b c. collinear(IMAGE (v:real->real^3) {a,b,c}) @@ -15460,7 +15460,7 @@ let MIDPOINT_CONVEX_DYADIC_RATIONALS = prove [REWRITE_TAC[ARITH_RULE `m + p = 2 EXP 0 <=> m = 0 /\ p = 1 \/ m = 1 /\ p = 0`] THEN REPEAT STRIP_TAC THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[VECTOR_MUL_LID; VECTOR_MUL_LZERO; VECTOR_ADD_LID; VECTOR_ADD_RID] THEN REAL_ARITH_TAC; @@ -15794,7 +15794,7 @@ let RELATIVE_INTERIOR_UNBOUNDED_CONVEX_CONTAINS_RAY = prove (a + (&2 * t) % l) - inv(&2) % ((a + (&2 * t) % l) - a)`] THEN REPEAT STRIP_TAC THEN MATCH_MP_TAC IN_RELATIVE_INTERIOR_CLOSURE_CONVEX_SHRINK THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_REAL_ARITH_TAC]);; let RELATIVE_INTERIOR_CONVEX_CONTAINS_SAME_RAY = prove @@ -15814,7 +15814,7 @@ let RELATIVE_INTERIOR_CONVEX_CONTAINS_SAME_RAY = prove (a + (&2 * t) % l) - inv(&2) % ((a + (&2 * t) % l) - a)`] THEN REPEAT STRIP_TAC THEN MATCH_MP_TAC IN_RELATIVE_INTERIOR_CLOSURE_CONVEX_SHRINK THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_REAL_ARITH_TAC]);; let RELATIVE_INTERIOR_UNBOUNDED_CONVEX_CONTAINS_RAYS = prove @@ -16092,7 +16092,7 @@ let INTERIOR_CONVEX_HULL_EXPLICIT_MINIMAL = prove MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `relative_interior(convex hull s):real^N->bool` THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC RELATIVE_INTERIOR_INTERIOR THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC RELATIVE_INTERIOR_INTERIOR THEN REWRITE_TAC[AFFINE_HULL_CONVEX_HULL] THEN MATCH_MP_TAC AFFINE_INDEPENDENT_SPAN_GT THEN ASM_REWRITE_TAC[] THEN ASM_ARITH_TAC; @@ -16120,7 +16120,7 @@ let INTERIOR_CONVEX_HULL_EXPLICIT = prove `~(c <= n) ==> 1 <= n ==> 2 <= c`)) THEN REWRITE_TAC[DIMINDEX_GE_1]; ALL_TAC] THEN - CONV_TAC(ONCE_DEPTH_CONV HAS_SIZE_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV HAS_SIZE_CONV)") (ONCE_DEPTH_CONV HAS_SIZE_CONV) THEN REWRITE_TAC[SUBSET] THEN DISCH_THEN(X_CHOOSE_THEN `t:real^N->bool` (CONJUNCTS_THEN2 ASSUME_TAC MP_TAC)) THEN @@ -16175,8 +16175,7 @@ let INTERIOR_CONVEX_HULL_3_MINIMAL = prove REPEAT STRIP_TAC THEN ASM_SIMP_TAC[INTERIOR_CONVEX_HULL_EXPLICIT_MINIMAL] THEN ASM_SIMP_TAC[CARD_CLAUSES; FINITE_INSERT; FINITE_EMPTY] THEN - CONV_TAC(LAND_CONV(RATOR_CONV(LAND_CONV(ONCE_DEPTH_CONV(REWRITE_CONV - [IN_INSERT; NOT_IN_EMPTY]))))) THEN + (CONV_TAC "(LAND_CONV(RATOR_CONV(LAND_CONV(ONCE_DEPTH_CONV(REWRITE_CONV [IN_INSERT; NOT_IN_EMPTY])))))") (LAND_CONV(RATOR_CONV(LAND_CONV(ONCE_DEPTH_CONV(REWRITE_CONV [IN_INSERT; NOT_IN_EMPTY]))))) THEN ASM_REWRITE_TAC[DIMINDEX_2; ARITH] THEN SIMP_TAC[FINITE_INSERT; FINITE_UNION; FINITE_EMPTY; RIGHT_EXISTS_AND_THM; AFFINE_HULL_FINITE_STEP_GEN; REAL_LT_ADD; REAL_HALF] THEN @@ -16258,7 +16257,7 @@ let FRONTIER_CONVEX_HULL_EXPLICIT = prove ASM_SIMP_TAC[CLOSURE_CONVEX_HULL; FINITE_IMP_COMPACT; DIFF_EMPTY] THEN REWRITE_TAC[CONVEX_HULL_FINITE]; ASM_SIMP_TAC[GSYM RELATIVE_FRONTIER_CONVEX_HULL_EXPLICIT] THEN - REWRITE_TAC[relative_frontier] THEN AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[relative_frontier] THEN AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC RELATIVE_INTERIOR_INTERIOR THEN MATCH_MP_TAC(SET_RULE `!s. s SUBSET t /\ s = UNIV ==> t = UNIV`) THEN EXISTS_TAC `affine hull s:real^N->bool` THEN @@ -16304,7 +16303,7 @@ let FRONTIER_CONVEX_HULL_CASES = prove ASM_SIMP_TAC[GSYM RELATIVE_FRONTIER_CONVEX_HULL_CASES] THEN ASM_SIMP_TAC[relative_frontier; frontier; CLOSURE_CONVEX_HULL; FINITE_IMP_COMPACT] THEN - AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN RULE_ASSUM_TAC(REWRITE_RULE[NOT_LE]) THEN MATCH_MP_TAC RELATIVE_INTERIOR_INTERIOR THEN MATCH_MP_TAC(SET_RULE `!s. s SUBSET t /\ s = UNIV ==> t = UNIV`) THEN @@ -16374,7 +16373,7 @@ let INTERIOR_CONVEX_HULL_EQ_EMPTY = prove EXISTS_TAC `\x:real^N. inv(&(dimindex(:N)) + &1)` THEN ASM_SIMP_TAC[REAL_LT_INV_EQ; REAL_ARITH `&0 < &n + &1`] THEN ASM_SIMP_TAC[SUM_CONST; GSYM REAL_OF_NUM_ADD] THEN - CONV_TAC REAL_FIELD]);; + (CONV_TAC "REAL_FIELD") REAL_FIELD]);; (* ------------------------------------------------------------------------- *) (* Similar things in special case (could use above as lemmas here instead). *) @@ -16526,7 +16525,7 @@ let BARYCENTRE_2 = prove VSUM_CLAUSES; NOT_IN_EMPTY; IN_SING; midpoint] THEN REPEAT GEN_TAC THEN COND_CASES_TAC THEN ASM_SIMP_TAC[CARD_CLAUSES; FINITE_RULES; IN_SING; NOT_IN_EMPTY] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC VECTOR_ARITH);; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH);; let BARYCENTRE_IN_RELATIVE_INTERIOR = prove (`!s:real^N->bool. @@ -16609,7 +16608,7 @@ let REGULAR_POLYTOPE_DIST_BARYCENTRE = prove FIRST_X_ASSUM(CHOOSE_THEN SUBST1_TAC) THEN REWRITE_TAC[HAS_SIZE; CARD_SING] THEN DISCH_THEN(STRIP_ASSUME_TAC o GSYM) THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[BARYCENTRE_1; IN_SING; SQRT_0; DIST_REFL; REAL_MUL_LZERO]] THEN ABBREV_TAC `z:real^N = barycentre s` THEN @@ -16631,7 +16630,7 @@ let REGULAR_POLYTOPE_DIST_BARYCENTRE = prove CONJ_TAC THENL [MATCH_MP_TAC SUM_EQ THEN REWRITE_TAC[] THEN REPEAT STRIP_TAC THEN COND_CASES_TAC THEN ASM_SIMP_TAC[DIST_REFL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ASM_SIMP_TAC[SUM_CASES; GSYM DELETE; SUM_0; SUM_CONST; FINITE_DELETE; REAL_ADD_LID; CARD_DELETE; GSYM REAL_OF_NUM_SUB; LE_1]]; REWRITE_TAC[DIST_0] THEN REWRITE_TAC[dist; NORM_POW_2] THEN @@ -16752,7 +16751,7 @@ let REGULAR_POLYTOPE_EXISTS = prove ASM_SIMP_TAC[SQRT_POW_2; REAL_LE_DIV; REAL_LE_MUL; REAL_POS; REAL_LE_ADD; REAL_LT_IMP_LE; REAL_POW_MUL; REAL_SUB_LE; REAL_OF_NUM_LE; LE_1] THEN UNDISCH_TAC `~(n = 0)` THEN REWRITE_TAC[GSYM REAL_OF_NUM_EQ] THEN - CONV_TAC REAL_FIELD]);; + (CONV_TAC "REAL_FIELD") REAL_FIELD]);; let REGULAR_POLYTOPE_WITH_BARYCENTRE_EXISTS_ALT = prove (`!r s:real^N->bool a n. @@ -16809,7 +16808,7 @@ let REGULAR_POLYTOPE_WITH_BARYCENTRE_EXISTS = prove REWRITE_TAC[GSYM SQRT_MUL] THEN MATCH_MP_TAC(MESON[SQRT_1] `x = &1 ==> sqrt x = &1`) THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM REAL_OF_NUM_LT]) THEN - CONV_TAC REAL_FIELD]);; + (CONV_TAC "REAL_FIELD") REAL_FIELD]);; (* ------------------------------------------------------------------------- *) (* Continuity of convex functions and related results. *) @@ -16891,7 +16890,7 @@ let CONVEX_IMP_LOCALLY_BOUNDED = prove MP_TAC THENL [ASM_MESON_TAC[CONVEX_ON_SUBSET]; SIMP_TAC[convex_on]] THEN DISCH_THEN(MP_TAC o SPECL [`x:real^N`; `&2 % a - x:real^N`; `&1 / &2`; `&1 / &2`]) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[IN_INTER] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[IN_INTER] THEN REWRITE_TAC[VECTOR_ARITH `&1 / &2 % x + &1 / &2 % (&2 % a - x):real^N = a`] THEN UNDISCH_TAC `!x:real^N. x IN convex hull k ==> f x <= b` THEN @@ -17144,7 +17143,7 @@ let CONVEX_BOUNDS_LEMMA = prove [`y:real^N`; `&2 % x - y:real^N`; `&1 / &2`; `&1 / &2`]) THEN REWRITE_TAC[GSYM VECTOR_ADD_LDISTRIB; GSYM REAL_ADD_LDISTRIB] THEN REWRITE_TAC[VECTOR_ARITH `y + x - y = x:real^N`] THEN - REWRITE_TAC[VECTOR_MUL_ASSOC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[VECTOR_MUL_ASSOC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ABBREV_TAC `z = &2 % x - y:real^N` THEN SUBGOAL_THEN `z:real^N IN cball(x,e)` ASSUME_TAC THENL [UNDISCH_TAC `y:real^N IN cball(x,e)` THEN diff --git a/Multivariate/cross.ml b/Multivariate/cross.ml index e7538b99..339e3f55 100644 --- a/Multivariate/cross.ml +++ b/Multivariate/cross.ml @@ -26,7 +26,7 @@ let VEC3_TAC = SIMP_TAC[CART_EQ; LAMBDA_BETA; FORALL_3; SUM_3; DIMINDEX_3; VECTOR_3; vector_add; vec; dot; cross; orthogonal; basis; DET_3; vector_neg; vector_sub; vector_mul; ARITH] THEN - CONV_TAC REAL_RING;; + (CONV_TAC "REAL_RING") REAL_RING;; let VEC3_RULE tm = prove(tm,VEC3_TAC);; diff --git a/Multivariate/cvectors.ml b/Multivariate/cvectors.ml index afd59a43..59a18cec 100755 --- a/Multivariate/cvectors.ml +++ b/Multivariate/cvectors.ml @@ -1794,7 +1794,7 @@ let CORTHOGONAL_REAL_CLAUSES = prove REWRITE_TAC[corthogonal;orthogonal;CDOT_LREAL;CDOT_RREAL;COMPLEX_SUB_0; COMPLEX_EQ;RE_CX;IM_CX;RE_SUB;IM_SUB;RE_ADD;IM_ADD] THEN REWRITE_TAC[RE_DEF;CX_DEF;IM_DEF;complex;complex_mul;VECTOR_2;ii] - THEN CONV_TAC REAL_FIELD);; + THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let [CORTHOGONAL_RREAL;CORTHOGONAL_LREAL] = GCONJUNCTS CORTHOGONAL_REAL_CLAUSES;; diff --git a/Multivariate/degree.ml b/Multivariate/degree.ml index fa6d5195..a5ea48f1 100644 --- a/Multivariate/degree.ml +++ b/Multivariate/degree.ml @@ -57,12 +57,12 @@ open Polytope;; let HAS_SIZE_1_EXISTS = prove (`!s. s HAS_SIZE 1 <=> ?!x. x IN s`, - REPEAT GEN_TAC THEN CONV_TAC(LAND_CONV HAS_SIZE_CONV) THEN + REPEAT GEN_TAC THEN (CONV_TAC "(LAND_CONV HAS_SIZE_CONV)") (LAND_CONV HAS_SIZE_CONV) THEN REWRITE_TAC[EXTENSION; IN_SING] THEN MESON_TAC[]);; let HAS_SIZE_2_EXISTS = prove (`!s. s HAS_SIZE 2 <=> ?x y. ~(x = y) /\ !z. z IN s <=> (z = x) \/ (z = y)`, - REPEAT GEN_TAC THEN CONV_TAC(LAND_CONV HAS_SIZE_CONV) THEN + REPEAT GEN_TAC THEN (CONV_TAC "(LAND_CONV HAS_SIZE_CONV)") (LAND_CONV HAS_SIZE_CONV) THEN REWRITE_TAC[EXTENSION; IN_INSERT; NOT_IN_EMPTY] THEN MESON_TAC[]);; let SIMPLEX_EXTREME_POINTS_NONEMPTY = prove @@ -398,7 +398,7 @@ let RELATIVE_ORIENTATION = prove ABBREV_TAC `B = @A:real^N^N. rows A = {v | v extreme_point_of s}` THEN SUBGOAL_THEN `rows(B:real^N^N) = rows(A:real^N^N)` MP_TAC THENL [ASM_MESON_TAC[]; ALL_TAC] THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN POP_ASSUM_LIST(K ALL_TAC) THEN DISCH_TAC THEN MP_TAC(ISPECL [`\i. row i (B:real^N^N)`; `1..dimindex(:N)`] CARD_IMAGE_EQ_INJ) THEN @@ -465,7 +465,7 @@ let RELATIVE_ORIENTATION_LINEAR = prove SUBGOAL_THEN `rows(A:real^N^N) = {v | v extreme_point_of c}` ASSUME_TAC THENL [ASM_MESON_TAC[SIMPLEX_ORDERING_EXISTS]; AP_TERM_TAC] THEN SUBGOAL_THEN `~(det(A:real^N^N) = &0)` MP_TAC THENL - [ASM_MESON_TAC[DET_ORDERED_SIMPLEX_NZ]; CONV_TAC REAL_FIELD]);; + [ASM_MESON_TAC[DET_ORDERED_SIMPLEX_NZ]; (CONV_TAC "REAL_FIELD") REAL_FIELD]);; (* ------------------------------------------------------------------------- *) (* Apply a function to the vertices of a simplex to get a new cell. *) @@ -604,7 +604,7 @@ let RELATIVE_ORIENTATION_COMPOSE = prove RELATIVE_ORIENTATION) THEN ANTS_TAC THENL [REWRITE_TAC[ROWS_MAPROWS; vertex_image] THEN - FIRST_ASSUM(SUBST1_TAC o SYM) THEN CONV_TAC SYM_CONV THEN + FIRST_ASSUM(SUBST1_TAC o SYM) THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC EXTREME_POINTS_OF_CONVEX_HULL_AFFINE_INDEPENDENT THEN REWRITE_TAC[GSYM ROWS_MAPROWS] THEN DISCH_THEN(MP_TAC o MATCH_MP AFFINE_DEPENDENT_IMP_DEPENDENT) THEN @@ -612,7 +612,7 @@ let RELATIVE_ORIENTATION_COMPOSE = prove DISCH_THEN SUBST1_TAC] THEN REWRITE_TAC[MAPROWS_COMPOSE; o_THM; GSYM REAL_SGN_MUL] THEN AP_TERM_TAC THEN REPEAT(FIRST_X_ASSUM(MP_TAC o check (is_neg o concl))) THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let ANY_IN_CONIC_HULL_SIMPLEX = prove (`!u t. convex u /\ bounded u /\ vec 0 IN interior u /\ UNIONS t = frontier u @@ -1347,7 +1347,7 @@ let BROUWER_DEGREE3_POINT_INDEPENDENCE = prove z IN frontier(conic hull vertex_image f c)} (relative_orientation(f:real^N->real^N))` THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_UNION_EQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_UNION_EQ THEN ASM_SIMP_TAC[FINITE_RESTRICT] THEN SET_TAC[]; AP_TERM_TAC] THEN W(MP_TAC o PART_MATCH (lhand o rand) @@ -1912,7 +1912,7 @@ let BROUWER_DEGREE3_POINT_INDEPENDENCE = prove convex hull {v:real^N | v extreme_point_of d} = d /\ convex hull {v:real^N | v extreme_point_of k} = k` STRIP_ASSUME_TAC THENL - [REPEAT CONJ_TAC THEN CONV_TAC SYM_CONV THEN + [REPEAT CONJ_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC KREIN_MILMAN_MINKOWSKI THEN (CONJ_TAC THENL [MATCH_MP_TAC POLYTOPE_IMP_CONVEX; @@ -2211,7 +2211,7 @@ let BROUWER_DEGREE3_POINT_INDEPENDENCE = prove REAL_SGN_CASES) THEN ASM_REWRITE_TAC[CONJUNCT1 REAL_SGN_EQ] THEN REPLICATE_TAC 6 STRIP_TAC THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV] THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN SUBGOAL_THEN `~(relative_interior(conic hull k):real^N->bool = {})` MP_TAC THENL [DISCH_THEN(MP_TAC o AP_TERM `aff_dim:(real^N->bool)->int`) THEN @@ -2261,7 +2261,7 @@ let BROUWER_DEGREE3_POINT_INDEPENDENCE = prove REWRITE_TAC[RELATIVE_INTERIOR_SUBSET] THEN MATCH_MP_TAC FACE_OF_SUBSET_FRONTIER_AFF_DIM THEN ASM_SIMP_TAC[AFF_DIM_CONIC_HULL] THEN - CONJ_TAC THENL [ALL_TAC; CONV_TAC INT_ARITH] THEN + CONJ_TAC THENL [ALL_TAC; (CONV_TAC "INT_ARITH") INT_ARITH] THEN MATCH_MP_TAC FACE_OF_CONIC_HULL THEN ASM_MESON_TAC[]]; REWRITE_TAC[frontier; IN_DIFF] THEN DISCH_THEN(MP_TAC o CONJUNCT1)] THEN @@ -2279,7 +2279,7 @@ let BROUWER_DEGREE3_POINT_INDEPENDENCE = prove MP_TAC(SPEC `det (A:real^N^N)` REAL_SGN_CASES) THEN ASM_REWRITE_TAC[CONJUNCT1 REAL_SGN_EQ] THEN REPEAT STRIP_TAC THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_MESON_TAC[]] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_MESON_TAC[]] THEN SUBGOAL_THEN `(v:real^N) IN interior(conic hull c) /\ v IN interior(conic hull d)` MP_TAC THENL @@ -2386,7 +2386,7 @@ let BROUWER_DEGREE3_LINEAR = prove ASM_REWRITE_TAC[]; ALL_TAC] THEN MATCH_MP_TAC(MESON[HAS_SIZE] `s HAS_SIZE 1 ==> CARD s = 1`) THEN - CONV_TAC HAS_SIZE_CONV THEN + (CONV_TAC "HAS_SIZE_CONV") HAS_SIZE_CONV THEN REWRITE_TAC[SET_RULE `(?a. s = {a}) <=> ?!a. a IN s`; IN_ELIM_THM] THEN MATCH_MP_TAC NONBOUNDARY_IN_UNIQUE_CONIC_HULL_SIMPLEX THEN EXISTS_TAC `u:real^N->bool` THEN ASM_REWRITE_TAC[] THEN @@ -2498,7 +2498,7 @@ let BROUWER_DEGREE2_HOMOTOPY_INVARIANCE_LEMMA = prove `min (&1 / &2) e`] FINE_TRIANGULAR_SUBDIVISION_OF_CELL_COMPLEX) THEN ASM_REWRITE_TAC[REAL_LT_MIN; REAL_HALF] THEN ANTS_TAC THENL - [CONV_TAC REAL_RAT_REDUCE_CONV THEN + [(CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN FIRST_ASSUM(MP_TAC o MATCH_MP TRIANGULATION_SIMPLEX_FACETS) THEN REWRITE_TAC[triangulation; IN_ELIM_THM] THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THEN ASM_SIMP_TAC[facet_of] THEN @@ -2584,7 +2584,7 @@ let BROUWER_DEGREE2_HOMOTOPY_INVARIANCE_LEMMA = prove `t:(real^N->bool)->bool`; `z:real^N`] BROUWER_DEGREE3_PERTURB) THEN ASM_REWRITE_TAC[] THEN ANTS_TAC THENL - [ASM_SIMP_TAC[] THEN EXPAND_TAC "z" THEN CONV_TAC SELECT_CONV THEN + [ASM_SIMP_TAC[] THEN EXPAND_TAC "z" THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ONCE_REWRITE_TAC[SET_RULE `(?x. P x) <=> ~({x | P x} = {})`] THEN MATCH_MP_TAC(MESON[CLOSURE_EMPTY; UNIV_NOT_EMPTY] `closure s = (:real^N) ==> ~(s = {})`) THEN @@ -2604,7 +2604,7 @@ let BROUWER_DEGREE2_HOMOTOPY_INVARIANCE_LEMMA = prove ((h:real^(1,N)finite_sum->real^N) o pastecart b) k))`; `y = @x. !k. k IN t ==> ~(x IN frontier (conic hull vertex_image ((h:real^(1,N)finite_sum->real^N) o pastecart c) k))`] THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN FIRST_X_ASSUM(fun th -> MP_TAC(CONJ (SPEC `(h:real^(1,N)finite_sum->real^N) o pastecart b` th) (SPEC `(h:real^(1,N)finite_sum->real^N) o pastecart c` th))) THEN @@ -2623,7 +2623,7 @@ let BROUWER_DEGREE2_HOMOTOPY_INVARIANCE_LEMMA = prove ((h:real^(1,N)finite_sum->real^N) o pastecart c) k)))` STRIP_ASSUME_TAC THENL [CONJ_TAC THENL [EXPAND_TAC "x"; EXPAND_TAC "y"] THEN - CONV_TAC SELECT_CONV THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ONCE_REWRITE_TAC[SET_RULE `(?x. P x) <=> ~({x | P x} = {})`] THEN MATCH_MP_TAC(MESON[CLOSURE_EMPTY; UNIV_NOT_EMPTY] `closure s = (:real^N) ==> ~(s = {})`) THEN @@ -2661,13 +2661,13 @@ let HOMOTOPIC_LINEAR_MAPS_IMP = prove ==> ~(x IN frontier (conic hull vertex_image f k))`; `y = @x:real^N. !k. k IN t ==> ~(x IN frontier (conic hull vertex_image g k))`] THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN REPEAT(DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC)) THEN MATCH_MP_TAC EQ_IMP THEN BINOP_TAC THEN MATCH_MP_TAC BROUWER_DEGREE3_LINEAR THEN EXISTS_TAC `u:real^N->bool` THEN ASM_SIMP_TAC[ORTHOGONAL_TRANSFORMATION_LINEAR] THEN - MAP_EVERY EXPAND_TAC ["x"; "y"] THEN CONV_TAC SELECT_CONV THEN + MAP_EVERY EXPAND_TAC ["x"; "y"] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ONCE_REWRITE_TAC[SET_RULE `(?x. P x) <=> ~({x | P x} = {})`] THEN MATCH_MP_TAC(MESON[CLOSURE_EMPTY; UNIV_NOT_EMPTY] `closure s = (:real^N) ==> ~(s = {})`) THEN @@ -2786,7 +2786,7 @@ let HOMOTOPIC_ORTHOGONAL_TRANSFORMATIONS_IMP = prove W(MP_TAC o PART_MATCH (lhand o rand) th o lhand o rand o snd)) THEN ASM_SIMP_TAC[IN_SPHERE_0; NORM_MUL; REAL_ABS_INV; REAL_ABS_NORM; REAL_MUL_LINV; NORM_EQ_0] THEN - CONV_TAC NORM_ARITH]; + (CONV_TAC "NORM_ARITH") NORM_ARITH]; MATCH_MP_TAC(REAL_ARITH `(x = &1 \/ x = -- &1) /\ (y = &1 \/ y = -- &1) ==> abs x = abs y`) THEN @@ -2823,7 +2823,7 @@ let FIXPOINT_HOMOTOPIC_IDENTITY_SPHERE = prove SIMP_TAC[ORTHOGONAL_TRANSFORMATION_NEG; ORTHOGONAL_TRANSFORMATION_ID; MATRIX_NEG; LINEAR_ID; DET_NEG; MATRIX_ID; DET_I] THEN ASM_REWRITE_TAC[REAL_POW_NEG; REAL_POW_ONE; GSYM NOT_ODD] THEN - CONV_TAC REAL_RAT_REDUCE_CONV]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]);; let FIXPOINT_OR_NEG_MAPPING_SPHERE = prove (`!f:real^N->real^N. @@ -2902,7 +2902,7 @@ let HAIRY_BALL_THEOREM_ALT,HAIRY_BALL_THEOREM = (CONJ_PAIR o prove) GEN_REWRITE_TAC (RAND_CONV o RAND_CONV o LAND_CONV) [SYM th]) THEN REWRITE_TAC[ORTHOGONAL_MUL; ORTHOGONAL_LNEG; ORTHOGONAL_REFL; REAL_INV_EQ_0; NORM_EQ_0] THEN - CONV_TAC TAUT]; + (CONV_TAC "TAUT") TAUT]; REWRITE_TAC[EVEN_EXISTS] THEN DISCH_THEN(X_CHOOSE_TAC `n:num`) THEN EXISTS_TAC `(\x. lambda i. if EVEN(i) then --(x$(i-1)) else x$(i+1)): @@ -2973,7 +2973,7 @@ let EULER_ROTATION_THEOREM_GEN = prove GSYM ORTHOGONAL_MATRIX_TRANSFORMATION] THEN SIMP_TAC[MATRIX_NEG; LINEAR_ID; MATRIX_OF_MATRIX_VECTOR_MUL] THEN ASM_REWRITE_TAC[MATRIX_ID; DET_NEG; DET_I; REAL_POW_NEG; GSYM NOT_ODD] THEN - REWRITE_TAC[REAL_POW_ONE] THEN CONV_TAC REAL_RAT_REDUCE_CONV]);; + REWRITE_TAC[REAL_POW_ONE] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]);; (* ------------------------------------------------------------------------- *) (* Retractions. *) @@ -3491,7 +3491,7 @@ let CONTRACTIBLE_SPHERE = prove ORTHOGONAL_TRANSFORMATION_ID] THEN REWRITE_TAC[DET_MATRIX_REFLECT_ALONG; MATRIX_ID; DET_I] THEN SIMP_TAC[BASIS_NONZERO; DIMINDEX_GE_1; LE_REFL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let NO_RETRACTION_CBALL = prove (`!a:real^N e. &0 < e ==> ~(sphere(a,e) retract_of cball(a,e))`, @@ -3544,7 +3544,7 @@ let BROUWER_BALL = prove CONJ_TAC THEN REWRITE_TAC[o_DEF; LIFT_SUB]); MATCH_MP_TAC(REWRITE_RULE[o_DEF] CONTINUOUS_ON_INV) THEN ASM_SIMP_TAC[REAL_ENTIRE; DOT_EQ_0; VECTOR_SUB_EQ] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_CMUL]] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_CMUL]] THEN ASM_SIMP_TAC[CONTINUOUS_ON_CMUL; CONTINUOUS_ON_SUB; CONTINUOUS_ON_ID; CONTINUOUS_ON_CONST; CONTINUOUS_ON_LIFT_DOT2]; REWRITE_TAC[SUBSET; FORALL_IN_IMAGE] THEN @@ -3579,7 +3579,7 @@ let BROUWER_BALL = prove FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [SUBSET]) THEN REWRITE_TAC[IN_CBALL; FORALL_IN_IMAGE; NORM_POS_LE] THEN DISCH_THEN(MP_TAC o SPEC `x:real^N`) THEN ASM_REWRITE_TAC[dist] THEN - CONV_TAC NORM_ARITH]);; + (CONV_TAC "NORM_ARITH") NORM_ARITH]);; let BROUWER = prove (`!f:real^N->real^N s. @@ -3766,8 +3766,8 @@ let DIMENSION_EQ_AFF_DIM = prove ASM_REWRITE_TAC[INT_SUB_LE; INT_OF_NUM_LE; INTER_SUBSET] THEN CONJ_TAC THENL [ASM_CASES_TAC `i = 1` THENL - [ASM_REWRITE_TAC[] THEN CONV_TAC NUM_REDUCE_CONV THEN - CONV_TAC(ONCE_DEPTH_CONV NUMSEG_CONV) THEN + [ASM_REWRITE_TAC[] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN + (CONV_TAC "(ONCE_DEPTH_CONV NUMSEG_CONV)") (ONCE_DEPTH_CONV NUMSEG_CONV) THEN ASM_REWRITE_TAC[IMAGE_CLAUSES; INTERS_0; INTER_UNIV]; FIRST_X_ASSUM(MP_TAC o SPEC `i - 1`) THEN ANTS_TAC THENL [ASM_ARITH_TAC; DISCH_THEN(MP_TAC o CONJUNCT2)] THEN @@ -3850,7 +3850,7 @@ let DIMENSION_EQ_AFF_DIM = prove RULE_ASSUM_TAC(REWRITE_RULE[NOT_LT]) THEN STRIP_TAC THEN ASM_CASES_TAC `x IN (b:num->real^N->bool) m` THEN ASM_SIMP_TAC[SETDIST_SING_IN_SET] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[COND_ID; REAL_ADD_RID] THEN SUBGOAL_THEN `x IN (u:num->real^N->bool) m /\ ~(x IN v m) \/ @@ -3981,7 +3981,7 @@ let DIMENSION_OPEN_IN_CONVEX = prove CONJ_TAC THENL [ASM_SIMP_TAC[DIMENSION_EQ_AFF_DIM; CONVEX_INTER; AFFINE_IMP_CONVEX; AFFINE_AFFINE_HULL; CONVEX_BALL] THEN - MATCH_MP_TAC INT_EQ_IMP_LE THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC INT_EQ_IMP_LE THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN GEN_REWRITE_TAC RAND_CONV [GSYM AFF_DIM_AFFINE_HULL] THEN MATCH_MP_TAC AFF_DIM_CONVEX_INTER_OPEN THEN ASM_SIMP_TAC[AFFINE_AFFINE_HULL; AFFINE_IMP_CONVEX; OPEN_BALL] THEN @@ -5068,13 +5068,13 @@ let ENR_PCROSS_EQ = prove (`!s:real^M->bool t:real^N->bool. ENR(s PCROSS t) <=> s = {} \/ t = {} \/ ENR s /\ ENR t`, REWRITE_TAC[ENR_ANR; ANR_PCROSS_EQ; LOCALLY_COMPACT_PCROSS_EQ] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; let AR_PCROSS_EQ = prove (`!s:real^M->bool t:real^N->bool. AR(s PCROSS t) <=> AR s /\ AR t /\ ~(s = {}) /\ ~(t = {})`, SIMP_TAC[AR_ANR; ANR_PCROSS_EQ; CONTRACTIBLE_PCROSS_EQ; PCROSS_EQ_EMPTY] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; let AR_CLOSED_UNION_LOCAL = prove (`!s t:real^N->bool. @@ -5832,13 +5832,13 @@ let ANR_OPEN_UNION = prove X_GEN_TAC `x:real^(N,1)finite_sum` THEN REPEAT(DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC)) THEN ASM_CASES_TAC `(x:real^(N,1)finite_sum) IN t1` THENL - [ASM_SIMP_TAC[DROP_VEC] THEN CONV_TAC REAL_RAT_REDUCE_CONV; + [ASM_SIMP_TAC[DROP_VEC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ASM SET_TAC[]]; REWRITE_TAC[SUBSET; FORALL_IN_IMAGE; IN_INTER; IN_ELIM_THM] THEN X_GEN_TAC `x:real^(N,1)finite_sum` THEN REPEAT(DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC)) THEN ASM_CASES_TAC `(x:real^(N,1)finite_sum) IN t2` THENL - [ASM_SIMP_TAC[DROP_VEC] THEN CONV_TAC REAL_RAT_REDUCE_CONV; + [ASM_SIMP_TAC[DROP_VEC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ASM SET_TAC[]]]);; let ENR_OPEN_UNION = prove @@ -6484,7 +6484,7 @@ let ENR_LOCALLY = prove let ANR_COVERING_SPACE_EQ = prove (`!p:real^M->real^N s c. covering_space (c,p) s ==> (ANR s <=> ANR c)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[GSYM ANR_LOCALLY] THEN FIRST_ASSUM(MATCH_MP_TAC o MATCH_MP (ONCE_REWRITE_RULE[IMP_CONJ] COVERING_SPACE_LOCALLY_HOMEOMORPHIC_EQ)) THEN @@ -6600,7 +6600,7 @@ let NEIGHBOURHOOD_EXTENSION_INTO_ANR = prove [`f:real^M->real^N`; `(:real^M)`; `s:real^M->bool`; `t:real^N->bool`] ANR_IMP_ABSOLUTE_NEIGHBOURHOOD_EXTENSOR) THEN REWRITE_TAC[GSYM OPEN_IN; GSYM CLOSED_IN; SUBTOPOLOGY_UNIV] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; let EXTENSION_FROM_COMPONENT = prove (`!f:real^M->real^N s c u. @@ -6986,7 +6986,7 @@ let RELATIVE_FRONTIER_DEFORMATION_RETRACT_OF_PUNCTURED_CONVEX = prove X_GEN_TAC `x:real^N` THEN REWRITE_TAC[IN_DIFF] THEN STRIP_TAC THEN ASM_CASES_TAC `x:real^N = a` THENL [ASM_MESON_TAC[]; ALL_TAC] THEN SUBGOAL_THEN `dd(x - a:real^N) = &1` - (fun th -> REWRITE_TAC[th] THEN CONV_TAC VECTOR_ARITH) THEN + (fun th -> REWRITE_TAC[th] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH) THEN MATCH_MP_TAC(REAL_ARITH `~(d < &1) /\ ~(&1 < d) ==> d = &1`) THEN CONJ_TAC THEN DISCH_TAC THEN MP_TAC(ISPECL [`s:real^N->bool`; `a:real^N`] @@ -8554,7 +8554,7 @@ let BOHL = prove REWRITE_TAC[CONTINUOUS_ON_ID] THEN CONJ_TAC THENL [FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ] CONTINUOUS_ON_SUBSET)) THEN ASM SET_TAC[]; - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[frontier] THEN MP_TAC(ISPEC `s:real^N->bool` CLOSURE_SUBSET) THEN ASM SET_TAC[]]; REWRITE_TAC[SUBSET; FORALL_IN_IMAGE] THEN X_GEN_TAC `x:real^N` THEN @@ -8590,7 +8590,7 @@ let BOHL = prove REWRITE_TAC[VECTOR_ADD_LDISTRIB; VECTOR_MUL_ASSOC] THEN ASM_SIMP_TAC[REAL_MUL_LINV; REAL_ARITH `&1 <= c ==> ~(c = &0)`] THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - CONV_TAC VECTOR_ARITH]);; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH]);; let BOHL_ALT = prove (`!f s a. @@ -8611,7 +8611,7 @@ let BOHL_ALT = prove DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN MATCH_MP_TAC MONO_EXISTS THEN GEN_TAC THEN REPEAT(MATCH_MP_TAC MONO_AND THEN REWRITE_TAC[]) THEN - CONV_TAC VECTOR_ARITH);; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH);; let BOHL_SIMPLE = prove (`!f:real^N->real^N s a. @@ -9052,7 +9052,7 @@ let PERRON_FROBENIUS = prove ==> &0 < vec 1 dot ((A:real^N^N) ** x)` ASSUME_TAC THENL [X_GEN_TAC `x:real^N` THEN ASM_CASES_TAC `x:real^N = vec 0` THEN - ASM_REWRITE_TAC[DOT_RZERO] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[DOT_RZERO] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `&0 < x <=> &0 <= x /\ ~(x = &0)`] THEN DISCH_TAC THEN REWRITE_TAC[dot; VEC_COMPONENT; REAL_MUL_LID] THEN CONJ_TAC THENL @@ -9097,7 +9097,7 @@ let PERRON_FROBENIUS = prove REWRITE_TAC[REAL_LE_INV_EQ] THEN ASM_MESON_TAC[REAL_LT_IMP_LE]]]; REWRITE_TAC[IN_INTER; IN_ELIM_THM; LEFT_IMP_EXISTS_THM] THEN X_GEN_TAC `x:real^N` THEN ASM_CASES_TAC `x:real^N = vec 0` THEN - ASM_REWRITE_TAC[DOT_RZERO] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[DOT_RZERO] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN STRIP_TAC THEN EXISTS_TAC `inv(norm x) % x:real^N` THEN EXISTS_TAC `vec 1 dot ((A:real^N^N) ** x)` THEN REPEAT CONJ_TAC THENL [REWRITE_TAC[NORM_MUL; REAL_ABS_INV; REAL_ABS_NORM] THEN @@ -9172,7 +9172,7 @@ let INTERVAL_BIJ_BIJ = prove SIMP_TAC[interval_bij; CART_EQ; LAMBDA_BETA; REAL_ADD_SUB] THEN REPEAT GEN_TAC THEN REWRITE_TAC[AND_FORALL_THM] THEN MATCH_MP_TAC MONO_FORALL THEN GEN_TAC THEN MATCH_MP_TAC MONO_IMP THEN - REWRITE_TAC[] THEN CONV_TAC REAL_FIELD);; + REWRITE_TAC[] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; (* ------------------------------------------------------------------------- *) (* Fashoda meet theorem. *) @@ -9452,13 +9452,13 @@ let FASHODA = prove [REWRITE_TAC[SUBSET] THEN ONCE_REWRITE_TAC[FORALL_IN_IMAGE] THEN REPEAT STRIP_TAC THEN MATCH_MP_TAC IN_INTERVAL_INTERVAL_BIJ THEN SIMP_TAC[INTERVAL_NE_EMPTY; VECTOR_NEG_COMPONENT; VEC_COMPONENT] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM SET_TAC[]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM SET_TAC[]; ALL_TAC]) THEN ASM_SIMP_TAC[interval_bij; LAMBDA_BETA; DIMINDEX_2; ARITH] THEN ASM_SIMP_TAC[REAL_DIV_REFL; REAL_LT_IMP_NZ; REAL_SUB_LT] THEN REWRITE_TAC[real_div; REAL_SUB_REFL; REAL_MUL_LZERO] THEN SIMP_TAC[VECTOR_NEG_COMPONENT; VEC_COMPONENT; DIMINDEX_2; ARITH] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN DISCH_THEN(X_CHOOSE_THEN `z:real^2` (fun th -> EXISTS_TAC `interval_bij (--vec 1,vec 1) (a,b) (z:real^2)` THEN @@ -9469,7 +9469,7 @@ let FASHODA = prove REPEAT STRIP_TAC THEN MATCH_MP_TAC INTERVAL_BIJ_BIJ THEN ASM_SIMP_TAC[FORALL_2; DIMINDEX_2; VECTOR_NEG_COMPONENT; VEC_COMPONENT; ARITH] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; (* ------------------------------------------------------------------------- *) (* Some slightly ad hoc lemmas I use below *) @@ -9635,7 +9635,7 @@ let UNBOUNDED_COMPONENTS_COMPLEMENT_ABSOLUTE_RETRACT = prove REWRITE_TAC[SUBSET; IN_DIFF] THEN X_GEN_TAC `z:real^N` THEN ASM_CASES_TAC `(z:real^N) IN s` THEN ASM_REWRITE_TAC[] THEN ASM_SIMP_TAC[IN_CLOSURE_CONNECTED_COMPONENT; IN_UNIV; IN_DIFF] THEN - CONV_TAC TAUT; + (CONV_TAC "TAUT") TAUT; ASM_MESON_TAC[CONTINUOUS_ON_SUBSET; SUBSET_UNIV]; ASM SET_TAC[]; MATCH_MP_TAC(SET_RULE @@ -9661,7 +9661,7 @@ let PATH_CONNECTED_COMPLEMENT_ABSOLUTE_RETRACT = prove ==> path_connected((:real^N) DIFF s)`, REPEAT GEN_TAC THEN DISCH_TAC THEN FIRST_ASSUM (MP_TAC o MATCH_MP CONNECTED_COMPLEMENT_ABSOLUTE_RETRACT) THEN - MATCH_MP_TAC EQ_IMP THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC EQ_IMP THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC PATH_CONNECTED_EQ_CONNECTED THEN REWRITE_TAC[GSYM closed] THEN ASM_MESON_TAC[HOMEOMORPHIC_COMPACTNESS; COMPACT_INTERVAL; @@ -9686,7 +9686,7 @@ let PATH_CONNECTED_COMPLEMENT_HOMEOMORPHIC_CONVEX_COMPACT = prove ==> path_connected((:real^N) DIFF s)`, REPEAT GEN_TAC THEN DISCH_TAC THEN FIRST_ASSUM (MP_TAC o MATCH_MP CONNECTED_COMPLEMENT_HOMEOMORPHIC_CONVEX_COMPACT) THEN - MATCH_MP_TAC EQ_IMP THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC EQ_IMP THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC PATH_CONNECTED_EQ_CONNECTED THEN REWRITE_TAC[GSYM closed] THEN ASM_MESON_TAC[HOMEOMORPHIC_COMPACTNESS; COMPACT_INTERVAL; @@ -9921,14 +9921,14 @@ let FINITE_ANR_COMPLEMENT_COMPONENTS_CONCENTRIC = prove ABBREV_TAC `f:real^N->real^N = \x. r x - g' x` THEN SUBGOAL_THEN `!x:real^N. x IN frontier c ==> f x = x` (LABEL_TAC "1") THENL [EXPAND_TAC "f" THEN REWRITE_TAC[] THEN ASM_SIMP_TAC[IN_UNION] THEN - REPEAT STRIP_TAC THEN CONV_TAC VECTOR_ARITH; + REPEAT STRIP_TAC THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN SUBGOAL_THEN `!x. x IN closure c INTER h ==> (f:real^N->real^N) x = r x` (LABEL_TAC "2") THENL [EXPAND_TAC "f" THEN REWRITE_TAC[] THEN ASM_SIMP_TAC[IN_UNION; IN_INTER] THEN - REPEAT STRIP_TAC THEN CONV_TAC VECTOR_ARITH; + REPEAT STRIP_TAC THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN SUBGOAL_THEN `!x:real^N. x IN closure c ==> dist(x,f x) <= (b - a) / &2` @@ -9964,7 +9964,7 @@ let FINITE_ANR_COMPLEMENT_COMPONENTS_CONCENTRIC = prove [MESON_TAC[BOUNDED_SUBSET; NOT_BOUNDED_UNIV; BOUNDED_CBALL]; REWRITE_TAC[IMP_CONJ; RIGHT_FORALL_IMP_THM; FORALL_UNWIND_THM2] THEN UNDISCH_TAC `l IN cball(p:real^N,a)` THEN - REWRITE_TAC[IN_DIFF; IN_UNIV; IN_CBALL] THEN CONV_TAC NORM_ARITH]; + REWRITE_TAC[IN_DIFF; IN_UNIV; IN_CBALL] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]; ALL_TAC] THEN SUBGOAL_THEN `~(q IN IMAGE (f:real^N->real^N) (closure c))` @@ -10081,7 +10081,7 @@ let ACCESSIBLE_FRONTIER_ANR_INTER_COMPLEMENT_COMPONENT = prove (!n. u(SUC n) SUBSET u n)` MP_TAC THENL [MATCH_MP_TAC DEPENDENT_CHOICE THEN CONJ_TAC THENL - [CONV_TAC REAL_RAT_REDUCE_CONV THEN MP_TAC(ISPECL + [(CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MP_TAC(ISPECL [`s:real^N->bool`; `p:real^N`; `min a (&1)`; `b:real^N->bool`; `c:real^N->bool`] lemma) THEN ASM_REWRITE_TAC[REAL_LT_MIN; REAL_LT_01] THEN @@ -10270,7 +10270,7 @@ let ACCESSIBLE_FRONTIER_ANR_INTER_COMPLEMENT_COMPONENT = prove MP_TAC(fst(EQ_IMP_RULE(ISPEC`\n. drop y <= inv(&2 pow n)` num_MAX))) THEN REWRITE_TAC[] THEN ANTS_TAC THENL [CONJ_TAC THENL - [EXISTS_TAC `0` THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [EXISTS_TAC `0` THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]; MP_TAC(ISPECL [`inv(&2)`; `drop y`] REAL_ARCH_POW_INV) THEN ANTS_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN @@ -10280,7 +10280,7 @@ let ACCESSIBLE_FRONTIER_ANR_INTER_COMPLEMENT_COMPONENT = prove REWRITE_TAC[NOT_LE; REAL_NOT_LE] THEN DISCH_TAC THEN TRANS_TAC REAL_LT_TRANS `inv(&2 pow m)` THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC REAL_LT_INV2 THEN REWRITE_TAC[REAL_LT_POW2] THEN - MATCH_MP_TAC REAL_POW_MONO_LT THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO_LT THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]]; MATCH_MP_TAC MONO_EXISTS THEN REWRITE_TAC[LIFT_DROP] THEN X_GEN_TAC `m:num` THEN @@ -10332,7 +10332,7 @@ let ACCESSIBLE_FRONTIER_ANR_INTER_COMPLEMENT_COMPONENT = prove ASM_CASES_TAC `x:real^1 = vec 0` THEN ASM_SIMP_TAC[] THENL [REWRITE_TAC[LIM_WITHIN_LE] THEN X_GEN_TAC `e:real` THEN DISCH_TAC THEN MP_TAC(ISPECL [`inv(&2)`; `e:real`] REAL_ARCH_POW_INV) THEN - ASM_REWRITE_TAC[REAL_POW_INV] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[REAL_POW_INV] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_THEN `n:num` STRIP_ASSUME_TAC) THEN EXISTS_TAC `inv(&2 pow n)` THEN REWRITE_TAC[REAL_LT_POW2; REAL_LT_INV_EQ; GSYM DIST_NZ] THEN @@ -10352,7 +10352,7 @@ let ACCESSIBLE_FRONTIER_ANR_INTER_COMPLEMENT_COMPONENT = prove REWRITE_TAC[NOT_LE; REAL_NOT_LE] THEN DISCH_TAC THEN TRANS_TAC REAL_LT_TRANS `inv(&2 pow m)` THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC REAL_LT_INV2 THEN REWRITE_TAC[REAL_LT_POW2] THEN - MATCH_MP_TAC REAL_POW_MONO_LT THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO_LT THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]; DISCH_THEN(X_CHOOSE_THEN `m:num` (CONJUNCTS_THEN2 ASSUME_TAC MP_TAC)) THEN @@ -10633,7 +10633,7 @@ let LPC_INTERMEDIATE_CLOSURE_ANR_COMPLEMENT_COMPONENT = prove ASM SET_TAC[]; REWRITE_TAC[pathstart] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[IN_DELETE; ENDS_IN_UNIT_INTERVAL; VEC_EQ] THEN - CONV_TAC NUM_REDUCE_CONV]]]) in + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV]]]) in REPEAT STRIP_TAC THEN SUBGOAL_THEN `open(c:real^N->bool)` ASSUME_TAC THENL [REPEAT(FIRST_X_ASSUM((MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ_ALT] @@ -10801,7 +10801,7 @@ let LPC_INTERMEDIATE_CLOSURE_ANR_COMPLEMENT = prove CONJ_TAC THENL [ASM_MESON_TAC[IN_COMPONENTS_CONNECTED]; ALL_TAC] THEN REWRITE_TAC[pathstart] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[IN_DELETE; ENDS_IN_UNIT_INTERVAL; VEC_EQ] THEN - CONV_TAC NUM_REDUCE_CONV]) in + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV]) in REPEAT STRIP_TAC THEN REWRITE_TAC[LOCALLY_PATH_CONNECTED_IM_KLEINEN] THEN MAP_EVERY X_GEN_TAC [`uu:real^N->bool`; `p:real^N`] THEN STRIP_TAC THEN diff --git a/Multivariate/derivatives.ml b/Multivariate/derivatives.ml index df7db2ad..a1c2aecb 100644 --- a/Multivariate/derivatives.ml +++ b/Multivariate/derivatives.ml @@ -419,7 +419,7 @@ let FRECHET_DERIVATIVE_WORKS = prove (`!f net. f differentiable net <=> (f has_derivative (frechet_derivative f net)) net`, REPEAT GEN_TAC THEN REWRITE_TAC[frechet_derivative] THEN - CONV_TAC(RAND_CONV SELECT_CONV) THEN REWRITE_TAC[differentiable]);; + (CONV_TAC "(RAND_CONV SELECT_CONV)") (RAND_CONV SELECT_CONV) THEN REWRITE_TAC[differentiable]);; let LINEAR_FRECHET_DERIVATIVE = prove (`!f net. f differentiable net ==> linear(frechet_derivative f net)`, @@ -626,7 +626,7 @@ let DIFF_CHAIN_WITHIN = prove `b * ((e * h) * b') * x <= e * x - d <=> d <= e * (&1 - h * b' * b) * x`] THEN ASM_SIMP_TAC[REAL_MUL_LINV; REAL_LT_IMP_NZ] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN ASM_SIMP_TAC[REAL_LE_LMUL_EQ; REAL_LT_DIV; REAL_OF_NUM_LT; ARITH] THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN REWRITE_TAC[GSYM real_div] THEN ASM_SIMP_TAC[REAL_LE_LDIV_EQ; REAL_LT_ADD; REAL_LT_01] THEN @@ -888,7 +888,7 @@ let HAS_FRECHET_DERIVATIVE_UNIQUE_AT = prove ==> frechet_derivative f (at x) = f'`, REPEAT STRIP_TAC THEN MATCH_MP_TAC FRECHET_DERIVATIVE_UNIQUE_AT THEN MAP_EVERY EXISTS_TAC [`f:real^M->real^N`; `x:real^M`] THEN - ASM_REWRITE_TAC[frechet_derivative] THEN CONV_TAC SELECT_CONV THEN + ASM_REWRITE_TAC[frechet_derivative] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_MESON_TAC[]);; let FRECHET_DERIVATIVE_CONST_AT = prove @@ -1425,7 +1425,7 @@ let ONORM_DERIVATIVES_LE = prove MATCH_MP_TAC ALWAYS_EVENTUALLY THEN X_GEN_TAC `y:real^M` THEN REWRITE_TAC[NORM_MUL; GSYM REAL_ADD_LDISTRIB] THEN MATCH_MP_TAC REAL_LE_LMUL THEN REWRITE_TAC[REAL_ABS_POS] THEN - REWRITE_TAC[NORM_LIFT] THEN CONV_TAC NORM_ARITH; + REWRITE_TAC[NORM_LIFT] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; REWRITE_TAC[tendsto] THEN DISCH_THEN(MP_TAC o SPEC `b - onorm(g':real^M->real^P)`) THEN ASM_REWRITE_TAC[REAL_SUB_LT] THEN FIRST_ASSUM(fun th -> MP_TAC th THEN @@ -1673,7 +1673,7 @@ let HAS_DERIVATIVE_INVERSE_WITHIN = prove `norm((g':real^N->real^M)(f x - f a - ((f':real^M->real^N) (x - a))))` THEN CONJ_TAC THENL [RULE_ASSUM_TAC(REWRITE_RULE[FUN_EQ_THM; o_THM; I_THM]) THEN - ASM_SIMP_TAC[LINEAR_SUB] THEN CONV_TAC NORM_ARITH; + ASM_SIMP_TAC[LINEAR_SUB] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; ALL_TAC] THEN FIRST_X_ASSUM(fun th -> W(MP_TAC o PART_MATCH lhand th o lhand o snd)) THEN MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ_ALT] REAL_LE_TRANS) THEN @@ -1742,7 +1742,7 @@ let HAS_DERIVATIVE_INVERSE_BASIC = prove STRIP_ASSUME_TAC THENL [EXISTS_TAC `&2 * C` THEN FIRST_X_ASSUM(MP_TAC o SPEC `&1 / &2`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `d:real` THEN ASM_SIMP_TAC[REAL_LT_MUL; REAL_OF_NUM_LT; ARITH] THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN @@ -1754,7 +1754,7 @@ let HAS_DERIVATIVE_INVERSE_BASIC = prove norm(dg') <= c * norm(d) ==> norm(dg - dg') <= h * norm(dg) ==> norm(dg) <= (&2 * c) * norm(d)`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[NORM_TRIANGLE_SUB]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[NORM_TRIANGLE_SUB]; ALL_TAC] THEN REWRITE_TAC[HAS_DERIVATIVE_AT_ALT] THEN ASM_REWRITE_TAC[] THEN X_GEN_TAC `e:real` THEN DISCH_TAC THEN @@ -1915,7 +1915,7 @@ let SUSSMANN_OPEN_MAPPING = prove [ASM_MESON_TAC[IN_CBALL; dist]; ALL_TAC] THEN REWRITE_TAC[REAL_ARITH `e / &2 <= e - x <=> x <= e / &2`] THEN REWRITE_TAC[real_div; REAL_INV_MUL; REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SIMP_TAC[REAL_ARITH `(&1 / &2 * b) * x <= e * &1 / &2 <=> x * b <= e`] THEN ASM_SIMP_TAC[GSYM real_div; REAL_LE_LDIV_EQ] THEN MATCH_MP_TAC REAL_LE_TRANS THEN @@ -3180,7 +3180,7 @@ let INVERSE_FUNCTION_THEOREM = prove ASM_SIMP_TAC[REAL_LT_LMUL_EQ; REAL_POW_LT; REAL_LT_LDIV_EQ; NORM_ARITH `&0 < l ==> &0 < norm(h:real^N) + l`] THEN UNDISCH_TAC `norm(h - u:real^N) <= min l (m / &2)` THEN - UNDISCH_TAC `&0 < l` THEN CONV_TAC NORM_ARITH; + UNDISCH_TAC `&0 < l` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; FIRST_X_ASSUM MATCH_MP_TAC THEN ONCE_REWRITE_TAC[NORM_SUB] THEN ASM_REAL_ARITH_TAC]; ALL_TAC] THEN @@ -3259,7 +3259,7 @@ let INVERSE_FUNCTION_THEOREM = prove CONJ_TAC THENL [RULE_ASSUM_TAC(REWRITE_RULE[FUN_EQ_THM; o_THM; I_THM]) THEN MATCH_MP_TAC REAL_EQ_IMP_LE THEN ASM_SIMP_TAC[LINEAR_SUB] THEN - AP_TERM_TAC THEN CONV_TAC VECTOR_ARITH; + AP_TERM_TAC THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; REMOVE_THEN "*" (MP_TAC o SPEC `z:real^N`)] THEN ANTS_TAC THENL [ASM_MESON_TAC[NORM_SUB]; ASM_REWRITE_TAC[]] THEN ABBREV_TAC `eta = b - (f:real^N->real^N) x - f' x (z - x)` THEN @@ -4030,7 +4030,7 @@ let JACOBIAN_SIGN_INVARIANCE = prove [TRANS_TAC SUBSET_TRANS `ball(a:real^N,&2 * r)` THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC SUBSET_BALL THEN ASM_REAL_ARITH_TAC; DISCH_TAC] THEN - X_GEN_TAC `b:real^N` THEN DISCH_TAC THEN CONV_TAC SYM_CONV THEN + X_GEN_TAC `b:real^N` THEN DISCH_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC HOMOTOPIC_LINEAR_MAPS_IMP THEN REWRITE_TAC[CONJ_ASSOC] THEN CONJ_TAC THENL [ASM_MESON_TAC[has_derivative; SUBSET]; ALL_TAC] THEN @@ -4072,9 +4072,9 @@ let JACOBIAN_SIGN_INVARIANCE = prove MATCH_MP_TAC(REAL_ARITH `y <= x /\ &0 <= y - x + &1 ==> abs(x - y) <= &1`) THEN CONJ_TAC THENL - [MATCH_MP_TAC REAL_LE_MUL2 THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [MATCH_MP_TAC REAL_LE_MUL2 THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_POW_LE] THEN MATCH_MP_TAC REAL_POW_MONO_INV THEN - CONV_TAC NUM_REDUCE_CONV THEN ASM_REAL_ARITH_TAC; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_REAL_ARITH_TAC; REWRITE_TAC[REAL_ARITH `&2 * t pow 3 - &3 * t pow 2 + &1 = (&1 - t) pow 2 + &2 * t * (&1 - t) pow 2`] THEN @@ -4262,11 +4262,11 @@ let JACOBIAN_SIGN_INVARIANCE = prove MATCH_MP_TAC LIM_MUL THEN REWRITE_TAC[o_DEF] THEN CONJ_TAC THENL [SUBST1_TAC(GSYM REAL_INV_1) THEN MATCH_MP_TAC(REWRITE_RULE[o_DEF] LIM_INV) THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; MATCH_MP_TAC LIM_NORM] THEN MATCH_MP_TAC LIM_CONTINUOUS_SELF_WITHIN THEN REWRITE_TAC[FSTCART_PASTECART; SNDCART_PASTECART; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SIMP_TAC[LIFT_SUB; LIFT_DROP; CONTINUOUS_SUB; CONTINUOUS_CONST; LINEAR_CONTINUOUS_WITHIN; LINEAR_FSTCART; LINEAR_SNDCART]; ALL_TAC] THEN @@ -4319,7 +4319,7 @@ let JACOBIAN_SIGN_INVARIANCE = prove EXISTS_TAC `&1` THEN REWRITE_TAC[REAL_LT_01] THEN REWRITE_TAC[FORALL_IN_PCROSS; IN_INTERVAL_1; DROP_VEC; IMP_CONJ] THEN SIMP_TAC[FSTCART_PASTECART; REAL_MUL_RINV; REAL_LT_IMP_NZ] THEN - REPEAT STRIP_TAC THEN CONV_TAC VECTOR_ARITH; + REPEAT STRIP_TAC THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; MATCH_MP_TAC LIM_NULL_COMPARISON THEN EXISTS_TAC `\x:real^(1,N)finite_sum. abs c * norm(fstcart x)` THEN REWRITE_TAC[NORM_MUL; NORM_NEG] THEN CONJ_TAC THENL @@ -4364,7 +4364,7 @@ let JACOBIAN_SIGN_INVARIANCE = prove REWRITE_TAC[VECTOR_MUL_RZERO]; REWRITE_TAC[NORM_MUL; REAL_ABS_INV; REAL_ABS_NORM] THEN REWRITE_TAC[VECTOR_MUL_ASSOC] THEN - BINOP_TAC THENL [ALL_TAC; CONV_TAC VECTOR_ARITH] THEN + BINOP_TAC THENL [ALL_TAC; (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH] THEN REWRITE_TAC[GSYM NORM_1] THEN MATCH_MP_TAC(REAL_FIELD `~(y = &0) ==> (x * y) * inv y = x`) THEN ASM_REWRITE_TAC[NORM_EQ_0; VECTOR_SUB_EQ]]; @@ -4450,7 +4450,7 @@ let JACOBIAN_SIGN_INVARIANCE = prove REWRITE_TAC[REAL_LT_01] THEN (CONJ_TAC THENL [REAL_ARITH_TAC; ALL_TAC]) THEN MATCH_MP_TAC LIM_CONTINUOUS_SELF_WITHIN THEN REWRITE_TAC[FSTCART_PASTECART; DROP_VEC; GSYM DROP_EQ; LIFT_DROP] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_SUB; LIFT_CMUL] THEN MATCH_MP_TAC CONTINUOUS_SUB THEN CONJ_TAC THEN MATCH_MP_TAC CONTINUOUS_CMUL THEN @@ -4620,7 +4620,7 @@ let INVERSE_FUNCTION_THEOREM_C1_POINTWISE = prove MATCH_MP_TAC(ONCE_REWRITE_RULE[IMP_CONJ] (REWRITE_RULE[CONJ_ASSOC] LIM_TRANSFORM_WITHIN_OPEN)) THEN EXISTS_TAC `t:real^N->bool` THEN ASM_REWRITE_TAC[] THEN - X_GEN_TAC `y:real^N` THEN STRIP_TAC THEN CONV_TAC SYM_CONV] THEN + X_GEN_TAC `y:real^N` THEN STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV] THEN MATCH_MP_TAC(REWRITE_RULE[RIGHT_IMP_FORALL_THM] MATRIX_WORKS) THEN ASM_MESON_TAC[has_derivative]; MATCH_MP_TAC MONO_FORALL THEN X_GEN_TAC `h:real^N` THEN DISCH_TAC THEN @@ -4646,7 +4646,7 @@ let INVERSE_FUNCTION_THEOREM_C1_POINTWISE = prove ==> m = l /\ ((x --> l) net ==> (y --> l) net) ==> (y --> m) net`)) THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV; + [(CONV_TAC "SYM_CONV") SYM_CONV; MATCH_MP_TAC(ONCE_REWRITE_RULE[IMP_CONJ] (REWRITE_RULE[CONJ_ASSOC] LIM_TRANSFORM_WITHIN_OPEN)) THEN EXISTS_TAC `t:real^N->bool` THEN ASM_REWRITE_TAC[] THEN @@ -4851,7 +4851,7 @@ let INVERSE_FUNCTION_THEOREM_SUBSPACE = prove ASM_SIMP_TAC[CLOSEST_POINT_SELF; CLOSEST_POINT_IN_SET; CLOSED_SUBSPACE; SUBSPACE_IMP_NONEMPTY] THEN ASM_REWRITE_TAC[VECTOR_SUB_REFL; VECTOR_ADD_RID] THEN - CONV_TAC VECTOR_ARITH]; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH]; REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN MAP_EVERY X_GEN_TAC [`t:real^N->bool`; `u:real^N->bool`; `g:real^N->real^N`; @@ -4871,7 +4871,7 @@ let INVERSE_FUNCTION_THEOREM_SUBSPACE = prove DISCH_TAC] THEN SUBGOAL_THEN `!x. x IN p ==> (h:real^N->real^N) x = f x` ASSUME_TAC THENL [EXPAND_TAC "h" THEN SIMP_TAC[CLOSEST_POINT_SELF] THEN - REPEAT STRIP_TAC THEN CONV_TAC VECTOR_ARITH; + REPEAT STRIP_TAC THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN MATCH_MP_TAC(TAUT `p /\ (p ==> q) ==> p /\ q`) THEN CONJ_TAC THENL [ASM SET_TAC[]; STRIP_TAC] THEN @@ -5192,7 +5192,7 @@ let VECTOR_DERIVATIVE_WORKS = prove f differentiable net <=> (f has_vector_derivative (vector_derivative f net)) net`, REPEAT GEN_TAC THEN REWRITE_TAC[vector_derivative] THEN - CONV_TAC(RAND_CONV SELECT_CONV) THEN + (CONV_TAC "(RAND_CONV SELECT_CONV)") (RAND_CONV SELECT_CONV) THEN SIMP_TAC[FRECHET_DERIVATIVE_WORKS; has_vector_derivative] THEN EQ_TAC THENL [ALL_TAC; MESON_TAC[FRECHET_DERIVATIVE_WORKS; differentiable]] THEN DISCH_TAC THEN EXISTS_TAC `column 1 (jacobian (f:real^1->real^N) net)` THEN @@ -5228,7 +5228,7 @@ let HAS_VECTOR_DERIVATIVE_UNIQUE_AT = prove ==> vector_derivative f (at x) = f'`, REPEAT STRIP_TAC THEN MATCH_MP_TAC VECTOR_DERIVATIVE_UNIQUE_AT THEN MAP_EVERY EXISTS_TAC [`f:real^1->real^N`; `x:real^1`] THEN - ASM_REWRITE_TAC[vector_derivative] THEN CONV_TAC SELECT_CONV THEN + ASM_REWRITE_TAC[vector_derivative] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_MESON_TAC[]);; let VECTOR_DERIVATIVE_UNIQUE_WITHIN_CLOSED_INTERVAL = prove @@ -5468,7 +5468,7 @@ let HAS_VECTOR_DERIVATIVE_WITHIN_1D = prove REWRITE_TAC[VECTOR_ADD_LDISTRIB; VECTOR_SUB_LDISTRIB] THEN SIMP_TAC[VECTOR_MUL_ASSOC; DROP_SUB; DROP_EQ; REAL_MUL_LINV; REAL_SUB_0] THEN EXISTS_TAC `&1` THEN REWRITE_TAC[REAL_LT_01] THEN - REPEAT STRIP_TAC THEN CONV_TAC VECTOR_ARITH);; + REPEAT STRIP_TAC THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH);; let HAS_VECTOR_DERIVATIVE_AT_1D = prove (`!f:real^1->real^N x. @@ -5580,7 +5580,7 @@ let CONVEX_ON_DERIVATIVE_SECANT_IMP = prove SUBGOAL_THEN `&0 < u /\ u < &1` STRIP_ASSUME_TAC THENL [EXPAND_TAC "u" THEN REWRITE_TAC[REAL_LT_MIN; REAL_MIN_LT] THEN ASM_SIMP_TAC[REAL_LT_DIV; NORM_POS_LT; REAL_HALF; VECTOR_SUB_EQ] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN ABBREV_TAC `z:real^N = (&1 - u) % x + u % y` THEN SUBGOAL_THEN `(z:real^N) IN segment(x,y)` MP_TAC THENL diff --git a/Multivariate/determinants.ml b/Multivariate/determinants.ml index f318d171..2f3663b7 100644 --- a/Multivariate/determinants.ml +++ b/Multivariate/determinants.ml @@ -439,7 +439,7 @@ let BOUNDED_FUNCTIONS_BIJECTIONS_1 = prove (\h. h(SUC k),(\i. if i = SUC k then i else h(i))) ((\(y,g) i. if i = SUC k then y else g(i)) p) = p`, REWRITE_TAC[FORALL_PAIR_THM; IN_ELIM_PAIR_THM] THEN - CONV_TAC(REDEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[IN_ELIM_THM] THEN + (CONV_TAC "(REDEPTH_CONV GEN_BETA_CONV)") (REDEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[IN_ELIM_THM] THEN MAP_EVERY X_GEN_TAC [`y:num`; `h:num->num`] THEN REPEAT STRIP_TAC THENL [ASM_MESON_TAC[LE]; ASM_MESON_TAC[LE; ARITH_RULE `~(1 <= i /\ i <= SUC k) ==> ~(i = SUC k)`]; @@ -456,7 +456,7 @@ let BOUNDED_FUNCTIONS_BIJECTIONS_2 = prove (\(y,g) i. if i = SUC k then y else g(i)) ((\h. h(SUC k),(\i. if i = SUC k then i else h(i))) h) = h`, REWRITE_TAC[IN_ELIM_PAIR_THM] THEN - CONV_TAC(REDEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[IN_ELIM_THM] THEN + (CONV_TAC "(REDEPTH_CONV GEN_BETA_CONV)") (REDEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[IN_ELIM_THM] THEN X_GEN_TAC `h:num->num` THEN REPEAT STRIP_TAC THENL [FIRST_X_ASSUM MATCH_MP_TAC THEN ARITH_TAC; ASM_MESON_TAC[ARITH_RULE `i <= k ==> i <= SUC k /\ ~(i = SUC k)`]; @@ -483,7 +483,7 @@ let FINITE_BOUNDED_FUNCTIONS = prove [STRIP_TAC THEN ASM_SIMP_TAC[BOUNDED_FUNCTIONS_BIJECTIONS_1]; ALL_TAC] THEN DISCH_TAC THEN EXISTS_TAC `(\h. h(SUC k),(\i. if i = SUC k then i else h(i))) h` THEN - PURE_ONCE_REWRITE_TAC[CONJ_SYM] THEN CONV_TAC (RAND_CONV SYM_CONV) THEN + PURE_ONCE_REWRITE_TAC[CONJ_SYM] THEN (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN MATCH_MP_TAC BOUNDED_FUNCTIONS_BIJECTIONS_2 THEN ASM_REWRITE_TAC[]);; let DET_LINEAR_ROWS_VSUM_LEMMA = prove @@ -526,7 +526,7 @@ let DET_LINEAR_ROWS_VSUM_LEMMA = prove ASM_REWRITE_TAC[] THEN SPEC_TAC(`p:num#(num->num)`,`q:num#(num->num)`) THEN REWRITE_TAC[FORALL_PAIR_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN MAP_EVERY X_GEN_TAC [`y:num`; `g:num->num`] THEN AP_TERM_TAC THEN SIMP_TAC[CART_EQ; LAMBDA_BETA] THEN REPEAT STRIP_TAC THEN REPEAT(COND_CASES_TAC THEN ASM_REWRITE_TAC[]) THEN @@ -647,7 +647,7 @@ let INVERTIBLE_DET_NZ = prove GEN_TAC THEN EQ_TAC THENL [REWRITE_TAC[INVERTIBLE_RIGHT_INVERSE; LEFT_IMP_EXISTS_THM] THEN GEN_TAC THEN DISCH_THEN(MP_TAC o AP_TERM `det:real^N^N->real`) THEN - REWRITE_TAC[DET_MUL; DET_I] THEN CONV_TAC REAL_RING; + REWRITE_TAC[DET_MUL; DET_I] THEN (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN ONCE_REWRITE_TAC[GSYM CONTRAPOS_THM] THEN REWRITE_TAC[INVERTIBLE_RIGHT_INVERSE] THEN @@ -758,7 +758,7 @@ let MATRIX_INV_MUL = prove let DET_SIMILAR = prove (`!S:real^N^N A. invertible S ==> det(matrix_inv S ** A ** S) = det A`, REWRITE_TAC[INVERTIBLE_DET_NZ; DET_MUL; DET_MATRIX_INV] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let INVERTIBLE_NEARBY_ONORM = prove (`!A B:real^N^N. @@ -780,7 +780,7 @@ let INVERTIBLE_NEARBY_ONORM = prove REWRITE_TAC[INVERTIBLE_LEFT_INVERSE; MATRIX_LEFT_INVERTIBLE_NULLSPACE] THEN X_GEN_TAC `x:real^N` THEN REWRITE_TAC[MATRIX_VECTOR_MUL_SUB_RDISTRIB; VECTOR_SUB_EQ] THEN - CONV_TAC(LAND_CONV SYM_CONV) THEN REWRITE_TAC[MATRIX_VECTOR_MUL_LID] THEN + (CONV_TAC "(LAND_CONV SYM_CONV)") (LAND_CONV SYM_CONV) THEN REWRITE_TAC[MATRIX_VECTOR_MUL_LID] THEN DISCH_TAC THEN MATCH_MP_TAC(TAUT `(~p ==> F) ==> p`) THEN DISCH_TAC THEN MP_TAC(ISPECL [`\x:real^N. matrix_inv(A:real^N^N) ** x`; @@ -969,7 +969,7 @@ let COFACTOR_COLUMN = prove cofactor A = lambda i j. det((lambda k l. if l = j then if k = i then &1 else &0 else A$k$l):real^N^N)`, - GEN_TAC THEN CONV_TAC SYM_CONV THEN + GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN SIMP_TAC[cofactor; CART_EQ; LAMBDA_BETA] THEN X_GEN_TAC `i:num` THEN STRIP_TAC THEN X_GEN_TAC `j:num` THEN STRIP_TAC THEN @@ -1213,7 +1213,7 @@ let DET_1 = prove let DET_2 = prove (`!A:real^2^2. det A = A$1$1 * A$2$2 - A$1$2 * A$2$1`, GEN_TAC THEN REWRITE_TAC[det; DIMINDEX_2] THEN - CONV_TAC(LAND_CONV(RATOR_CONV(ONCE_DEPTH_CONV NUMSEG_CONV))) THEN + (CONV_TAC "(LAND_CONV(RATOR_CONV(ONCE_DEPTH_CONV NUMSEG_CONV)))") (LAND_CONV(RATOR_CONV(ONCE_DEPTH_CONV NUMSEG_CONV))) THEN SIMP_TAC[SUM_OVER_PERMUTATIONS_INSERT; FINITE_INSERT; FINITE_EMPTY; ARITH_EQ; IN_INSERT; NOT_IN_EMPTY] THEN REWRITE_TAC[PERMUTES_EMPTY; SUM_SING; SET_RULE `{x | x = a} = {a}`] THEN @@ -1234,7 +1234,7 @@ let DET_3 = prove A$1$2 * A$2$1 * A$3$3 - A$1$3 * A$2$2 * A$3$1`, GEN_TAC THEN REWRITE_TAC[det; DIMINDEX_3] THEN - CONV_TAC(LAND_CONV(RATOR_CONV(ONCE_DEPTH_CONV NUMSEG_CONV))) THEN + (CONV_TAC "(LAND_CONV(RATOR_CONV(ONCE_DEPTH_CONV NUMSEG_CONV)))") (LAND_CONV(RATOR_CONV(ONCE_DEPTH_CONV NUMSEG_CONV))) THEN SIMP_TAC[SUM_OVER_PERMUTATIONS_INSERT; FINITE_INSERT; FINITE_EMPTY; ARITH_EQ; IN_INSERT; NOT_IN_EMPTY] THEN REWRITE_TAC[PERMUTES_EMPTY; SUM_SING; SET_RULE `{x | x = a} = {a}`] THEN @@ -1278,7 +1278,7 @@ let DET_4 = prove SIMP_TAC[SUM_CLAUSES; FINITE_INSERT; FINITE_EMPTY] THEN REWRITE_TAC[ARITH_EQ; IN_INSERT; NOT_IN_EMPTY] THEN REAL_ARITH_TAC) in GEN_TAC THEN REWRITE_TAC[det; DIMINDEX_4] THEN - CONV_TAC(LAND_CONV(RATOR_CONV(ONCE_DEPTH_CONV NUMSEG_CONV))) THEN + (CONV_TAC "(LAND_CONV(RATOR_CONV(ONCE_DEPTH_CONV NUMSEG_CONV)))") (LAND_CONV(RATOR_CONV(ONCE_DEPTH_CONV NUMSEG_CONV))) THEN SIMP_TAC[SUM_OVER_PERMUTATIONS_INSERT; FINITE_INSERT; FINITE_EMPTY; ARITH_EQ; IN_INSERT; NOT_IN_EMPTY] THEN REWRITE_TAC[PERMUTES_EMPTY; SUM_SING; SET_RULE `{x | x = a} = {a}`] THEN @@ -1561,7 +1561,7 @@ let EIGENVALUES_CHARACTERISTIC = prove ONCE_REWRITE_TAC[GSYM MATRIX_NEG_SUB] THEN ASM_REWRITE_TAC[EIGENVALUES_CHARACTERISTIC_ALT; DET_NEG] THEN REWRITE_TAC[REAL_ENTIRE; REAL_POW_EQ_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let INVERTIBLE_EIGENVALUES = prove (`!A:real^N^N. @@ -1826,7 +1826,7 @@ let DIAGONAL_MATRIX_INV_EXPLICIT = prove ASM_REWRITE_TAC[REAL_INV_0; REAL_MUL_LZERO; REAL_MUL_RZERO] THEN REWRITE_TAC[REAL_INV_EQ_0; REAL_RING `a * b * a = a <=> b * a = &1 \/ a = &0`] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let DIAGONAL_MATRIX_INV_COMPONENT = prove (`!A:real^N^N i j. @@ -1955,7 +1955,7 @@ let ONORM_DIAGONAL_MATRIX = prove FIRST_X_ASSUM(K ALL_TAC o SYM) THEN POP_ASSUM MP_TAC THEN SIMP_TAC[LAMBDA_BETA; MATRIX_VECTOR_MUL_COMPONENT; dot] THEN REWRITE_TAC[COND_RAND; COND_RATOR; REAL_MUL_LZERO] THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN SIMP_TAC[SUM_DELTA; IN_NUMSEG] THEN REWRITE_TAC[REAL_ABS_MUL; VECTOR_MUL_COMPONENT] THEN REPEAT STRIP_TAC THEN MATCH_MP_TAC REAL_LE_RMUL THEN @@ -2035,7 +2035,7 @@ let POSITIVE_SEMIDEFINITE_DIAGONAL_MATRIX = prove FIRST_ASSUM(SUBST1_TAC o GEN_REWRITE_RULE I [DIAGONAL_MATRIX]) THEN SIMP_TAC[matrix_vector_mul; LAMBDA_BETA; dot] THEN SIMP_TAC[COND_RATOR; COND_RAND; REAL_MUL_LZERO] THEN - CONV_TAC(RAND_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN + (CONV_TAC "(RAND_CONV(ONCE_DEPTH_CONV SYM_CONV))") (RAND_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN SIMP_TAC[SUM_DELTA] THEN MATCH_MP_TAC SUM_POS_LE_NUMSEG THEN GEN_TAC THEN STRIP_TAC THEN REWRITE_TAC[REAL_ARITH `x * d * x:real = d * x * x`] THEN @@ -2352,7 +2352,7 @@ let POSITIVE_DEFINITE_DIAGONAL_MATRIX = prove FIRST_ASSUM(SUBST1_TAC o GEN_REWRITE_RULE I [DIAGONAL_MATRIX]) THEN SIMP_TAC[matrix_vector_mul; LAMBDA_BETA; dot] THEN SIMP_TAC[COND_RATOR; COND_RAND; REAL_MUL_LZERO] THEN - CONV_TAC(RAND_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN + (CONV_TAC "(RAND_CONV(ONCE_DEPTH_CONV SYM_CONV))") (RAND_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN SIMP_TAC[SUM_DELTA] THEN MATCH_MP_TAC SUM_POS_LT THEN REWRITE_TAC[REAL_ARITH `x * d * x:real = d * x * x`] THEN ASM_SIMP_TAC[FINITE_NUMSEG; IN_NUMSEG; REAL_LE_MUL; REAL_LE_SQUARE; @@ -2483,7 +2483,7 @@ let HADAMARD_INEQUALITY_ROW = prove REWRITE_TAC[ARITH_RULE `j < n /\ 1 <= n /\ n <= N /\ 1 <= j /\ j <= N /\ ~(n = j) <=> (1 <= n /\ n <= N) /\ (1 <= j /\ j <= N /\ j < n)`] THEN - MATCH_MP_TAC num_WF THEN CONV_TAC NUM_REDUCE_CONV THEN + MATCH_MP_TAC num_WF THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN X_GEN_TAC `n:num` THEN GEN_REWRITE_TAC (LAND_CONV o ONCE_DEPTH_CONV) [RIGHT_IMP_FORALL_THM] THEN REWRITE_TAC[IMP_IMP] THEN DISCH_TAC THEN @@ -2501,7 +2501,7 @@ let HADAMARD_INEQUALITY_ROW = prove [ASM_CASES_TAC `(b:num->real^N) m = vec 0` THEN ASM_REWRITE_TAC[DOT_RZERO; REAL_MUL_RZERO] THEN ASM_SIMP_TAC[DOT_EQ_0; REAL_DIV_RMUL]; - CONV_TAC SYM_CONV THEN REWRITE_TAC[REAL_ENTIRE] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[REAL_ENTIRE] THEN DISJ2_TAC THEN REWRITE_TAC[GSYM orthogonal] THEN FIRST_ASSUM(DISJ_CASES_TAC o MATCH_MP (ARITH_RULE `~(m:num = n) ==> n < m \/ m < n`)) @@ -2533,7 +2533,7 @@ let HADAMARD_INEQUALITY_ROW = prove ASM_CASES_TAC `(b:num->real^N) j = vec 0` THEN ASM_REWRITE_TAC[DOT_RZERO; REAL_MUL_RZERO; COND_ID] THEN COND_CASES_TAC THEN ASM_SIMP_TAC[DOT_EQ_0; REAL_DIV_RMUL] THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[REAL_ENTIRE] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[REAL_ENTIRE] THEN DISJ2_TAC THEN REWRITE_TAC[GSYM orthogonal] THEN FIRST_ASSUM(DISJ_CASES_TAC o MATCH_MP (ARITH_RULE `~(m:num = n) ==> n < m \/ m < n`)) @@ -2740,7 +2740,7 @@ let ORTHOGONAL_MATRIX_ORTHONORMAL_ROWS_INDEXED = prove SIMP_TAC[CART_EQ; LAMBDA_BETA; pairwise; MAT_COMPONENT] THEN SIMP_TAC[MATRIX_MUL_RTRANSP_DOT_ROW; IN_NUMSEG; LAMBDA_BETA] THEN REWRITE_TAC[NORM_EQ_SQUARE; REAL_POS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[orthogonal] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[orthogonal] THEN MESON_TAC[]);; let ORTHOGONAL_MATRIX_ORTHONORMAL_ROWS_PAIRWISE = prove @@ -2770,7 +2770,7 @@ let ORTHOGONAL_MATRIX_ORTHONORMAL_ROWS_SPAN = prove [MATCH_MP_TAC(SET_RULE `UNIV SUBSET s ==> s = UNIV`) THEN MATCH_MP_TAC CARD_GE_DIM_INDEPENDENT THEN ASM_REWRITE_TAC[DIM_UNIV; SUBSET_UNIV; LE_REFL]; - CONV_TAC SYM_CONV THEN REWRITE_TAC[GSYM DIM_UNIV] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[GSYM DIM_UNIV] THEN FIRST_X_ASSUM(SUBST1_TAC o SYM) THEN REWRITE_TAC[DIM_SPAN] THEN MATCH_MP_TAC DIM_EQ_CARD] THEN MATCH_MP_TAC PAIRWISE_ORTHOGONAL_INDEPENDENT THEN @@ -2814,14 +2814,14 @@ let ORTHOGONAL_MATRIX_2 = prove SIMP_TAC[orthogonal_matrix; CART_EQ; matrix_mul; LAMBDA_BETA; TRANSP_COMPONENT; MAT_COMPONENT] THEN REWRITE_TAC[DIMINDEX_2; FORALL_2; SUM_2] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RING);; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RING") REAL_RING);; let ORTHOGONAL_MATRIX_2_ALT = prove (`!A:real^2^2. orthogonal_matrix A <=> A$1$1 pow 2 + A$2$1 pow 2 = &1 /\ (A$1$1 = A$2$2 /\ A$1$2 = --(A$2$1) \/ A$1$1 = --(A$2$2) /\ A$1$2 = A$2$1)`, - REWRITE_TAC[ORTHOGONAL_MATRIX_2] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[ORTHOGONAL_MATRIX_2] THEN (CONV_TAC "REAL_RING") REAL_RING);; let ORTHOGONAL_MATRIX_INV = prove (`!A:real^N^N. orthogonal_matrix A ==> matrix_inv A = transp A`, @@ -2850,7 +2850,7 @@ let ORTHOGONAL_TRANSFORMATION_ORTHOGONAL_EIGENVECTORS = prove ASM_CASES_TAC `v:real^N = vec 0` THEN ASM_REWRITE_TAC[DOT_LZERO] THEN ASM_CASES_TAC `w:real^N = vec 0` THEN ASM_REWRITE_TAC[DOT_RZERO] THEN ASM_CASES_TAC `(v:real^N) dot w = &0` THEN ASM_REWRITE_TAC[] THEN - UNDISCH_TAC `~(a:real = b)` THEN CONV_TAC REAL_RING);; + UNDISCH_TAC `~(a:real = b)` THEN (CONV_TAC "REAL_RING") REAL_RING);; let ORTHOGONAL_MATRIX_ORTHOGONAL_EIGENVECTORS = prove (`!A:real^N^N v w a b. @@ -2884,7 +2884,7 @@ let ORTHOGONAL_TRANSFORMATION_1_GEN = prove SIMP_TAC[NORM_BASIS; DIMINDEX_GE_1; LE_REFL; DIMINDEX_1] THEN REWRITE_TAC[REAL_ARITH `abs x * &1 = &1 <=> x = &1 \/ x = -- &1`] THEN MATCH_MP_TAC MONO_OR THEN SIMP_TAC[FUN_EQ_THM] THEN - REPEAT STRIP_TAC THEN CONV_TAC VECTOR_ARITH);; + REPEAT STRIP_TAC THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH);; let MATRIX_INV_ORTHOGONAL_LMUL = prove (`!U A:real^M^N. @@ -3117,7 +3117,7 @@ let ISOMETRY_SPHERE_EXTEND = prove REPLICATE_TAC 4 (DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC)) THEN ASM_REWRITE_TAC[] THEN REWRITE_TAC[NORM_EQ; NORM_EQ_1] THEN REWRITE_TAC[DOT_LSUB; DOT_RSUB; DOT_LMUL; DOT_RMUL] THEN - REWRITE_TAC[DOT_SYM] THEN CONV_TAC REAL_RING) in + REWRITE_TAC[DOT_SYM] THEN (CONV_TAC "REAL_RING") REAL_RING) in REPEAT STRIP_TAC THEN EXISTS_TAC `\x. if x = vec 0 then vec 0 else norm(x) % (f:real^N->real^N)(inv(norm x) % x)` THEN @@ -3395,7 +3395,7 @@ let ROTATION_MATRIX_2 = prove A$1$1 pow 2 + A$2$1 pow 2 = &1 /\ A$1$1 = A$2$2 /\ A$1$2 = --(A$2$1)`, REWRITE_TAC[rotation_matrix; ORTHOGONAL_MATRIX_2; DET_2] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* Slightly stronger results giving rotation, but only in >= 2 dimensions. *) @@ -3517,7 +3517,7 @@ let EULER_ROTATION_THEOREM = prove SIMP_TAC[CART_EQ; FORALL_3; MAT_COMPONENT; DIMINDEX_3; LAMBDA_BETA; ARITH; MATRIX_SUB_COMPONENT; MAT_COMPONENT; SUM_3; matrix_mul; transp; matrix_vector_mul] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let EULER_ROTOINVERSION_THEOREM = prove (`!A:real^3^3. @@ -3531,7 +3531,7 @@ let EULER_ROTOINVERSION_THEOREM = prove SIMP_TAC[CART_EQ; FORALL_3; MAT_COMPONENT; DIMINDEX_3; LAMBDA_BETA; ARITH; MATRIX_ADD_COMPONENT; MAT_COMPONENT; SUM_3; matrix_mul; transp; matrix_vector_mul] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* We can always rotate so that a hyperplane is "horizontal". *) @@ -3813,7 +3813,7 @@ let REFLECT_ALONG_INVOLUTION = prove (`!v x:real^N. reflect_along v (reflect_along v x) = x`, REWRITE_TAC[reflect_along; DOT_LSUB; VECTOR_MUL_EQ_0; VECTOR_ARITH `x - a % v - b % v:real^N = x <=> (a + b) % v = vec 0`] THEN - REWRITE_TAC[DOT_LMUL; GSYM DOT_EQ_0] THEN CONV_TAC REAL_FIELD);; + REWRITE_TAC[DOT_LMUL; GSYM DOT_EQ_0] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let REFLECT_ALONG_EQ_0 = prove (`!v x:real^N. reflect_along v x = vec 0 <=> x = vec 0`, @@ -3831,7 +3831,7 @@ let ORTHOGONAL_TRANSFORMATION_REFLECT_ALONG = prove `(a - b:real^N) dot (a - b) = (a dot a + b dot b) - &2 * a dot b`] THEN REWRITE_TAC[DOT_LMUL; DOT_RMUL] THEN X_GEN_TAC `w:real^N` THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE RAND_CONV [GSYM DOT_EQ_0]) THEN - CONV_TAC REAL_FIELD]);; + (CONV_TAC "REAL_FIELD") REAL_FIELD]);; let REFLECT_ALONG_EQ_SELF = prove (`!v x:real^N. reflect_along v x = x <=> orthogonal v x`, @@ -3840,7 +3840,7 @@ let REFLECT_ALONG_EQ_SELF = prove REWRITE_TAC[VECTOR_MUL_EQ_0] THEN ASM_CASES_TAC `v:real^N = vec 0` THEN ASM_SIMP_TAC[DOT_LZERO; DOT_SYM] THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE RAND_CONV [GSYM DOT_EQ_0]) THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let REFLECT_ALONG_ZERO = prove (`!x:real^N. reflect_along (vec 0) = I`, @@ -3864,7 +3864,7 @@ let REFLECT_ALONG_SCALE = prove AP_TERM_TAC THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[DOT_RMUL] THEN REWRITE_TAC[DOT_LMUL] THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE RAND_CONV [GSYM DOT_EQ_0]) THEN - POP_ASSUM MP_TAC THEN CONV_TAC REAL_FIELD);; + POP_ASSUM MP_TAC THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let REFLECT_ALONG_1D = prove (`!v x:real^N. @@ -3874,7 +3874,7 @@ let REFLECT_ALONG_1D = prove REWRITE_TAC[VEC_COMPONENT; COND_RATOR; COND_RAND] THEN SIMP_TAC[VECTOR_NEG_COMPONENT; VECTOR_MUL_COMPONENT; VECTOR_SUB_COMPONENT; REAL_MUL_RZERO] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let REFLECT_ALONG_BASIS = prove (`!x:real^N k. @@ -3933,7 +3933,7 @@ let ROTOINVERSION_MATRIX_REFLECT_ALONG = prove ORTHOGONAL_TRANSFORMATION_MATRIX]; REWRITE_TAC[GSYM MATRIX_VECTOR_MUL_ASSOC] THEN ASM_SIMP_TAC[MATRIX_WORKS; ORTHOGONAL_TRANSFORMATION_LINEAR] THEN - AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REFLECT_ALONG_LINEAR_IMAGE THEN ASM_REWRITE_TAC[GSYM ORTHOGONAL_TRANSFORMATION]]; ASM_REWRITE_TAC[DET_MUL; DET_TRANSP] THEN @@ -4093,7 +4093,7 @@ let ORTHOGONAL_TRANSFORMATION_GENERATED_BY_REFLECTIONS = prove EXISTS_TAC `CONS (v:real^N) l` THEN ASM_REWRITE_TAC[ALL; LENGTH; LE_SUC; VECTOR_SUB_EQ; ITLIST] THEN EXPAND_TAC "v" THEN ASM_REWRITE_TAC[VECTOR_MUL_EQ_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[VECTOR_SUB_EQ] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[VECTOR_SUB_EQ] THEN FIRST_X_ASSUM(MP_TAC o AP_TERM `(o)(reflect_along (v:real^N)):(real^N->real^N)->(real^N->real^N)`) THEN REWRITE_TAC[FUN_EQ_THM; o_THM; REFLECT_ALONG_INVOLUTION]]]);; @@ -4214,7 +4214,7 @@ let GEN_GEOM_ORIGIN_TAC x avoid (asl,w as gl) = and avs' = subtract (frees w) (freesl(map (concl o snd) asl)) in (MAP_EVERY X_GEN_TAC avs THEN MAP_EVERY (fun t -> SPEC_TAC(t,t)) (rev(subtract (avs@avs') [x])) THEN - SPEC_TAC(x,x) THEN CONV_TAC(GEOM_ORIGIN_CONV avoid)) gl;; + SPEC_TAC(x,x) THEN (CONV_TAC "(GEOM_ORIGIN_CONV avoid)") (GEOM_ORIGIN_CONV avoid)) gl;; let GEOM_ORIGIN_TAC x = GEN_GEOM_ORIGIN_TAC x [];; @@ -4222,7 +4222,7 @@ let GEOM_TRANSLATE_TAC avoid (asl,w) = let a,bod = dest_forall w in let n = length(fst(strip_forall bod)) in (X_GEN_TAC a THEN - CONV_TAC(funpow n BINDER_CONV (LAND_CONV(GEOM_TRANSLATE_CONV avoid a))) THEN + (CONV_TAC "(funpow n BINDER_CONV (LAND_CONV(GEOM_TRANSLATE_CONV avoid a)))") (funpow n BINDER_CONV (LAND_CONV(GEOM_TRANSLATE_CONV avoid a))) THEN REWRITE_TAC[]) (asl,w);; (* ------------------------------------------------------------------------- *) @@ -4400,7 +4400,7 @@ let GEOM_TRANSFORM_TAC = and bths = LINEAR_INVARIANTS f fths in (MAP_EVERY X_GEN_TAC (f::vs) THEN DISCH_TAC THEN GEN_REWRITE_TAC (LAND_CONV o ONCE_DEPTH_CONV) cths THEN - CONV_TAC(LAND_CONV vconv) THEN + (CONV_TAC "(LAND_CONV vconv)") (LAND_CONV vconv) THEN GEN_REWRITE_TAC (LAND_CONV o REDEPTH_CONV) [bths] THEN REWRITE_TAC[] THEN REWRITE_TAC(mapfilter (ADD_ASSUM ant o ISPEC f) aths) THEN diff --git a/Multivariate/flyspeck.ml b/Multivariate/flyspeck.ml index f685ef30..f61e3b92 100644 --- a/Multivariate/flyspeck.ml +++ b/Multivariate/flyspeck.ml @@ -21,7 +21,7 @@ let NORM_CROSS = prove MP_TAC(SPECL [`x:real^3`; `y:real^3`] NORM_CROSS_DOT) THEN REWRITE_TAC[VECTOR_ANGLE] THEN MP_TAC(SPEC `vector_angle (x:real^3) y` SIN_CIRCLE) THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* Other miscelleneous lemmas. *) @@ -189,7 +189,7 @@ let NOT_COPLANAR_IMP_NOT_COLLINEAR_DROPOUT_3 = prove SIMP_TAC[CART_EQ; DIMINDEX_2; DIMINDEX_3; FORALL_2; FORALL_3; VEC_COMPONENT; VECTOR_ADD_COMPONENT; VECTOR_MUL_COMPONENT; VECTOR_3; BASIS_COMPONENT; ARITH] THEN - REPEAT(FIRST_X_ASSUM(MP_TAC o SYM)) THEN CONV_TAC REAL_RING; + REPEAT(FIRST_X_ASSUM(MP_TAC o SYM)) THEN (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN SIMP_TAC[AFFINE_HULL_EQ_SPAN] THEN DISCH_TAC THEN SIMP_TAC[SPAN_SUPERSET; IN_INSERT] THEN @@ -295,7 +295,7 @@ let PAD2D3D_TAC = let lasttac = GEN_REWRITE_TAC REDEPTH_CONV [LINEAR_INVARIANTS pad2d3d_tm pths] in fun gl -> (GEN_REWRITE_TAC ONCE_DEPTH_CONV [cth] THEN - CONV_TAC(DEPTH_CONV PAD2D3D_QUANTIFY_CONV) THEN + (CONV_TAC "(DEPTH_CONV PAD2D3D_QUANTIFY_CONV)") (DEPTH_CONV PAD2D3D_QUANTIFY_CONV) THEN lasttac) gl;; (* ------------------------------------------------------------------------- *) @@ -441,7 +441,7 @@ let COPLANAR = prove (`2 <= dimindex(:N) ==> !s:real^N->bool. coplanar s <=> ?x. plane x /\ s SUBSET x`, DISCH_TAC THEN GEN_TAC THEN REWRITE_TAC[coplanar; plane] THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[LEFT_AND_EXISTS_THM] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[LEFT_AND_EXISTS_THM] THEN ONCE_REWRITE_TAC[MESON[] `(?x u v w. p x u v w) <=> (?u v w x. p x u v w)`] THEN REWRITE_TAC[GSYM CONJ_ASSOC; RIGHT_EXISTS_AND_THM; UNWIND_THM2] THEN @@ -467,7 +467,7 @@ let COPLANAR = prove ALL_TAC] THEN DISCH_THEN(X_CHOOSE_THEN `t:real^N->bool` (CONJUNCTS_THEN2 MP_TAC STRIP_ASSUME_TAC)) THEN - CONV_TAC(LAND_CONV HAS_SIZE_CONV) THEN + (CONV_TAC "(LAND_CONV HAS_SIZE_CONV)") (LAND_CONV HAS_SIZE_CONV) THEN REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN MAP_EVERY X_GEN_TAC [`a:real^N`; `b:real^N`] THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC SUBST_ALL_TAC) THEN @@ -520,7 +520,7 @@ let COPLANAR_DET_EQ_0 = prove REWRITE_TAC[rows; row; LAMBDA_ETA] THEN ONCE_REWRITE_TAC[SIMPLE_IMAGE_GEN] THEN REWRITE_TAC[GSYM numseg; DIMINDEX_3] THEN - CONV_TAC(ONCE_DEPTH_CONV NUMSEG_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV NUMSEG_CONV)") (ONCE_DEPTH_CONV NUMSEG_CONV) THEN SIMP_TAC[IMAGE_CLAUSES; coplanar; VECTOR_3] THEN EQ_TAC THENL [REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN MAP_EVERY X_GEN_TAC [`a:real^3`; `b:real^3`; `c:real^3`] THEN @@ -551,7 +551,7 @@ let COPLANAR_DET_EQ_0 = prove ASM_REWRITE_TAC[ARITH_RULE `n <= 2 <=> n < 3`; DIMINDEX_3; ARITH] THEN DISCH_THEN(X_CHOOSE_THEN `t:real^3->bool` (CONJUNCTS_THEN2 MP_TAC STRIP_ASSUME_TAC)) THEN - CONV_TAC(LAND_CONV HAS_SIZE_CONV) THEN + (CONV_TAC "(LAND_CONV HAS_SIZE_CONV)") (LAND_CONV HAS_SIZE_CONV) THEN REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN MAP_EVERY X_GEN_TAC [`a:real^3`; `b:real^3`] THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC SUBST_ALL_TAC) THEN @@ -590,7 +590,7 @@ let AFFINE_HULL_3_GENERATED = prove s SUBSET affine hull {u,v,w} /\ ~collinear s ==> affine hull {u,v,w} = affine hull s`, REWRITE_TAC[COLLINEAR_AFF_DIM; INT_NOT_LE] THEN REPEAT STRIP_TAC THEN - CONV_TAC SYM_CONV THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN GEN_REWRITE_TAC RAND_CONV [GSYM HULL_HULL] THEN MATCH_MP_TAC AFF_DIM_EQ_AFFINE_HULL THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC INT_LE_TRANS THEN EXISTS_TAC `&2:int` THEN @@ -755,7 +755,7 @@ let AFFSIGN_INJECTIVE_LINEAR_IMAGE = prove SUBGOAL_THEN `{y | y IN IMAGE (f:real^M->real^N) s /\ ~(u y = &0)} = IMAGE f {x | x IN s /\ ~(u(f x) = &0)}` - SUBST1_TAC THENL [ASM SET_TAC[]; CONV_TAC SYM_CONV] THEN + SUBST1_TAC THENL [ASM SET_TAC[]; (CONV_TAC "SYM_CONV") SYM_CONV] THEN SUBGOAL_THEN `FINITE {x | x IN s /\ ~(u((f:real^M->real^N) x) = &0)}` ASSUME_TAC THENL [FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE @@ -845,7 +845,7 @@ let IN_AFFSIGN_TRANSLATION = prove (\v. f(v - a) % v)` THEN CONJ_TAC THENL [ALL_TAC; - CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN CONJ_TAC THENL [SET_TAC[]; ALL_TAC] THEN ASM_REWRITE_TAC[IMP_CONJ; FORALL_IN_IMAGE; VECTOR_MUL_EQ_0] THEN REWRITE_TAC[VECTOR_ADD_SUB] THEN SET_TAC[]] THEN @@ -1080,7 +1080,7 @@ let CONVEX_AFFSIGN = prove X_GEN_TAC `g:real^N->real` THEN STRIP_TAC THEN EXISTS_TAC `\x:real^N. (&1 - u) * f x + u * g x` THEN ASM_REWRITE_TAC[VECTOR_ADD_RDISTRIB] THEN REPEAT CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN W(MP_TAC o PART_MATCH (lhs o rand) VSUM_ADD_GEN o lhand o snd) THEN REWRITE_TAC[GSYM VECTOR_MUL_ASSOC; VSUM_LMUL] THEN DISCH_THEN MATCH_MP_TAC; @@ -1121,7 +1121,7 @@ let CONVEX_AFF_GT = prove REWRITE_TAC[REAL_ARITH `&0 <= x <=> x = &0 \/ &0 < x`; REAL_ARITH `x <= &1 <=> x = &1 \/ x < &1`] THEN REPEAT STRIP_TAC THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_LZERO; REAL_ADD_LID; REAL_ADD_RID; REAL_MUL_LID] THEN ASM_SIMP_TAC[REAL_LT_ADD; REAL_LT_MUL; REAL_SUB_LT]);; @@ -1133,7 +1133,7 @@ let CONVEX_AFF_LT = prove REWRITE_TAC[REAL_ARITH `&0 <= x <=> x = &0 \/ &0 < x`; REAL_ARITH `x <= &1 <=> x = &1 \/ x < &1`] THEN REPEAT STRIP_TAC THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_LZERO; REAL_ADD_LID; REAL_ADD_RID; REAL_MUL_LID] THEN ASM_SIMP_TAC[REAL_LT_ADD; REAL_LT_MUL; REAL_SUB_LT]);; @@ -1316,7 +1316,7 @@ let AFFSIGN_SPECIAL_SCALE = prove FIRST_ASSUM(MP_TAC o MATCH_MP(MESON[REAL_LT_IMP_NZ; REAL_DIV_LMUL] `!a. &0 < a ==> (!y. ?x. a * x = y)`)) THEN DISCH_THEN(MP_TAC o MATCH_MP QUANTIFY_SURJECTION_THM) THEN - DISCH_THEN(CONV_TAC o RAND_CONV o EXPAND_QUANTS_CONV) THEN + DISCH_THEN((CONV_TAC "o") o RAND_CONV o EXPAND_QUANTS_CONV) THEN REWRITE_TAC[VECTOR_MUL_ASSOC; REAL_MUL_SYM]);; let AFF_GE_SPECIAL_SCALE = prove @@ -1379,7 +1379,7 @@ let AFF_GE_SCALE_LEMMA = prove ASM_SIMP_TAC[REAL_LE_DIV; REAL_LE_MUL; REAL_LT_IMP_LE] THEN REWRITE_TAC[VECTOR_MUL_ASSOC] THEN REPLICATE_TAC 2 (AP_THM_TAC THEN AP_TERM_TAC) THEN - UNDISCH_TAC `&0 < a` THEN CONV_TAC REAL_FIELD);; + UNDISCH_TAC `&0 < a` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let AFFSIGN_0 = prove (`!sgn s t. @@ -1627,7 +1627,7 @@ let ANGLES_ADD_AFF_GE = prove MAP_EVERY EXISTS_TAC [`a / (a + b):real`; `b / (a + b):real`] THEN ASM_SIMP_TAC[REAL_LE_DIV; REAL_LT_IMP_LE; VECTOR_ADD_LDISTRIB] THEN REWRITE_TAC[VECTOR_MUL_ASSOC; real_div; REAL_MUL_AC] THEN - UNDISCH_TAC `&0 < a + b` THEN CONV_TAC REAL_FIELD);; + UNDISCH_TAC `&0 < a + b` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let AFF_GE_2_1_0_DROPOUT_3 = prove (`!w z:real^3. @@ -1655,7 +1655,7 @@ let AFF_GE_2_1_0_DROPOUT_3 = prove REWRITE_TAC[VECTOR_ADD_COMPONENT; VECTOR_MUL_COMPONENT] THEN SIMP_TAC[dropout; LAMBDA_BETA; DIMINDEX_2; ARITH; BASIS_COMPONENT; DIMINDEX_3] THEN - CONV_TAC REAL_RING]);; + (CONV_TAC "REAL_RING") REAL_RING]);; let AFF_GE_2_1_0_SEMIALGEBRAIC = prove (`!x y z:real^3. @@ -1913,7 +1913,7 @@ let ORTHONORMAL_CROSS = prove (a = --b /\ c = d ==> x <= &0) ==> (u = &1 /\ v = &1 /\ w = &0 /\ &0 < x ==> a:real = b /\ --c:real = d)`) THEN - CONJ_TAC THENL [CONV_TAC REAL_RING; ALL_TAC] THEN + CONJ_TAC THENL [(CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN DISCH_THEN(CONJUNCTS_THEN SUBST1_TAC) THEN MATCH_MP_TAC(REAL_ARITH `&0 <= x * x /\ &0 <= y * y ==> --x * x + y * -- y <= &0`) THEN @@ -2069,7 +2069,7 @@ let AZIM_EXISTS = prove VECTOR_SUB_COMPONENT; REAL_MUL_RZERO; REAL_MUL_RID; REAL_SUB_RZERO] THEN REWRITE_TAC[RIGHT_EXISTS_AND_THM] THEN - CONV_TAC(BINOP_CONV(BINOP_CONV(ONCE_DEPTH_CONV SYM_CONV))) THEN + (CONV_TAC "(BINOP_CONV(BINOP_CONV(ONCE_DEPTH_CONV SYM_CONV)))") (BINOP_CONV(BINOP_CONV(ONCE_DEPTH_CONV SYM_CONV))) THEN ASM_SIMP_TAC[GSYM REAL_EQ_RDIV_EQ; EXISTS_REFL] THEN REAL_ARITH_TAC; ALL_TAC] THEN ASM_REWRITE_TAC[] THEN @@ -2184,7 +2184,7 @@ let azim = prove COND_CASES_TAC THENL [ALL_TAC; RULE_ASSUM_TAC(REWRITE_RULE[DE_MORGAN_THM]) THEN ASM_REWRITE_TAC[] THEN - CONV_TAC SELECT_CONV THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN MP_TAC(ISPECL [`v:real^3`; `w:real^3`; `w1:real^3`; `w2:real^3`] AZIM_EXISTS) THEN ASM_REWRITE_TAC[]] THEN @@ -2265,7 +2265,7 @@ let AZIM_UNIQUE = prove `s pow 2 + c pow 2 = &1 ==> (r * c = &0 /\ r * s = &0 <=> r = &0)`]; ALL_TAC] THEN SUBGOAL_THEN `(azim v w w1 w2 - theta) / (&2 * pi) = &0` MP_TAC THENL - [ALL_TAC; MP_TAC PI_POS THEN CONV_TAC REAL_FIELD] THEN + [ALL_TAC; MP_TAC PI_POS THEN (CONV_TAC "REAL_FIELD") REAL_FIELD] THEN MATCH_MP_TAC REAL_EQ_INTEGERS_IMP THEN ASM_SIMP_TAC[REAL_SUB_RZERO; REAL_ABS_DIV; REAL_ABS_MUL; REAL_ABS_NUM; REAL_ABS_PI; REAL_LT_LDIV_EQ; REAL_LT_MUL; REAL_OF_NUM_LT; ARITH; @@ -2327,7 +2327,7 @@ let AZIM_LINEAR_IMAGE = prove [ASM_MESON_TAC[ORTHOGONAL_TRANSFORMATION; ORTHOGONAL_TRANSFORMATION_SURJECTIVE]; ALL_TAC] THEN - DISCH_THEN(CONV_TAC o LAND_CONV o EXPAND_QUANTS_CONV) THEN + DISCH_THEN((CONV_TAC "o") o LAND_CONV o EXPAND_QUANTS_CONV) THEN ASM_SIMP_TAC[ORTHONORMAL_LINEAR_IMAGE] THEN ASM_SIMP_TAC[GSYM LINEAR_CMUL; GSYM LINEAR_ADD] THEN SUBGOAL_THEN `!x y. (f:real^3->real^3) x = f y <=> x = y` ASSUME_TAC THENL @@ -2359,7 +2359,7 @@ let AZIM_SPECIAL_SCALE = prove FIRST_ASSUM(MP_TAC o MATCH_MP(MESON[REAL_LT_IMP_NZ; REAL_DIV_LMUL] `!a. &0 < a ==> (!y. ?x. a * x = y)`)) THEN DISCH_THEN(MP_TAC o MATCH_MP QUANTIFY_SURJECTION_THM) THEN - DISCH_THEN(CONV_TAC o RAND_CONV o + DISCH_THEN((CONV_TAC "o") o RAND_CONV o PARTIAL_EXPAND_QUANTS_CONV ["psi"; "r1"; "r2"]) THEN REWRITE_TAC[VECTOR_MUL_ASSOC; REAL_MUL_SYM] THEN ASM_SIMP_TAC[VECTOR_MUL_EQ_0; REAL_LT_IMP_NZ] THEN @@ -2379,7 +2379,7 @@ let AZIM_SCALE_ALL = prove let SCALE_QUANT_TAC side asm avoid = MP_TAC(MATCH_MP lemma (ASSUME asm)) THEN DISCH_THEN(MP_TAC o MATCH_MP QUANTIFY_SURJECTION_THM) THEN - DISCH_THEN(CONV_TAC o side o PARTIAL_EXPAND_QUANTS_CONV avoid) in + DISCH_THEN((CONV_TAC "o") o side o PARTIAL_EXPAND_QUANTS_CONV avoid) in REPEAT STRIP_TAC THEN ASM_SIMP_TAC[azim_def; COLLINEAR_SCALE_ALL; REAL_LT_IMP_NZ] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[VECTOR_SUB_RZERO] THEN @@ -2399,7 +2399,7 @@ let AZIM_ARG = prove (`(r * cos t) % basis 1 + (r * sin t) % basis 2 = Cx r * cexp(ii * Cx t)`, REWRITE_TAC[CEXP_EULER; COMPLEX_BASIS; GSYM CX_SIN; GSYM CX_COS; COMPLEX_CMUL; CX_MUL] THEN - CONV_TAC COMPLEX_RING) in + (CONV_TAC "COMPLEX_RING") COMPLEX_RING) in REPEAT STRIP_TAC THEN ASM_CASES_TAC `collinear {vec 0:real^3,basis 3,x}` THENL [ASM_SIMP_TAC[AZIM_DEGENERATE] THEN @@ -2430,10 +2430,10 @@ let AZIM_ARG = prove ONCE_REWRITE_TAC[COMPLEX_RING `(a * b) * (c * d):complex = (a * c) * b * d`] THEN REWRITE_TAC[GSYM complex_div; GSYM CX_DIV; GSYM CEXP_SUB] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC ARG_UNIQUE THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC ARG_UNIQUE THEN EXISTS_TAC `r2 / r1:real` THEN ASM_SIMP_TAC[REAL_LT_DIV] THEN AP_TERM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[CX_ADD] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let REAL_CONTINUOUS_AT_AZIM_SHARP = prove (`!v w w1 w2. @@ -2541,7 +2541,7 @@ let AZIM_EQ = prove UNDISCH_TAC `~collinear {vec 0:real^3, basis 3, v1 % basis 3}` THEN REWRITE_TAC[COLLINEAR_LEMMA] THEN MESON_TAC[]; DISCH_THEN SUBST1_TAC] THEN - REWRITE_TAC[AZIM_ARG] THEN CONV_TAC(LAND_CONV SYM_CONV) THEN + REWRITE_TAC[AZIM_ARG] THEN (CONV_TAC "(LAND_CONV SYM_CONV)") (LAND_CONV SYM_CONV) THEN W(MP_TAC o PART_MATCH (lhs o rand) ARG_EQ o lhand o snd) THEN RULE_ASSUM_TAC(REWRITE_RULE[COLLINEAR_BASIS_3]) THEN ASM_REWRITE_TAC[complex_div; COMPLEX_ENTIRE; COMPLEX_INV_EQ_0] THEN @@ -2693,8 +2693,8 @@ let AZIM_EQ_PI = prove UNDISCH_TAC `~collinear {vec 0:real^3, basis 3, v1 % basis 3}` THEN REWRITE_TAC[COLLINEAR_LEMMA] THEN MESON_TAC[]; DISCH_THEN SUBST1_TAC] THEN - REWRITE_TAC[AZIM_ARG] THEN CONV_TAC(LAND_CONV SYM_CONV) THEN - CONV_TAC(LAND_CONV SYM_CONV) THEN REWRITE_TAC[ARG_EQ_PI] THEN + REWRITE_TAC[AZIM_ARG] THEN (CONV_TAC "(LAND_CONV SYM_CONV)") (LAND_CONV SYM_CONV) THEN + (CONV_TAC "(LAND_CONV SYM_CONV)") (LAND_CONV SYM_CONV) THEN REWRITE_TAC[ARG_EQ_PI] THEN MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `(dropout 3 (w:real^3)) IN aff_lt {vec 0:real^2} {dropout 3 (x:real^3)}` THEN CONJ_TAC THENL @@ -2721,7 +2721,7 @@ let AZIM_EQ_PI = prove DISCH_THEN(CONJUNCTS_THEN2 (SUBST1_TAC o SYM) ASSUME_TAC) THEN EXISTS_TAC `v / Re y` THEN REWRITE_TAC[GSYM CX_MUL; CX_INJ] THEN CONJ_TAC THENL - [ALL_TAC; REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD]; + [ALL_TAC; REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]; DISCH_THEN(X_CHOOSE_THEN `t:real` (CONJUNCTS_THEN2 ASSUME_TAC MP_TAC)) THEN ASM_SIMP_TAC[CX_INJ; REAL_ARITH `x < &0 ==> ~(x = &0)`; COMPLEX_FIELD @@ -2775,12 +2775,12 @@ let AZIM_EQ_0_PI_IMP_COPLANAR = prove REPEAT GEN_TAC THEN ASM_CASES_TAC `collinear {v0:real^3,v1,w1}` THENL [MP_TAC(ISPECL [`v0:real^3`; `v1:real^3`; `w1:real^3`; `w2:real^3`] NOT_COPLANAR_NOT_COLLINEAR) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC TAUT; + ASM_REWRITE_TAC[] THEN (CONV_TAC "TAUT") TAUT; POP_ASSUM MP_TAC] THEN ASM_CASES_TAC `collinear {v0:real^3,v1,w2}` THENL [MP_TAC(ISPECL [`v0:real^3`; `v1:real^3`; `w2:real^3`; `w1:real^3`] NOT_COPLANAR_NOT_COLLINEAR) THEN - ASM_REWRITE_TAC[] THEN REWRITE_TAC[INSERT_AC] THEN CONV_TAC TAUT; + ASM_REWRITE_TAC[] THEN REWRITE_TAC[INSERT_AC] THEN (CONV_TAC "TAUT") TAUT; POP_ASSUM MP_TAC] THEN MAP_EVERY (fun t -> SPEC_TAC(t,t)) [`w2:real^3`; `w1:real^3`; `v1:real^3`; `v0:real^3`] THEN @@ -2817,11 +2817,11 @@ let AZIM_EQ_0_PI_IMP_COPLANAR = prove `&0 < w ==> (x - k * w * &1 - y = &0 <=> k = (x - y) / w)`] THEN SUBGOAL_THEN `~((w1:real^3)$2 = &0) \/ ~((w2:real^3)$1 = &0)` STRIP_ASSUME_TAC THENL - [REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_RING; + [REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_RING") REAL_RING; EXISTS_TAC `(w2:real^3)$2 / (w1:real^3)$2` THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; EXISTS_TAC `(w2:real^3)$1 / (w1:real^3)$1` THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD]);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]);; let AZIM_SAME_WITHIN_AFF_GE = prove (`!a u v w z. @@ -3024,7 +3024,7 @@ let DIHV_LINEAR_IMAGE = prove ==> dihV (f w0) (f w1) (f w2) (f w3) = dihV w0 w1 w2 w3`, REPEAT STRIP_TAC THEN REWRITE_TAC[DIHV] THEN ASM_SIMP_TAC[GSYM LINEAR_SUB] THEN - CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN ASM_SIMP_TAC[PRESERVES_NORM_PRESERVES_DOT] THEN ASM_SIMP_TAC[GSYM LINEAR_CMUL; GSYM LINEAR_SUB] THEN REWRITE_TAC[angle; VECTOR_SUB_RZERO] THEN @@ -3037,7 +3037,7 @@ let DIHV_SPECIAL_SCALE = prove ~(a = &0) ==> dihV (vec 0) (a % v) w1 w2 = dihV (vec 0) v w1 w2`, REPEAT STRIP_TAC THEN REWRITE_TAC[DIHV; VECTOR_SUB_RZERO] THEN - CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN REWRITE_TAC[DOT_LMUL; DOT_RMUL; GSYM VECTOR_MUL_ASSOC] THEN REWRITE_TAC[VECTOR_ARITH `a % a % x - a % b % a % y:real^N = (a * a) % (x - b % y)`] THEN @@ -3047,7 +3047,7 @@ let DIHV_SPECIAL_SCALE = prove let DIHV_RANGE = prove (`!w0 w1 w2 w3. &0 <= dihV w0 w1 w2 w3 /\ dihV w0 w1 w2 w3 <= pi`, - REWRITE_TAC[DIHV] THEN CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN + REWRITE_TAC[DIHV] THEN (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN REWRITE_TAC[ANGLE_RANGE]);; let COS_AZIM_DIHV = prove @@ -3066,7 +3066,7 @@ let COS_AZIM_DIHV = prove MAP_EVERY X_GEN_TAC [`w1:real^3`; `w2:real^3`] THEN DISCH_THEN(STRIP_ASSUME_TAC o CONJUNCT2) THEN REWRITE_TAC[DIHV; VECTOR_SUB_RZERO] THEN - CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN SIMP_TAC[DOT_BASIS_BASIS; DIMINDEX_3; ARITH] THEN SIMP_TAC[DOT_BASIS; DIMINDEX_3; ARITH; VECTOR_MUL_LID] THEN MP_TAC(ISPECL [`vec 0:real^3`; `basis 3:real^3`; `w1:real^3`; `w2:real^3`] @@ -3121,7 +3121,7 @@ let AZIM_DIHV_COMPL = prove ONCE_REWRITE_TAC[REAL_ARITH `x = &2 * pi - y <=> y = &2 * pi - x`] THEN MATCH_MP_TAC COS_INJ_PI THEN REWRITE_TAC[COS_SUB; SIN_NPI; COS_NPI; REAL_MUL_LZERO] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[COS_AZIM_DIHV; REAL_ADD_RID; REAL_MUL_LID] THEN ASM_REWRITE_TAC[DIHV_RANGE] THEN MATCH_MP_TAC(REAL_ARITH `p <= x /\ x < &2 * p ==> &0 <= &2 * p - x /\ &2 * p - x <= p`) THEN @@ -3174,7 +3174,7 @@ let AZIM_EQ_0_PI_EQ_COPLANAR = prove EMPTY_SUBSET] THEN SIMP_TAC[AZIM_DIHV_EQ_0; AZIM_DIHV_EQ_PI] THEN REWRITE_TAC[DIHV] THEN - CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN DISCH_THEN(K ALL_TAC) THEN PAD2D3D_TAC THEN REWRITE_TAC[angle; VECTOR_SUB_RZERO] THEN GEOM_ORIGIN_TAC `v0:real^2` THEN REWRITE_TAC[VECTOR_SUB_RZERO] THEN @@ -3185,7 +3185,7 @@ let AZIM_EQ_0_PI_EQ_COPLANAR = prove REWRITE_TAC[GSYM DOT_CAUCHY_SCHWARZ_EQUAL] THEN REWRITE_TAC[DOT_2; CART_EQ; FORALL_2; DIMINDEX_2; VEC_COMPONENT; VECTOR_SUB_COMPONENT; VECTOR_MUL_COMPONENT] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let DIHV_EQ_0_PI_EQ_COPLANAR = prove (`!v0 v1 w1 w2:real^3. @@ -3199,13 +3199,13 @@ let DIHV_SYM = prove (`!v0 v1 v2 v3:real^N. dihV v0 v1 v3 v2 = dihV v0 v1 v2 v3`, REPEAT GEN_TAC THEN REWRITE_TAC[DIHV] THEN - CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN REWRITE_TAC[DOT_SYM; ANGLE_SYM]);; let DIHV_NEG = prove (`!v0 v1 v2 v3. dihV (--v0) (--v1) (--v2) (--v3) = dihV v0 v1 v2 v3`, REWRITE_TAC[DIHV; VECTOR_ARITH `--a - --b:real^N = --(a - b)`] THEN - CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN REWRITE_TAC[DOT_RNEG; DOT_LNEG; REAL_NEG_NEG] THEN REWRITE_TAC[VECTOR_MUL_RNEG] THEN REWRITE_TAC[angle; VECTOR_ARITH `--a - --b:real^N = --(a - b)`] THEN @@ -3223,7 +3223,7 @@ let DIHV_ARCV = prove ==> dihV u e v w = arcV u v w`, GEOM_ORIGIN_TAC `u:real^N` THEN REWRITE_TAC[dihV; orthogonal; VECTOR_SUB_RZERO] THEN - CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN SIMP_TAC[DOT_SYM; VECTOR_MUL_LZERO; VECTOR_SUB_RZERO] THEN REWRITE_TAC[ARCV_ANGLE; angle; VECTOR_SUB_RZERO] THEN REWRITE_TAC[VECTOR_ANGLE_LMUL; VECTOR_ANGLE_RMUL] THEN @@ -3266,7 +3266,7 @@ let REAL_CONTINUOUS_WITHIN_DIHV_COMPOSE = prove h continuous (at x within s) /\ k continuous (at x within s) ==> (\x. dihV (f x) (g x) (h x) (k x)) real_continuous (at x within s)`, REPEAT STRIP_TAC THEN REWRITE_TAC[dihV] THEN - CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN REWRITE_TAC[ARCV_ANGLE; angle; REAL_CONTINUOUS_CONTINUOUS; o_DEF] THEN REWRITE_TAC[VECTOR_SUB_RZERO] THEN MATCH_MP_TAC CONTINUOUS_WITHIN_CX_VECTOR_ANGLE_COMPOSE THEN @@ -3308,7 +3308,7 @@ let REAL_CONTINUOUS_AT_DIHV = prove (`!v w w1 w2:real^N. ~collinear {v, w, w2} ==> dihV v w w1 real_continuous at w2`, REPEAT STRIP_TAC THEN GEN_REWRITE_TAC LAND_CONV [GSYM ETA_AX] THEN - REWRITE_TAC[dihV] THEN CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN + REWRITE_TAC[dihV] THEN (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN GEN_REWRITE_TAC LAND_CONV [GSYM o_DEF] THEN MATCH_MP_TAC REAL_CONTINUOUS_CONTINUOUS_AT_COMPOSE THEN CONJ_TAC THENL [MATCH_MP_TAC CONTINUOUS_SUB THEN CONJ_TAC THEN @@ -3659,7 +3659,7 @@ let SPHERICAL_COORDINATES = prove REPEAT STRIP_TAC THEN TRY REAL_ARITH_TAC THEN ASM_REWRITE_TAC[] THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [orthonormal]) THEN - SIMP_TAC[DOT_BASIS; DIMINDEX_3; ARITH] THEN CONV_TAC REAL_RING] THEN + SIMP_TAC[DOT_BASIS; DIMINDEX_3; ARITH] THEN (CONV_TAC "REAL_RING") REAL_RING] THEN REPEAT(FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE LAND_CONV [AZIM_ARG])) THEN REPEAT(FIRST_X_ASSUM(MP_TAC o @@ -3674,7 +3674,7 @@ let SPHERICAL_COORDINATES = prove FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [orthonormal]) THEN SIMP_TAC[DOT_BASIS; DIMINDEX_3; ARITH; dropout; LAMBDA_BETA; DOT_2; DIMINDEX_2; DOT_3] THEN - CONV_TAC REAL_RING; + (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN ASM_CASES_TAC `dropout 3 (e1:real^3) = Cx(&0)` THEN ASM_SIMP_TAC[COMPLEX_NORM_CX; REAL_OF_NUM_EQ; ARITH_EQ; REAL_ABS_NUM] THEN @@ -3684,7 +3684,7 @@ let SPHERICAL_COORDINATES = prove SIMP_TAC[CART_EQ; DIMINDEX_2; DIMINDEX_3; FORALL_2; FORALL_3; cross; VECTOR_3; BASIS_COMPONENT; ARITH; dropout; LAMBDA_BETA; complex_mul; ii; complex; RE_DEF; IM_DEF; VECTOR_2] THEN - CONV_TAC REAL_RING; + (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN SPEC_TAC(`(dropout 3:real^3->real^2) e2`,`d2:real^2`) THEN SPEC_TAC(`(dropout 3:real^3->real^2) e1`,`d1:real^2`) THEN @@ -3700,7 +3700,7 @@ let SPHERICAL_COORDINATES = prove [ASM_SIMP_TAC[COMPLEX_DIV_1; COMPLEX_MUL_LID] THEN REPEAT STRIP_TAC THEN MP_TAC(SPEC `z:complex` ARG) THEN ASM_REWRITE_TAC[CEXP_EULER; CX_SIN; CX_COS; COMPLEX_MUL_RID] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ASM_REWRITE_TAC[ARG_EQ_0] THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE RAND_CONV [COMPLEX_EQ]) THEN REWRITE_TAC[RE_CX; IM_CX;real] THEN @@ -3727,7 +3727,7 @@ let WEDGE_ALT = prove let WEDGE_TRANSLATION = prove (`!a v w w1 w2. wedge (a + v) (a + w) (a + w1) (a + w2) = IMAGE (\x. a + x) (wedge v w w1 w2)`, - REPEAT GEN_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN CONJ_TAC THENL [MESON_TAC[VECTOR_ARITH `a + (x - a):real^3 = x`]; ALL_TAC] THEN REWRITE_TAC[wedge; IN_ELIM_THM; AZIM_TRANSLATION] THEN @@ -3742,7 +3742,7 @@ let WEDGE_LINEAR_IMAGE = prove (2 <= dimindex(:3) ==> det(matrix f) = &1) ==> !v w w1 w2. wedge (f v) (f w) (f w1) (f w2) = IMAGE f (wedge v w w1 w2)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN CONJ_TAC THENL [ASM_MESON_TAC[ORTHOGONAL_TRANSFORMATION_SURJECTIVE; ORTHOGONAL_TRANSFORMATION]; @@ -3917,7 +3917,7 @@ let WEDGE_LUNE_GT = prove EXISTS_TAC `{z | &0 <= Im z}` THEN CONJ_TAC THENL [MATCH_MP_TAC CONTINUOUS_WITHIN_UPPERHALF_ARG THEN ASM_CASES_TAC `t = &1` THENL - [ASM_REWRITE_TAC[REAL_SUB_REFL] THEN CONV_TAC COMPLEX_RING; + [ASM_REWRITE_TAC[REAL_SUB_REFL] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN DISCH_THEN(MP_TAC o AP_TERM `Im`) THEN REWRITE_TAC[IM_ADD; IM_CX; IM_MUL_CX; REAL_ADD_LID; REAL_ENTIRE] THEN @@ -4124,7 +4124,7 @@ let WEDGE = prove W(MP_TAC o PART_MATCH (lhs o rand) AFF_GT_2_1 o rand o rand o snd) THEN ASM_REWRITE_TAC[DISJOINT_INSERT; DISJOINT_EMPTY; IN_SING] THEN ANTS_TAC THENL - [CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + [(CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN ASM_REWRITE_TAC[COMPLEX_ENTIRE; II_NZ; CX_INJ] THEN DISCH_THEN(MP_TAC o AP_TERM `Re`) THEN REWRITE_TAC[RE_MUL_II; RE_CX; IM_CX] THEN ASM_REAL_ARITH_TAC; @@ -4138,7 +4138,7 @@ let WEDGE = prove MAP_EVERY EXISTS_TAC [`Re x / v`; `Im x / v`] THEN ASM_SIMP_TAC[REAL_LT_DIV; COMPLEX_EQ; IM_ADD; RE_ADD] THEN REWRITE_TAC[RE_MUL_CX; IM_MUL_CX; RE_CX; IM_CX; RE_II; IM_II] THEN - UNDISCH_TAC `~(v = &0)` THEN CONV_TAC REAL_FIELD; + UNDISCH_TAC `~(v = &0)` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN MAP_EVERY X_GEN_TAC [`s:real`; `t:real`] THEN STRIP_TAC THEN ASM_REWRITE_TAC[COMPLEX_EQ; IM_ADD; RE_ADD] THEN @@ -4146,7 +4146,7 @@ let WEDGE = prove ASM_SIMP_TAC[REAL_MUL_RZERO; REAL_MUL_LID; REAL_LT_MUL; REAL_ADD_LID; REAL_MUL_LZERO] THEN MAP_EVERY UNDISCH_TAC [`&0 < v`; `&0 < t`] THEN - CONV_TAC REAL_FIELD]; + (CONV_TAC "REAL_FIELD") REAL_FIELD]; ALL_TAC] THEN W(MP_TAC o PART_MATCH (lhs o rand) AFF_GT_3_1 o rand o rand o snd) THEN ANTS_TAC THENL @@ -4417,7 +4417,7 @@ let VOLUME_OF_CLOSED_TETRAHEDRON = prove REWRITE_TAC[REAL_POW_MUL; REAL_POW2_ABS; delta_x] THEN REWRITE_TAC[dist; NORM_POW_2] THEN SIMP_TAC[DOT_3; VECTOR_SUB_COMPONENT; DIMINDEX_3; ARITH] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let VOLUME_OF_TETRAHEDRON = prove (`!v1 v2 v3 v4:real^3. @@ -4429,7 +4429,7 @@ let VOLUME_OF_TETRAHEDRON = prove let x24 = dist(v2,v4) pow 2 in let x34 = dist(v3,v4) pow 2 in sqrt(delta_x x12 x13 x14 x34 x24 x23)/(&12)`, - REPEAT GEN_TAC THEN CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN + REPEAT GEN_TAC THEN (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN ASM_SIMP_TAC[GSYM VOLUME_OF_CLOSED_TETRAHEDRON] THEN MATCH_MP_TAC MEASURE_CONV0_CONVEX_HULL THEN SIMP_TAC[DIMINDEX_3; FINITE_INSERT; FINITE_EMPTY; CARD_CLAUSES] THEN @@ -4467,7 +4467,7 @@ let AREA_UNIT_CBALL = prove [`\x. asn(x) + x * sqrt(&1 - x pow 2)`; `\x. &2 * sqrt(&1 - x pow 2)`; `-- &1`; `&1`] REAL_FUNDAMENTAL_THEOREM_OF_CALCULUS_INTERIOR) THEN - REWRITE_TAC[ASN_1; ASN_NEG_1] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[ASN_1; ASN_NEG_1] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[SQRT_0; REAL_MUL_RZERO; REAL_ADD_RID] THEN REWRITE_TAC[REAL_ARITH `x / &2 - --(x / &2) = x`] THEN DISCH_THEN MATCH_MP_TAC THEN CONJ_TAC THENL @@ -4486,7 +4486,7 @@ let AREA_UNIT_CBALL = prove REAL_ARITH_TAC; REWRITE_TAC[IN_REAL_INTERVAL; REAL_BOUNDS_LT] THEN REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_LID; REAL_POW_1; REAL_MUL_RID] THEN REWRITE_TAC[REAL_SUB_LZERO; REAL_MUL_RNEG; REAL_INV_MUL] THEN ASM_REWRITE_TAC[REAL_SUB_LT; ABS_SQUARE_LT_1] THEN @@ -4559,9 +4559,9 @@ let VOLUME_CBALL = prove REWRITE_TAC[] THEN ANTS_TAC THENL [CONJ_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RING; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RING") REAL_RING; MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - CONV_TAC REAL_RING]);; + (CONV_TAC "REAL_RING") REAL_RING]);; let VOLUME_BALL = prove (`!z:real^3 r. &0 <= r ==> measure(ball(z,r)) = &4 / &3 * pi * r pow 3`, @@ -4595,7 +4595,7 @@ let frustt = new_definition `frustt v0 v1 h a = frustum v0 v1 (&0) h a`;; let FRUSTUM_DEGENERATE = prove (`!v0 h1 h2 a. frustum v0 v0 h1 h2 a = {}`, REWRITE_TAC[frustum; VECTOR_SUB_REFL; NORM_0; DOT_RZERO] THEN - CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN REWRITE_TAC[REAL_MUL_RZERO; REAL_LT_REFL] THEN SET_TAC[]);; let CONVEX_RCONE_GT = prove @@ -4639,7 +4639,7 @@ let RCONE_GT_NEG = prove (`!v0 v1:real^N a. rcone_gt v0 v1 (--a) = IMAGE (\x. &2 % v0 - x) ((:real^N) DIFF rcone_ge v0 v1 a)`, - REPEAT GEN_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[] THEN CONJ_TAC THENL [MESON_TAC[VECTOR_ARITH `a - (a - b):real^N = b`]; REWRITE_TAC[rcone_gt; rconesgn; rcone_ge; @@ -4659,7 +4659,7 @@ let VOLUME_FRUSTT_STRONG = prove else pi * ((h / a) pow 2 - h pow 2) * h / &3`, REPEAT GEN_TAC THEN DISCH_TAC THEN REWRITE_TAC[frustt; frustum; rcone_gt; rconesgn; IN_ELIM_THM] THEN - CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN GEOM_ORIGIN_TAC `v0:real^3` THEN + (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN GEOM_ORIGIN_TAC `v0:real^3` THEN REWRITE_TAC[VECTOR_SUB_RZERO; REAL_MUL_LZERO; DIST_0; real_gt] THEN GEOM_BASIS_MULTIPLE_TAC 1 `v1:real^3` THEN X_GEN_TAC `b:real` THEN REPEAT(GEN_TAC ORELSE DISCH_TAC) THEN @@ -4765,9 +4765,9 @@ let VOLUME_FRUSTT_STRONG = prove REWRITE_TAC[] THEN ANTS_TAC THENL [ASM_REWRITE_TAC[] THEN REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RING; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RING") REAL_RING; MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - UNDISCH_TAC `&0 < a` THEN CONV_TAC REAL_FIELD]);; + UNDISCH_TAC `&0 < a` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]);; let VOLUME_FRUSTT = prove (`!v0 v1:real^3 h a. @@ -4868,7 +4868,7 @@ let VOLUME_CONIC_CAP_STRONG = prove REPEAT GEN_TAC THEN DISCH_TAC THEN REWRITE_TAC[conic_cap; rcone_gt; rconesgn; IN_ELIM_THM] THEN REWRITE_TAC[ONCE_REWRITE_RULE[DIST_SYM] normball; GSYM ball] THEN - CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN GEOM_ORIGIN_TAC `v0:real^3` THEN + (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN GEOM_ORIGIN_TAC `v0:real^3` THEN REWRITE_TAC[VECTOR_SUB_RZERO; REAL_MUL_LZERO; DIST_0; real_gt] THEN GEOM_BASIS_MULTIPLE_TAC 1 `v1:real^3` THEN X_GEN_TAC `b:real` THEN REPEAT(GEN_TAC ORELSE DISCH_TAC) THEN @@ -5012,9 +5012,9 @@ let VOLUME_CONIC_CAP_STRONG = prove ASM_SIMP_TAC[REAL_LE_MUL; REAL_LT_IMP_LE] THEN ANTS_TAC THENL [ASM_REWRITE_TAC[] THEN REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RING; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RING") REAL_RING; MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - UNDISCH_TAC `&0 < a` THEN CONV_TAC REAL_FIELD]; + UNDISCH_TAC `&0 < a` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]; MATCH_MP_TAC HAS_REAL_INTEGRAL_EQ THEN EXISTS_TAC `\t. measure(ball(vec 0:real^2,sqrt(r pow 2 - t pow 2)))` THEN CONJ_TAC THENL @@ -5054,9 +5054,9 @@ let VOLUME_CONIC_CAP_STRONG = prove [ASM_REWRITE_TAC[REAL_ARITH `a * r <= r <=> &0 <= r * (&1 - a)`] THEN ASM_SIMP_TAC[REAL_LE_MUL; REAL_LT_IMP_LE; REAL_SUB_LE] THEN REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RING; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RING") REAL_RING; MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - UNDISCH_TAC `&0 < a` THEN CONV_TAC REAL_FIELD]]);; + UNDISCH_TAC `&0 < a` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]]);; let VOLUME_CONIC_CAP = prove (`!v0 v1:real^3 r a. @@ -5379,7 +5379,7 @@ let MEASURE_CLOSED_SECTOR_LE = prove [ALL_TAC; ASM_SIMP_TAC[MEASURE_ORTHOGONAL_IMAGE_EQ; ORTHOGONAL_TRANSFORMATION_ROTATE2D]] THEN - AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN CONJ_TAC THENL [ASM_MESON_TAC[ORTHOGONAL_TRANSFORMATION_SURJECTIVE; ORTHOGONAL_TRANSFORMATION_ROTATE2D]; ALL_TAC] THEN @@ -5522,9 +5522,9 @@ let VOLUME_BALL_WEDGE = prove REWRITE_TAC[] THEN ANTS_TAC THENL [CONJ_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RING; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RING") REAL_RING; MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - CONV_TAC REAL_RING]);; + (CONV_TAC "REAL_RING") REAL_RING]);; (* ------------------------------------------------------------------------- *) (* Hence volume of lune. *) @@ -5852,7 +5852,7 @@ let MEASURE_LUNE_DECOMPOSITION = prove REPEAT STRIP_TAC THEN ASM_SIMP_TAC[GSYM(REWRITE_RULE[HAS_MEASURE_MEASURABLE_MEASURE] HAS_MEASURE_LUNE_SIMPLE)] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC MEASURE_BALL_AFF_GT_SHUFFLE THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MEASURE_BALL_AFF_GT_SHUFFLE THEN ASM_REWRITE_TAC[UNION_EMPTY; IN_INSERT; NOT_IN_EMPTY] THEN ASM_SIMP_TAC[NOT_COPLANAR_0_4_IMP_INDEPENDENT]);; @@ -5870,7 +5870,7 @@ let SOLID_TRIANGLE_CONGRUENT_NEG = prove MATCH_MP_TAC MEASURE_ORTHOGONAL_IMAGE_EQ THEN REWRITE_TAC[ORTHOGONAL_TRANSFORMATION; linear; NORM_NEG] THEN CONJ_TAC THEN VECTOR_ARITH_TAC] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN CONJ_TAC THENL [MESON_TAC[VECTOR_NEG_NEG]; ALL_TAC] THEN REWRITE_TAC[IN_INTER; IN_BALL_0; NORM_NEG] THEN REWRITE_TAC[AFFSIGN_ALT; aff_gt_def; sgn_gt; IN_ELIM_THM] THEN @@ -5908,7 +5908,7 @@ let VOLUME_SOLID_TRIANGLE = prove ASM_REWRITE_TAC[INSERT_AC]]; DISCH_THEN SUBST1_TAC] in GEN_TAC THEN GEOM_ORIGIN_TAC `v0:real^3` THEN - CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN REPEAT STRIP_TAC THEN + (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN REPEAT STRIP_TAC THEN SUBGOAL_THEN `measure(ball(vec 0:real^3,r) INTER aff_gt {vec 0,v1,v2,v3} {}) = &4 / &3 * pi * r pow 3` @@ -5932,7 +5932,7 @@ let VOLUME_SOLID_TRIANGLE = prove ASM_MESON_TAC[]; ASM_REWRITE_TAC[]]) [`v3:real^3 = v2`; `v3:real^3 = v1`; `v2:real^3 = v1`] THEN - CONV_TAC NUM_REDUCE_CONV; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ALL_TAC] THEN SUBGOAL_THEN `~(coplanar {vec 0:real^3,v1,v2,v3}) /\ @@ -6026,7 +6026,7 @@ let VOLUME_FRUSTT_WEDGE = prove ASM_SIMP_TAC[VOLUME_FRUSTT_STRONG; OPEN_WEDGE]; ALL_TAC] THEN REWRITE_TAC[frustt; frustum; rcone_gt; rconesgn; IN_ELIM_THM] THEN - CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN POP_ASSUM_LIST(MP_TAC o end_itlist CONJ) THEN GEOM_ORIGIN_TAC `v0:real^3` THEN REWRITE_TAC[VECTOR_SUB_RZERO; REAL_MUL_LZERO; DIST_0; real_gt] THEN @@ -6123,7 +6123,7 @@ let VOLUME_FRUSTT_WEDGE = prove REWRITE_TAC[REAL_ARITH `&0 <= t <=> t = &0 \/ &0 < t`] THEN ASM_CASES_TAC `t = &0` THEN ASM_REWRITE_TAC[REAL_LT_REFL; REAL_MUL_RZERO; SQRT_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_RZERO] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_RZERO] THEN ASM_SIMP_TAC[REAL_POW_MUL; SQRT_POW_2; REAL_LT_IMP_LE] THEN REAL_ARITH_TAC; ALL_TAC] THEN @@ -6140,9 +6140,9 @@ let VOLUME_FRUSTT_WEDGE = prove REWRITE_TAC[] THEN ANTS_TAC THENL [ASM_REWRITE_TAC[] THEN REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RING; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RING") REAL_RING; MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - UNDISCH_TAC `&0 < a` THEN CONV_TAC REAL_FIELD]);; + UNDISCH_TAC `&0 < a` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]);; (* ------------------------------------------------------------------------- *) (* Wedge of a conic cap. *) @@ -6166,7 +6166,7 @@ let VOLUME_CONIC_CAP_WEDGE_WEAK = prove ALL_TAC] THEN REWRITE_TAC[conic_cap; rcone_gt; rconesgn; IN_ELIM_THM] THEN REWRITE_TAC[ONCE_REWRITE_RULE[DIST_SYM] normball; GSYM ball] THEN - CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN POP_ASSUM_LIST(MP_TAC o end_itlist CONJ) THEN GEOM_ORIGIN_TAC `v0:real^3` THEN REWRITE_TAC[VECTOR_SUB_RZERO; REAL_MUL_LZERO; DIST_0; real_gt] THEN @@ -6260,7 +6260,7 @@ let VOLUME_CONIC_CAP_WEDGE_WEAK = prove REWRITE_TAC[DOT_2; DOT_3; VECTOR_3] THEN ONCE_REWRITE_TAC[REAL_ARITH `a + b + c < d <=> a + b < d - c`] THEN BINOP_TAC THEN AP_TERM_TAC THEN - UNDISCH_TAC `&0 < a` THEN CONV_TAC REAL_FIELD; + UNDISCH_TAC `&0 < a` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN GEN_REWRITE_TAC (LAND_CONV o TOP_DEPTH_CONV) [COND_RATOR; COND_RAND] THEN GEN_REWRITE_TAC (RAND_CONV o RATOR_CONV o LAND_CONV o TOP_DEPTH_CONV) @@ -6320,9 +6320,9 @@ let VOLUME_CONIC_CAP_WEDGE_WEAK = prove ASM_SIMP_TAC[REAL_LE_MUL; REAL_LT_IMP_LE] THEN ANTS_TAC THENL [ASM_REWRITE_TAC[] THEN REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RING; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RING") REAL_RING; MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - UNDISCH_TAC `&0 < a` THEN CONV_TAC REAL_FIELD]]; + UNDISCH_TAC `&0 < a` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]]; MATCH_MP_TAC HAS_REAL_INTEGRAL_EQ THEN EXISTS_TAC `\t:real. k * (r pow 2 - t pow 2) / &2` THEN CONJ_TAC THENL @@ -6355,9 +6355,9 @@ let VOLUME_CONIC_CAP_WEDGE_WEAK = prove [ASM_REWRITE_TAC[REAL_ARITH `a * r <= r <=> &0 <= r * (&1 - a)`] THEN ASM_SIMP_TAC[REAL_LE_MUL; REAL_LT_IMP_LE; REAL_SUB_LE] THEN REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RING; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RING") REAL_RING; MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - UNDISCH_TAC `&0 < a` THEN CONV_TAC REAL_FIELD]]]);; + UNDISCH_TAC `&0 < a` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]]]);; let BOUNDED_CONIC_CAP_WEDGE = prove (`!v0 v1:real^3 w1 w2 r a. @@ -6502,7 +6502,7 @@ let VOLUME_CONIC_CAP_WEDGE_MEDIUM = prove REWRITE_TAC[REAL_LE_LT] THEN ASM_CASES_TAC `a = &1` THEN ASM_REWRITE_TAC[] THEN ASM_REAL_ARITH_TAC; ALL_TAC] THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN COND_CASES_TAC THENL [REWRITE_TAC[conic_cap; NORMBALL_BALL] THEN SUBGOAL_THEN `ball(v0:real^3,r) = {}` @@ -6794,7 +6794,7 @@ let volume_props = prove SIMP_TAC[REAL_ARITH `&0 <= h ==> ~(h < &0)`] THEN SIMP_TAC[REAL_ARITH `a <= &1 ==> (&1 <= a <=> a = &1)`] THEN REPEAT STRIP_TAC THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; SIMP_TAC[VOLUME_CONIC_CAP_WEDGE; vol_conic_cap_wedge] THEN SIMP_TAC[REAL_ARITH `&0 <= r ==> ~(r < &0)`] THEN SIMP_TAC[REAL_ARITH `c <= &1 ==> ~(&1 < c)`] THEN @@ -6869,7 +6869,7 @@ let POLYHEDRON_COLLINEAR_FACES_STRONG = prove ASM_MESON_TAC[FACE_OF_IMP_SUBSET; SUBSET]; ALL_TAC] THEN EXPAND_TAC "p" THEN REWRITE_TAC[IN_SEGMENT] THEN CONJ_TAC THENL - [CONV_TAC(RAND_CONV SYM_CONV) THEN + [(CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN ASM_SIMP_TAC[VECTOR_MUL_EQ_0; REAL_LT_IMP_NZ] THEN ASM SET_TAC[]; EXISTS_TAC `inv t:real` THEN ASM_SIMP_TAC[REAL_LT_INV_EQ; REAL_INV_LT_1] THEN diff --git a/Multivariate/gamma.ml b/Multivariate/gamma.ml index 7b3f1b59..3c6c7ded 100644 --- a/Multivariate/gamma.ml +++ b/Multivariate/gamma.ml @@ -15,7 +15,7 @@ let euler_mascheroni = new_definition let EULER_MASCHERONI = prove (`((\n. sum(1..n) (\k. inv(&k)) - log(&n)) ---> euler_mascheroni) sequentially`, - REWRITE_TAC[euler_mascheroni; reallim] THEN CONV_TAC SELECT_CONV THEN + REWRITE_TAC[euler_mascheroni; reallim] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN SUBGOAL_THEN `real_summable (from 1) (\k. inv(&k) + (log(&k) - log(&(k + 1))))` MP_TAC THENL @@ -51,7 +51,7 @@ let EULER_MASCHERONI = prove REWRITE_TAC[real_div] THEN MATCH_MP_TAC REALLIM_NULL_LMUL THEN REWRITE_TAC[REALLIM_1_OVER_N]]] THEN REWRITE_TAC[GSYM CX_ADD; VSUM_SING_NUMSEG; COMPLEX_NORM_CX] THEN - REWRITE_TAC[VSUM_CLAUSES_NUMSEG] THEN CONV_TAC NUM_REDUCE_CONV THEN + REWRITE_TAC[VSUM_CLAUSES_NUMSEG] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[REAL_ABS_INV; REAL_ABS_NUM; COMPLEX_DIV_1] THEN ASM_SIMP_TAC[COMPLEX_POW_1; REAL_INV_LT_1; REAL_OF_NUM_LT; ARITH_RULE `1 < n <=> 2 <= n`] THEN @@ -67,7 +67,7 @@ let EULER_MASCHERONI = prove SIMP_TAC[REAL_LE_INV_EQ; REAL_POW_LE; REAL_POS] THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_INV_INV] THEN MATCH_MP_TAC REAL_LE_INV2 THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `&1 / &2 <= &1 - &1 / n <=> inv(n) <= inv(&2)`] THEN MATCH_MP_TAC REAL_LE_INV2 THEN REWRITE_TAC[REAL_OF_NUM_LE; REAL_OF_NUM_LT] THEN ASM_ARITH_TAC);; @@ -82,10 +82,10 @@ let LOG2_APPROX_40 = prove SIMP_TAC[GSYM CX_DIV; GSYM CX_POW; GSYM CX_NEG; GSYM CX_ADD; GSYM CX_MUL; VSUM_CX; COMPLEX_NORM_CX; GSYM CX_LOG; GSYM CX_SUB; REAL_ARITH `&0 < &1 + --inv(&2)`] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `a * b / c:real = a / c * b`] THEN - CONV_TAC(ONCE_DEPTH_CONV EXPAND_SUM_CONV) THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "(ONCE_DEPTH_CONV EXPAND_SUM_CONV)") (ONCE_DEPTH_CONV EXPAND_SUM_CONV) THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN SIMP_TAC[LOG_INV; REAL_ARITH `&0 < &2`] THEN REAL_ARITH_TAC);; @@ -106,7 +106,7 @@ let EULER_MASCHERONI_APPROX_32 = prove MP_TAC(ISPECL [`\n x. --(&1) pow n * &(FACT n) / x pow (n + 1)`; `m:num`; `n:num`; `2`] REAL_EULER_MACLAURIN) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NUM_REDUCE_CONV THEN ANTS_TAC THENL + ASM_REWRITE_TAC[] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ANTS_TAC THENL [REWRITE_TAC[IN_REAL_INTERVAL] THEN REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN REWRITE_TAC[REAL_MUL_LZERO; ADD_SUB; REAL_MUL_RID; REAL_SUB_LZERO] THEN @@ -125,11 +125,11 @@ let EULER_MASCHERONI_APPROX_32 = prove REWRITE_TAC[GSYM ADD1; FACT; REAL_OF_NUM_MUL; MULT_AC]; DISCH_THEN(MP_TAC o CONJUNCT2) THEN REWRITE_TAC[real_div; REAL_MUL_LID; real_pow] THEN - CONV_TAC(ONCE_DEPTH_CONV EXPAND_SUM_CONV) THEN - CONV_TAC NUM_REDUCE_CONV THEN - CONV_TAC(ONCE_DEPTH_CONV BERNOULLI_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV EXPAND_SUM_CONV)") (ONCE_DEPTH_CONV EXPAND_SUM_CONV) THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN + (CONV_TAC "(ONCE_DEPTH_CONV BERNOULLI_CONV)") (ONCE_DEPTH_CONV BERNOULLI_CONV) THEN REWRITE_TAC[GSYM(BERNOULLI_CONV `bernoulli 5 x`)] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_LNEG; REAL_MUL_LID; REAL_POW_1] THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN DISCH_THEN SUBST1_TAC] THEN MP_TAC(ISPECL [`\x. log x`; `\x:real. inv x`; `&m`; `&n`] @@ -172,11 +172,11 @@ let EULER_MASCHERONI_APPROX_32 = prove `&m`; `&n`] REAL_FUNDAMENTAL_THEOREM_OF_CALCULUS) THEN ASM_REWRITE_TAC[REAL_OF_NUM_LE] THEN ANTS_TAC THENL [REWRITE_TAC[IN_REAL_INTERVAL] THEN REPEAT STRIP_TAC THEN - REAL_DIFF_TAC THEN CONV_TAC NUM_REDUCE_CONV THEN + REAL_DIFF_TAC THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN SUBGOAL_THEN `~(x = &0)` MP_TAC THENL [RULE_ASSUM_TAC(REWRITE_RULE[GSYM REAL_OF_NUM_LE]) THEN ASM_REAL_ARITH_TAC; - CONV_TAC REAL_FIELD]; + (CONV_TAC "REAL_FIELD") REAL_FIELD]; REWRITE_TAC[REAL_INV_MUL; REAL_ARITH `inv(-- &60) * x - inv(-- &60) * y = (y - x) / &60`] THEN REWRITE_TAC[GSYM REAL_INV_MUL] THEN DISCH_TAC] THEN @@ -190,7 +190,7 @@ let EULER_MASCHERONI_APPROX_32 = prove CONJ_TAC THENL [MP_TAC(ISPECL [`5`; `frac x`] BERNOULLI_BOUND) THEN SIMP_TAC[IN_REAL_INTERVAL; FLOOR_FRAC; REAL_LT_IMP_LE] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[BERNOULLI_CONV `bernoulli 4 (&0)`] THEN REAL_ARITH_TAC; REWRITE_TAC[REAL_ARITH `abs x <= x <=> &0 <= x`] THEN @@ -207,7 +207,7 @@ let EULER_MASCHERONI_APPROX_32 = prove ASM_REWRITE_TAC[REAL_INTEGRABLE_CONST] THEN ASM_MESON_TAC[real_integrable_on]; ASM_SIMP_TAC[REAL_INTEGRAL_LMUL; REAL_ABS_MUL; REAL_MUL_ASSOC]] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_LID] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_LID] THEN TRANS_TAC REAL_LE_TRANS `real_integral (real_interval [&m,&n]) (\x. inv(&12 * x pow 6))` THEN CONJ_TAC THENL @@ -262,7 +262,7 @@ let EULER_MASCHERONI_APPROX_32 = prove MATCH_MP_TAC REALLIM_ADD THEN REWRITE_TAC[REALLIM_CONST] THEN REWRITE_TAC[REALLIM_NULL_NEG] THEN REWRITE_TAC[REALLIM_1_OVER_N] THEN - MATCH_MP_TAC REALLIM_1_OVER_POW THEN CONV_TAC NUM_REDUCE_CONV; + MATCH_MP_TAC REALLIM_1_OVER_POW THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ALL_TAC] THEN REWRITE_TAC[EVENTUALLY_SEQUENTIALLY] THEN MATCH_MP_TAC(MESON[] `(?a. P a a /\ Q a) ==> ?a. (?b. P a b) /\ Q a`) THEN @@ -270,10 +270,10 @@ let EULER_MASCHERONI_APPROX_32 = prove [REPEAT STRIP_TAC THEN MATCH_MP_TAC lemma1 THEN ASM_ARITH_TAC; ALL_TAC] THEN SUBGOAL_THEN `log(&64) = &6 * log(&2)` SUBST1_TAC THENL [SIMP_TAC[GSYM LOG_POW; REAL_ARITH `&0 < &2`] THEN - AP_TERM_TAC THEN CONV_TAC REAL_RAT_REDUCE_CONV; - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN - CONV_TAC(ONCE_DEPTH_CONV EXPAND_SUM_CONV) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + AP_TERM_TAC THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "(ONCE_DEPTH_CONV EXPAND_SUM_CONV)") (ONCE_DEPTH_CONV EXPAND_SUM_CONV) THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MP_TAC LOG2_APPROX_40 THEN REAL_ARITH_TAC]);; (* ------------------------------------------------------------------------- *) @@ -356,7 +356,7 @@ let LGAMMA,COMPLEX_DIFFERENTIABLE_AT_LGAMMA = (CONJ_PAIR o prove) ASM_SIMP_TAC[VSUM_COMPLEX_LMUL; FINITE_NUMSEG; VSUM_DIFFS_ALT] THEN REWRITE_TAC[GSYM REAL_OF_NUM_ADD; REAL_ARITH `(x + &1) - &1 = x`; REAL_SUB_REFL] THEN - REPEAT STRIP_TAC THEN CONV_TAC COMPLEX_RING; + REPEAT STRIP_TAC THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] REAL_LET_TRANS) THEN SUBGOAL_THEN `1 <= m + 1 /\ m <= n` MP_TAC THENL @@ -377,11 +377,11 @@ let LGAMMA,COMPLEX_DIFFERENTIABLE_AT_LGAMMA = (CONJ_PAIR o prove) REAL_ARITH `&2 <= x ==> &0 < x /\ &1 < x /\ &0 < x - &1`; GSYM CX_SUB; GSYM CX_INV; GSYM LOG_DIV] THEN AP_TERM_TAC THEN AP_TERM_TAC THEN UNDISCH_TAC `2 <= k` THEN - REWRITE_TAC[GSYM REAL_OF_NUM_LE] THEN CONV_TAC REAL_FIELD; + REWRITE_TAC[GSYM REAL_OF_NUM_LE] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN MP_TAC(ISPECL [`1`; `z / Cx(&k)`] TAYLOR_CLOG) THEN MP_TAC(ISPECL [`1`; `--inv(Cx(&k))`] TAYLOR_CLOG) THEN - REWRITE_TAC[VSUM_SING_NUMSEG] THEN CONV_TAC NUM_REDUCE_CONV THEN + REWRITE_TAC[VSUM_SING_NUMSEG] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[GSYM VECTOR_SUB; NORM_NEG] THEN REWRITE_TAC[COMPLEX_NORM_INV; COMPLEX_NORM_DIV; COMPLEX_NORM_CX] THEN REWRITE_TAC[COMPLEX_POW_NEG; ARITH; REAL_ABS_NUM; COMPLEX_POW_ONE] THEN @@ -396,7 +396,7 @@ let LGAMMA,COMPLEX_DIFFERENTIABLE_AT_LGAMMA = (CONJ_PAIR o prove) FIRST_X_ASSUM(K ALL_TAC o check (is_forall o concl)) THEN REPEAT(POP_ASSUM MP_TAC) THEN REWRITE_TAC[GSYM REAL_OF_NUM_LE; GSYM REAL_OF_NUM_ADD] THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; ASM_REWRITE_TAC[COMPLEX_SUB_LDISTRIB]] THEN ASM_SIMP_TAC[CX_INJ; REAL_OF_NUM_EQ; LE_1; COMPLEX_FIELD `~(k = Cx(&0)) ==> (k + z) / k = Cx(&1) + z / k`] THEN @@ -412,11 +412,11 @@ let LGAMMA,COMPLEX_DIFFERENTIABLE_AT_LGAMMA = (CONJ_PAIR o prove) MATCH_MP_TAC REAL_LE_MUL2 THEN REWRITE_TAC[NORM_POS_LE] THEN SUBGOAL_THEN `norm(z:complex) <= norm(y:complex) + d` ASSUME_TAC THENL [FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [IN_CBALL]) THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; ALL_TAC] THEN REPEAT CONJ_TAC THENL [FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [IN_CBALL]) THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; MATCH_MP_TAC REAL_LE_ADD THEN CONJ_TAC THEN MATCH_MP_TAC REAL_LE_DIV THEN REWRITE_TAC[REAL_SUB_LE; NORM_POS_LE; REAL_POS] THEN @@ -436,7 +436,7 @@ let LGAMMA,COMPLEX_DIFFERENTIABLE_AT_LGAMMA = (CONJ_PAIR o prove) ASM_REAL_ARITH_TAC; ALL_TAC]) THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_INV_INV] THEN - MATCH_MP_TAC REAL_LE_INV2 THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_LE_INV2 THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `&1 / &2 <= &1 - x <=> x <= &1 / &2`] THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN REWRITE_TAC[GSYM real_div] THEN REWRITE_TAC[REAL_ARITH `inv x = &1 / x`] THEN @@ -445,7 +445,7 @@ let LGAMMA,COMPLEX_DIFFERENTIABLE_AT_LGAMMA = (CONJ_PAIR o prove) FIRST_X_ASSUM(K ALL_TAC o check (is_forall o concl)) THEN REPEAT(POP_ASSUM MP_TAC) THEN REWRITE_TAC[GSYM REAL_OF_NUM_LE; GSYM REAL_OF_NUM_ADD] THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; GEN_REWRITE_TAC (LAND_CONV o REDEPTH_CONV) [RIGHT_IMP_EXISTS_THM] THEN REWRITE_TAC[SKOLEM_THM; LEFT_IMP_EXISTS_THM] THEN MAP_EVERY X_GEN_TAC [`dd:complex->real`; `ll:complex->complex->complex`] THEN @@ -463,7 +463,7 @@ let LGAMMA,COMPLEX_DIFFERENTIABLE_AT_LGAMMA = (CONJ_PAIR o prove) ALL_TAC] THEN MATCH_MP_TAC(TAUT `p /\ (p ==> q) ==> p /\ q`) THEN CONJ_TAC THENL [REPEAT STRIP_TAC THEN - REWRITE_TAC[lgamma; lim] THEN CONV_TAC SELECT_CONV THEN + REWRITE_TAC[lgamma; lim] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN EXISTS_TAC `(ll:complex->complex->complex) z z - clog z` THEN ONCE_REWRITE_TAC[COMPLEX_RING `w - z - v:complex = (w - v) - z`] THEN MATCH_MP_TAC LIM_SUB THEN REWRITE_TAC[LIM_CONST] THEN ASM_MESON_TAC[]; @@ -618,7 +618,7 @@ let LGAMMA_ALT2 = prove REWRITE_TAC[GSYM ADD1; VSUM_CLAUSES_NUMSEG; ARITH_RULE `1 <= SUC n`] THEN REWRITE_TAC[COMPLEX_RING `Cx(&n) + z = z + Cx(&n)`] THEN SIMP_TAC[CX_LOG; REAL_OF_NUM_LT; LT_0] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; REWRITE_TAC[COMPLEX_VEC_0] THEN MATCH_MP_TAC LIM_NULL_COMPLEX_NEG THEN SIMP_TAC[REAL_OF_NUM_EQ; CX_INJ; ARITH_EQ; ADD_EQ_0; COMPLEX_FIELD `~(y = Cx(&0)) ==> (y + z) / y = Cx(&1) + z / y`] THEN @@ -702,7 +702,7 @@ let [CGAMMA;CGAMMA_EQ_0;CGAMMA_LGAMMA] = (CONJUNCTS o prove) MATCH_MP_TAC(ISPEC `cexp` LIM_CONTINUOUS_FUNCTION) THEN ASM_SIMP_TAC[LGAMMA; CONTINUOUS_AT_CEXP]]; MATCH_MP_TAC(TAUT `p /\ (p ==> q) ==> p /\ q`) THEN CONJ_TAC THENL - [REWRITE_TAC[cgamma; lim] THEN CONV_TAC SELECT_CONV THEN ASM_MESON_TAC[]; + [REWRITE_TAC[cgamma; lim] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_MESON_TAC[]; DISCH_TAC] THEN MATCH_MP_TAC(TAUT `q /\ (q ==> p) ==> p /\ q`) THEN CONJ_TAC THENL [MATCH_MP_TAC(ISPEC `sequentially` LIM_UNIQUE) THEN @@ -713,7 +713,7 @@ let CGAMMA_RECURRENCE_ALT = prove (`!z. cgamma(z) = cgamma(z + Cx(&1)) / z`, GEN_TAC THEN ASM_CASES_TAC `?n. z + Cx(&n) = Cx(&0)` THENL [FIRST_ASSUM(fun th -> REWRITE_TAC[REWRITE_RULE[GSYM CGAMMA_EQ_0] th]) THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[COMPLEX_DIV_EQ_0] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[COMPLEX_DIV_EQ_0] THEN ASM_CASES_TAC `z = Cx(&0)` THEN ASM_REWRITE_TAC[] THEN FIRST_X_ASSUM(MP_TAC o check (is_exists o concl)) THEN REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN INDUCT_TAC THEN @@ -801,7 +801,7 @@ let CGAMMA_RECURRENCE_ALT = prove MATCH_MP_TAC REAL_LE_LMUL THEN REWRITE_TAC[REAL_LE_INV_EQ; REAL_POS] THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_INV_INV] THEN - MATCH_MP_TAC REAL_LE_INV2 THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_LE_INV2 THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `&1 / &2 <= &1 - x <=> x <= inv(&2)`] THEN REWRITE_TAC[real_div; REAL_MUL_LID] THEN MATCH_MP_TAC REAL_LE_INV2 THEN @@ -920,7 +920,7 @@ let COMPLEX_DIFFERENTIABLE_AT_CGAMMA = prove (fun th -> SIMP_TAC[th; GSYM REAL_OF_NUM_SUB]) THENL [ASM_ARITH_TAC; ALL_TAC] THEN REWRITE_TAC[GSYM REAL_OF_NUM_ADD; CX_ADD; CX_SUB] THEN - CONV_TAC COMPLEX_RING]);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING]);; let COMPLEX_DIFFERENTIABLE_WITHIN_CGAMMA = prove (`!z s. (!n. ~(z + Cx(&n) = Cx(&0))) @@ -961,7 +961,7 @@ let CGAMMA_SIMPLE_POLES = prove MATCH_MP_TAC LIM_TRANSFORM_AWAY_AT THEN MAP_EVERY EXISTS_TAC [`\z. cgamma(z + Cx(&1))`; `Cx(&1)`] THEN REWRITE_TAC[CONJ_ASSOC] THEN - CONJ_TAC THENL [CONV_TAC COMPLEX_FIELD; ALL_TAC] THEN + CONJ_TAC THENL [(CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; ALL_TAC] THEN SUBGOAL_THEN `(\z. cgamma (z + Cx(&1))) continuous at (Cx(&0))` MP_TAC THENL [GEN_REWRITE_TAC LAND_CONV [GSYM o_DEF] THEN @@ -985,10 +985,10 @@ let CGAMMA_SIMPLE_POLES = prove REWRITE_TAC[COMPLEX_RING `(z + Cx(&1)) + w = z + (w + Cx(&1))`] THEN REWRITE_TAC[GSYM complex_div] THEN DISCH_THEN MATCH_MP_TAC THEN CONJ_TAC THENL - [LIM_TAC THEN CONV_TAC COMPLEX_RING; + [LIM_TAC THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; REWRITE_TAC[EVENTUALLY_AT; GSYM DIST_NZ] THEN EXISTS_TAC `&1` THEN REWRITE_TAC[REAL_LT_01] THEN - CONV_TAC COMPLEX_RING]; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING]; REWRITE_TAC[COMPLEX_NEG_INV; GSYM CONTINUOUS_AT] THEN GEN_REWRITE_TAC LAND_CONV [GSYM ETA_AX] THEN MATCH_MP_TAC CONTINUOUS_COMPLEX_INV_AT THEN @@ -1102,7 +1102,7 @@ let CGAMMA_LEGENDRE_ALT = prove REAL_OF_NUM_ADD; REAL_OF_NUM_MUL] THEN REWRITE_TAC[GSYM CPRODUCT_PAIR] THEN SIMP_TAC[GSYM ADD1; CPRODUCT_CLAUSES_NUMSEG] THEN - REWRITE_TAC[ADD1] THEN CONV_TAC NUM_REDUCE_CONV THEN + REWRITE_TAC[ADD1] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN SIMP_TAC[LE_0; COMPLEX_INV_MUL; COMPLEX_INV_INV; GSYM COMPLEX_POW_INV] THEN ONCE_REWRITE_TAC[COMPLEX_RING `x * a * b * c * d * e * f:complex = (c * e) * a * b * d * f * x`] THEN @@ -1110,14 +1110,14 @@ let CGAMMA_LEGENDRE_ALT = prove REWRITE_TAC[COMPLEX_MUL_LID; COMPLEX_MUL_ASSOC] THEN AP_THM_TAC THEN AP_TERM_TAC THEN ASM_SIMP_TAC[GSYM COMPLEX_MUL_ASSOC; COMPLEX_MUL_LINV] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN X_GEN_TAC `z:complex` THEN ASM_CASES_TAC `!n. ~(Cx(&2) * z + Cx(&n) = Cx(&0))` THENL [FIRST_X_ASSUM(fun th -> MP_TAC(SPEC `z:complex` th) THEN MP_TAC(SPEC `Cx(&1 / &2)` th)) THEN ASM_REWRITE_TAC[GSYM CX_ADD; GSYM CX_MUL; GSYM CX_SUB; CX_INJ] THEN - ANTS_TAC THENL [REAL_ARITH_TAC; CONV_TAC REAL_RAT_REDUCE_CONV] THEN + ANTS_TAC THENL [REAL_ARITH_TAC; (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN REWRITE_TAC[CGAMMA_1; CPOW_N; CX_INJ; REAL_OF_NUM_EQ; ARITH_EQ] THEN REWRITE_TAC[complex_pow; COMPLEX_MUL_RID; COMPLEX_DIV_1; IMP_IMP] THEN DISCH_THEN(MP_TAC o MATCH_MP (ONCE_REWRITE_RULE[IMP_CONJ_ALT] @@ -1252,7 +1252,7 @@ let CGAMMA_REFLECTION = prove ASM_REWRITE_TAC[dist; COMPLEX_SUB_RZERO] THEN MESON_TAC[INTEGER_CLOSED]; UNDISCH_TAC `~(w = Cx(&0))` THEN MP_TAC PI_NZ THEN - REWRITE_TAC[GSYM CX_INJ] THEN CONV_TAC COMPLEX_FIELD]; + REWRITE_TAC[GSYM CX_INJ] THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]; GEN_REWRITE_TAC LAND_CONV [COMPLEX_RING `p = p * Cx(&1) * Cx(&1) * Cx(&1)`] THEN MATCH_MP_TAC LIM_COMPLEX_LMUL THEN MATCH_MP_TAC LIM_COMPLEX_MUL THEN @@ -1279,7 +1279,7 @@ let CGAMMA_REFLECTION = prove SIMP_TAC[EVENTUALLY_AT; COMPLEX_ENTIRE; CX_INJ; PI_NZ; GSYM DIST_NZ] THEN CONJ_TAC THENL [ALL_TAC; MESON_TAC[REAL_LT_01]] THEN - LIM_TAC THEN CONV_TAC COMPLEX_RING]]; + LIM_TAC THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING]]; ALL_TAC] THEN SUBGOAL_THEN `g holomorphic_on (:complex)` ASSUME_TAC THENL [REWRITE_TAC[HOLOMORPHIC_ON_DIFFERENTIABLE; WITHIN_UNIV; IN_UNIV] THEN @@ -1346,14 +1346,12 @@ let CGAMMA_REFLECTION = prove MP_TAC(ISPEC `Cx(&1 / &2) * z * Cx pi` CSIN_DOUBLE) THEN MP_TAC(SPECL [`Cx(&2)`; `z:complex`; `--z:complex`] CPOW_ADD) THEN REWRITE_TAC[COMPLEX_ADD_RINV] THEN - CONV_TAC(DEPTH_BINOP_CONV `==>` - (BINOP_CONV(DEPTH_BINOP_CONV `complex_mul` - (RAND_CONV COMPLEX_POLY_CONV)))) THEN + (CONV_TAC "(DEPTH_BINOP_CONV `==>` (BINOP_CONV(DEPTH_BINOP_CONV `complex_mul` (RAND_CONV COMPLEX_POLY_CONV))))") (DEPTH_BINOP_CONV `==>` (BINOP_CONV(DEPTH_BINOP_CONV `complex_mul` (RAND_CONV COMPLEX_POLY_CONV)))) THEN REWRITE_TAC[CPOW_ADD; CX_NEG; COMPLEX_MUL_LNEG; COMPLEX_MUL_LID] THEN REWRITE_TAC[CPOW_N; CX_INJ; REAL_OF_NUM_EQ; ARITH_EQ; CSIN_ADD] THEN REWRITE_TAC[GSYM CX_MUL; GSYM CX_SIN; GSYM CX_COS; SIN_PI2; COS_PI2; REAL_ARITH `&1 / &2 * x = x / &2`] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN SUBGOAL_THEN `?h. h holomorphic_on (:complex) /\ @@ -1390,7 +1388,7 @@ let CGAMMA_REFLECTION = prove FIRST_ASSUM(SUBST1_TAC o SYM o GEN_REWRITE_RULE I [GSYM FUN_EQ_THM]) THEN REWRITE_TAC[] THEN ASM GEN_COMPLEX_DIFF_TAC [] THEN - (CONJ_TAC THENL [ASM_REWRITE_TAC[]; CONV_TAC COMPLEX_RING]); + (CONJ_TAC THENL [ASM_REWRITE_TAC[]; (CONV_TAC "COMPLEX_RING") COMPLEX_RING]); ALL_TAC] THEN MP_TAC(ISPECL [`h:complex->complex`; `h':complex->complex`; `(:complex)`] HOLOMORPHIC_DERIVATIVE) THEN @@ -1408,7 +1406,7 @@ let CGAMMA_REFLECTION = prove EXISTS_TAC `z:complex` THEN CONJ_TAC THENL [REWRITE_TAC[]; ASM_REWRITE_TAC[]] THEN ASM GEN_COMPLEX_DIFF_TAC [] THEN - (CONJ_TAC THENL [ASM_REWRITE_TAC[ETA_AX]; CONV_TAC COMPLEX_RING]); + (CONJ_TAC THENL [ASM_REWRITE_TAC[ETA_AX]; (CONV_TAC "COMPLEX_RING") COMPLEX_RING]); ALL_TAC] THEN MP_TAC(ISPECL [`h':complex->complex`; `h'':complex->complex`; `(:complex)`] HOLOMORPHIC_DERIVATIVE) THEN @@ -1422,7 +1420,7 @@ let CGAMMA_REFLECTION = prove MP_TAC(ISPECL [`\z. norm((h'':complex->complex) z)`; `cball(Cx(&0),&1)`] CONTINUOUS_ATTAINS_SUP) THEN ASM_REWRITE_TAC[COMPLEX_IN_CBALL_0; COMPACT_CBALL; CBALL_EQ_EMPTY] THEN - REWRITE_TAC[o_DEF] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN ANTS_TAC THENL + REWRITE_TAC[o_DEF] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ANTS_TAC THENL [MATCH_MP_TAC CONTINUOUS_ON_LIFT_NORM_COMPOSE THEN ASM_MESON_TAC[HOLOMORPHIC_ON_IMP_CONTINUOUS_ON; CONTINUOUS_ON_SUBSET; SUBSET_UNIV]; @@ -1440,7 +1438,7 @@ let CGAMMA_REFLECTION = prove CONJ_TAC THEN FIRST_X_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[COMPLEX_NORM_DIV; COMPLEX_NORM_CX; REAL_ABS_NUM] THEN UNDISCH_TAC `norm(w:complex) <= &1` THEN - MP_TAC(SPEC `&1` COMPLEX_NORM_CX) THEN CONV_TAC NORM_ARITH]; + MP_TAC(SPEC `&1` COMPLEX_NORM_CX) THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]; REWRITE_TAC[IN_UNIV] THEN DISCH_TAC] THEN MP_TAC(ISPECL [`h':complex->complex`; `(:complex)`] HAS_COMPLEX_DERIVATIVE_ZERO_CONSTANT) THEN @@ -1451,7 +1449,7 @@ let CGAMMA_REFLECTION = prove HAS_COMPLEX_DERIVATIVE_ZERO_CONSTANT) THEN REWRITE_TAC[CONVEX_UNIV; IN_UNIV] THEN ANTS_TAC THENL [GEN_TAC THEN ASM GEN_COMPLEX_DIFF_TAC[] THEN - ASM_REWRITE_TAC[] THEN CONV_TAC COMPLEX_RING; + ASM_REWRITE_TAC[] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; REWRITE_TAC[COMPLEX_RING `a - b:complex = c <=> a = b + c`] THEN DISCH_THEN(X_CHOOSE_TAC `b:complex`)] THEN FIRST_X_ASSUM(MP_TAC o SPECL [`&1`; `Cx(&0)`]) THEN @@ -1493,7 +1491,7 @@ let CGAMMA_REFLECTION = prove [ASM_REWRITE_TAC[]; EXPAND_TAC "g"] THEN ASM_REWRITE_TAC[] THEN COND_CASES_TAC THENL [ALL_TAC; ASM_MESON_TAC[INTEGER_CLOSED]] THEN - MP_TAC PI_NZ THEN REWRITE_TAC[GSYM CX_INJ] THEN CONV_TAC COMPLEX_FIELD]; + MP_TAC PI_NZ THEN REWRITE_TAC[GSYM CX_INJ] THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]; DISCH_THEN(fun th -> MP_TAC(SPEC `Cx(inv(&4 * n))` th) THEN MP_TAC(SPEC `Cx(&0)` th)) THEN REWRITE_TAC[COMPLEX_MUL_RZERO; COMPLEX_ADD_LID] THEN @@ -1518,7 +1516,7 @@ let CGAMMA_REFLECTION = prove REWRITE_TAC[REAL_ABS_MUL; REAL_ABS_NUM] THEN REPEAT(FIRST_X_ASSUM(CHOOSE_TAC o GEN_REWRITE_RULE I [integer])) THEN ASM_REWRITE_TAC[REAL_OF_NUM_MUL; REAL_OF_NUM_EQ; MULT_EQ_1] THEN - CONV_TAC NUM_REDUCE_CONV; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; MATCH_MP_TAC(MESON[] `real y /\ ~real x ==> ~(x = y)`) THEN SIMP_TAC[GSYM CX_SUB; GSYM CX_MUL; REAL_CX; REAL_SIN; REAL_GAMMA; REAL_MUL; ONCE_REWRITE_RULE[COMPLEX_MUL_SYM] REAL_MUL_CX] THEN @@ -1531,14 +1529,14 @@ let CGAMMA_HALF = prove REWRITE_TAC[GSYM CX_DIV; GSYM CX_MUL; GSYM CX_SIN] THEN REWRITE_TAC[REAL_ARITH `x * &1 / &2 = x / &2`; SIN_PI2; REAL_DIV_1] THEN SUBGOAL_THEN `Cx pi = Cx(sqrt pi) pow 2` SUBST1_TAC THENL - [REWRITE_TAC[GSYM CX_POW] THEN AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + [REWRITE_TAC[GSYM CX_POW] THEN AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[SQRT_POW2; PI_POS_LE]; REWRITE_TAC[COMPLEX_RING `a * a:complex = b pow 2 <=> a = b \/ a = --b`] THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THEN MP_TAC(SPEC `Cx(&1 / &2)` RE_POS_CGAMMA_REAL) THEN ASM_REWRITE_TAC[REAL_CX; RE_CX; RE_NEG] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(TAUT `~p ==> p ==> q`) THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(TAUT `~p ==> p ==> q`) THEN REWRITE_TAC[REAL_ARITH `~(&0 <= --x) <=> &0 < x`] THEN MATCH_MP_TAC SQRT_POS_LT THEN REWRITE_TAC[PI_POS]]);; @@ -1568,7 +1566,7 @@ let CGAMMA_WEIERSTRASS = prove `c * c' = Cx(&1) ==> (a * b * c) * (c' * d) * e = ((a * d) * b * e)`) THEN ASM_SIMP_TAC[cpow; CX_INJ; REAL_OF_NUM_EQ; LE_1; GSYM CEXP_ADD] THEN REWRITE_TAC[GSYM CEXP_0] THEN AP_TERM_TAC THEN - ASM_SIMP_TAC[CX_LOG; REAL_OF_NUM_LT; LE_1] THEN CONV_TAC COMPLEX_RING; + ASM_SIMP_TAC[CX_LOG; REAL_OF_NUM_LT; LE_1] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN GEN_REWRITE_TAC LAND_CONV [GSYM COMPLEX_MUL_LID] THEN MATCH_MP_TAC LIM_COMPLEX_MUL THEN CONJ_TAC THENL @@ -1600,7 +1598,7 @@ let CGAMMA_WEIERSTRASS = prove MATCH_MP_TAC(COMPLEX_FIELD `~(z = Cx(&0)) /\ z * x = y ==> inv z * y = x`) THEN REWRITE_TAC[CX_INJ; REAL_OF_NUM_EQ; FACT_NZ] THEN - CONV_TAC SYM_CONV THEN SPEC_TAC(`n:num`,`p:num`) THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN SPEC_TAC(`n:num`,`p:num`) THEN INDUCT_TAC THEN REWRITE_TAC[FACT; CPRODUCT_CLAUSES_NUMSEG; ARITH] THEN REWRITE_TAC[ARITH_RULE `1 <= SUC n`; COMPLEX_MUL_LID] THEN ASM_REWRITE_TAC[CX_MUL; GSYM REAL_OF_NUM_MUL] THEN @@ -1635,7 +1633,7 @@ let COMPLEX_DIFFERENTIABLE_AT_RECIP_CGAMMA = prove REWRITE_TAC[COMPLEX_DIV_EQ_0; COMPLEX_POW_EQ_0; CX_INJ] THEN REWRITE_TAC[REAL_OF_NUM_EQ; FACT_NZ] THEN ONCE_REWRITE_TAC[COMPLEX_MUL_SYM] THEN - REWRITE_TAC[CGAMMA_SIMPLE_POLES] THEN CONV_TAC COMPLEX_RING]);; + REWRITE_TAC[CGAMMA_SIMPLE_POLES] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING]);; let COMPLEX_DIFFERENTIABLE_WITHIN_RECIP_CGAMMA = prove (`!z s. (inv o cgamma) complex_differentiable at z within s`, @@ -2015,7 +2013,7 @@ let GAMMA_REAL_LOG_CONVEX_UNIQUE = prove SUBGOAL_THEN `(f:real->real) n = f((n - &1) + &1)` SUBST1_TAC THENL [AP_TERM_TAC THEN REAL_ARITH_TAC; ASM_SIMP_TAC[REAL_ARITH `&2 <= n ==> &0 < n - &1`] THEN - UNDISCH_TAC `&2 <= n` THEN CONV_TAC REAL_FIELD]; + UNDISCH_TAC `&2 <= n` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]; ASM_SIMP_TAC[REAL_ARITH `&2 <= x ==> &0 < x`; REAL_FIELD `&0 < x /\ &2 <= y ==> x / (x / (y - &1)) = y - &1`] THEN ASM_SIMP_TAC[REAL_LE_LDIV_EQ; REAL_LE_RDIV_EQ]] THEN @@ -2093,7 +2091,7 @@ let GAMMA_REAL_LOG_CONVEX_UNIQUE = prove SUBGOAL_THEN `&0 < &n` MP_TAC THENL [REWRITE_TAC[REAL_OF_NUM_LT] THEN ASM_ARITH_TAC; SIMP_TAC[rpow; GSYM REAL_OF_NUM_MUL; REAL_MUL_AC] THEN - CONV_TAC REAL_FIELD]]);; + (CONV_TAC "REAL_FIELD") REAL_FIELD]]);; (* ------------------------------------------------------------------------- *) (* The integral definition, the current usual one and Euler's original one. *) @@ -2173,7 +2171,7 @@ let EULER_HAS_INTEGRAL_CGAMMA = prove REWRITE_TAC[CX_SUB] THEN MATCH_MP_TAC HAS_VECTOR_DERIVATIVE_REAL_COMPLEX THEN COMPLEX_DIFF_TAC THEN ASM_REWRITE_TAC[RE_CX] THEN - UNDISCH_TAC `~(z = Cx(&0))` THEN CONV_TAC COMPLEX_FIELD]; + UNDISCH_TAC `~(z = Cx(&0))` THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]; FIRST_X_ASSUM(MP_TAC o SPEC `z + Cx(&1)`) THEN REWRITE_TAC[RE_ADD; RE_CX; COMPLEX_RING `(z + Cx(&1)) - Cx(&1) = z`] THEN ANTS_TAC THENL [ASM_REAL_ARITH_TAC; DISCH_TAC] THEN @@ -2210,7 +2208,7 @@ let EULER_HAS_INTEGRAL_CGAMMA = prove REWRITE_TAC[REAL_OF_NUM_ADD; ADD_SUB; COMPLEX_MUL_ASSOC] THEN MP_TAC(ARITH_RULE `~(n + 1 = 0)`) THEN REWRITE_TAC[GSYM REAL_OF_NUM_EQ; GSYM CX_INJ] THEN - CONV_TAC COMPLEX_FIELD; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; MATCH_MP_TAC HAS_INTEGRAL_NEG THEN ASM_REWRITE_TAC[]]; DISCH_THEN(MP_TAC o SPEC `Cx(&n + &1) / z` o MATCH_MP HAS_INTEGRAL_COMPLEX_LMUL) THEN @@ -2521,15 +2519,15 @@ let EULER_ORIGINAL_REAL_INTEGRABLE = prove X_GEN_TAC `t:real` THEN REWRITE_TAC[DE_MORGAN_THM] THEN STRIP_TAC THEN CONJ_TAC THEN REAL_DIFF_TAC THEN ASM_REWRITE_TAC[] THEN ASM_SIMP_TAC[GSYM LOG_INV; REAL_INV_1_LT; LOG_POS_LT] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD]; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]; ASM_REWRITE_TAC[REAL_INTEGRABLE_LMUL_EQ; REAL_INV_EQ_0] THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC] THEN REWRITE_TAC[REAL_INTEGRABLE_LMUL_EQ] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_INTEGRABLE_SPIKE_EQ THEN EXISTS_TAC `{&0}` THEN REWRITE_TAC[REAL_NEGLIGIBLE_SING; IN_DIFF; IN_SING] THEN - CONV_TAC REAL_FIELD]; + (CONV_TAC "REAL_FIELD") REAL_FIELD]; ALL_TAC] THEN SUBGOAL_THEN `!n. (\t. --log t pow n) real_integrable_on real_interval[&0,&1]` @@ -2672,7 +2670,7 @@ let EULER_ORIGINAL_HAS_INTEGRAL_CGAMMA = prove REWRITE_TAC[REAL_NEG_NEG; DROP_VEC; REAL_EXP_0; REAL_NEG_0] THEN SIMP_TAC[GSYM CX_LOG; REAL_EXP_POS_LT; LOG_EXP] THEN ANTS_TAC THENL [REWRITE_TAC[REAL_POS; COUNTABLE_INSERT; COUNTABLE_EMPTY] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[GSYM LOG_INV; LOG_POS; REAL_INV_1_LE] THEN REWRITE_TAC[GSYM DROP_NEG; INTEGRABLE_REFLECT_GEN] THEN REWRITE_TAC[REFLECT_INTERVAL; VECTOR_NEG_NEG; VECTOR_NEG_0] THEN @@ -2835,7 +2833,7 @@ let LGAMMA_STIRLING_INTEGRALS_EXIST,LGAMMA_STIRLING = (CONJ_PAIR o prove) (z + w) pow (n - 1)`; `0`; `n:num`; `p:num`] COMPLEX_EULER_MACLAURIN_ANTIDERIVATIVE) THEN ASM_REWRITE_TAC[ADD_EQ_0; MULT_EQ_0; MULT_EQ_1] THEN - CONV_TAC NUM_REDUCE_CONV THEN ANTS_TAC THENL + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ANTS_TAC THENL [REWRITE_TAC[IN_REAL_INTERVAL; LE_0] THEN MAP_EVERY X_GEN_TAC [`k:num`; `x:real`] THEN REPEAT STRIP_TAC THEN SUBGOAL_THEN `~(z + Cx x = Cx(&0))` ASSUME_TAC THENL @@ -2846,10 +2844,10 @@ let LGAMMA_STIRLING_INTEGRALS_EXIST,LGAMMA_STIRLING = (CONJ_PAIR o prove) ASM_CASES_TAC `k = 0` THEN ASM_REWRITE_TAC[] THENL [COMPLEX_DIFF_TAC THEN CONJ_TAC THENL [REWRITE_TAC[RE_ADD; IM_ADD; RE_CX; IM_CX] THEN ASM_REAL_ARITH_TAC; - UNDISCH_TAC `~(z + Cx x = Cx(&0))` THEN CONV_TAC COMPLEX_FIELD]; + UNDISCH_TAC `~(z + Cx x = Cx(&0))` THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]; ALL_TAC] THEN ASM_CASES_TAC `k = 1` THEN ASM_REWRITE_TAC[] THEN COMPLEX_DIFF_TAC THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[complex_div; COMPLEX_ADD_LID; COMPLEX_MUL_LID; COMPLEX_POW_1; IM_ADD; RE_ADD; IM_CX; RE_CX] THEN (CONJ_TAC ORELSE ASM_REAL_ARITH_TAC) THEN @@ -2879,7 +2877,7 @@ let LGAMMA_STIRLING_INTEGRALS_EXIST,LGAMMA_STIRLING = (CONJ_PAIR o prove) REWRITE_TAC[REAL_POW_NEG; EVEN_ADD; EVEN_MULT; ARITH_EVEN] THEN REWRITE_TAC[REAL_POW_ONE; REAL_MUL_LID] THEN DISCH_TAC THEN ASM_REWRITE_TAC[COMPLEX_ADD_RID] THEN - CONV_TAC COMPLEX_RING) in + (CONV_TAC "COMPLEX_RING") COMPLEX_RING) in let lemma2 = prove (`!z n. 2 <= n /\ (Im z = &0 ==> &0 < Re z) ==> (\t. inv(z + Cx(drop t)) pow n) @@ -2994,7 +2992,7 @@ let LGAMMA_STIRLING_INTEGRALS_EXIST,LGAMMA_STIRLING = (CONJ_PAIR o prove) [REWRITE_TAC[EVENTUALLY_AT_POSINFINITY; real_ge] THEN EXISTS_TAC `max(&0) (abs(Im z) - Re z)` THEN REWRITE_TAC[FORALL_DROP; LIFT_DROP] THEN - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_UNIQUE THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_REAL_ARITH_TAC; ALL_TAC] THEN @@ -3046,7 +3044,7 @@ let LGAMMA_STIRLING_INTEGRALS_EXIST,LGAMMA_STIRLING = (CONJ_PAIR o prove) (SPECL [`0`; `n:num`; `z:complex`] lemma1) (SPECL [`p:num`; `n:num`; `z:complex`] lemma1))) THEN ASM_REWRITE_TAC[FORALL_AND_THM] THEN ONCE_REWRITE_TAC[IMP_CONJ] THEN - REWRITE_TAC[VSUM_CLAUSES_NUMSEG] THEN CONV_TAC NUM_REDUCE_CONV THEN + REWRITE_TAC[VSUM_CLAUSES_NUMSEG] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[SIMPLE_COMPLEX_ARITH `a * Cx(&1) / b = a / b`] THEN REWRITE_TAC[LIFT_NUM; COMPLEX_POW_1; COMPLEX_DIV_1] THEN DISCH_THEN(fun th -> ONCE_REWRITE_TAC[th]) THEN @@ -3078,7 +3076,7 @@ let LGAMMA_STIRLING_INTEGRALS_EXIST,LGAMMA_STIRLING = (CONJ_PAIR o prove) CONJ_TAC THENL [ASM_ARITH_TAC; ALL_TAC] THEN UNDISCH_TAC `1 <= k` THEN SPEC_TAC(`k:num`,`k:num`) THEN INDUCT_TAC THEN REWRITE_TAC[ADD_CLAUSES; MULT_CLAUSES] THEN - CONV_TAC NUM_REDUCE_CONV THEN DISCH_THEN (K ALL_TAC) THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN DISCH_THEN (K ALL_TAC) THEN REWRITE_TAC[ARITH_RULE `(2 + k) - 2 = k /\ (2 + k) - 1 = k + 1`] THEN REWRITE_TAC[ARITH_RULE `2 + k = SUC(SUC k)`; FACT] THEN ARITH_TAC; MATCH_MP_TAC LIM_COMPLEX_LMUL THEN @@ -3175,7 +3173,7 @@ let LGAMMA_STIRLING_INTEGRALS_EXIST,LGAMMA_STIRLING = (CONJ_PAIR o prove) ONCE_REWRITE_TAC[COMPLEX_RING `(a + b - c) - d:complex = (a - c) + (b - d)`]] THEN MP_TAC(SPECL [`0`; `n:num`] lemma1) THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_REWRITE_TAC[VSUM_CLAUSES_NUMSEG; ARITH; VECTOR_ADD_LID] THEN ASM_SIMP_TAC[RE_CX; REAL_LT_01]; ALL_TAC] THEN @@ -3193,7 +3191,7 @@ let LGAMMA_STIRLING_INTEGRALS_EXIST,LGAMMA_STIRLING = (CONJ_PAIR o prove) (clog(Cx(&1) + Cx(&n)) - clog(z + Cx(&n))) - (Cx(&1) - z)` THEN CONJ_TAC THENL - [MATCH_MP_TAC ALWAYS_EVENTUALLY THEN CONV_TAC COMPLEX_RING; + [MATCH_MP_TAC ALWAYS_EVENTUALLY THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN MATCH_MP_TAC LIM_NULL_COMPLEX_ADD THEN CONJ_TAC THENL [MATCH_MP_TAC LIM_NULL_COMPLEX_LMUL THEN @@ -3234,7 +3232,7 @@ let LGAMMA_STIRLING_INTEGRALS_EXIST,LGAMMA_STIRLING = (CONJ_PAIR o prove) MP_TAC(ISPECL [`ii * Cx y`; `1`] lemma4) THEN ASM_SIMP_TAC[IM_MUL_II; RE_CX; REAL_LT_IMP_NZ; LE_REFL] THEN REWRITE_TAC[VSUM_SING_NUMSEG] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[COMPLEX_POW_1] THEN DISCH_THEN(SUBST1_TAC o MATCH_MP INTEGRAL_UNIQUE) THEN REFL_TAC; ALL_TAC] THEN @@ -3280,7 +3278,7 @@ let LGAMMA_STIRLING_INTEGRALS_EXIST,LGAMMA_STIRLING = (CONJ_PAIR o prove) REWRITE_TAC[real_div] THEN MATCH_MP_TAC REAL_LE_MUL2 THEN REWRITE_TAC[REAL_ABS_POS; REAL_LE_INV_EQ; NORM_POS_LE] THEN CONJ_TAC THENL [MP_TAC(SPECL [`3`; `frac x`] BERNOULLI_BOUND) THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[BERNOULLI_CONV `bernoulli 2 (&0)`] THEN ANTS_TAC THENL [ALL_TAC; REAL_ARITH_TAC] THEN SIMP_TAC[IN_REAL_INTERVAL; REAL_LT_IMP_LE; FLOOR_FRAC]; @@ -3289,7 +3287,7 @@ let LGAMMA_STIRLING_INTEGRALS_EXIST,LGAMMA_STIRLING = (CONJ_PAIR o prove) GEN_REWRITE_TAC (RAND_CONV o LAND_CONV) [GSYM REAL_INV_INV] THEN REWRITE_TAC[GSYM REAL_INV_MUL] THEN MATCH_MP_TAC REAL_LE_INV2 THEN CONJ_TAC THENL - [MATCH_MP_TAC REAL_LT_MUL THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [MATCH_MP_TAC REAL_LT_MUL THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_LT_MUL THEN CONJ_TAC THENL [ASM_REAL_ARITH_TAC; MATCH_MP_TAC REAL_POW_LT] THEN ASM_REAL_ARITH_TAC; @@ -3370,7 +3368,7 @@ let LGAMMA_STIRLING_INTEGRALS_EXIST,LGAMMA_STIRLING = (CONJ_PAIR o prove) REWRITE_TAC[IM_ADD; IM_MUL_II; IM_CX; RE_CX] THEN ASM_REAL_ARITH_TAC; DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[NORM_CEXP; LOG_EXP]]; AP_THM_TAC THEN AP_TERM_TAC THEN - AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[COMPLEX_SUB_RDISTRIB; RE_SUB; GSYM CX_DIV] THEN REWRITE_TAC[GSYM COMPLEX_MUL_ASSOC; RE_MUL_II; IM_MUL_II; RE_MUL_CX; IM_MUL_CX] THEN @@ -3441,7 +3439,7 @@ let LGAMMA_STIRLING_INTEGRALS_EXIST,LGAMMA_STIRLING = (CONJ_PAIR o prove) REWRITE_TAC[CX_SUB; CX_DIV] THEN MATCH_MP_TAC LIM_SUB THEN REWRITE_TAC[LIM_CONST] THEN MATCH_MP_TAC LIM_COMPLEX_DIV THEN REWRITE_TAC[LIM_CONST] THEN - CONJ_TAC THENL [ALL_TAC; CONV_TAC COMPLEX_RING] THEN + CONJ_TAC THENL [ALL_TAC; (CONV_TAC "COMPLEX_RING") COMPLEX_RING] THEN GEN_REWRITE_TAC LAND_CONV [GSYM COMPLEX_SUB_RZERO] THEN MATCH_MP_TAC LIM_SUB THEN REWRITE_TAC[LIM_CONST] THEN MP_TAC(ISPECL @@ -3453,7 +3451,7 @@ let LGAMMA_STIRLING_INTEGRALS_EXIST,LGAMMA_STIRLING = (CONJ_PAIR o prove) GEN_REWRITE_TAC LAND_CONV [GSYM COMPLEX_SUB_RZERO] THEN MATCH_MP_TAC LIM_SUB THEN REWRITE_TAC[LIM_CONST] THEN REWRITE_TAC[CX_INV; CX_EXP; CX_POW; GSYM COMPLEX_POW_INV] THEN - MATCH_MP_TAC LIM_NULL_COMPLEX_POW THEN CONV_TAC NUM_REDUCE_CONV THEN + MATCH_MP_TAC LIM_NULL_COMPLEX_POW THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[LIM_AT_POSINFINITY] THEN X_GEN_TAC `e:real` THEN DISCH_TAC THEN EXISTS_TAC `&1 + inv(e)` THEN REWRITE_TAC[dist; real_ge] THEN @@ -3482,7 +3480,7 @@ let LGAMMA_STIRLING_INTEGRALS_EXIST,LGAMMA_STIRLING = (CONJ_PAIR o prove) REWRITE_TAC[complex_sub; GSYM COMPLEX_ADD_ASSOC] THEN AP_TERM_TAC THEN AP_TERM_TAC THEN AP_TERM_TAC THEN ASM_CASES_TAC `p = 0` THENL [ASM_REWRITE_TAC[VSUM_CLAUSES_NUMSEG] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[COMPLEX_POW_1; COMPLEX_DIV_1; VECTOR_ADD_LID]; MP_TAC(SPECL [`z:complex`; `p:num`] lemma4) THEN ASM_SIMP_TAC[LE_1] THEN @@ -3551,11 +3549,11 @@ let CSIN_PRODUCT = prove ABBREV_TAC `w = z / Cx pi` THEN SUBGOAL_THEN `Cx pi * w = z` ASSUME_TAC THENL [EXPAND_TAC "w" THEN MP_TAC PI_NZ THEN REWRITE_TAC[GSYM CX_INJ] THEN - CONV_TAC COMPLEX_FIELD; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; EXPAND_TAC "z" THEN SUBGOAL_THEN `csin (Cx pi * w) = Cx pi * csin(Cx pi * w) / Cx pi` SUBST1_TAC THENL - [MP_TAC PI_NZ THEN REWRITE_TAC[GSYM CX_INJ] THEN CONV_TAC COMPLEX_FIELD; + [MP_TAC PI_NZ THEN REWRITE_TAC[GSYM CX_INJ] THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; REWRITE_TAC[GSYM COMPLEX_MUL_ASSOC] THEN MATCH_MP_TAC LIM_COMPLEX_LMUL THEN ONCE_REWRITE_TAC[GSYM COMPLEX_INV_DIV] THEN @@ -3579,7 +3577,7 @@ let CSIN_PRODUCT = prove [GEN_REWRITE_TAC LAND_CONV [GSYM COMPLEX_INV_1] THEN ONCE_REWRITE_TAC[GSYM COMPLEX_INV_DIV] THEN MATCH_MP_TAC LIM_COMPLEX_INV THEN - CONJ_TAC THENL [ALL_TAC; CONV_TAC COMPLEX_RING] THEN + CONJ_TAC THENL [ALL_TAC; (CONV_TAC "COMPLEX_RING") COMPLEX_RING] THEN REWRITE_TAC[complex_div; COMPLEX_ADD_RDISTRIB] THEN GEN_REWRITE_TAC LAND_CONV [GSYM COMPLEX_ADD_RID] THEN MATCH_MP_TAC LIM_ADD THEN @@ -3617,7 +3615,7 @@ let CSIN_PRODUCT = prove REWRITE_TAC[IN_NUMSEG] THEN STRIP_TAC THEN SUBGOAL_THEN `~(Cx(&k) = Cx(&0))` MP_TAC THENL [ASM_SIMP_TAC[CX_INJ; REAL_OF_NUM_EQ; LE_1]; - CONV_TAC COMPLEX_FIELD]);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]);; let SIN_PRODUCT = prove (`!x. ((\n. x * product(1..n) (\m. &1 - (x / (pi * &m)) pow 2)) ---> sin(x)) @@ -3632,7 +3630,7 @@ let WALLIS_ALT = prove (&2 * &k) / (&2 * &k + &1))) ---> pi / &2) sequentially`, ONCE_REWRITE_TAC[GSYM REAL_INV_INV] THEN MATCH_MP_TAC REALLIM_INV THEN - CONJ_TAC THENL [ALL_TAC; MP_TAC PI_POS THEN CONV_TAC REAL_FIELD] THEN + CONJ_TAC THENL [ALL_TAC; MP_TAC PI_POS THEN (CONV_TAC "REAL_FIELD") REAL_FIELD] THEN MP_TAC(SPEC `pi / &2` SIN_PRODUCT) THEN REWRITE_TAC[SIN_PI2] THEN REWRITE_TAC[real_div; REAL_INV_MUL; REAL_MUL_ASSOC; REAL_INV_INV] THEN DISCH_THEN(MP_TAC o SPEC `inv pi * &2` o MATCH_MP REALLIM_LMUL) THEN @@ -3644,7 +3642,7 @@ let WALLIS_ALT = prove X_GEN_TAC `n:num` THEN DISCH_TAC THEN SIMP_TAC[GSYM PRODUCT_INV; FINITE_NUMSEG] THEN MATCH_MP_TAC PRODUCT_EQ_NUMSEG THEN REWRITE_TAC[GSYM REAL_OF_NUM_LE] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let WALLIS = prove (`((\n. (&2 pow n * &(FACT n)) pow 4 / (&(FACT(2 * n)) * &(FACT(2 * n + 1)))) @@ -3653,14 +3651,14 @@ let WALLIS = prove MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] REALLIM_TRANSFORM_EVENTUALLY) THEN MATCH_MP_TAC ALWAYS_EVENTUALLY THEN REWRITE_TAC[] THEN MATCH_MP_TAC num_INDUCTION THEN REWRITE_TAC[PRODUCT_CLAUSES_NUMSEG] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN ASM_REWRITE_TAC[ARITH_RULE `1 <= SUC n`] THEN REWRITE_TAC[GSYM ADD1; ARITH_RULE `2 * SUC n = SUC(SUC(2 * n))`] THEN REWRITE_TAC[FACT; real_pow; GSYM REAL_OF_NUM_MUL] THEN REWRITE_TAC[GSYM REAL_OF_NUM_SUC; GSYM REAL_OF_NUM_MUL] THEN MAP_EVERY (MP_TAC o C SPEC FACT_NZ) [`n:num`; `2 * n`] THEN - REWRITE_TAC[GSYM REAL_OF_NUM_EQ] THEN CONV_TAC REAL_FIELD);; + REWRITE_TAC[GSYM REAL_OF_NUM_EQ] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let GAUSSIAN_INTEGRAL = prove (`((\x. exp(--(x pow 2))) has_real_integral sqrt pi) (:real)`, @@ -3684,7 +3682,7 @@ let GAUSSIAN_INTEGRAL = prove `s INTER IMAGE f s SUBSET {a} <=> !x. x IN s /\ f x IN s ==> f x = a`] THEN REAL_ARITH_TAC] THEN MP_TAC(SPEC `&1 / &2` EULER_HAS_REAL_INTEGRAL_GAMMA) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(MP_TAC o SPEC `inv(&2)` o MATCH_MP HAS_REAL_INTEGRAL_RMUL) THEN REWRITE_TAC[GSYM real_div] THEN ONCE_REWRITE_TAC[HAS_REAL_INTEGRAL_ALT] THEN @@ -3724,7 +3722,7 @@ let GAUSSIAN_INTEGRAL = prove `\x:real. x pow 2`; `\x. &2 * x`; `a:real`; `b:real`; `(a:real) pow 2`; `(b:real) pow 2`; `{&0}`] HAS_REAL_INTEGRAL_SUBSTITUTION_STRONG) THEN - REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_LE_REFL; REAL_LE_POW_2; COUNTABLE_SING; REAL_POW_LE2] THEN ANTS_TAC THENL @@ -3737,7 +3735,7 @@ let GAUSSIAN_INTEGRAL = prove ASM_REAL_ARITH_TAC; REWRITE_TAC[IN_DIFF; IN_SING; IN_REAL_INTERVAL] THEN REPEAT STRIP_TAC THENL - [REAL_DIFF_TAC THEN CONV_TAC NUM_REDUCE_CONV THEN + [REAL_DIFF_TAC THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REAL_ARITH_TAC; MATCH_MP_TAC REAL_DIFFERENTIABLE_IMP_CONTINUOUS_WITHINREAL THEN REAL_DIFFERENTIABLE_TAC THEN @@ -3750,10 +3748,10 @@ let GAUSSIAN_INTEGRAL = prove SUBGOAL_THEN `&0 <= x` ASSUME_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN REWRITE_TAC[REAL_EXP_NEG; GSYM RPOW_POW] THEN - ASM_SIMP_TAC[RPOW_RPOW] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_SIMP_TAC[RPOW_RPOW] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[RPOW_NEG; RPOW_POW; REAL_POW_1] THEN MP_TAC(SPEC `(x:real) pow 2` REAL_EXP_NZ) THEN - UNDISCH_TAC `~(x = &0)` THEN CONV_TAC REAL_FIELD]; + UNDISCH_TAC `~(x = &0)` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]; FIRST_X_ASSUM(K ALL_TAC o SPECL [`a:real`; `b:real`]) THEN DISCH_THEN(LABEL_TAC "*")] THEN CONJ_TAC THENL @@ -3767,7 +3765,7 @@ let GAUSSIAN_INTEGRAL = prove REWRITE_TAC[REAL_LE_REFL; HAS_REAL_INTEGRAL_INTEGRABLE_INTEGRAL] THEN ONCE_REWRITE_TAC[REAL_ARITH `&0 < B /\ B <= b <=> &0 < B /\ B <= b /\ &0 <= b`] THEN - SIMP_TAC[] THEN DISCH_THEN(K ALL_TAC) THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + SIMP_TAC[] THEN DISCH_THEN(K ALL_TAC) THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN FIRST_X_ASSUM(MP_TAC o SPEC `e:real`) THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(X_CHOOSE_THEN `B:real` STRIP_ASSUME_TAC) THEN EXISTS_TAC `max B (&1)` THEN diff --git a/Multivariate/geom.ml b/Multivariate/geom.ml index 3b9b5d8d..09e21489 100644 --- a/Multivariate/geom.ml +++ b/Multivariate/geom.ml @@ -15,7 +15,7 @@ let PYTHAGORAS = prove orthogonal (A - B) (C - B) ==> norm(C - A) pow 2 = norm(B - A) pow 2 + norm(C - B) pow 2`, REWRITE_TAC[NORM_POW_2; orthogonal; DOT_LSUB; DOT_RSUB; DOT_SYM] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* Angle between vectors (always 0 <= angle <= pi). *) @@ -84,7 +84,7 @@ let VECTOR_ANGLE_RMUL = prove let VECTOR_ANGLE_LNEG = prove (`!x y. vector_angle (--x) y = pi - vector_angle x y`, REWRITE_TAC[VECTOR_ARITH `--x = -- &1 % x`; VECTOR_ANGLE_LMUL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let VECTOR_ANGLE_RNEG = prove (`!x y. vector_angle x (--y) = pi - vector_angle x y`, @@ -255,7 +255,7 @@ let CONTINUOUS_WITHIN_CX_VECTOR_ANGLE_COMPOSE = prove DISCH_THEN(MP_TAC o SPEC `norm((g:real^M->real^N) x)`)] THEN ASM_REWRITE_TAC[NORM_POS_LT] THEN MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] EVENTUALLY_MONO) THEN - REWRITE_TAC[] THEN CONV_TAC NORM_ARITH; + REWRITE_TAC[] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] EVENTUALLY_MONO) THEN SIMP_TAC[CX_ACS; NORM_CAUCHY_SCHWARZ_DIV]]]);; @@ -390,7 +390,7 @@ let SIN_VECTOR_ANGLE = prove else sqrt(&1 - ((x dot y) / (norm x * norm y)) pow 2)`, SIMP_TAC[SIN_COS_SQRT; SIN_VECTOR_ANGLE_POS; COS_VECTOR_ANGLE] THEN REPEAT GEN_TAC THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[SQRT_1]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[SQRT_1]);; let SIN_SQUARED_VECTOR_ANGLE = prove (`!x y:real^N. @@ -440,7 +440,7 @@ let ARG_EQ_VECTOR_ANGLE_1 = prove REWRITE_TAC[REAL_MUL_LZERO; REAL_EXP_0; REAL_MUL_LID] THEN ASM_SIMP_TAC[COMPLEX_NORM_ZERO; REAL_FIELD `~(z = &0) ==> (z * x) / z = x`] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC ACS_COS THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC ACS_COS THEN ASM_REWRITE_TAC[ARG; ARG_LE_PI]);; let VECTOR_ANGLE_ARG = prove @@ -449,19 +449,19 @@ let VECTOR_ANGLE_ARG = prove else &2 * pi - Arg(z / w)`, REPEAT STRIP_TAC THEN COND_CASES_TAC THENL [SUBGOAL_THEN `z = w * (z / w) /\ w = w * Cx(&1)` MP_TAC THENL - [REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC COMPLEX_FIELD; ALL_TAC]; + [REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; ALL_TAC]; SUBGOAL_THEN `w = z * (w / z) /\ z = z * Cx(&1)` MP_TAC THENL - [REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC COMPLEX_FIELD; ALL_TAC]] THEN + [REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; ALL_TAC]] THEN DISCH_THEN(fun th -> GEN_REWRITE_TAC (LAND_CONV o ONCE_DEPTH_CONV) [th]) THEN ASM_SIMP_TAC[VECTOR_ANGLE_COMPLEX_LMUL] THENL - [ONCE_REWRITE_TAC[VECTOR_ANGLE_SYM] THEN CONV_TAC SYM_CONV THEN + [ONCE_REWRITE_TAC[VECTOR_ANGLE_SYM] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC ARG_EQ_VECTOR_ANGLE_1 THEN ASM_REWRITE_TAC[] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC COMPLEX_FIELD; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; MP_TAC(ISPEC `z / w:complex` ARG_INV) THEN ANTS_TAC THENL [ASM_MESON_TAC[real; REAL_LE_REFL]; DISCH_THEN(SUBST1_TAC o SYM)] THEN - REWRITE_TAC[COMPLEX_INV_DIV] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[COMPLEX_INV_DIV] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC ARG_EQ_VECTOR_ANGLE_1 THEN CONJ_TAC THENL - [REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC COMPLEX_FIELD; + [REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; ONCE_REWRITE_TAC[GSYM COMPLEX_INV_DIV] THEN REWRITE_TAC[IM_COMPLEX_INV_GE_0] THEN ASM_REAL_ARITH_TAC]]);; @@ -672,7 +672,7 @@ let SIN_OPPOSITE_HYPOTENUSE = prove ==> dist(A,C) * sin(angle(B,A,C)) = dist(C,B)`, REPEAT GEN_TAC THEN ASM_CASES_TAC `A:real^N = C` THEN ASM_SIMP_TAC[ORTHOGONAL_REFL; VECTOR_SUB_EQ; DIST_REFL; REAL_MUL_LZERO] THEN - DISCH_TAC THEN CONV_TAC SYM_CONV THEN + DISCH_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[dist; NORM_EQ_SQUARE] THEN SIMP_TAC[REAL_LE_MUL; SIN_ANGLE_POS; NORM_POS_LE] THEN FIRST_ASSUM(MP_TAC o MATCH_MP COS_ADJACENT_HYPOTENUSE) THEN @@ -701,7 +701,7 @@ let TAN_OPPOSITE_ADJACENT = prove FIRST_ASSUM(MP_TAC o MATCH_MP COS_ADJACENT_HYPOTENUSE) THEN FIRST_ASSUM(MP_TAC o MATCH_MP SIN_OPPOSITE_HYPOTENUSE) THEN ASM_CASES_TAC `cos (angle (B:real^N,A,C)) = &0` THENL - [ALL_TAC; POP_ASSUM MP_TAC THEN CONV_TAC REAL_FIELD] THEN + [ALL_TAC; POP_ASSUM MP_TAC THEN (CONV_TAC "REAL_FIELD") REAL_FIELD] THEN ASM_REWRITE_TAC[REAL_MUL_RZERO; real_div; REAL_MUL_RZERO; REAL_INV_0] THEN ASM_MESON_TAC[DIST_EQ_0]);; @@ -752,7 +752,7 @@ let LAW_OF_SINES = prove a * b - a * b * x = c * d - c * d * y`] THEN REWRITE_TAC[GSYM REAL_POW_MUL; GSYM ANGLE] THEN REWRITE_TAC[REAL_POW_MUL; dist; NORM_POW_2] THEN - REWRITE_TAC[DOT_LSUB; DOT_RSUB; DOT_SYM] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[DOT_LSUB; DOT_RSUB; DOT_SYM] THEN (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* The sum of the angles of a triangle. *) @@ -772,7 +772,7 @@ let TRIANGLE_ANGLE_SUM_LEMMA = prove REWRITE_TAC[COS_ADD; SIN_ADD; dist; NORM_SUB] THEN MAP_EVERY (fun t -> MP_TAC(SPEC t SIN_CIRCLE)) [`angle(B:real^N,A,C)`; `angle(A:real^N,B,C)`; `angle(B:real^N,C,A)`] THEN - REWRITE_TAC[COS_ADD; SIN_ADD; ANGLE_SYM] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[COS_ADD; SIN_ADD; ANGLE_SYM] THEN (CONV_TAC "REAL_RING") REAL_RING);; let COS_MINUS1_LEMMA = prove (`!x. cos(x) = -- &1 /\ &0 <= x /\ x < &3 * pi ==> x = pi`, @@ -781,7 +781,7 @@ let COS_MINUS1_LEMMA = prove (X_CHOOSE_THEN `nn:real` (CONJUNCTS_THEN2 ASSUME_TAC SUBST_ALL_TAC)) THEN REWRITE_TAC[GSYM SIN_EQ_0] THENL [MP_TAC(SPEC `x:real` SIN_CIRCLE) THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RING; + (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN SUBGOAL_THEN `?n. nn = &n` (X_CHOOSE_THEN `n:num` SUBST_ALL_TAC) THENL [FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [REAL_MUL_POS_LE]) THEN @@ -897,7 +897,7 @@ let CONGRUENT_TRIANGLES_SSS = prove MP_TAC(ISPECL [`B:real^M`; `A:real^M`; `C:real^M`] LAW_OF_COSINES) THEN MP_TAC(ISPECL [`B':real^N`; `A':real^N`; `C':real^N`] LAW_OF_COSINES) THEN REPEAT(POP_ASSUM MP_TAC) THEN REWRITE_TAC[GSYM DIST_EQ_0; DIST_SYM] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let CONGRUENT_TRIANGLES_SAS = prove (`!A B C:real^M A' B' C':real^N. @@ -936,7 +936,7 @@ let CONGRUENT_TRIANGLES_AAS = prove [ASM_MESON_TAC[COLLINEAR_SIN_ANGLE_IMP; INSERT_AC]; ASM_REWRITE_TAC[] THEN ONCE_REWRITE_TAC[ANGLE_SYM; DIST_SYM] THEN ASM_REWRITE_TAC[] THEN REWRITE_TAC[ANGLE_SYM; DIST_SYM] THEN - CONV_TAC REAL_FIELD]; + (CONV_TAC "REAL_FIELD") REAL_FIELD]; ASM_MESON_TAC[CONGRUENT_TRIANGLES_SAS; DIST_SYM; ANGLE_SYM]]);; let CONGRUENT_TRIANGLES_ASA = prove @@ -1127,7 +1127,7 @@ let AREA_TRIANGLE_SIN = prove `~(b = &0) /\ ~(c = &0) ==> b pow 2 * c pow 2 * (&1 - (d / (b * c)) pow 2) = b pow 2 * c pow 2 - d pow 2`] THEN - REWRITE_TAC[NORM_POW_2; DOT_2] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[NORM_POW_2; DOT_2] THEN (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* Angles satisfy the triangle law and hence vector_angle defines a metric. *) diff --git a/Multivariate/integration.ml b/Multivariate/integration.ml index 79ae60d3..b3198977 100644 --- a/Multivariate/integration.ml +++ b/Multivariate/integration.ml @@ -258,7 +258,7 @@ let CONTENT_1 = prove let CONTENT_UNIT = prove (`content(interval[vec 0:real^N,vec 1]) = &1`, REWRITE_TAC[content] THEN COND_CASES_TAC THENL - [POP_ASSUM MP_TAC THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [POP_ASSUM MP_TAC THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SIMP_TAC[INTERVAL_NE_EMPTY; VEC_COMPONENT; REAL_POS]; MATCH_MP_TAC PRODUCT_EQ_1 THEN SIMP_TAC[INTERVAL_UPPERBOUND; INTERVAL_LOWERBOUND; @@ -1317,7 +1317,7 @@ let DIVISION_OF_TRANSLATION = prove IMAGE (IMAGE (\x. a + x)) d division_of (IMAGE (\x. a + x) s) <=> d division_of s`, ONCE_REWRITE_TAC[VECTOR_ARITH `a + x:real^N = &1 % x + a`] THEN - REWRITE_TAC[DIVISION_OF_AFFINITY] THEN CONV_TAC REAL_RAT_REDUCE_CONV);; + REWRITE_TAC[DIVISION_OF_AFFINITY] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let DIVISION_OF_REFLECT = prove (`!d s:real^N->bool. @@ -1326,7 +1326,7 @@ let DIVISION_OF_REFLECT = prove REPEAT GEN_TAC THEN SUBGOAL_THEN `(--) = \x:real^N. --(&1) % x + vec 0` SUBST1_TAC THENL [REWRITE_TAC[FUN_EQ_THM] THEN VECTOR_ARITH_TAC; - REWRITE_TAC[DIVISION_OF_AFFINITY] THEN CONV_TAC REAL_RAT_REDUCE_CONV]);; + REWRITE_TAC[DIVISION_OF_AFFINITY] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]);; let ELEMENTARY_COMPACT = prove (`!s. (?d. d division_of s) ==> compact s`, @@ -1476,7 +1476,7 @@ let PARTIAL_DIVISION_OF_TAGGED_DIVISION = prove REPEAT GEN_TAC THEN STRIP_TAC THEN CONJ_TAC THENL [ALL_TAC; ASM_MESON_TAC[MEMBER_NOT_EMPTY]] THEN REWRITE_TAC[SUBSET; IN_UNIONS; IN_IMAGE; EXISTS_PAIR_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV UNWIND_CONV) THEN ASM SET_TAC[]);; + (CONV_TAC "(ONCE_DEPTH_CONV UNWIND_CONV)") (ONCE_DEPTH_CONV UNWIND_CONV) THEN ASM SET_TAC[]);; let TAGGED_PARTIAL_DIVISION_SUBSET = prove (`!s t i. s tagged_partial_division_of i /\ t SUBSET s @@ -1493,7 +1493,7 @@ let VSUM_OVER_TAGGED_PARTIAL_DIVISION_LEMMA = prove REWRITE_TAC[CONTENT_EQ_0_INTERIOR] THEN REPEAT STRIP_TAC THEN SUBGOAL_THEN `(\(x:real^M,k:real^M->bool). d k:real^N) = d o SND` SUBST1_TAC THENL [SIMP_TAC[FUN_EQ_THM; FORALL_PAIR_THM; o_THM]; ALL_TAC] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_IMAGE_NONZERO THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_IMAGE_NONZERO THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [tagged_partial_division_of]) THEN MATCH_MP_TAC MONO_AND THEN REWRITE_TAC[FORALL_PAIR_THM] THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN @@ -1786,7 +1786,7 @@ let integral = new_definition let INTEGRABLE_INTEGRAL = prove (`!f i. f integrable_on i ==> (f has_integral (integral i f)) i`, REPEAT GEN_TAC THEN REWRITE_TAC[integrable_on; integral] THEN - CONV_TAC(RAND_CONV SELECT_CONV) THEN REWRITE_TAC[]);; + (CONV_TAC "(RAND_CONV SELECT_CONV)") (RAND_CONV SELECT_CONV) THEN REWRITE_TAC[]);; let HAS_INTEGRAL_INTEGRABLE = prove (`!f i s. (f has_integral i) s ==> f integrable_on s`, @@ -1913,7 +1913,7 @@ let INTERVAL_BISECTION_STEP = prove ALL_TAC] THEN GEN_REWRITE_TAC LAND_CONV [GSYM CONTRAPOS_THM] THEN ANTS_TAC THENL [UNDISCH_TAC `~P(interval[a:real^N,b])` THEN MATCH_MP_TAC EQ_IMP THEN - AP_TERM_TAC THEN AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + AP_TERM_TAC THEN AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN GEN_REWRITE_TAC I [EXTENSION] THEN REWRITE_TAC[IN_UNIONS; IN_ELIM_THM] THEN X_GEN_TAC `x:real^N` THEN REWRITE_TAC[LEFT_AND_EXISTS_THM] THEN @@ -2216,7 +2216,7 @@ let HAS_INTEGRAL_IS_0 = prove AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[NORM_EQ_0; VECTOR_SUB_EQ; VECTOR_ADD_LID] THEN MATCH_MP_TAC VSUM_EQ_0 THEN REWRITE_TAC[FORALL_PAIR_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN X_GEN_TAC `x:real^M` THEN REPEAT STRIP_TAC THEN SUBGOAL_THEN `(x:real^M) IN interval[a,b]` (fun th -> ASM_SIMP_TAC[th; VECTOR_MUL_RZERO]) THEN @@ -2819,7 +2819,7 @@ let HAS_INTEGRAL_SPLIT = prove ==> vsum {x,g k |x,k| (x,k) IN p /\ ~(g k = {})} (\(x,k). content k % f x) = vsum (IMAGE (\(x,k). x,g k) p) (\(x,k). content k % f x)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN ASM_SIMP_TAC[FINITE_IMAGE; lemma2] THEN REWRITE_TAC[IMP_CONJ; FORALL_IN_IMAGE] THEN REWRITE_TAC[FORALL_PAIR_THM; SUBSET; IN_IMAGE; EXISTS_PAIR_THM] THEN @@ -3007,7 +3007,7 @@ let HAS_INTEGRAL_SEPARATE_SIDES = prove vsum (p1 UNION p2) (\(x,k:real^M->bool). content k % (f:real^M->real^N) x)` SUBST1_TAC THENL [ALL_TAC; ASM_MESON_TAC[TAGGED_DIVISION_UNION_INTERVAL; FINE_UNION]] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_UNION_NONZERO THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_UNION_NONZERO THEN REPEAT(FIRST_X_ASSUM(STRIP_ASSUME_TAC o GEN_REWRITE_RULE I [TAGGED_DIVISION_OF])) THEN ASM_REWRITE_TAC[FORALL_PAIR_THM] THEN MAP_EVERY X_GEN_TAC [`x:real^M`; `l:real^M->bool`] THEN @@ -3282,7 +3282,7 @@ let OPERATIVE_DIVISION = prove (`!op d a b f:(real^N->bool)->A. monoidal op /\ operative op f /\ d division_of interval[a,b] ==> iterate(op) d f = f(interval[a,b])`, - REPEAT GEN_TAC THEN CONV_TAC(RAND_CONV SYM_CONV) THEN WF_INDUCT_TAC + REPEAT GEN_TAC THEN (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN WF_INDUCT_TAC `CARD (division_points (interval[a,b]:real^N->bool) d)` THEN POP_ASSUM(fun th -> REPEAT STRIP_TAC THEN MP_TAC th) THEN ASM_REWRITE_TAC[] THEN @@ -3471,7 +3471,7 @@ let OPERATIVE_TAGGED_DIVISION = prove CONJ_TAC THENL [ALL_TAC; ASM_MESON_TAC[DIVISION_OF_TAGGED_DIVISION; OPERATIVE_DIVISION]] THEN - REWRITE_TAC[lemma] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[lemma] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC(REWRITE_RULE[RIGHT_IMP_FORALL_THM; IMP_IMP] ITERATE_IMAGE_NONZERO) THEN ASM_REWRITE_TAC[FORALL_PAIR_THM] THEN @@ -4396,7 +4396,7 @@ let HAS_INTEGRAL_NEGLIGIBLE = prove EXISTS_TAC `sum (0..N+1) (\i. e / &2 / &2 pow i)` THEN CONJ_TAC THENL [ALL_TAC; REWRITE_TAC[real_div; SUM_LMUL; GSYM REAL_POW_INV] THEN - REWRITE_TAC[SUM_GP; LT] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[SUM_GP; LT] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `(e * &1 / &2) * (&1 - x) / (&1 / &2) < e <=> &0 < e * x`] THEN ASM_SIMP_TAC[REAL_LT_MUL; REAL_POW_LT; REAL_ARITH `&0 < &1 / &2`]] THEN @@ -5113,7 +5113,7 @@ let INTEGRAL_COMBINE = prove drop a <= drop c /\ drop c <= drop b /\ f integrable_on (interval[a,b]) ==> integral(interval[a,c]) f + integral(interval[c,b]) f = integral(interval[a,b]) f`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_UNIQUE THEN MATCH_MP_TAC HAS_INTEGRAL_COMBINE THEN EXISTS_TAC `c:real^1` THEN ASM_REWRITE_TAC[] THEN CONJ_TAC THEN MATCH_MP_TAC INTEGRABLE_INTEGRAL THEN @@ -6002,7 +6002,7 @@ let HAS_INTEGRAL_PASTECART_SYM_ALT = prove REPEAT STRIP_TAC THEN REPEAT(COND_CASES_TAC THEN ASM_REWRITE_TAC[]) THEN TRY(MATCH_MP_TAC LAMBDA_BETA) THEN ASM_ARITH_TAC]; - ASM_REWRITE_TAC[] THEN CONV_TAC SYM_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC HAS_INTEGRAL_TWIZZLE_EQ THEN ASM_REWRITE_TAC[] THEN REWRITE_TAC[DIMINDEX_FINITE_SUM; ADD_SYM]]);; @@ -6089,10 +6089,10 @@ let HAS_INTEGRAL_AFFINITY = prove X_GEN_TAC `x:real^M` THEN DISCH_TAC THEN EXISTS_TAC `inv(m) % (x - c):real^M` THEN ASM_SIMP_TAC[VECTOR_MUL_ASSOC; REAL_MUL_RINV; NORM_MUL; REAL_ABS_INV] THEN - CONJ_TAC THENL [CONV_TAC VECTOR_ARITH; ALL_TAC] THEN + CONJ_TAC THENL [(CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN REWRITE_TAC[ONCE_REWRITE_RULE[REAL_MUL_SYM] (GSYM real_div)] THEN ASM_SIMP_TAC[REAL_LT_DIV2_EQ; GSYM REAL_ABS_NZ] THEN - UNDISCH_TAC `norm(x:real^M) < b` THEN CONV_TAC NORM_ARITH]);; + UNDISCH_TAC `norm(x:real^M) < b` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]);; let INTEGRABLE_AFFINITY = prove (`!f:real^M->real^N s m c. @@ -6152,14 +6152,14 @@ let HAS_INTEGRAL_REFLECT_LEMMA = prove DISCH_THEN(MP_TAC o MATCH_MP HAS_INTEGRAL_AFFINITY) THEN DISCH_THEN(MP_TAC o SPEC `vec 0:real^M`) THEN REWRITE_TAC[IMAGE_AFFINITY_INTERVAL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ABS_NEG; REAL_ABS_NUM; REAL_POW_ONE] THEN REWRITE_TAC[VECTOR_MUL_RZERO; VECTOR_NEG_0] THEN REWRITE_TAC[REAL_INV_NEG; REAL_INV_1] THEN REWRITE_TAC[VECTOR_ARITH `-- &1 % x + vec 0 = --x`] THEN REWRITE_TAC[VECTOR_MUL_LID] THEN MATCH_MP_TAC EQ_IMP THEN AP_TERM_TAC THEN POP_ASSUM(K ALL_TAC) THEN - COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN CONV_TAC SYM_CONV THEN + COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN POP_ASSUM MP_TAC THEN REWRITE_TAC[INTERVAL_EQ_EMPTY] THEN REWRITE_TAC[TAUT `a /\ b /\ c <=> ~(a /\ b ==> ~c)`] THEN SIMP_TAC[VECTOR_NEG_COMPONENT; REAL_LT_NEG2]);; @@ -6195,7 +6195,7 @@ let HAS_INTEGRAL_TRANSLATION = prove [DISCH_THEN(MP_TAC o SPEC `--a:real^M`); DISCH_THEN(MP_TAC o SPEC `a:real^M`)] THEN REWRITE_TAC[REAL_INV_1; REAL_ABS_NUM; REAL_POW_ONE] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[VECTOR_MUL_LID] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[VECTOR_MUL_LID] THEN REWRITE_TAC[VECTOR_ARITH `a + x + --a:real^N = x`; ETA_AX; GSYM IMAGE_o; VECTOR_ARITH `x + -- -- a:real^N = a + x`; o_DEF; IMAGE_ID; VECTOR_ARITH `(a + x) + --a:real^N = x`] THEN @@ -7182,7 +7182,7 @@ let INTEGRABLE_UNION_EQ = prove AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[FUN_EQ_THM] THEN X_GEN_TAC `x:real^M` THEN MAP_EVERY ASM_CASES_TAC [`(x:real^M) IN s`; `(x:real^M) IN t`] THEN - ASM_REWRITE_TAC[IN_INTER; IN_UNION] THEN CONV_TAC VECTOR_ARITH);; + ASM_REWRITE_TAC[IN_INTER; IN_UNION] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH);; let HAS_INTEGRAL_UNIONS_IMAGE = prove (`!f:real^M->real^N k i t:A->bool. @@ -7380,7 +7380,7 @@ let INTEGRABLE_ON_SUBINTERVAL_GEN = prove ASM_REWRITE_TAC[DROP_VEC; DROP_NEG; LIFT_DROP] THEN REPEAT (ANTS_TAC THENL [ASM_REAL_ARITH_TAC; DISCH_THEN(SUBST1_TAC o SYM)]) THEN - REWRITE_TAC[LIFT_NUM] THEN CONV_TAC VECTOR_ARITH);; + REWRITE_TAC[LIFT_NUM] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH);; let INTEGRABLE_ON_SUBSET = prove (`!f:real^1->real^N s t. @@ -7498,7 +7498,7 @@ let HAS_INTEGRAL_COMBINE_TAGGED_DIVISION = prove ASM_SIMP_TAC[DIVISION_OF_TAGGED_DIVISION]; ALL_TAC] THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN - AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `vsum p (\(x:real^M,k:real^M->bool). integral k f:real^N)` THEN CONJ_TAC THENL @@ -7743,14 +7743,14 @@ let HENSTOCK_LEMMA_PART1 = prove vsum r (\k. integral k f)` THEN CONJ_TAC THENL [ALL_TAC; - CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_UNION_NONZERO THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_UNION_NONZERO THEN ASM_SIMP_TAC[FINITE_IMAGE; NOT_IN_EMPTY]] THEN AP_THM_TAC THEN AP_TERM_TAC THEN SUBGOAL_THEN `(\(x:real^M,k). integral k (f:real^M->real^N)) = (\k. integral k f) o SND` SUBST1_TAC THENL [SIMP_TAC[o_THM; FUN_EQ_THM; FORALL_PAIR_THM]; ALL_TAC] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_IMAGE_NONZERO THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_IMAGE_NONZERO THEN ASM_REWRITE_TAC[FORALL_PAIR_THM] THEN MAP_EVERY X_GEN_TAC [`x:real^M`; `l:real^M->bool`; `y:real^M`; `m:real^M->bool`] THEN @@ -7981,7 +7981,7 @@ let MONOTONE_CONVERGENCE_INTERVAL = prove ADDITIVE_CONTENT_TAGGED_DIVISION th]) THEN MATCH_MP_TAC REAL_EQ_IMP_LE THEN UNDISCH_TAC `&0 < content(interval[a:real^N,b])` THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; ASM_SIMP_TAC[GSYM VSUM_SUB] THEN REWRITE_TAC[LAMBDA_PAIR_THM] THEN MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `norm(vsum (0..s) @@ -7999,13 +7999,13 @@ let MONOTONE_CONVERGENCE_INTERVAL = prove [ALL_TAC; REWRITE_TAC[real_div; GSYM REAL_POW_INV; SUM_LMUL] THEN REWRITE_TAC[REAL_POW_ADD; SUM_RMUL] THEN REWRITE_TAC[SUM_GP] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_LT_LMUL_EQ; CONJUNCT1 LT] THEN REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(REAL_ARITH `&0 < x * y ==> (&1 - x) * y < y`) THEN - MATCH_MP_TAC REAL_LT_MUL THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN - MATCH_MP_TAC REAL_POW_LT THEN CONV_TAC REAL_RAT_REDUCE_CONV] THEN + MATCH_MP_TAC REAL_LT_MUL THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_LT THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN MATCH_MP_TAC VSUM_NORM_LE THEN REWRITE_TAC[FINITE_NUMSEG] THEN X_GEN_TAC `t:num` THEN REWRITE_TAC[IN_NUMSEG; LE_0] THEN DISCH_TAC THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC @@ -8610,7 +8610,7 @@ let HAS_INTEGRAL_LIM_AT_POSINFINITY_GEN = prove SUBGOAL_THEN `{t | a <= drop t} = IMAGE (\x. lift a + x) {t | &0 <= drop t}` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_ELIM_THM; DROP_ADD; LIFT_DROP; REAL_LE_ADDR] THEN MESON_TAC[VECTOR_SUB_ADD2]; REWRITE_TAC[GSYM HAS_INTEGRAL_TRANSLATION]] THEN @@ -8664,7 +8664,7 @@ let HAS_INTEGRAL_LIM_SEQUENTIALLY = prove `integral(interval[vec 0,x]) (f:real^1->real^N) = integral(interval[vec 0,vec n]) f + integral(interval[vec n,x]) f` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC INTEGRAL_COMBINE THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_COMBINE THEN ASM_REWRITE_TAC[DROP_VEC] THEN MP_TAC(SPEC `drop x` FLOOR) THEN ASM_REAL_ARITH_TAC; ALL_TAC] THEN @@ -9242,7 +9242,7 @@ let SET_VARIATION_CMUL = prove MATCH_MP_TAC SUP_UNIQUE THEN REWRITE_TAC[FORALL_IN_GSPEC] THEN X_GEN_TAC `r:real` THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN ASM_SIMP_TAC[GSYM REAL_LE_RDIV_EQ; REAL_ARITH`&0 < abs x <=> ~(x = &0)`] THEN - CONV_TAC SYM_CONV THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN W(MP_TAC o PART_MATCH (lhs o rand) REAL_SUP_LE_EQ o lhand o snd) THEN REWRITE_TAC[FORALL_IN_GSPEC] THEN DISCH_THEN MATCH_MP_TAC THEN ASM_REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN @@ -9767,7 +9767,7 @@ let ABSOLUTELY_INTEGRABLE_CMUL_EQ = prove c = &0 \/ f absolutely_integrable_on s`, REWRITE_TAC[absolutely_integrable_on; INTEGRABLE_CMUL_EQ; NORM_MUL; LIFT_CMUL; REAL_ABS_ZERO] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; let ABSOLUTELY_INTEGRABLE_NEG = prove (`!f s. f absolutely_integrable_on s @@ -9920,7 +9920,7 @@ let ABSOLUTELY_INTEGRABLE_BOUNDED_SETVARIATION = prove MATCH_MP_TAC ABSOLUTELY_INTEGRABLE_ON_SUBINTERVAL THEN EXISTS_TAC `s:real^M->bool` THEN ASM_MESON_TAC[division_of; SUBSET_TRANS]; MATCH_MP_TAC REAL_EQ_IMP_LE THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC INTEGRAL_COMBINE_DIVISION_TOPDOWN THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_COMBINE_DIVISION_TOPDOWN THEN CONJ_TAC THENL [ALL_TAC; ASM_MESON_TAC[DIVISION_OF_UNION_SELF]] THEN MATCH_MP_TAC INTEGRABLE_ON_SUBDIVISION THEN MAP_EVERY EXISTS_TAC [`s:real^M->bool`; `d:(real^M->bool)->bool`] THEN @@ -10133,7 +10133,7 @@ let BOUNDED_SETVARIATION_ABSOLUTELY_INTEGRABLE_INTERVAL = prove GEN_REWRITE_TAC RAND_CONV [SWAP_EXISTS_THM] THEN AP_TERM_TAC THEN GEN_REWRITE_TAC I [FUN_EQ_THM] THEN X_GEN_TAC `i:real^M->bool` THEN REWRITE_TAC[] THEN - CONV_TAC(RAND_CONV UNWIND_CONV) THEN + (CONV_TAC "(RAND_CONV UNWIND_CONV)") (RAND_CONV UNWIND_CONV) THEN AP_TERM_TAC THEN GEN_REWRITE_TAC I [FUN_EQ_THM] THEN X_GEN_TAC `l:real^M->bool` THEN REWRITE_TAC[] THEN ASM_CASES_TAC `k:real^M->bool = i INTER l` THEN ASM_REWRITE_TAC[] THEN @@ -10188,7 +10188,7 @@ let BOUNDED_SETVARIATION_ABSOLUTELY_INTEGRABLE_INTERVAL = prove [GEN_REWRITE_TAC I [EXTENSION] THEN REWRITE_TAC[IN_ELIM_THM; IN_IMAGE; EXISTS_PAIR_THM; FORALL_PAIR_THM] THEN REWRITE_TAC[PAIR_EQ] THEN - CONV_TAC(REDEPTH_CONV UNWIND_CONV) THEN MESON_TAC[]; + (CONV_TAC "(REDEPTH_CONV UNWIND_CONV)") (REDEPTH_CONV UNWIND_CONV) THEN MESON_TAC[]; ALL_TAC] THEN W(MP_TAC o PART_MATCH (lhand o rand) SUM_IMAGE_NONZERO o rand o snd) THEN ANTS_TAC THENL @@ -10294,7 +10294,7 @@ let BOUNDED_SETVARIATION_ABSOLUTELY_INTEGRABLE_INTERVAL = prove `sum d' (\k. norm (integral k (f:real^M->real^N)))` THEN CONJ_TAC THENL [ALL_TAC; - MATCH_MP_TAC REAL_EQ_IMP_LE THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC REAL_EQ_IMP_LE THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN EXPAND_TAC "d'" THEN REWRITE_TAC[SUBSET; SET_RULE `a IN {f x |x| x IN s /\ ~(f x = b)} <=> @@ -10321,7 +10321,7 @@ let BOUNDED_SETVARIATION_ABSOLUTELY_INTEGRABLE_INTERVAL = prove (\(x,k:real^M->bool). abs(content k) * norm((f:real^M->real^N) x))` THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN CONJ_TAC THENL [SET_TAC[]; ALL_TAC] THEN REWRITE_TAC[FORALL_PAIR_THM] THEN MAP_EVERY X_GEN_TAC [`x:real^M`; `i:real^M->bool`] THEN @@ -10339,7 +10339,7 @@ let BOUNDED_SETVARIATION_ABSOLUTELY_INTEGRABLE_INTERVAL = prove [GEN_REWRITE_TAC I [EXTENSION] THEN REWRITE_TAC[IN_ELIM_THM; IN_IMAGE; EXISTS_PAIR_THM; FORALL_PAIR_THM] THEN REWRITE_TAC[PAIR_EQ] THEN - CONV_TAC(REDEPTH_CONV UNWIND_CONV) THEN MESON_TAC[]; + (CONV_TAC "(REDEPTH_CONV UNWIND_CONV)") (REDEPTH_CONV UNWIND_CONV) THEN MESON_TAC[]; ALL_TAC] THEN W(MP_TAC o PART_MATCH (lhand o rand) SUM_IMAGE_NONZERO o lhand o snd) THEN ANTS_TAC THENL @@ -10409,7 +10409,7 @@ let BOUNDED_SETVARIATION_ABSOLUTELY_INTEGRABLE_INTERVAL = prove EXISTS_TAC `sum {k INTER interval[u:real^M,v] | k IN d} content` THEN CONJ_TAC THENL [ONCE_REWRITE_TAC[SIMPLE_IMAGE] THEN ONCE_REWRITE_TAC[GSYM o_DEF] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_IMAGE_NONZERO THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_IMAGE_NONZERO THEN ASM_REWRITE_TAC[] THEN MAP_EVERY X_GEN_TAC [`k1:real^M->bool`; `k2:real^M->bool`] THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THEN @@ -10516,7 +10516,7 @@ let BOUNDED_SETVARIATION_ABSOLUTELY_INTEGRABLE = prove CONJ_TAC THENL [MATCH_MP_TAC(MESON[REAL_LE_REFL; LIFT_DROP] `lift x = y ==> x <= drop y`) THEN - ASM_SIMP_TAC[LIFT_SUM; o_DEF; LIFT_DROP] THEN CONV_TAC SYM_CONV THEN + ASM_SIMP_TAC[LIFT_SUM; o_DEF; LIFT_DROP] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_COMBINE_DIVISION_BOTTOMUP THEN FIRST_ASSUM(fun t -> ASM_REWRITE_TAC[MATCH_MP FORALL_IN_DIVISION t]); ALL_TAC] THEN @@ -10998,7 +10998,7 @@ let ABSOLUTELY_INTEGRABLE_ABS_EQ = prove CONJ_TAC THENL [ASM_SIMP_TAC[GSYM VSUM_COMPONENT] THEN MATCH_MP_TAC REAL_EQ_IMP_LE THEN AP_THM_TAC THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC INTEGRAL_COMBINE_DIVISION_TOPDOWN THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_COMBINE_DIVISION_TOPDOWN THEN ASM_REWRITE_TAC[]; MATCH_MP_TAC INTEGRAL_SUBSET_COMPONENT_LE THEN ASM_SIMP_TAC[LAMBDA_BETA; SUBSET_UNIV; REAL_ABS_POS]] THEN @@ -11153,7 +11153,7 @@ let INTEGRABLE_MIN_CONST_1 = prove MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[FUN_EQ_THM] THEN GEN_TAC THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM DROP_EQ; DROP_VEC; LIFT_DROP] THEN ASM_REAL_ARITH_TAC]; X_GEN_TAC `x:real^N` THEN DISCH_TAC THEN FIRST_X_ASSUM(MP_TAC o SPEC `x:real^N`) THEN @@ -11251,7 +11251,7 @@ let [HAS_INTEGRAL_PASTECART_SYM_UNIV; INTEGRAL_PASTECART_SYM_UNIV; GEN_REWRITE_TAC RAND_CONV [GSYM INTEGRAL_PASTECART_SYM]; GEN_REWRITE_TAC RAND_CONV [GSYM INTEGRABLE_PASTECART_SYM]; GEN_REWRITE_TAC RAND_CONV [GSYM ABSOLUTELY_INTEGRABLE_PASTECART_SYM]] THEN - TRY AP_THM_TAC THEN AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + TRY AP_THM_TAC THEN AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_UNIV] THEN REWRITE_TAC[EXISTS_PASTECART; FSTCART_PASTECART; SNDCART_PASTECART] THEN REWRITE_TAC[FORALL_PASTECART] THEN MESON_TAC[]);; @@ -11299,7 +11299,7 @@ let LIFT_INTEGRAL_COMPONENT = prove REPEAT STRIP_TAC THEN SUBGOAL_THEN `?j. 1 <= j /\ j <= dimindex(:N) /\ !z:real^N. z$k = z$j` CHOOSE_TAC THENL [REWRITE_TAC[FINITE_INDEX_INRANGE]; ALL_TAC] THEN - ASM_REWRITE_TAC[] THEN CONV_TAC SYM_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_UNIQUE THEN FIRST_X_ASSUM(MP_TAC o MATCH_MP INTEGRABLE_INTEGRAL) THEN GEN_REWRITE_TAC LAND_CONV [HAS_INTEGRAL_COMPONENTWISE] THEN @@ -12042,7 +12042,7 @@ let INTEGRAL_ZERO_ON_SUBINTERVALS_IMP_ZERO_AE = prove EXISTS_TAC `(\x. vec 0):(real^M->bool)->real^N` THEN REWRITE_TAC[HAS_BOUNDED_SETVARIATION_ON_0] THEN REWRITE_TAC[INTERVAL_NE_EMPTY; SUBSET_INTERVAL] THEN REPEAT STRIP_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC INTEGRAL_UNIQUE THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_UNIQUE THEN FIRST_X_ASSUM MATCH_MP_TAC THEN RULE_ASSUM_TAC(REWRITE_RULE[IN_INTERVAL; INTERVAL_NE_EMPTY]) THEN REWRITE_TAC[IN_INTERVAL] THEN ASM_MESON_TAC[REAL_LE_REFL; REAL_LE_TRANS]; @@ -12851,7 +12851,7 @@ let LIEB = prove (integral s (\x. lift(norm(f n x))) - integral s (\x. lift(norm(g x))))) --> vec 0) sequentially`, - (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) + ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) [GSYM INTEGRAL_SUB; ABSOLUTELY_INTEGRABLE_SUB; ETA_AX; ABSOLUTELY_INTEGRABLE_NORM; ABSOLUTELY_INTEGRABLE_IMP_INTEGRABLE] THEN REPEAT STRIP_TAC THEN @@ -12864,11 +12864,11 @@ let LIEB = prove DOMINATED_CONVERGENCE_AE) THEN REWRITE_TAC[LIFT_SUB; DROP_CMUL; INTEGRAL_0; INTEGRABLE_0] THEN DISCH_THEN MATCH_MP_TAC THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) [GSYM INTEGRAL_SUB; ABSOLUTELY_INTEGRABLE_SUB; ETA_AX; INTEGRABLE_CMUL; ABSOLUTELY_INTEGRABLE_NORM; ABSOLUTELY_INTEGRABLE_IMP_INTEGRABLE] THEN CONJ_TAC THENL - [REWRITE_TAC[GSYM LIFT_SUB; NORM_LIFT; LIFT_DROP] THEN CONV_TAC NORM_ARITH; + [REWRITE_TAC[GSYM LIFT_SUB; NORM_LIFT; LIFT_DROP] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; REPEAT STRIP_TAC THEN MATCH_MP_TAC LIM_NULL_SUB THEN ASM_SIMP_TAC[GSYM LIM_NULL_NORM; GSYM LIM_NULL; LIM_NORM]]);; @@ -13014,7 +13014,7 @@ let FUNDAMENTAL_THEOREM_OF_CALCULUS_BARTLE = prove REWRITE_TAC[GSYM VSUM_NEG] THEN MATCH_MP_TAC VSUM_EQ THEN EXPAND_TAC "g" THEN SIMP_TAC[FORALL_IN_GSPEC; VECTOR_MUL_RZERO] THEN - REPEAT STRIP_TAC THEN CONV_TAC VECTOR_ARITH]; + REPEAT STRIP_TAC THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH]; ALL_TAC] THEN SUBGOAL_THEN `e / &2 = e / &2 / (drop b - drop a) * (drop b - drop a)` SUBST1_TAC THENL @@ -13293,9 +13293,9 @@ let FUNDAMENTAL_THEOREM_OF_CALCULUS_STRONG = prove ASM_SIMP_TAC[FINITE_IMAGE; FINITE_INTER; FINITE_NUMSEG] THEN SIMP_TAC[REAL_LE_INV_EQ; REAL_POW_LE; REAL_POS] THEN ASM SET_TAC[]; REWRITE_TAC[SUM_GP; LT; SUB_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `(&1 - x) / (&1 / &2) <= &2 <=> &0 <= x`] THEN - MATCH_MP_TAC REAL_POW_LE THEN CONV_TAC REAL_RAT_REDUCE_CONV]);; + MATCH_MP_TAC REAL_POW_LE THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]);; let FUNDAMENTAL_THEOREM_OF_CALCULUS_INTERIOR_STRONG = prove (`!f:real^1->real^N f' s a b. @@ -13642,7 +13642,7 @@ let EQUIINTEGRABLE_ON_SPLIT = prove ==> vsum {x,g k |x,k| (x,k) IN p /\ ~(g k = {})} (\(x,k). content k % f x) = vsum (IMAGE (\(x,k). x,g k) p) (\(x,k). content k % f x)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN ASM_SIMP_TAC[FINITE_IMAGE; lemma2] THEN REWRITE_TAC[IMP_CONJ; FORALL_IN_IMAGE] THEN REWRITE_TAC[FORALL_PAIR_THM; SUBSET; IN_IMAGE; EXISTS_PAIR_THM] THEN @@ -13806,7 +13806,7 @@ let EQUIINTEGRABLE_DIVISION = prove d division_of interval[a,b] ==> (fs equiintegrable_on interval[a,b] <=> !i. i IN d ==> fs equiintegrable_on i)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC OPERATIVE_DIVISION_AND THEN ASM_REWRITE_TAC[operative; NEUTRAL_AND] THEN POP_ASSUM_LIST(K ALL_TAC) THEN CONJ_TAC THENL @@ -14106,7 +14106,7 @@ let EQUIINTEGRABLE_SUM = prove REWRITE_TAC[IMP_CONJ; RIGHT_FORALL_IMP_THM; FORALL_IN_GSPEC] THEN REWRITE_TAC[IMP_IMP; GSYM CONJ_ASSOC; RIGHT_IMP_FORALL_THM] THEN STRIP_TAC THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [INTEGRABLE_CMUL; INTEGRABLE_VSUM; ETA_AX; INTEGRAL_VSUM] THEN X_GEN_TAC `e:real` THEN DISCH_TAC THEN FIRST_X_ASSUM(MP_TAC o SPEC `e / &2`) THEN ASM_REWRITE_TAC[REAL_HALF] THEN @@ -14165,7 +14165,7 @@ let EQUIINTEGRABLE_SUM = prove ASM_SIMP_TAC[GSYM VSUM_LMUL; GSYM VSUM_SUB] THEN MATCH_MP_TAC VSUM_EQ THEN REWRITE_TAC[FORALL_PAIR_THM] THEN MAP_EVERY X_GEN_TAC [`x:real^M`; `k:real^M->bool`] THEN DISCH_TAC THEN - AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC INTEGRAL_CMUL THEN + AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_CMUL THEN RULE_ASSUM_TAC(REWRITE_RULE[TAGGED_DIVISION_OF]) THEN ASM_MESON_TAC[INTEGRABLE_SUBINTERVAL]);; @@ -14657,7 +14657,7 @@ let SUM_CONTENT_AREA_OVER_THIN_DIVISION = prove REWRITE_TAC[real_div; REAL_ENTIRE] THEN DISJ1_TAC THEN (MATCH_MP_TAC DIVISION_SPLIT_LEFT_INJ ORELSE MATCH_MP_TAC DIVISION_SPLIT_RIGHT_INJ) THEN ASM_MESON_TAC[]; - DISCH_THEN(SUBST1_TAC o SYM) THEN CONV_TAC SYM_CONV THEN + DISCH_THEN(SUBST1_TAC o SYM) THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN CONJ_TAC THENL [SET_TAC[]; ALL_TAC] THEN GEN_TAC THEN DISCH_THEN(MP_TAC o MATCH_MP (SET_RULE `x IN IMAGE f d /\ @@ -14905,7 +14905,7 @@ let BOUNDED_EQUIINTEGRAL_OVER_THIN_TAGGED_PARTIAL_DIVISION = prove REWRITE_TAC[REAL_ARITH `&2 * e / &8 / x * y = e / &4 * y / x`] THEN REWRITE_TAC[real_div; GSYM REAL_MUL_ASSOC] THEN MATCH_MP_TAC REAL_LE_LMUL THEN ASM_SIMP_TAC[REAL_LT_IMP_LE] THEN - MATCH_MP_TAC REAL_LE_LMUL THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_LE_LMUL THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ONCE_REWRITE_TAC[REAL_ARITH `a * inv b * inv c:real = (a / c) / b`] THEN ASM_SIMP_TAC[REAL_LE_DIV2_EQ] THEN MATCH_MP_TAC(REAL_ARITH `abs x <= e ==> x <= e`) THEN @@ -16486,7 +16486,7 @@ let INTEGRABLE_INCREASING_PRODUCT_UNIV = prove ==> norm(ab - (xy + yb)) < d ==> norm(ab - yb) < d ==> norm(xy:real^1) < e`) THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; SUBGOAL_THEN `interval[x:real^1,y] = {}` SUBST1_TAC THENL [REWRITE_TAC[INTERVAL_EQ_EMPTY_1] THEN ASM_REAL_ARITH_TAC; REWRITE_TAC[INTEGRAL_EMPTY; NORM_0] THEN @@ -16514,7 +16514,7 @@ let INTEGRABLE_INCREASING_PRODUCT_UNIV = prove ==> norm(ab - (ax + xy)) < d ==> norm(ab - ax) < d ==> norm(xy:real^1) < e`) THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; SUBGOAL_THEN `interval[x:real^1,y] = {}` SUBST1_TAC THENL [REWRITE_TAC[INTERVAL_EQ_EMPTY_1] THEN ASM_REAL_ARITH_TAC; REWRITE_TAC[INTEGRAL_EMPTY; NORM_0] THEN @@ -17207,7 +17207,7 @@ let HAS_BOUNDED_VARIATION_ON_IMP_BOUNDED = prove REWRITE_TAC[INTERVAL_NE_EMPTY_1; REAL_LE_TOTAL] THEN ANTS_TAC THENL [MESON_TAC[NORM_SUB]; ALL_TAC] THEN DISCH_THEN(MP_TAC o SPECL [`a:real^1`; `b:real^1`]) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NORM_ARITH);; + ASM_REWRITE_TAC[] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH);; let HAS_BOUNDED_VARIATION_ON_IMP_BOUNDED_ON_INTERVAL = prove (`!f:real^1->real^N a b. @@ -17261,7 +17261,7 @@ let HAS_BOUNDED_VARIATION_ON_BILINEAR = prove TRANS_TAC REAL_LE_TRANS `norm((bop:real^M->real^N->real^P) (f v) (g v) - bop (f v) (g u)) + norm(bop (f v) (g u) - bop (f(u:real^1)) (g u))` THEN - CONJ_TAC THENL [CONV_TAC NORM_ARITH; ALL_TAC] THEN + CONJ_TAC THENL [(CONV_TAC "NORM_ARITH") NORM_ARITH; ALL_TAC] THEN MATCH_MP_TAC REAL_LE_ADD2 THEN CONJ_TAC THEN FIRST_ASSUM(fun th -> REWRITE_TAC[GSYM(MATCH_MP BILINEAR_LSUB th)] THEN REWRITE_TAC[GSYM(MATCH_MP BILINEAR_RSUB th)]) THEN @@ -17327,7 +17327,7 @@ let VECTOR_VARIATION_CONST_EQ = prove `a:real^1`; `b:real^1`] VECTOR_VARIATION_GE_NORM_FUNCTION) THEN ANTS_TAC THENL [ASM_MESON_TAC[IS_INTERVAL_CONVEX_1; CONVEX_CONTAINS_SEGMENT]; - ASM_REWRITE_TAC[] THEN CONV_TAC NORM_ARITH]; + ASM_REWRITE_TAC[] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]; DISCH_THEN(X_CHOOSE_TAC `c:real^N`) THEN MP_TAC(ISPECL [`f:real^1->real^N`; `(\x. c):real^1->real^N`; `s:real^1->bool`] VECTOR_VARIATION_EQ) THEN @@ -17608,7 +17608,7 @@ let VECTOR_VARIATION_LE_UNION = prove `s INTER t = {} ==> s' SUBSET s /\ t' SUBSET t ==> s' INTER t' = {}`)) THEN ASM_SIMP_TAC[SUBSET_INTERIOR]; MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] REAL_LE_TRANS) THEN - MATCH_MP_TAC REAL_EQ_IMP_LE THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC REAL_EQ_IMP_LE THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[REAL_ADD_SYM] THEN MATCH_MP_TAC SUM_UNION_NONZERO THEN REPEAT(CONJ_TAC THENL [ASM_MESON_TAC[DIVISION_OF_FINITE]; ALL_TAC]) THEN REWRITE_TAC[IN_INTER; IMP_CONJ] THEN FIRST_ASSUM(fun th -> @@ -17772,7 +17772,7 @@ let HAS_BOUNDED_VARIATION_ON_UNION,VECTOR_VARIATION_UNION_LE = ASM_SIMP_TAC[INTERVAL_LOWERBOUND_NONEMPTY; INTERVAL_UPPERBOUND_NONEMPTY] THEN REWRITE_TAC[CONJ_ASSOC] THEN - CONJ_TAC THENL [ALL_TAC; CONV_TAC NORM_ARITH] THEN + CONJ_TAC THENL [ALL_TAC; (CONV_TAC "NORM_ARITH") NORM_ARITH] THEN ONCE_REWRITE_TAC[GSYM CONJ_ASSOC] THEN CONJ_TAC THENL [CONJ_TAC THEN W(MP_TAC o PART_MATCH lhand INTERVAL_SUBSET_SEGMENT_1 o @@ -17924,7 +17924,7 @@ let VECTOR_VARIATION_SPLIT = prove MATCH_MP_TAC MONO_FORALL THEN X_GEN_TAC `v:real^1` THEN DISCH_THEN(MP_TAC o SPEC `lift a`) THEN ASM_REWRITE_TAC[IN_ELIM_THM; LIFT_DROP; REAL_LE_REFL] THEN - CONV_TAC TAUT; + (CONV_TAC "TAUT") TAUT; CONJ_TAC THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ] HAS_BOUNDED_VARIATION_ON_SUBSET)) THEN SET_TAC[]]]]);; @@ -19147,7 +19147,7 @@ let HAS_BOUNDED_VARIATION_ON_LINEAR_IMAGE = prove ONCE_REWRITE_TAC[VECTOR_ARITH `c % x:real^N = c % x + vec 0`] THEN ASM_REWRITE_TAC[IMAGE_AFFINITY_INTERVAL] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[VECTOR_ADD_RID] THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[INTERVAL_EQ_EMPTY_1; DROP_CMUL] THENL + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[INTERVAL_EQ_EMPTY_1; DROP_CMUL] THENL [ALL_TAC; ONCE_REWRITE_TAC[REAL_ARITH `c * y < c * x <=> --c * x < --c * y`]] THEN MATCH_MP_TAC REAL_LT_LMUL THEN @@ -19344,7 +19344,7 @@ let HAS_BOUNDED_VARIATION_ON_INTERIOR = prove ASM_REWRITE_TAC[REAL_SUB_LE; GSYM INTERVAL_NE_EMPTY_1] THEN SIMP_TAC[REAL_LE_INV_EQ; REAL_POW_LE; REAL_POS] THEN MATCH_MP_TAC REAL_INV_LE_1 THEN MATCH_MP_TAC REAL_POW_LE_1 THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC]) THENL [GEN_REWRITE_TAC LAND_CONV [GSYM VECTOR_SUB_RZERO] THEN @@ -19358,14 +19358,14 @@ let HAS_BOUNDED_VARIATION_ON_INTERIOR = prove REWRITE_TAC[REAL_ABS_INV; REAL_ABS_POW; REAL_ABS_NUM] THEN X_GEN_TAC `d:real` THEN DISCH_TAC THEN MP_TAC(ISPECL [`inv(&2)`; `d:real`] REAL_ARCH_POW_INV) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `N:num` THEN REWRITE_TAC[REAL_POW_INV; real_div; REAL_MUL_LID] THEN DISCH_TAC THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN TRANS_TAC REAL_LET_TRANS `inv(&2 pow N)` THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC REAL_LE_INV2 THEN REWRITE_TAC[REAL_LT_POW2] THEN MATCH_MP_TAC REAL_POW_MONO THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN REWRITE_TAC[EVENTUALLY_SEQUENTIALLY] THEN EXISTS_TAC `2` THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN @@ -19413,7 +19413,7 @@ let HAS_BOUNDED_VARIATION_ON_INTERIOR = prove ASM_REWRITE_TAC[REAL_SUB_LE; GSYM INTERVAL_NE_EMPTY_1] THEN SIMP_TAC[GSYM real_div; REAL_LE_LDIV_EQ; REAL_LT_POW2] THEN REWRITE_TAC[REAL_ARITH `&2 <= &1 * x <=> &2 pow 1 <= x`] THEN - MATCH_MP_TAC REAL_POW_MONO THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC; ALL_TAC] THEN DISCH_THEN(MP_TAC o MATCH_MP (REAL_RING @@ -19427,15 +19427,15 @@ let HAS_BOUNDED_VARIATION_ON_INTERIOR = prove DISCH_THEN(MP_TAC o MATCH_MP (REAL_ARITH `x = abs(&1 - x) ==> x = inv(&2)`)) THEN MATCH_MP_TAC(REAL_ARITH `x < y ==> x = y ==> F`) THEN - MATCH_MP_TAC REAL_LT_INV2 THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_LT_INV2 THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN GEN_REWRITE_TAC LAND_CONV [GSYM REAL_POW_1] THEN - MATCH_MP_TAC REAL_POW_MONO_LT THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO_LT THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC; DISCH_THEN(fun th -> REWRITE_TAC[th]) THEN REWRITE_TAC[o_DEF]] THEN ANTS_TAC THENL [ALL_TAC; MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] REAL_LE_TRANS) THEN - MATCH_MP_TAC REAL_EQ_IMP_LE THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC REAL_EQ_IMP_LE THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[SUM_RESTRICT_SET] THEN MATCH_MP_TAC SUM_EQ THEN FIRST_ASSUM(fun th -> GEN_REWRITE_TAC I [MATCH_MP FORALL_IN_DIVISION_NONEMPTY th]) THEN @@ -19456,7 +19456,7 @@ let HAS_BOUNDED_VARIATION_ON_INTERIOR = prove ASM_REWRITE_TAC[REAL_SUB_LE; GSYM INTERVAL_NE_EMPTY_1] THEN SIMP_TAC[GSYM real_div; REAL_LE_LDIV_EQ; REAL_LT_POW2] THEN REWRITE_TAC[REAL_ARITH `&2 <= &1 * x <=> &2 pow 1 <= x`] THEN - MATCH_MP_TAC REAL_POW_MONO THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC] THEN CONJ_TAC THENL [ALL_TAC; @@ -19484,7 +19484,7 @@ let HAS_BOUNDED_VARIATION_ON_INTERIOR = prove ASM_REWRITE_TAC[REAL_SUB_LE; GSYM INTERVAL_NE_EMPTY_1] THEN SIMP_TAC[GSYM real_div; REAL_LE_LDIV_EQ; REAL_LT_POW2] THEN REWRITE_TAC[REAL_ARITH `&2 <= &1 * x <=> &2 pow 1 <= x`] THEN - MATCH_MP_TAC REAL_POW_MONO THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC; REWRITE_TAC[GSYM(CONJUNCT1 INTERIOR_INTERVAL)] THEN MATCH_MP_TAC SUBSET_INTERIOR THEN @@ -19507,7 +19507,7 @@ let HAS_BOUNDED_VARIATION_ON_INTERIOR = prove ASM_REWRITE_TAC[REAL_SUB_LE; GSYM INTERVAL_NE_EMPTY_1] THEN SIMP_TAC[GSYM real_div; REAL_LE_LDIV_EQ; REAL_LT_POW2] THEN REWRITE_TAC[REAL_ARITH `&2 <= &1 * x <=> &2 pow 1 <= x`] THEN - MATCH_MP_TAC REAL_POW_MONO THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC; ALL_TAC] THEN FIRST_ASSUM(fun th -> @@ -19537,7 +19537,7 @@ let HAS_BOUNDED_VARIATION_ON_INTERIOR = prove SIMP_TAC[REAL_LE_INV_EQ; REAL_POW_LE; REAL_POS] THEN SIMP_TAC[GSYM real_div; REAL_LE_LDIV_EQ; REAL_LT_POW2] THEN REWRITE_TAC[REAL_ARITH `&2 <= &1 * x <=> &2 pow 1 <= x`] THEN - MATCH_MP_TAC REAL_POW_MONO THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC);; let HAS_BOUNDED_VARIATION_ON_INTERIOR_EQ = prove @@ -20220,7 +20220,7 @@ let VECTOR_VARIATION_CONTINUOUS_LEFT = prove vector_variation(interval [x,c]) (\x. lift(f x$i))` (fun th -> ASM_SIMP_TAC[th]) THENL - [REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + [REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VECTOR_VARIATION_COMBINE THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC HAS_BOUNDED_VARIATION_ON_SUBSET THEN @@ -20503,7 +20503,7 @@ let VECTOR_VARIATION_CONTINUOUS_RIGHT = prove vector_variation(interval [c,x]) (\x. lift(f x$i))` (fun th -> ASM_SIMP_TAC[th]) THENL - [REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + [REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VECTOR_VARIATION_COMBINE THEN RULE_ASSUM_TAC(REWRITE_RULE[IN_INTERVAL_1]) THEN ASM_REWRITE_TAC[] THEN @@ -20976,7 +20976,7 @@ let VECTOR_VARIATION_INTEGRAL_NORM_DERIVATIVE = prove MAP_EVERY X_GEN_TAC [`u:real^1`; `v:real^1`] THEN SIMP_TAC[INTERVAL_NE_EMPTY_1; INTERVAL_LOWERBOUND_1; INTERVAL_UPPERBOUND_1] THEN - STRIP_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC INTEGRAL_UNIQUE THEN + STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_UNIQUE THEN MATCH_MP_TAC FUNDAMENTAL_THEOREM_OF_CALCULUS_STRONG THEN EXISTS_TAC `s:real^1->bool` THEN ASM_REWRITE_TAC[] THEN CONJ_TAC THENL [ASM_MESON_TAC[CONTINUOUS_ON_SUBSET]; ALL_TAC] THEN @@ -21548,7 +21548,7 @@ let FACTOR_CONTINUOUS_THROUGH_VARIATION = prove FIRST_ASSUM(MP_TAC o MATCH_MP FACTOR_THROUGH_VARIATION) THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `g:real^1->real^N` THEN DISCH_THEN(STRIP_ASSUME_TAC o GSYM) THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN ASM_REWRITE_TAC[] THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN ASM_REWRITE_TAC[] THEN ONCE_REWRITE_TAC[SET_RULE `IMAGE (\x. f x) s = {f x | x IN s}`] THEN SUBGOAL_THEN `{ lift(vector_variation (interval[a,u]) (f:real^1->real^N)) | u | @@ -21598,7 +21598,7 @@ let FACTOR_CONTINUOUS_THROUGH_VARIATION = prove [MATCH_MP_TAC REAL_EQ_IMP_LE THEN MATCH_MP_TAC VECTOR_VARIATION_EQ THEN X_GEN_TAC `v:real^1` THEN REWRITE_TAC[IN_INTERVAL_1; o_DEF] THEN STRIP_TAC THEN - CONV_TAC SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[IN_INTERVAL_1] THEN ASM_REAL_ARITH_TAC; W(MP_TAC o PART_MATCH (lhand o rand) VECTOR_VARIATION_COMPOSE_INCREASING o lhand o snd) THEN @@ -21736,7 +21736,7 @@ let HELLY_SELECTION_INCREASING = prove ALL_TAC] THEN SUBGOAL_THEN `!x. x IN t ==> (h:real^1->real^1) x = g x` ASSUME_TAC THENL [REPEAT STRIP_TAC THEN EXPAND_TAC "g" THEN - REWRITE_TAC[GSYM DROP_EQ; LIFT_DROP] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[GSYM DROP_EQ; LIFT_DROP] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_SUP_UNIQUE THEN REWRITE_TAC[FORALL_IN_GSPEC; EXISTS_IN_GSPEC] THEN ASM_MESON_TAC[REAL_LE_REFL]; @@ -22314,7 +22314,7 @@ let CONVEX_ON_INDEFINITE_INTEGRAL_INCREASING = prove IMAGE_AFFINITY_INTERVAL; INTERVAL_EQ_EMPTY_1] THEN ASM_SIMP_TAC[DROP_MIDPOINT; REAL_ARITH `x <= y ==> ~(y < (x + y) / &2)`] THEN - REWRITE_TAC[VECTOR_MUL_ASSOC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[VECTOR_MUL_ASSOC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MP_TAC(ISPECL [`f:real^1->real^1`; `a:real^1`] INTEGRAL_COMBINE) THEN DISCH_THEN(fun th -> MP_TAC(ISPECL [`y:real^1`; `x:real^1`] th) THEN @@ -22701,7 +22701,7 @@ let ABSOLUTELY_SETCONTINUOUS_ON_MUL = prove DISCH_TAC THEN X_GEN_TAC `e:real` THEN DISCH_TAC THEN FIRST_X_ASSUM(CONJUNCTS_THEN2 (MP_TAC o SPEC `e / &2`) (MP_TAC o SPEC `&2`)) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[REAL_HALF; LEFT_IMP_EXISTS_THM] THEN X_GEN_TAC `r1:real` THEN STRIP_TAC THEN X_GEN_TAC `r2:real` THEN STRIP_TAC THEN @@ -22925,7 +22925,7 @@ let ABSOLUTELY_SETCONTINUOUS_ON_IMP_HAS_BOUNDED_SETVARIATION_ON = prove ==> interior t SUBSET interior s ==> interior t = {}`)) THEN MATCH_MP_TAC SUBSET_INTERIOR THEN ASM SET_TAC[]; DISCH_THEN(SUBST1_TAC o SYM) THEN REWRITE_TAC[GSYM SIMPLE_IMAGE] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_EQ_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_EQ_SUPERSET THEN REWRITE_TAC[IMP_CONJ; FORALL_IN_GSPEC] THEN REPEAT CONJ_TAC THENL [ONCE_REWRITE_TAC[SIMPLE_IMAGE_GEN] THEN MATCH_MP_TAC FINITE_IMAGE THEN MATCH_MP_TAC FINITE_RESTRICT THEN @@ -23016,7 +23016,7 @@ let ABSOLUTELY_SETCONTINUOUS_ON_IMP_HAS_BOUNDED_SETVARIATION_ON = prove DISCH_THEN(SUBST1_TAC o SYM) THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REAL_ARITH `x < &1 ==> x = y ==> y <= &1`)) THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[o_DEF] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[o_DEF] THEN MATCH_MP_TAC SUM_SUPERSET THEN CONJ_TAC THENL [SET_TAC[]; ALL_TAC] THEN REWRITE_TAC[IMP_CONJ; FORALL_IN_IMAGE; NORM_EQ_0] THEN X_GEN_TAC `k:real^M->bool` THEN @@ -23211,7 +23211,7 @@ let ABSOLUTELY_CONTINUOUS_ON_NORM = prove MATCH_MP_TAC(ONCE_REWRITE_RULE[IMP_CONJ_ALT] ABSOLUTELY_CONTINUOUS_COMPARISON) THEN REPEAT STRIP_TAC THEN REWRITE_TAC[DIST_LIFT] THEN - CONV_TAC NORM_ARITH);; + (CONV_TAC "NORM_ARITH") NORM_ARITH);; let ABSOLUTELY_CONTINUOUS_ON_MAX = prove (`!f g s. f absolutely_continuous_on s /\ g absolutely_continuous_on s @@ -23370,7 +23370,7 @@ let ABSOLUTELY_CONTINUOUS_ON_BILINEAR = prove [ALL_TAC; MATCH_MP_TAC REAL_EQ_IMP_LE THEN REPEAT(FIRST_X_ASSUM(MP_TAC o MATCH_MP REAL_LT_IMP_NZ)) THEN - CONV_TAC REAL_FIELD] THEN + (CONV_TAC "REAL_FIELD") REAL_FIELD] THEN MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `D * B1 * sum d (\k. norm((g:real^1->real^N)(interval_upperbound k) - g(interval_lowerbound k))) + @@ -23389,7 +23389,7 @@ let ABSOLUTELY_CONTINUOUS_ON_BILINEAR = prove TRANS_TAC REAL_LE_TRANS `norm((bop:real^M->real^N->real^P) (f v) (g v) - bop (f v) (g u)) + norm(bop (f v) (g u) - bop (f(u:real^1)) (g u))` THEN - CONJ_TAC THENL [CONV_TAC NORM_ARITH; ALL_TAC] THEN + CONJ_TAC THENL [(CONV_TAC "NORM_ARITH") NORM_ARITH; ALL_TAC] THEN MATCH_MP_TAC REAL_LE_ADD2 THEN CONJ_TAC THEN FIRST_ASSUM(fun th -> REWRITE_TAC[GSYM(MATCH_MP BILINEAR_LSUB th)] THEN REWRITE_TAC[GSYM(MATCH_MP BILINEAR_RSUB th)]) THEN @@ -23525,7 +23525,7 @@ let ABSOLUTELY_CONTINUOUS_ON_INTERIOR = prove ASM_REWRITE_TAC[REAL_SUB_LE; GSYM INTERVAL_NE_EMPTY_1] THEN SIMP_TAC[REAL_LE_INV_EQ; REAL_POW_LE; REAL_POS] THEN MATCH_MP_TAC REAL_INV_LE_1 THEN MATCH_MP_TAC REAL_POW_LE_1 THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC]) THENL [GEN_REWRITE_TAC LAND_CONV [GSYM VECTOR_SUB_RZERO] THEN @@ -23539,14 +23539,14 @@ let ABSOLUTELY_CONTINUOUS_ON_INTERIOR = prove REWRITE_TAC[REAL_ABS_INV; REAL_ABS_POW; REAL_ABS_NUM] THEN X_GEN_TAC `d:real` THEN DISCH_TAC THEN MP_TAC(ISPECL [`inv(&2)`; `d:real`] REAL_ARCH_POW_INV) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `N:num` THEN REWRITE_TAC[REAL_POW_INV; real_div; REAL_MUL_LID] THEN DISCH_TAC THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN TRANS_TAC REAL_LET_TRANS `inv(&2 pow N)` THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC REAL_LE_INV2 THEN REWRITE_TAC[REAL_LT_POW2] THEN MATCH_MP_TAC REAL_POW_MONO THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN REWRITE_TAC[EVENTUALLY_SEQUENTIALLY] THEN EXISTS_TAC `2` THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN @@ -23594,7 +23594,7 @@ let ABSOLUTELY_CONTINUOUS_ON_INTERIOR = prove ASM_REWRITE_TAC[REAL_SUB_LE; GSYM INTERVAL_NE_EMPTY_1] THEN SIMP_TAC[GSYM real_div; REAL_LE_LDIV_EQ; REAL_LT_POW2] THEN REWRITE_TAC[REAL_ARITH `&2 <= &1 * x <=> &2 pow 1 <= x`] THEN - MATCH_MP_TAC REAL_POW_MONO THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC; ALL_TAC] THEN DISCH_THEN(MP_TAC o MATCH_MP (REAL_RING @@ -23608,9 +23608,9 @@ let ABSOLUTELY_CONTINUOUS_ON_INTERIOR = prove DISCH_THEN(MP_TAC o MATCH_MP (REAL_ARITH `x = abs(&1 - x) ==> x = inv(&2)`)) THEN MATCH_MP_TAC(REAL_ARITH `x < y ==> x = y ==> F`) THEN - MATCH_MP_TAC REAL_LT_INV2 THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_LT_INV2 THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN GEN_REWRITE_TAC LAND_CONV [GSYM REAL_POW_1] THEN - MATCH_MP_TAC REAL_POW_MONO_LT THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO_LT THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC; DISCH_THEN(fun th -> REWRITE_TAC[th]) THEN REWRITE_TAC[o_DEF]] THEN ANTS_TAC THENL @@ -23636,7 +23636,7 @@ let ABSOLUTELY_CONTINUOUS_ON_INTERIOR = prove ASM_REWRITE_TAC[REAL_SUB_LE; GSYM INTERVAL_NE_EMPTY_1] THEN SIMP_TAC[GSYM real_div; REAL_LE_LDIV_EQ; REAL_LT_POW2] THEN REWRITE_TAC[REAL_ARITH `&2 <= &1 * x <=> &2 pow 1 <= x`] THEN - MATCH_MP_TAC REAL_POW_MONO THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC] THEN REPEAT CONJ_TAC THENL [ALL_TAC; @@ -23664,7 +23664,7 @@ let ABSOLUTELY_CONTINUOUS_ON_INTERIOR = prove ASM_REWRITE_TAC[REAL_SUB_LE; GSYM INTERVAL_NE_EMPTY_1] THEN SIMP_TAC[GSYM real_div; REAL_LE_LDIV_EQ; REAL_LT_POW2] THEN REWRITE_TAC[REAL_ARITH `&2 <= &1 * x <=> &2 pow 1 <= x`] THEN - MATCH_MP_TAC REAL_POW_MONO THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC; REWRITE_TAC[GSYM(CONJUNCT1 INTERIOR_INTERVAL)] THEN MATCH_MP_TAC SUBSET_INTERIOR THEN @@ -23691,7 +23691,7 @@ let ABSOLUTELY_CONTINUOUS_ON_INTERIOR = prove SIMP_TAC[REAL_LE_INV_EQ; REAL_POW_LE; REAL_POS] THEN SIMP_TAC[GSYM real_div; REAL_LE_LDIV_EQ; REAL_LT_POW2] THEN REWRITE_TAC[REAL_ARITH `&2 <= &1 * x <=> &2 pow 1 <= x`] THEN - MATCH_MP_TAC REAL_POW_MONO THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC] THEN SIMP_TAC[division_of; SET_RULE `!x. x IN s ==> x SUBSET UNIONS s`] THEN ASM_SIMP_TAC[FINITE_IMAGE; FINITE_RESTRICT; FORALL_IN_IMAGE] THEN @@ -23711,7 +23711,7 @@ let ABSOLUTELY_CONTINUOUS_ON_INTERIOR = prove ASM_REWRITE_TAC[REAL_SUB_LE; GSYM INTERVAL_NE_EMPTY_1] THEN SIMP_TAC[GSYM real_div; REAL_LE_LDIV_EQ; REAL_LT_POW2] THEN REWRITE_TAC[REAL_ARITH `&2 <= &1 * x <=> &2 pow 1 <= x`] THEN - MATCH_MP_TAC REAL_POW_MONO THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC; ALL_TAC] THEN FIRST_ASSUM(fun th -> @@ -23741,7 +23741,7 @@ let ABSOLUTELY_CONTINUOUS_ON_INTERIOR = prove SIMP_TAC[REAL_LE_INV_EQ; REAL_POW_LE; REAL_POS] THEN SIMP_TAC[GSYM real_div; REAL_LE_LDIV_EQ; REAL_LT_POW2] THEN REWRITE_TAC[REAL_ARITH `&2 <= &1 * x <=> &2 pow 1 <= x`] THEN - MATCH_MP_TAC REAL_POW_MONO THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC);; let ABSOLUTELY_CONTINUOUS_ON_INTERIOR_EQ = prove @@ -23991,7 +23991,7 @@ let RECTIFIABLE_PATH_JOIN = prove MP_TAC(ISPECL [`g1 ++ g2:real^1->real^N`; `vec 0:real^1`; `vec 1:real^1`; `lift(&1 / &2)`] HAS_BOUNDED_VARIATION_ON_COMBINE) THEN - REWRITE_TAC[DROP_VEC; LIFT_DROP] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[DROP_VEC; LIFT_DROP] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[joinpaths] THEN BINOP_TAC THEN MATCH_MP_TAC EQ_TRANS THENL [EXISTS_TAC @@ -24006,7 +24006,7 @@ let RECTIFIABLE_PATH_JOIN = prove [ALL_TAC; REWRITE_TAC[HAS_BOUNDED_VARIATION_AFFINITY_EQ] THEN REWRITE_TAC[IMAGE_AFFINITY_INTERVAL; INTERVAL_EQ_EMPTY_1] THEN - REWRITE_TAC[DROP_VEC; LIFT_DROP] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[DROP_VEC; LIFT_DROP] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN AP_TERM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[CONS_11; PAIR_EQ; GSYM DROP_EQ] THEN REWRITE_TAC[DROP_ADD; DROP_CMUL; LIFT_DROP; DROP_VEC; DROP_NEG] THEN @@ -24042,7 +24042,7 @@ let RECTIFIABLE_PATH_SYM = prove (`!p q:real^1->real^N. pathfinish p = pathstart q /\ pathfinish q = pathstart p ==> (rectifiable_path(p ++ q) <=> rectifiable_path(q ++ p))`, - SIMP_TAC[RECTIFIABLE_PATH_JOIN] THEN CONV_TAC TAUT);; + SIMP_TAC[RECTIFIABLE_PATH_JOIN] THEN (CONV_TAC "TAUT") TAUT);; let RECTIFIABLE_PATH_SHIFTPATH = prove (`!g:real^1->real^N a. @@ -24149,7 +24149,7 @@ let PATH_LENGTH_JOIN = prove MP_TAC(ISPECL [`g1 ++ g2:real^1->real^N`; `vec 0:real^1`; `vec 1:real^1`; `lift(&1 / &2)`] VECTOR_VARIATION_COMBINE) THEN - REWRITE_TAC[DROP_VEC; LIFT_DROP] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[DROP_VEC; LIFT_DROP] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ANTS_TAC THENL [ASM_MESON_TAC[rectifiable_path; RECTIFIABLE_PATH_JOIN_IMP]; DISCH_THEN(SUBST1_TAC o SYM)] THEN @@ -24174,7 +24174,7 @@ let PATH_LENGTH_JOIN = prove `(&2 % x + vec 0) - v:real^N = &2 % x + --v`] THEN REWRITE_TAC[VECTOR_VARIATION_AFFINITY; IMAGE_AFFINITY_INTERVAL] THEN REWRITE_TAC[INTERVAL_EQ_EMPTY_1; LIFT_DROP; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN BINOP_TAC THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN BINOP_TAC THEN AP_THM_TAC THEN AP_TERM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[CONS_11; PAIR_EQ; GSYM DROP_EQ] THEN REWRITE_TAC[DROP_ADD; DROP_CMUL; LIFT_DROP; DROP_VEC; DROP_NEG] THEN @@ -24283,7 +24283,7 @@ let PATH_LENGTH_EQ_LINE_SEGMENT = prove [FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ] HAS_BOUNDED_VARIATION_ON_SUBSET)) THEN ASM_REWRITE_TAC[SUBSET_INTERVAL_1; REAL_LE_REFL]; - CONV_TAC NORM_ARITH]);; + (CONV_TAC "NORM_ARITH") NORM_ARITH]);; let PATH_LENGTH_SUBPATH_LE = prove (`!g:real^1->real^N s t. @@ -24384,7 +24384,7 @@ let ARC_LENGTH_UNIQUE = prove TRANS_TAC EQ_TRANS `path_length((g:real^1->real^N) o g' o (h:real^1->real^N))` THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC PATH_LENGTH_REPARAMETRIZATION THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC PATH_LENGTH_REPARAMETRIZATION THEN EXISTS_TAC `(h':real^N->real^1) o (g:real^1->real^N)` THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC HOMEOMORPHISM_COMPOSE THEN @@ -24511,7 +24511,7 @@ let ARC_LENGTH_REPARAMETRIZATION = prove W(MP_TAC o PART_MATCH (rand o rand) th o rand o snd)) THEN REWRITE_TAC[ENDS_IN_UNIT_INTERVAL] THEN DISCH_THEN(SUBST1_TAC o SYM) THEN ASM_REWRITE_TAC[GSYM path_length; GSYM LIFT_EQ_CMUL] THEN - AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[GSYM DROP_EQ; DROP_VEC; LIFT_DROP] THEN MATCH_MP_TAC VECTOR_VARIATION_ON_NULL THEN REWRITE_TAC[BOUNDED_INTERVAL; CONTENT_EQ_0_1; REAL_LE_REFL]; @@ -24532,7 +24532,7 @@ let ARC_LENGTH_REPARAMETRIZATION = prove MP_TAC(SPEC `lift(&1 / &2)` th))) THEN REWRITE_TAC[IN_INTERVAL_1; LIFT_DROP; DROP_VEC] THEN SIMP_TAC[GSYM LIFT_NUM; LIFT_EQ] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN SIMP_TAC[]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SIMP_TAC[]; ALL_TAC] THEN SUBGOAL_THEN `(l % x) IN interval[vec 0:real^1,lift l] /\ @@ -24889,7 +24889,7 @@ let SHORTEST_ARC_EXISTS = prove DISCH_THEN(fun th -> GEN_REWRITE_TAC RAND_CONV [SYM th]) THEN REWRITE_TAC[REAL_LT_RADD] THEN MATCH_MP_TAC REAL_LT_LMUL THEN ASM_SIMP_TAC[REAL_LT_LE; PATH_LENGTH_POS_LE] THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN ASM_SIMP_TAC[PATH_LENGTH_EQ_0] THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN ASM_SIMP_TAC[PATH_LENGTH_EQ_0] THEN DISCH_THEN(CHOOSE_THEN (fun th -> MP_TAC(SPEC `vec 0:real^1` th) THEN MP_TAC(SPEC `vec 1:real^1` th))) THEN REWRITE_TAC[ENDS_IN_UNIT_INTERVAL] THEN @@ -24984,13 +24984,13 @@ let SIMPLE_PATH_LENGTH_MINIMAL = prove SUBGOAL_THEN `g'(lift(&1 / &2)) = (h:real^1->real^N)(vec 1)` ASSUME_TAC THENL [EXPAND_TAC "g'" THEN REWRITE_TAC[shiftpath; DROP_ADD; LIFT_DROP; DROP_SUB; DROP_VEC] THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN RULE_ASSUM_TAC(REWRITE_RULE[IN_INTERVAL_1; DROP_VEC]) THEN ASM_SIMP_TAC[REAL_ARITH `&0 <= t ==> (t + &1 <= &1 <=> t = &0)`] THEN REWRITE_TAC[GSYM LIFT_EQ; LIFT_DROP; LIFT_NUM] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[GSYM LIFT_NUM; GSYM LIFT_ADD; GSYM LIFT_SUB] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_NUM; VECTOR_ADD_RID] THEN ASM_MESON_TAC[pathstart; pathfinish]; ALL_TAC] THEN @@ -25017,16 +25017,16 @@ let SIMPLE_PATH_LENGTH_MINIMAL = prove W(MP_TAC o PART_MATCH (lhand o rand) PATH_IMAGE_SHIFTPATH o lhand o snd) THEN REWRITE_TAC[IN_INTERVAL_1; LIFT_DROP; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[PATH_IMAGE_SHIFTPATH; CLOSED_SHIFTPATH]; ALL_TAC] THEN TRANS_TAC REAL_LE_TRANS `path_length(g':real^1->real^N)` THEN CONJ_TAC THENL - [MATCH_MP_TAC REAL_EQ_IMP_LE THEN CONV_TAC SYM_CONV THEN + [MATCH_MP_TAC REAL_EQ_IMP_LE THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN EXPAND_TAC "g'" THEN W(MP_TAC o PART_MATCH (lhand o rand) PATH_LENGTH_SHIFTPATH o lhand o snd) THEN REWRITE_TAC[IN_INTERVAL_1; LIFT_DROP; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[RECTIFIABLE_PATH_SHIFTPATH; CLOSED_SHIFTPATH] THEN ASM_SIMP_TAC[PATH_LENGTH_SHIFTPATH]; ALL_TAC] THEN @@ -25066,13 +25066,13 @@ let SIMPLE_PATH_LENGTH_MINIMAL = prove EXISTS_TAC `interval[vec 0:real^1,vec 1]` THEN ASM_SIMP_TAC[GSYM path; RECTIFIABLE_PATH_IMP_PATH] THEN REWRITE_TAC[SUBSET_INTERVAL_1; LIFT_DROP; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN REWRITE_TAC[continuous_on; FORALL_IN_IMAGE; IMP_CONJ] THEN DISCH_THEN(MP_TAC o SPEC `lift(&1 / &2)`) THEN ASM_SIMP_TAC[] THEN ANTS_TAC THENL [REWRITE_TAC[IN_INTERVAL_1; LIFT_DROP; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; DISCH_THEN(MP_TAC o SPEC `e:real`) THEN ASM_REWRITE_TAC[IMP_IMP]] THEN DISCH_THEN(X_CHOOSE_THEN `d1:real` STRIP_ASSUME_TAC) THEN @@ -25092,7 +25092,7 @@ let SIMPLE_PATH_LENGTH_MINIMAL = prove EXISTS_TAC `interval[vec 0:real^1,vec 1]` THEN ASM_SIMP_TAC[GSYM path; RECTIFIABLE_PATH_IMP_PATH] THEN SIMP_TAC[UNION_SUBSET; SUBSET_INTERVAL_1; LIFT_DROP; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; REWRITE_TAC[IN_IMAGE; NOT_EXISTS_THM] THEN X_GEN_TAC `x:real^1` THEN DISCH_THEN(CONJUNCTS_THEN2 (ASSUME_TAC o SYM) MP_TAC) THEN FIRST_X_ASSUM(MP_TAC o CONJUNCT2 o @@ -25153,7 +25153,7 @@ let SIMPLE_PATH_LENGTH_MINIMAL = prove EXISTS_TAC `interval[vec 0:real^1,vec 1]` THEN ASM_REWRITE_TAC[IS_INTERVAL_INTERVAL] THEN REWRITE_TAC[IN_INTERVAL_1; DROP_VEC; LIFT_DROP] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_MESON_TAC[rectifiable_path]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_MESON_TAC[rectifiable_path]; MATCH_MP_TAC(REAL_ARITH `abs x < e / &8 /\ abs y < e / &8 ==> x + y < e / &4`) THEN CONJ_TAC THEN FIRST_X_ASSUM MATCH_MP_TAC THEN @@ -25174,7 +25174,7 @@ let SIMPLE_PATH_LENGTH_MINIMAL = prove ==> dist(x,lift(&1 / &2)) < &1 / &8)` STRIP_ASSUME_TAC THENL [REMOVE_THEN "*" (MP_TAC o SPEC `&1 / &8`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_THEN `d1:real` STRIP_ASSUME_TAC) THEN SUBGOAL_THEN `path(h:real^1->real^N)` MP_TAC THENL [ASM_MESON_TAC[rectifiable_path]; REWRITE_TAC[path]] THEN @@ -25429,7 +25429,7 @@ let SIMPLE_PATH_LENGTH_MINIMAL = prove MATCH_MP_TAC REAL_EQ_IMP_LE THEN BINOP_TAC THENL [SUBGOAL_THEN `p:real^1,vec 1 = p + vec 0,p + (vec 1 - p)` SUBST1_TAC THENL - [REWRITE_TAC[PAIR_EQ] THEN CONV_TAC VECTOR_ARITH; ALL_TAC] THEN + [REWRITE_TAC[PAIR_EQ] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN REWRITE_TAC[GSYM VECTOR_VARIATION_TRANSLATION_INTERVAL] THEN EXPAND_TAC "k" THEN REWRITE_TAC[shiftpath] THEN MATCH_MP_TAC VECTOR_VARIATION_EQ THEN @@ -25442,7 +25442,7 @@ let SIMPLE_PATH_LENGTH_MINIMAL = prove SUBGOAL_THEN `vec 0,x + p - vec 1 = (p - vec 1) + (vec 1 - p):real^1, (p - vec 1) + x` SUBST1_TAC THENL - [REWRITE_TAC[PAIR_EQ] THEN CONV_TAC VECTOR_ARITH; ALL_TAC] THEN + [REWRITE_TAC[PAIR_EQ] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN REWRITE_TAC[GSYM VECTOR_VARIATION_TRANSLATION_INTERVAL] THEN EXPAND_TAC "k" THEN REWRITE_TAC[shiftpath] THEN MATCH_MP_TAC VECTOR_VARIATION_EQ THEN @@ -25458,7 +25458,7 @@ let SIMPLE_PATH_LENGTH_MINIMAL = prove UNDISCH_TAC `pathfinish g:real^N = pathstart g` THEN MATCH_MP_TAC EQ_IMP THEN BINOP_TAC THEN REWRITE_TAC[pathstart; pathfinish] THEN AP_TERM_TAC THEN - CONV_TAC VECTOR_ARITH]; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH]; MATCH_MP_TAC(REAL_ARITH `x < e / &4 /\ y < e / &4 ==> x + y < e / &2`) THEN CONJ_TAC]]; @@ -25489,7 +25489,7 @@ let SIMPLE_PATH_LENGTH_MINIMAL = prove MATCH_MP_TAC REAL_EQ_IMP_LE THEN BINOP_TAC THENL [SUBGOAL_THEN `p + y:real^1,vec 1 = p + y,p + (vec 1 - p)` SUBST1_TAC THENL - [REWRITE_TAC[PAIR_EQ] THEN CONV_TAC VECTOR_ARITH; ALL_TAC] THEN + [REWRITE_TAC[PAIR_EQ] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN REWRITE_TAC[GSYM VECTOR_VARIATION_TRANSLATION_INTERVAL] THEN EXPAND_TAC "k" THEN REWRITE_TAC[shiftpath] THEN MATCH_MP_TAC VECTOR_VARIATION_EQ THEN @@ -25502,7 +25502,7 @@ let SIMPLE_PATH_LENGTH_MINIMAL = prove SUBGOAL_THEN `vec 0,p = (p - vec 1) + (vec 1 - p):real^1, (p - vec 1) + vec 1` SUBST1_TAC THENL - [REWRITE_TAC[PAIR_EQ] THEN CONV_TAC VECTOR_ARITH; ALL_TAC] THEN + [REWRITE_TAC[PAIR_EQ] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN REWRITE_TAC[GSYM VECTOR_VARIATION_TRANSLATION_INTERVAL] THEN EXPAND_TAC "k" THEN REWRITE_TAC[shiftpath] THEN MATCH_MP_TAC VECTOR_VARIATION_EQ THEN @@ -25518,7 +25518,7 @@ let SIMPLE_PATH_LENGTH_MINIMAL = prove UNDISCH_TAC `pathfinish g:real^N = pathstart g` THEN MATCH_MP_TAC EQ_IMP THEN BINOP_TAC THEN REWRITE_TAC[pathstart; pathfinish] THEN AP_TERM_TAC THEN - CONV_TAC VECTOR_ARITH]; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH]; MATCH_MP_TAC(REAL_ARITH `x < e / &4 /\ y < e / &4 ==> x + y < e / &2`) THEN CONJ_TAC]; @@ -25534,7 +25534,7 @@ let SIMPLE_PATH_LENGTH_MINIMAL = prove SUBGOAL_THEN `y + p - vec 1:real^1,p = (p - vec 1) + y,(p - vec 1) + vec 1` SUBST1_TAC THENL - [REWRITE_TAC[PAIR_EQ] THEN CONV_TAC VECTOR_ARITH; ALL_TAC] THEN + [REWRITE_TAC[PAIR_EQ] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN REWRITE_TAC[GSYM VECTOR_VARIATION_TRANSLATION_INTERVAL] THEN EXPAND_TAC "k" THEN REWRITE_TAC[shiftpath] THEN MATCH_MP_TAC REAL_EQ_IMP_LE THEN @@ -25554,7 +25554,7 @@ let SIMPLE_PATH_LENGTH_MINIMAL = prove UNDISCH_TAC `pathfinish g:real^N = pathstart g` THEN MATCH_MP_TAC EQ_IMP THEN BINOP_TAC THEN REWRITE_TAC[pathstart; pathfinish] THEN AP_TERM_TAC THEN - CONV_TAC VECTOR_ARITH]; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH]; MATCH_MP_TAC(REAL_ARITH `&0 < e /\ x < e / &4 ==> x < e / &2`) THEN ASM_REWRITE_TAC[REAL_SUB_LT]]]] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[CONJ_ASSOC] THEN @@ -25610,27 +25610,27 @@ let SIMPLE_PATH_LENGTH_MINIMAL = prove REWRITE_TAC[] THENL [SUBGOAL_THEN `p:real^1,p + x = p + vec 0,p + x` SUBST1_TAC THENL - [REWRITE_TAC[PAIR_EQ] THEN CONV_TAC VECTOR_ARITH; ALL_TAC]; + [REWRITE_TAC[PAIR_EQ] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC]; SUBGOAL_THEN `p:real^1,vec 1 = p + vec 0,p + (vec 1 - p)` SUBST1_TAC THENL - [REWRITE_TAC[PAIR_EQ] THEN CONV_TAC VECTOR_ARITH; ALL_TAC]; + [REWRITE_TAC[PAIR_EQ] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC]; SUBGOAL_THEN `vec 0,x + p - vec 1 = (p - vec 1) + (vec 1 - p):real^1,(p - vec 1) + x` SUBST1_TAC THENL - [REWRITE_TAC[PAIR_EQ] THEN CONV_TAC VECTOR_ARITH; ALL_TAC]; + [REWRITE_TAC[PAIR_EQ] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC]; SUBGOAL_THEN `p + y:real^1,vec 1 = p + y,p + (vec 1 - p)` SUBST1_TAC THENL - [REWRITE_TAC[PAIR_EQ] THEN CONV_TAC VECTOR_ARITH; ALL_TAC]; + [REWRITE_TAC[PAIR_EQ] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC]; SUBGOAL_THEN `vec 0:real^1,p = (p - vec 1) + (vec 1 - p),(p - vec 1) + vec 1` SUBST1_TAC THENL - [REWRITE_TAC[PAIR_EQ] THEN CONV_TAC VECTOR_ARITH; ALL_TAC]; + [REWRITE_TAC[PAIR_EQ] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC]; SUBGOAL_THEN `y + p - vec 1:real^1,p = (p - vec 1) + y,(p - vec 1) + vec 1` SUBST1_TAC THENL - [REWRITE_TAC[PAIR_EQ] THEN CONV_TAC VECTOR_ARITH; ALL_TAC]] THEN + [REWRITE_TAC[PAIR_EQ] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC]] THEN REWRITE_TAC[INTERVAL_TRANSLATION; GSYM IMAGE_o; o_DEF] THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (SET_RULE `p = IMAGE k x1 diff --git a/Multivariate/lpspaces.ml b/Multivariate/lpspaces.ml index 6fe1b7aa..51cfafe1 100644 --- a/Multivariate/lpspaces.ml +++ b/Multivariate/lpspaces.ml @@ -437,7 +437,7 @@ let LNORM_TRIANGLE = prove ASM_SIMP_TAC[GSYM RPOW_POW; GSYM RPOW_ADD] THEN ASM_SIMP_TAC[LSPACE_ADD; LNORM_RPOW; REAL_ARITH `p - &1 + &1 = p`; REAL_ARITH `&1 <= p ==> &0 <= p /\ ~(p = &0)`] THEN - CONV_TAC(LAND_CONV(SUBS_CONV[REAL_ARITH `p = &1 + (p - &1)`])) THEN + (CONV_TAC "(LAND_CONV(SUBS_CONV[REAL_ARITH `p = &1 + (p - &1)`]))") (LAND_CONV(SUBS_CONV[REAL_ARITH `p = &1 + (p - &1)`])) THEN ASM_SIMP_TAC[RPOW_ADD_ALT; NORM_POS_LE; REAL_ARITH `&1 <= p ==> &1 + p - &1 = &0 ==> p - &1 = &0`] THEN REWRITE_TAC[RPOW_POW; REAL_POW_1] THEN @@ -855,7 +855,7 @@ let RIESZ_FISCHER = prove [ASM_SIMP_TAC[LSPACE_SUB; ETA_AX; REAL_ARITH `&1 <= p ==> &0 <= p`] THEN MATCH_MP_TAC REAL_SUMMABLE_COMPARISON THEN EXISTS_TAC `\n. inv(&2) pow n` THEN CONJ_TAC THENL - [MATCH_MP_TAC REAL_SUMMABLE_GP THEN CONV_TAC REAL_RAT_REDUCE_CONV; + [MATCH_MP_TAC REAL_SUMMABLE_GP THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; EXISTS_TAC `0` THEN X_GEN_TAC `n:num` THEN DISCH_THEN(K ALL_TAC) THEN REWRITE_TAC[GSYM REAL_INV_POW] THEN MATCH_MP_TAC(REAL_ARITH `&0 <= x /\ x < y ==> abs x <= y`) THEN diff --git a/Multivariate/measure.ml b/Multivariate/measure.ml index 46aa13e5..27830af7 100644 --- a/Multivariate/measure.ml +++ b/Multivariate/measure.ml @@ -109,7 +109,7 @@ let MEASURABLE_INTEGRABLE = prove let MEASURE_INTEGRAL = prove (`!s. measurable s ==> measure s = drop (integral s (\x. vec 1))`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[GSYM LIFT_EQ; LIFT_DROP] THEN MATCH_MP_TAC INTEGRAL_UNIQUE THEN ASM_REWRITE_TAC[GSYM has_measure; GSYM HAS_MEASURE_MEASURE]);; @@ -118,7 +118,7 @@ let MEASURE_INTEGRAL_UNIV = prove (`!s. measurable s ==> measure s = drop(integral UNIV (\x. if x IN s then vec 1 else vec 0))`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[GSYM LIFT_EQ; LIFT_DROP] THEN MATCH_MP_TAC INTEGRAL_UNIQUE THEN ASM_REWRITE_TAC[GSYM HAS_MEASURE; GSYM HAS_MEASURE_MEASURE]);; @@ -692,7 +692,7 @@ let HAS_MEASURE_NEGLIGIBLE_UNIONS_IMAGE = prove SUBGOAL_THEN `sum s (\x. measure(f x)) = sum (IMAGE (f:A->real^N->bool) s) measure` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN ONCE_REWRITE_TAC[GSYM o_DEF] THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[GSYM o_DEF] THEN MATCH_MP_TAC SUM_IMAGE_NONZERO THEN ASM_REWRITE_TAC[] THEN MAP_EVERY X_GEN_TAC [`x:A`; `y:A`] THEN STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o SPECL [`x:A`; `y:A`]) THEN @@ -744,7 +744,7 @@ let HAS_MEASURE_NEGLIGIBLE_UNIONS_IMAGE_STRONG = prove [GEN_REWRITE_TAC I [EXTENSION] THEN REWRITE_TAC[IN_UNIONS; IN_IMAGE; IN_ELIM_THM] THEN MESON_TAC[NOT_IN_EMPTY]; - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN SIMP_TAC[SUBSET; IN_ELIM_THM; TAUT `a /\ ~(a /\ b) <=> a /\ ~b`] THEN REWRITE_TAC[MEASURE_EMPTY]]);; @@ -798,7 +798,7 @@ let MEASURE_UNION = prove [EXISTS_TAC `measure((s DIFF t) UNION (s INTER t):real^N->bool)`; EXISTS_TAC `measure((t DIFF s) UNION (s INTER t):real^N->bool)`] THEN (CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC MEASURE_DISJOINT_UNION THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MEASURE_DISJOINT_UNION THEN ASM_SIMP_TAC[MEASURABLE_DIFF; MEASURABLE_INTER]; AP_TERM_TAC] THEN SET_TAC[]));; @@ -1200,7 +1200,7 @@ let STRETCH_GALOIS = prove `(!x. p x ==> (q x <=> r x)) ==> (!x. p x) ==> ((!x. q x) <=> (!x. r x))`) THEN GEN_TAC THEN ASM_CASES_TAC `1 <= k /\ k <= dimindex(:N)` THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_FIELD);; + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let HAS_MEASURE_STRETCH = prove (`!s m y. s has_measure y @@ -1469,12 +1469,12 @@ let NOT_MEASURABLE_UNIV = prove FIRST_ASSUM(MP_TAC o SPEC `&2` o MATCH_MP MEASURE_SCALING) THEN MATCH_MP_TAC(REAL_RING `a = b /\ ~(b = &0) /\ ~(c = &1) ==> a = c * b ==> F`) THEN - REWRITE_TAC[REAL_POW_EQ_1] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[REAL_POW_EQ_1] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[MEASURABLE_MEASURE_EQ_0; NOT_NEGLIGIBLE_UNIV] THEN SIMP_TAC[DIMINDEX_GE_1; LE_1] THEN AP_TERM_TAC THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_UNIV] THEN X_GEN_TAC `x:real^N` THEN EXISTS_TAC `inv(&2) % x:real^N` THEN - REWRITE_TAC[VECTOR_MUL_ASSOC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[VECTOR_MUL_ASSOC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[VECTOR_MUL_LID]);; (* ------------------------------------------------------------------------- *) @@ -1595,7 +1595,7 @@ let HAS_MEASURE_COUNTABLE_NEGLIGIBLE_UNIONS_BOUNDED = prove ASM_REWRITE_TAC[] THEN X_GEN_TAC `n:num` THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `measure(UNIONS (IMAGE (s:num->real^N->bool) (0..n)))` THEN CONJ_TAC THENL - [MATCH_MP_TAC REAL_EQ_IMP_LE THEN CONV_TAC SYM_CONV THEN + [MATCH_MP_TAC REAL_EQ_IMP_LE THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MEASURE_NEGLIGIBLE_UNIONS_IMAGE THEN ASM_SIMP_TAC[FINITE_NUMSEG]; MATCH_MP_TAC MEASURE_SUBSET THEN REWRITE_TAC[MEASURABLE_INTERVAL] THEN @@ -1962,7 +1962,7 @@ let MEASURABLE_COMPACT = prove MP_TAC(SPECL [`inv(&2)`; `e / &(dimindex(:N))`] REAL_ARCH_POW_INV) THEN ASM_SIMP_TAC[REAL_LT_DIV; REAL_LT_RDIV_EQ; REAL_OF_NUM_LT; DIMINDEX_GE_1; ARITH_RULE `0 < x <=> 1 <= x`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN REWRITE_TAC[IN_UNIONS; IN_ELIM_THM] THEN REWRITE_TAC[LEFT_AND_EXISTS_THM] THEN @@ -2154,7 +2154,7 @@ let PART_MEASURES = prove ASM_CASES_TAC `measure(s:real^N->bool) = m` THENL [MAP_EVERY EXISTS_TAC [`s:real^N->bool`; `{}:real^N->bool`] THEN ASM_REWRITE_TAC[UNION_EMPTY; DISJOINT_EMPTY; MEASURE_EMPTY] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[MEASURABLE_EMPTY] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[MEASURABLE_EMPTY] THEN REWRITE_TAC[REAL_SUB_REFL]; ALL_TAC] THEN MP_TAC(ISPECL [`s:real^N->bool`; `measure(s:real^N->bool) - m`] @@ -2275,7 +2275,7 @@ let MULTIPART_MEASURES = prove MP_TAC THENL [MATCH_MP_TAC num_WF THEN X_GEN_TAC `m:num` THEN FIRST_X_ASSUM(SUBST1_TAC o SPEC `m:num`) THEN - REWRITE_TAC[IMP_IMP] THEN STRIP_TAC THEN CONV_TAC SELECT_CONV THEN + REWRITE_TAC[IMP_IMP] THEN STRIP_TAC THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN MP_TAC(ISPECL [`s DIFF UNIONS {(k:num->real^N->bool) i | i < m}`; `measure(s:real^N->bool) / &n`] PART_MEASURES) THEN @@ -2377,7 +2377,7 @@ let MULTIPART_MEASURES = prove ASM_SIMP_TAC[GSYM REAL_OF_NUM_SUB; LE_1] THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE RAND_CONV [GSYM REAL_OF_NUM_EQ]) THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; ASM SET_TAC[]]]);; (* ------------------------------------------------------------------------- *) @@ -2486,7 +2486,7 @@ let STARLIKE_NEGLIGIBLE_BOUNDED_MEASURABLE = prove `sum (1..N) (measure o (\m. IMAGE (\x:real^N. &m / &N % x) s))` THEN CONJ_TAC THENL [ALL_TAC; - MATCH_MP_TAC REAL_EQ_IMP_LE THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC REAL_EQ_IMP_LE THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_IMAGE THEN REWRITE_TAC[] THEN REPEAT STRIP_TAC THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[SET_RULE `DISJOINT s s <=> s = {}`; IMAGE_EQ_EMPTY] THEN @@ -2596,7 +2596,7 @@ let NEGLIGIBLE_HYPERPLANE = prove DISCH_THEN(MP_TAC o MATCH_MP (REAL_ARITH `&0 <= t /\ ac + ay = b /\ ac + t * ay = b ==> ((ay = &0 ==> ac = b) /\ (t - &1) * ay = &0)`)) THEN - ASM_SIMP_TAC[REAL_ENTIRE; REAL_SUB_0] THEN CONV_TAC TAUT);; + ASM_SIMP_TAC[REAL_ENTIRE; REAL_SUB_0] THEN (CONV_TAC "TAUT") TAUT);; let NEGLIGIBLE_LOWDIM = prove (`!s:real^N->bool. dim(s) < dimindex(:N) ==> negligible s`, @@ -2887,7 +2887,7 @@ let ABSOLUTELY_INTEGRABLE_IMPROPER = prove ASM_REWRITE_TAC[IMP_IMP; FORALL_1; GSYM drop; LIFT_DROP] THEN SUBGOAL_THEN `(\x. lift((f:real^M->real^N) x$i)) = (\x. g x - (g x - lift(f x$i)))` - SUBST1_TAC THENL [ABS_TAC THEN CONV_TAC VECTOR_ARITH; ALL_TAC] THEN + SUBST1_TAC THENL [ABS_TAC THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN MATCH_MP_TAC INTEGRABLE_SUB THEN ASM_SIMP_TAC[ABSOLUTELY_INTEGRABLE_IMP_INTEGRABLE] THEN MP_TAC(ISPECL @@ -2914,7 +2914,7 @@ let ABSOLUTELY_INTEGRABLE_IMPROPER = prove ASM_REWRITE_TAC[IMP_IMP; FORALL_1; GSYM drop; LIFT_DROP] THEN SUBGOAL_THEN `(\x. lift((f:real^M->real^N) x$i)) = (\x. (lift(f x$i) - g x) + g x)` - SUBST1_TAC THENL [ABS_TAC THEN CONV_TAC VECTOR_ARITH; ALL_TAC] THEN + SUBST1_TAC THENL [ABS_TAC THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN MATCH_MP_TAC INTEGRABLE_ADD THEN ASM_SIMP_TAC[ABSOLUTELY_INTEGRABLE_IMP_INTEGRABLE] THEN MP_TAC(ISPECL @@ -3178,7 +3178,7 @@ let COVERING_LEMMA = prove REAL_ARCH_POW_INV) THEN SUBGOAL_THEN `&0 < norm(b - a:real^N)` ASSUME_TAC THENL [ASM_MESON_TAC[VECTOR_SUB_EQ; NORM_POS_LT; INTERVAL_SING]; ALL_TAC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_LT_DIV] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_LT_DIV] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `n:num` THEN REWRITE_TAC[real_div; REAL_MUL_LID; REAL_POW_INV] THEN DISCH_TAC THEN SIMP_TAC[IN_ELIM_THM; IN_INTERVAL; SUBSET; LAMBDA_BETA] THEN @@ -3302,7 +3302,7 @@ let COVERING_LEMMA = prove ==> inv n <= inv m`)) THEN REWRITE_TAC[REAL_NOT_LE] THEN MATCH_MP_TAC REAL_LT_INV2 THEN ASM_REWRITE_TAC[REAL_LT_POW2] THEN MATCH_MP_TAC REAL_POW_MONO_LT THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV; + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN SUBGOAL_THEN `?d. COUNTABLE d /\ @@ -3654,7 +3654,7 @@ let MEASURABLE_OUTER_INTERVALS_BOUNDED = prove ASM_REWRITE_TAC[] THEN CONJ_TAC THENL [ALL_TAC; SET_TAC[]] THEN MATCH_MP_TAC MEASURABLE_INTER THEN ASM_REWRITE_TAC[]] THEN REWRITE_TAC[INTER_UNIONS] THEN MATCH_MP_TAC REAL_EQ_IMP_LE THEN - ONCE_REWRITE_TAC[SIMPLE_IMAGE] THEN CONV_TAC SYM_CONV THEN + ONCE_REWRITE_TAC[SIMPLE_IMAGE] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MEASURE_NEGLIGIBLE_UNIONS_IMAGE_STRONG THEN ASM_SIMP_TAC[FINITE_RESTRICT] THEN CONJ_TAC THENL [ASM_MESON_TAC[SUBSET; MEASURABLE_INTERVAL; MEASURABLE_INTER]; @@ -3824,11 +3824,11 @@ let MEASURABLE_OUTER_CLOSED_INTERVALS = prove MATCH_MP_TAC SUBSET_UNIONS THEN REWRITE_TAC[SIMPLE_IMAGE] THEN MATCH_MP_TAC IMAGE_SUBSET THEN REWRITE_TAC[SUBSET_UNIV]; REWRITE_TAC[real_div; SUM_LMUL; REAL_INV_POW; SUM_GP; LT] THEN - REWRITE_TAC[GSYM real_div] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[GSYM real_div] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `e / &2 * (&1 - x) / (&1 / &2) <= e <=> &0 <= e * x`] THEN MATCH_MP_TAC REAL_LE_MUL THEN ASM_SIMP_TAC[REAL_LT_IMP_LE] THEN - MATCH_MP_TAC REAL_POW_LE THEN CONV_TAC REAL_RAT_REDUCE_CONV]);; + MATCH_MP_TAC REAL_POW_LE THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]);; let MEASURABLE_OUTER_OPEN_INTERVALS = prove (`!s:real^N->bool e. @@ -3931,7 +3931,7 @@ let MEASURABLE_OUTER_OPEN_INTERVALS = prove `sum(0..n) (\i. measure(interval[a i:real^N,b i]) + e / &2 pow (i + 2))` THEN ASM_SIMP_TAC[SUM_LE_NUMSEG] THEN REWRITE_TAC[SUM_ADD_NUMSEG] THEN REWRITE_TAC[real_div; REAL_INV_MUL; SUM_LMUL; REAL_POW_ADD; SUM_RMUL] THEN - REWRITE_TAC[REAL_INV_POW; SUM_GP; LT] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[REAL_INV_POW; SUM_GP; LT] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(REAL_ARITH `s <= m + e / &2 /\ &0 <= e * x ==> s + e * (&1 - x) / (&1 / &2) * &1 / &4 <= m + e`) THEN @@ -4260,7 +4260,7 @@ let HAS_MEASURE_LINEAR_SUFFICIENT = prove EXISTS_TAC `sum d (\k:real^N->bool. m * measure k)` THEN CONJ_TAC THENL [MATCH_MP_TAC SUM_EQ THEN ASM_MESON_TAC[MEASURE_UNIQUE]; ALL_TAC] THEN REWRITE_TAC[SUM_LMUL] THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC MEASURE_NEGLIGIBLE_UNIONS THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MEASURE_NEGLIGIBLE_UNIONS THEN ASM_REWRITE_TAC[GSYM HAS_MEASURE_MEASURE] THEN ASM_MESON_TAC[MEASURABLE_INTERVAL]; ALL_TAC] THEN @@ -4329,7 +4329,7 @@ let HAS_MEASURE_LINEAR_SUFFICIENT = prove measure(IMAGE (f:real^N->real^N) (UNIONS d))` THEN CONJ_TAC THENL [ALL_TAC; - MATCH_MP_TAC REAL_EQ_IMP_LE THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC REAL_EQ_IMP_LE THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MEASURE_DIFF_SUBSET THEN REPEAT(CONJ_TAC THENL [ASM_MESON_TAC[measurable]; ALL_TAC]) THEN MATCH_MP_TAC IMAGE_SUBSET THEN ASM_SIMP_TAC[UNIONS_SUBSET]] THEN @@ -4759,7 +4759,7 @@ let INDUCT_LINEAR_ELEMENTARY = prove CONJ_TAC THENL [SIMP_TAC[SUM_CLAUSES; FINITE_RULES; IN_INSERT; NOT_IN_EMPTY] THEN ASM_REWRITE_TAC[REAL_ADD_RID]; - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN ASM_SIMP_TAC[SUBSET; IN_INSERT; NOT_IN_EMPTY; DE_MORGAN_THM; IN_NUMSEG; REAL_MUL_LZERO] THEN ASM_ARITH_TAC]]);; @@ -5223,7 +5223,7 @@ let HAS_MEASURE_ISOMETRY = prove has_measure m` THEN CONJ_TAC THENL [SPEC_TAC(`IMAGE (f:real^M->real^N) s`,`s:real^N->bool`) THEN GEN_TAC THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[has_measure] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[has_measure] THEN W(MP_TAC o PART_MATCH (lhand o rand) HAS_INTEGRAL_TWIZZLE_EQ o lhand o snd) THEN REWRITE_TAC[] THEN DISCH_THEN MATCH_MP_TAC THEN @@ -5249,7 +5249,7 @@ let MEASURABLE_LINEAR_IMAGE_EQ_GEN = prove `measurable(IMAGE ((\x. lambda i. x$i):real^N->real^M) (IMAGE (f:real^M->real^N) s))` THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN REWRITE_TAC[measurable] THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[measurable] THEN AP_TERM_TAC THEN ABS_TAC THEN MATCH_MP_TAC HAS_MEASURE_ISOMETRY THEN ONCE_ASM_REWRITE_TAC[] THEN ASM_REWRITE_TAC[] THEN CONJ_TAC THENL [SIMP_TAC[linear; CART_EQ; LAMBDA_BETA; VECTOR_ADD_COMPONENT; @@ -5341,7 +5341,7 @@ let MEASURABLE_CONVEX_EQ = prove SIMP_TAC[LAMBDA_BETA; VEC_COMPONENT] THEN REWRITE_TAC[MESON[] `(&0 <= if p then x else y) <=> if p then &0 <= x else &0 <= y`] THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [REAL_LE_DIV; REAL_LE_ADD; REAL_POS; MEASURE_POS_LE; REAL_LE_MUL; REAL_LE_MUL; MEASURABLE_INTERVAL; DIMINDEX_GE_1; LE_REFL; LAMBDA_BETA; VEC_COMPONENT; REAL_LT_IMP_LE; @@ -5674,7 +5674,7 @@ let HAS_MEASURE_TRIANGLE = prove REPEAT STRIP_TAC THEN MP_TAC(ISPECL [`a:real^2`; `[b;c]:(real^2)list`] HAS_MEASURE_SIMPLEX) THEN REWRITE_TAC[LENGTH; DIMINDEX_2; ARITH; set_of_list; MAP] THEN - CONV_TAC NUM_REDUCE_CONV THEN SIMP_TAC[DET_2; VECTOR_2] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN SIMP_TAC[DET_2; VECTOR_2] THEN SIMP_TAC[VECTOR_SUB_COMPONENT; DIMINDEX_2; ARITH]);; let MEASURABLE_TRIANGLE = prove @@ -5708,7 +5708,7 @@ let HAS_MEASURE_TETRAHEDRON = prove REPEAT STRIP_TAC THEN MP_TAC(ISPECL [`a:real^3`; `[b;c;d]:(real^3)list`] HAS_MEASURE_SIMPLEX) THEN REWRITE_TAC[LENGTH; DIMINDEX_3; ARITH; set_of_list; MAP] THEN - CONV_TAC NUM_REDUCE_CONV THEN SIMP_TAC[DET_3; VECTOR_3] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN SIMP_TAC[DET_3; VECTOR_3] THEN SIMP_TAC[VECTOR_SUB_COMPONENT; DIMINDEX_3; ARITH]);; let MEASURABLE_TETRAHEDRON = prove @@ -6318,7 +6318,7 @@ let INTEGRABLE_CCONTINUOUS_EXPLICIT = prove [ASM_CASES_TAC `measure(UNIONS D:real^M->bool) = &0` THENL [EXISTS_TAC `{}:(real^M->bool)->bool` THEN ASM_REWRITE_TAC[FINITE_EMPTY; EMPTY_SUBSET; MEASURE_EMPTY; UNIONS_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; MP_TAC(ISPECL [`D:(real^M->bool)->bool`; `measure(interval[a:real^M,b])`; `measure(UNIONS D:real^M->bool) / &2`] MEASURE_COUNTABLE_UNIONS_APPROACHABLE) THEN @@ -6746,7 +6746,7 @@ let INTEGRABLE_CCONTINUOUS_EXPLICIT_SYMMETRIC = prove [ASM_CASES_TAC `measure(UNIONS D:real^M->bool) = &0` THENL [EXISTS_TAC `{}:(real^M->bool)->bool` THEN ASM_REWRITE_TAC[FINITE_EMPTY; EMPTY_SUBSET; MEASURE_EMPTY; UNIONS_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; MP_TAC(ISPECL [`D:(real^M->bool)->bool`; `measure(interval[a:real^M,b])`; `measure(UNIONS D:real^M->bool) / &2`] MEASURE_COUNTABLE_UNIONS_APPROACHABLE) THEN @@ -7883,7 +7883,7 @@ let MEASURABLE_ON_CASES = prove REWRITE_TAC[indicator; IN_DIFF; IN_UNIV; IN_ELIM_THM; FUN_EQ_THM] THEN X_GEN_TAC `x:real^M` THEN ASM_CASES_TAC `(P:real^M->bool) x` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC VECTOR_ARITH]);; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH]);; let MEASURABLE_ON_LIMIT = prove (`!f:num->real^M->real^N g s k. @@ -8252,7 +8252,7 @@ let MEASURABLE_ON_INTER = prove REWRITE_TAC[REAL_ARITH `(x * x) * x:real = x pow 3`; IN_INTER] THEN REWRITE_TAC[MESON[] `(if p then x pow 3 else y pow 3) = (if p then x else y:real) pow 3`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(MP_TAC o ISPEC `r:real^1->real^1` o MATCH_MP (REWRITE_RULE[IMP_CONJ] MEASURABLE_ON_COMPOSE_CONTINUOUS)) THEN ASM_REWRITE_TAC[o_DEF]]);; @@ -8383,7 +8383,7 @@ let NEGLIGIBLE_LOCALLY_LIPSCHITZ_IMAGE = prove DISCH_THEN(X_CHOOSE_THEN `r:real` STRIP_ASSUME_TAC) THEN EXISTS_TAC `min (&1 / &2) r` THEN ASM_REWRITE_TAC[REAL_MIN_LE; REAL_LT_MIN] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_MESON_TAC[]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_MESON_TAC[]; FIRST_X_ASSUM(K ALL_TAC o check (is_forall o concl)) THEN REWRITE_TAC[SKOLEM_THM; LEFT_IMP_EXISTS_THM; FORALL_AND_THM] THEN REWRITE_TAC[RIGHT_IMP_FORALL_THM; IMP_IMP] THEN @@ -8854,7 +8854,7 @@ let BABY_SARD = prove DISCH_THEN(X_CHOOSE_THEN `r:real` STRIP_ASSUME_TAC) THEN EXISTS_TAC `min r (&1 / &2)` THEN ASM_REWRITE_TAC[REAL_LT_MIN; REAL_MIN_LE; REAL_LE_REFL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_MESON_TAC[]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_MESON_TAC[]; REWRITE_TAC[SKOLEM_THM; LEFT_IMP_EXISTS_THM; FORALL_AND_THM] THEN X_GEN_TAC `r:real^M->real` THEN REWRITE_TAC[RIGHT_IMP_FORALL_THM] THEN REWRITE_TAC[IMP_IMP; GSYM CONJ_ASSOC] THEN @@ -8954,7 +8954,7 @@ let BABY_SARD = prove [ASM_MESON_TAC[SUBSET; ENDS_IN_INTERVAL; INTERIOR_EMPTY]; REWRITE_TAC[IN_BALL] THEN SUBGOAL_THEN `(r:real^M->real) x <= &1 / &2` MP_TAC THENL - [ASM_REWRITE_TAC[]; CONV_TAC NORM_ARITH]]; + [ASM_REWRITE_TAC[]; (CONV_TAC "NORM_ARITH") NORM_ARITH]]; REMOVE_THEN "*" (K ALL_TAC) THEN FIRST_X_ASSUM(MP_TAC o SPECL [`u:real^M`; `v:real^M`]) THEN ASM_REWRITE_TAC[REAL_ARITH `x - --x = &2 * x`] THEN @@ -9695,7 +9695,7 @@ let MEASURABLE_ON_REFLECT = prove REPEAT GEN_TAC THEN GEN_REWRITE_TAC (LAND_CONV o LAND_CONV) [GSYM o_DEF] THEN MATCH_MP_TAC MEASURABLE_ON_LINEAR_IMAGE_EQ THEN - REWRITE_TAC[linear] THEN CONV_TAC VECTOR_ARITH);; + REWRITE_TAC[linear] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH);; (* ------------------------------------------------------------------------- *) (* Various common equivalent forms of function measurability. *) @@ -9827,7 +9827,7 @@ let (MEASURABLE_ON_PREIMAGE_HALFSPACE_COMPONENT_LT, MATCH_MP_TAC REAL_LE_LMUL THEN SIMP_TAC[REAL_POW_LE; REAL_POS] THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REAL_ARITH `x < e ==> e <= d ==> x <= d`))] THEN - MATCH_MP_TAC REAL_POW_MONO THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC]) in MATCH_MP_TAC(MESON[] `(!f. P f ==> Q f) /\ (!f. Q f ==> R f) /\ (!f. R f ==> P f) @@ -10428,7 +10428,7 @@ let MEASURABLE_ON_SIMPLE_FUNCTION_LIMIT_INCREASING = prove MATCH_MP_TAC REAL_LE_LMUL THEN SIMP_TAC[REAL_POW_LE; REAL_POS] THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REAL_ARITH `x < e ==> e <= d ==> x <= d`))] THEN - MATCH_MP_TAC REAL_POW_MONO THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC]);; (* ------------------------------------------------------------------------- *) @@ -11750,7 +11750,7 @@ let ABSOLUTELY_INTEGRABLE_UNION = prove MAP_EVERY ASM_CASES_TAC [`(x:real^M) IN s`; `(x:real^M) IN t`] THEN ASM_REWRITE_TAC[IN_INTER; IN_UNION; IN_ELIM_THM] THEN ASM_CASES_TAC `(f:real^M->real^N) x = vec 0` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC VECTOR_ARITH]);; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH]);; let ABSOLUTELY_INTEGRABLE_DIFF = prove (`!f:real^M->real^N s t. @@ -11766,7 +11766,7 @@ let ABSOLUTELY_INTEGRABLE_DIFF = prove REWRITE_TAC[FUN_EQ_THM] THEN X_GEN_TAC `x:real^M` THEN MAP_EVERY ASM_CASES_TAC [`(x:real^M) IN s`; `(x:real^M) IN t`] THEN ASM_REWRITE_TAC[IN_DIFF; IN_UNION] THEN - CONV_TAC VECTOR_ARITH);; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH);; let ABSOLUTELY_INTEGRABLE_INTER = prove (`!f:real^M->real^N s t. @@ -11783,7 +11783,7 @@ let ABSOLUTELY_INTEGRABLE_INTER = prove REWRITE_TAC[FUN_EQ_THM] THEN X_GEN_TAC `x:real^M` THEN MAP_EVERY ASM_CASES_TAC [`(x:real^M) IN s`; `(x:real^M) IN t`] THEN ASM_REWRITE_TAC[IN_INTER; IN_UNION] THEN - CONV_TAC VECTOR_ARITH);; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH);; let INTEGRAL_COUNTABLE_UNIONS_ALT = prove (`!f:real^M->real^N s. @@ -11877,11 +11877,11 @@ let LEBESGUE_MEASURABLE_OUTER_OPEN = prove MEASURABLE_LEBESGUE_MEASURABLE_INTER_MEASURABLE] THEN ASM_SIMP_TAC[REAL_ARITH `t < s + e ==> t - s <= e`]]; REWRITE_TAC[real_div; SUM_LMUL; REAL_INV_POW; SUM_GP] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[CONJUNCT1 LT] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[CONJUNCT1 LT] THEN ASM_SIMP_TAC[GSYM REAL_MUL_ASSOC; REAL_LE_LMUL_EQ] THEN REWRITE_TAC[REAL_ARITH `&1 / &4 * (&1 - x) * &2 <= &1 / &2 <=> &0 <= x`] THEN - MATCH_MP_TAC REAL_POW_LE THEN CONV_TAC REAL_RAT_REDUCE_CONV]]);; + MATCH_MP_TAC REAL_POW_LE THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]]);; let LEBESGUE_MEASURABLE_INNER_CLOSED = prove (`!s:real^N->bool e. @@ -12085,7 +12085,7 @@ let NEGLIGIBLE_IFF_LEBESGUE_MEASURABLE_SUBSETS = prove ?q. rational q /\ q % basis 1 + canonize x = x` ASSUME_TAC THENL [GEN_TAC THEN DISCH_TAC THEN EXPAND_TAC "canonize" THEN - CONV_TAC SELECT_CONV THEN EXISTS_TAC `x:real^N` THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN EXISTS_TAC `x:real^N` THEN ASM_REWRITE_TAC[] THEN EXISTS_TAC `&0` THEN REWRITE_TAC[RATIONAL_CLOSED] THEN VECTOR_ARITH_TAC; ALL_TAC] THEN @@ -12974,9 +12974,9 @@ let DIFFERENTIAL_ZERO_MAXMIN_DENSITY = prove GEN_REWRITE_TAC I [GSYM CONTRAPOS_THM] THEN DISCH_TAC THEN DISCH_THEN(MP_TAC o GEN `e:real` o SPEC `e * norm(d:real^N)`) THEN ASM_SIMP_TAC[REAL_LT_MUL_EQ; NORM_POS_LT] THEN - DISCH_THEN(MP_TAC o SPEC `&1 / &2`) THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + DISCH_THEN(MP_TAC o SPEC `&1 / &2`) THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MP_TAC(ISPECL [`&1 / &2`; `a:real^N`; `d:real^N`] lemma) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(X_CHOOSE_THEN `e:real` STRIP_ASSUME_TAC) THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [LIM_WITHIN]) THEN DISCH_THEN(MP_TAC o SPEC `e:real`) THEN ASM_REWRITE_TAC[] THEN @@ -13206,7 +13206,7 @@ let WIENER_COVERING_LEMMA_BALLS = prove X_GEN_TAC `m:A` THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN FIRST_X_ASSUM(MP_TAC o SPEC `m:A`) THEN ASM_REWRITE_TAC[] THEN SIMP_TAC[DISJOINT; EXTENSION; SUBSET; NOT_IN_EMPTY; IN_BALL; IN_INTER] THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; DISCH_THEN(X_CHOOSE_THEN `c:A->bool` STRIP_ASSUME_TAC) THEN EXISTS_TAC `(n:A) INSERT c` THEN CONJ_TAC THENL [ASM SET_TAC[]; ALL_TAC] THEN @@ -13258,7 +13258,7 @@ let WIENER_COVERING_LEMMA_CBALLS = prove FIRST_X_ASSUM(MP_TAC o SPEC `m:A`) THEN ASM_REWRITE_TAC[] THEN SIMP_TAC[DISJOINT; EXTENSION; SUBSET; NOT_IN_EMPTY; IN_CBALL; IN_INTER] THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; DISCH_THEN(X_CHOOSE_THEN `c:A->bool` STRIP_ASSUME_TAC) THEN EXISTS_TAC `(n:A) INSERT c` THEN CONJ_TAC THENL [ASM SET_TAC[]; ALL_TAC] THEN @@ -13318,7 +13318,7 @@ let VITALI_COVERING_LEMMA_CBALLS_BALLS = prove [SUBGOAL_THEN `&0 < r(i:A) /\ r i <= B` MP_TAC THENL [ASM SET_TAC[]; REAL_ARITH_TAC]; REWRITE_TAC[REAL_INV_POW] THEN MATCH_MP_TAC REAL_POW_MONO_INV THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ARITH_TAC]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ARITH_TAC]; REPEAT STRIP_TAC THEN MATCH_MP_TAC REAL_LT_IMP_LE THEN ASM SET_TAC[]; ASM SET_TAC[]; ALL_TAC] THEN @@ -13394,7 +13394,7 @@ let VITALI_COVERING_LEMMA_CBALLS_BALLS = prove ASM_SIMP_TAC[REAL_LT_RDIV_EQ; REAL_MUL_LZERO] THEN REWRITE_TAC[GSYM REAL_INV_POW] THEN REWRITE_TAC[ONCE_REWRITE_RULE[REAL_MUL_SYM] (GSYM real_div)] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[UNIONS_IMAGE; IN_UNIV; IN_ELIM_THM] THEN ASM SET_TAC[]]]);; let VITALI_COVERING_LEMMA_CBALLS = prove @@ -13517,7 +13517,7 @@ let VITALI_COVERING_THEOREM_CBALLS = prove MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `&6 * (r:A->real) i` THEN CONJ_TAC THENL [REPEAT(FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE LAND_CONV [dist])) THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; MATCH_MP_TAC REAL_LE_LMUL THEN REWRITE_TAC[REAL_POS] THEN ASM SET_TAC[]]; ALL_TAC] THEN @@ -13567,7 +13567,7 @@ let VITALI_COVERING_THEOREM_CBALLS = prove MATCH_MP_TAC MONO_AND THEN REWRITE_TAC[] THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [IN_CBALL]) THEN REWRITE_TAC[IN_CBALL; IN_BALL] THEN - UNDISCH_TAC `(r:A->real) i < q / &2` THEN CONV_TAC NORM_ARITH; + UNDISCH_TAC `(r:A->real) i < q / &2` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; MATCH_MP_TAC MEASURE_COUNTABLE_UNIONS_LE_GEN THEN REPEAT CONJ_TAC THENL [MATCH_MP_TAC COUNTABLE_IMAGE THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ] @@ -13587,7 +13587,7 @@ let VITALI_COVERING_THEOREM_CBALLS = prove CONJ_TAC THENL [MATCH_MP_TAC SUM_LE THEN ASM_REWRITE_TAC[] THEN REPEAT STRIP_TAC THEN MATCH_MP_TAC REAL_EQ_IMP_LE THEN - MATCH_MP_TAC MEASURE_BALL_SCALING THEN CONV_TAC REAL_RAT_REDUCE_CONV; + MATCH_MP_TAC MEASURE_BALL_SCALING THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; REWRITE_TAC[SUM_LMUL] THEN ONCE_REWRITE_TAC[REAL_MUL_SYM]] THEN ASM_SIMP_TAC[GSYM REAL_LE_RDIV_EQ; REAL_POW_LT; REAL_ARITH `&0 < &5`] THEN REWRITE_TAC[GSYM INTERIOR_CBALL] THEN @@ -13827,7 +13827,7 @@ let NEGLIGIBLE_EQ_ZERO_DENSITY_ALT = prove ASM_SIMP_TAC[REAL_LE_LMUL_EQ] THEN TRANS_TAC REAL_LE_TRANS `measure(UNIONS (IMAGE ball d):real^N->bool)` THEN CONJ_TAC THENL - [MATCH_MP_TAC REAL_EQ_IMP_LE THEN CONV_TAC SYM_CONV THEN + [MATCH_MP_TAC REAL_EQ_IMP_LE THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MEASURE_DISJOINT_UNIONS_IMAGE THEN ASM_REWRITE_TAC[] THEN CONJ_TAC THENL [REWRITE_TAC[FORALL_PAIR_THM; MEASURABLE_BALL]; ALL_TAC] THEN @@ -14374,7 +14374,7 @@ let LEBESGUE_MEASURABLE_POINTS_OF_DIFFERENTIABILITY_WITHIN = prove norm(y n - x) < inv(&n + &1)) /\ (!n. norm(y(SUC n) - x) < norm(y n - x))` MP_TAC THENL - [MATCH_MP_TAC DEPENDENT_CHOICE THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [MATCH_MP_TAC DEPENDENT_CHOICE THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL [ASM_MESON_TAC[REAL_LT_01]; ALL_TAC] THEN MAP_EVERY X_GEN_TAC [`n:num`; `y:real^M`] THEN STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o SPEC @@ -14784,7 +14784,7 @@ let MEASURABLE_ON_PARTIAL_DERIVATIVES = prove norm(y n) < inv(&n + &1)) /\ (!n. norm(y(SUC n)) < norm(y n))` MP_TAC THENL - [MATCH_MP_TAC DEPENDENT_CHOICE THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [MATCH_MP_TAC DEPENDENT_CHOICE THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL [ASM_MESON_TAC[REAL_LT_01]; ALL_TAC] THEN MAP_EVERY X_GEN_TAC [`n:num`; `y:real^M`] THEN STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o SPEC @@ -15244,7 +15244,7 @@ let MEASURABLE_ON_PARTIAL_DERIVATIVES = prove norm(y i - x) < inv(&i + &1)) /\ (!i. norm(y(SUC i) - x) < norm(y i - x))` MP_TAC THENL - [MATCH_MP_TAC DEPENDENT_CHOICE THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [MATCH_MP_TAC DEPENDENT_CHOICE THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL [ASM_MESON_TAC[REAL_LT_01]; ALL_TAC] THEN MAP_EVERY X_GEN_TAC [`i:num`; `y:real^M`] THEN STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o SPEC @@ -15543,9 +15543,9 @@ let LUZIN = prove ASM_SIMP_TAC[real_div; SUM_LMUL; REAL_LE_LMUL_EQ; REAL_ARITH `(e * inv(&4)) * s <= e * inv(&2) <=> e * s <= e * &2`] THEN REWRITE_TAC[REAL_INV_POW; SUM_GP; LT] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `(&1 - s) / (&1 / &2) <= &2 <=> &0 <= s`] THEN - MATCH_MP_TAC REAL_POW_LE THEN CONV_TAC REAL_RAT_REDUCE_CONV; + MATCH_MP_TAC REAL_POW_LE THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; REWRITE_TAC[CONTINUOUS_ON_EQ_CONTINUOUS_WITHIN] THEN REWRITE_TAC[INTERS_GSPEC; IN_ELIM_THM; IN_UNIV] THEN @@ -15653,7 +15653,7 @@ let LUZIN_EQ,LUZIN_EQ_ALT = (CONJ_PAIR o prove) ASM_SIMP_TAC[SUM_LE_NUMSEG; REAL_LT_IMP_LE] THEN REWRITE_TAC[REAL_INV_POW; SUM_GP; LT] THEN COND_CASES_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(REAL_ARITH + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(REAL_ARITH `a <= e / &4 /\ &0 <= b ==> (a - b) / (&1 / &2) <= e / &2`) THEN REWRITE_TAC[real_div; REAL_MUL_LID; REAL_POW_INV] THEN @@ -15701,7 +15701,7 @@ let LUZIN_SIGMA = prove (f:real^M->real^N) continuous_on (g n)` MP_TAC THENL [MATCH_MP_TAC num_WF THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN - FIRST_X_ASSUM(SUBST1_TAC o SPEC `n:num`) THEN CONV_TAC SELECT_CONV THEN + FIRST_X_ASSUM(SUBST1_TAC o SPEC `n:num`) THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN MATCH_MP_TAC LUZIN THEN REWRITE_TAC[REAL_LT_INV_EQ; REAL_ARITH `&0 < &n + &1`] THEN CONJ_TAC THENL @@ -16559,7 +16559,7 @@ let BANACH_SPROPERTY_IMP_FINITE_PREIMAGES = prove DISCH_THEN(fun th -> MATCH_MP_TAC num_WF THEN MP_TAC th) THEN MATCH_MP_TAC MONO_FORALL THEN X_GEN_TAC `n:num` THEN DISCH_THEN SUBST1_TAC THEN - DISCH_TAC THEN CONV_TAC SELECT_CONV THEN + DISCH_TAC THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN MP_TAC(ISPECL [`f:real^M->real^N`; `s DIFF UNIONS {(c:num->real^M->bool) m | m < n}`; `IMAGE (f:real^M->real^N) s`; @@ -16742,7 +16742,7 @@ let ABSOLUTELY_CONTINUOUS_MEASURE_IMAGE = prove REWRITE_TAC[UNIONS_SUBSET; FORALL_IN_GSPEC] THEN ASM SET_TAC[]; REWRITE_TAC[NEGLIGIBLE_OUTER] THEN X_GEN_TAC `d:real` THEN DISCH_TAC THEN MP_TAC(ISPECL [`inv(&2)`; `d:real`] REAL_ARCH_POW_INV) THEN - ASM_REWRITE_TAC[REAL_POW_INV] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[REAL_POW_INV] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_THEN `N:num` STRIP_ASSUME_TAC) THEN EXISTS_TAC `UNIONS {t k | SUC N <= k}:real^M->bool` THEN CONJ_TAC THENL [EXPAND_TAC "c" THEN @@ -16772,7 +16772,7 @@ let ABSOLUTELY_CONTINUOUS_MEASURE_IMAGE = prove TRANS_TAC REAL_LE_TRANS `sum(SUC N..M) (\n. inv(&2 pow n))` THEN ASM_SIMP_TAC[SUM_LE_NUMSEG; REAL_LT_IMP_LE] THEN REWRITE_TAC[SUM_GP; REAL_INV_POW] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN COND_CASES_TAC THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN COND_CASES_TAC THEN SIMP_TAC[REAL_POW_LE; REAL_ARITH `&0 <= &1 / &2`; real_pow; REAL_ARITH `(&1 / &2 * x - &1 / &2 * y) / (&1 / &2) <= x <=> &0 <= y`]]]; UNDISCH_TAC @@ -16940,7 +16940,7 @@ let MEASURABLE_LOCALLY_LIPSCHITZ_IMAGE,MEASURE_LOCALLY_LIPSCHITZ_IMAGE = FIRST_X_ASSUM(MP_TAC o SPEC `y:real^M` o CONJUNCT2) THEN ASM_REWRITE_TAC[IN_INTER; IN_BALL] THEN GEN_REWRITE_TAC LAND_CONV [GSYM CONTRAPOS_THM] THEN - ANTS_TAC THENL [ALL_TAC; CONV_TAC NORM_ARITH] THEN + ANTS_TAC THENL [ALL_TAC; (CONV_TAC "NORM_ARITH") NORM_ARITH] THEN MATCH_MP_TAC(NORM_ARITH `&0 < --x ==> ~(norm(a:real^M) <= x)`) THEN REWRITE_TAC[GSYM REAL_MUL_LNEG] THEN MATCH_MP_TAC REAL_LT_MUL THEN ASM_SIMP_TAC[NORM_POS_LT; VECTOR_SUB_EQ] THEN ASM_REAL_ARITH_TAC; @@ -17114,7 +17114,7 @@ let MEASURABLE_LOCALLY_LIPSCHITZ_IMAGE,MEASURE_LOCALLY_LIPSCHITZ_IMAGE = SUBGOAL_THEN `ball(vec 0:real^N,t) = IMAGE (\x. lambda i. x$i) (ball(vec 0:real^M,t))` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_BALL_0; NORM_LT_SQUARE] THEN SIMP_TAC[dot; LAMBDA_BETA] THEN @@ -17624,7 +17624,7 @@ let MEASURABLE_DIFFERENTIABLE_IMAGE,MEASURE_DIFFERENTIABLE_IMAGE = (\x:real^N. lift(abs(det(matrix(f' x):real^N^N)))))` THEN CONJ_TAC THENL [MATCH_MP_TAC REAL_EQ_IMP_LE THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC INTEGRAL_UNIQUE THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_UNIQUE THEN MATCH_MP_TAC HAS_INTEGRAL_UNIONS THEN ASM_SIMP_TAC[SIMPLE_IMAGE; FINITE_IMAGE; FORALL_IN_IMAGE; FINITE_NUMSEG] THEN @@ -17772,7 +17772,7 @@ let NEGLIGIBLE_DIFFERENTIABLE_PREIMAGE = prove MAP_EVERY X_GEN_TAC [`x:real^M`; `y:real^M`] THEN STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o SPECL [`x:real^M`; `y:real^M`]) THEN ASM_REWRITE_TAC[VECTOR_SUB_REFL; real_div; NORM_0; REAL_MUL_LZERO] THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; ALL_TAC] THEN MATCH_MP_TAC NEGLIGIBLE_SUBSET THEN EXISTS_TAC @@ -18435,7 +18435,7 @@ let HAS_ABSOLUTE_INTEGRAL_CHANGE_OF_VARIABLES_INVERTIBLE = prove REAL_LE_TRANS)) THEN MATCH_MP_TAC REAL_EQ_IMP_LE THEN AP_TERM_TAC THEN MATCH_MP_TAC INTEGRAL_EQ THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV)]; + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV)]; EXISTS_TAC `g':real^N->real^N->real^N` THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC ABSOLUTELY_INTEGRABLE_ABSOLUTELY_INTEGRABLE_DROP_LBOUND THEN EXISTS_TAC `(\x. vec 0):real^N->real^1` THEN @@ -18444,7 +18444,7 @@ let HAS_ABSOLUTE_INTEGRAL_CHANGE_OF_VARIABLES_INVERTIBLE = prove EXISTS_TAC `g':real^N->real^N->real^N` THEN ASM_REWRITE_TAC[] THEN ASM SET_TAC[]] THEN ASM_SIMP_TAC[GSYM DET_MUL; VECTOR_MUL_ASSOC; GSYM REAL_ABS_MUL] THEN - X_GEN_TAC `x:real^N` THEN DISCH_TAC THEN CONV_TAC SYM_CONV THEN + X_GEN_TAC `x:real^N` THEN DISCH_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN GEN_REWRITE_TAC RAND_CONV [GSYM VECTOR_MUL_LID] THEN REWRITE_TAC[VECTOR_MUL_RCANCEL] THEN DISJ1_TAC THEN RULE_ASSUM_TAC(REWRITE_RULE[has_derivative]) THEN @@ -18466,7 +18466,7 @@ let HAS_ABSOLUTE_INTEGRAL_CHANGE_OF_VARIABLES_INVERTIBLE = prove REWRITE_TAC[MESON[REAL_LE_TRANS; REAL_LE_ANTISYM] `(!b. P x /\ f x = b <=> Q x /\ g x = b) <=> (!b. P x /\ f x <= b <=> Q x /\ g x <= b)`] THEN - GEN_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC version0 THEN + GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC version0 THEN MAP_EVERY EXISTS_TAC [`h:real^N->real^N`; `h':real^N->real^N->real^N`] THEN ASM_REWRITE_TAC[]) in let version2 = prove @@ -18544,7 +18544,7 @@ let HAS_ABSOLUTE_INTEGRAL_CHANGE_OF_VARIABLES_INVERTIBLE = prove AP_TERM `(det o matrix):(real^N->real^N)->real`) THEN RULE_ASSUM_TAC(REWRITE_RULE[has_derivative]) THEN ASM_SIMP_TAC[o_THM; MATRIX_COMPOSE; DET_MUL; MATRIX_I; DET_I] THEN - CONV_TAC REAL_RING; + (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN REMOVE_THEN "-" (MP_TAC o SPEC `integral {x | x IN s /\ drop(f((g:real^N->real^N) x)) < &0} @@ -18636,7 +18636,7 @@ let HAS_ABSOLUTE_INTEGRAL_CHANGE_OF_VARIABLES_INVERTIBLE = prove AP_TERM `(det o matrix):(real^N->real^N)->real`) THEN RULE_ASSUM_TAC(REWRITE_RULE[has_derivative]) THEN ASM_SIMP_TAC[o_THM; MATRIX_COMPOSE; DET_MUL; MATRIX_I; DET_I] THEN - CONV_TAC REAL_RING; + (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN REMOVE_THEN "-" (MP_TAC o SPEC `integral {y | y IN t /\ drop(f y) < &0} @@ -18882,7 +18882,7 @@ let HAS_ABSOLUTE_INTEGRAL_CHANGE_OF_VARIABLES = prove MATCH_MP_TAC(MESON[] `(p \/ q) /\ (!b. p /\ x = b <=> q /\ y = b) ==> (p <=> q) /\ x = y`) THEN CONJ_TAC THENL [ASM_REWRITE_TAC[]; GEN_TAC] THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[lemma] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[lemma] THEN MATCH_MP_TAC version6 THEN ASM_SIMP_TAC[COMPACT_UNIONS; SIMPLE_IMAGE; FORALL_IN_IMAGE; FINITE_IMAGE; FINITE_NUMSEG] THEN @@ -19266,7 +19266,7 @@ let MEASURABLE_DIFFERENTIABLE_IMAGE_ALT = prove REPEAT STRIP_TAC THEN MP_TAC(ISPECL [`f:real^N->real^N`; `f':real^N->real^N->real^N`; `s:real^N->bool`] MEASURABLE_DIFFERENTIABLE_IMAGE_EQ) THEN - ASM_REWRITE_TAC[] THEN DISCH_THEN SUBST1_TAC THEN CONV_TAC SYM_CONV THEN + ASM_REWRITE_TAC[] THEN DISCH_THEN SUBST1_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC ABSOLUTELY_INTEGRABLE_EQ_INTEGRABLE_POS THEN REWRITE_TAC[LIFT_DROP; REAL_ABS_POS]);; @@ -19335,7 +19335,7 @@ let ABSOLUTELY_INTEGRABLE_ON_LINEAR_IMAGE = prove (f o g) absolutely_integrable_on s \/ det(matrix g) = &0)`, ASM_SIMP_TAC[GSYM ABSOLUTELY_INTEGRABLE_CHANGE_OF_VARIABLES_LINEAR] THEN REWRITE_TAC[ABSOLUTELY_INTEGRABLE_CMUL_EQ; o_DEF; REAL_ABS_ZERO] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; let INTEGRAL_CHANGE_OF_VARIABLES_LINEAR = prove (`!f:real^M->real^N g:real^M->real^M s. @@ -19697,7 +19697,7 @@ let ABSOLUTELY_INTEGRABLE_APPROXIMATE_CONTINUOUS = prove ASM_SIMP_TAC[ABSOLUTELY_INTEGRABLE_NORM; ABSOLUTELY_INTEGRABLE_SUB; ABSOLUTELY_INTEGRABLE_ADD; LIFT_DROP; DROP_ADD; NORM_LIFT; ABSOLUTELY_INTEGRABLE_IMP_INTEGRABLE] THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; ASM_SIMP_TAC[INTEGRAL_ADD; ABSOLUTELY_INTEGRABLE_IMP_INTEGRABLE; ABSOLUTELY_INTEGRABLE_NORM; DROP_ADD]] THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REAL_ARITH @@ -19805,7 +19805,7 @@ let CONTINUOUS_ON_ABSOLUTELY_INTEGRABLE_TRANSLATION_NORM = prove REWRITE_TAC[IN_UNIV; DROP_ADD; DROP_SUB; LIFT_DROP] THEN REWRITE_TAC[NORM_LIFT; REAL_ABS_NORM] THEN REWRITE_TAC[CONJ_ASSOC] THEN - CONJ_TAC THENL [ALL_TAC; CONV_TAC NORM_ARITH]]] THEN + CONJ_TAC THENL [ALL_TAC; (CONV_TAC "NORM_ARITH") NORM_ARITH]]] THEN REWRITE_TAC[] THEN REPEAT CONJ_TAC THEN MATCH_MP_TAC ABSOLUTELY_INTEGRABLE_IMP_INTEGRABLE THEN REPEAT(MATCH_MP_TAC ABSOLUTELY_INTEGRABLE_ADD THEN CONJ_TAC) THEN @@ -19924,7 +19924,7 @@ let CONTINUOUS_ON_ABSOLUTELY_INTEGRABLE_TRANSLATION_NORM = prove TRANS_TAC SUBSET_TRANS `ball(vec 0:real^M,B + &1)` THEN ASM_REWRITE_TAC[] THEN REWRITE_TAC[SUBSET; IN_BALL_0; FORALL_IN_IMAGE] THEN - UNDISCH_TAC `norm(a:real^M) < &1` THEN CONV_TAC NORM_ARITH; + UNDISCH_TAC `norm(a:real^M) < &1` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; ALL_TAC] THEN DISCH_THEN(CONJUNCTS_THEN(fun th -> FIRST_ASSUM(MP_TAC o C MATCH_MP th))) THEN @@ -19971,7 +19971,7 @@ let CONTINUOUS_ON_ABSOLUTELY_INTEGRABLE_TRANSLATION_NORM = prove COND_CASES_TAC THEN ASM_REWRITE_TAC[NORM_LIFT; GSYM LIFT_SUB; LIFT_DROP; GSYM LIFT_ADD; VECTOR_SUB_RZERO] THEN - CONV_TAC NORM_ARITH]]] THEN + (CONV_TAC "NORM_ARITH") NORM_ARITH]]] THEN REPEAT CONJ_TAC THEN REWRITE_TAC[INTEGRABLE_RESTRICT_UNIV] THEN MATCH_MP_TAC ABSOLUTELY_INTEGRABLE_IMP_INTEGRABLE THEN @@ -20109,7 +20109,7 @@ let CONTINUOUS_MEASURE_TRANSLATION_SYMDIFF = prove REWRITE_TAC[VECTOR_ARITH `x - --a:real^N = a + x`] THEN REWRITE_TAC[GSYM DROP_EQ; LIFT_DROP; NORM_1] THEN REPEAT(COND_CASES_TAC THEN ASM_REWRITE_TAC[DROP_SUB; DROP_VEC]) THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let CONTINUOUS_MEASURE_TRANSLATION_DIFF = prove (`!s:real^N->bool. @@ -20545,13 +20545,13 @@ let SUBINTERVAL_MEAN_VALUE_THEOREM_SEQ = prove MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `c:real^N` THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `d:real^N` THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THEN - CONJ_TAC THENL [ASM_MESON_TAC[]; CONV_TAC REAL_RAT_REDUCE_CONV] THEN + CONJ_TAC THENL [ASM_MESON_TAC[]; (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN EXPAND_TAC "d" THEN REWRITE_TAC[NORM_ARITH `dist(c:real^N,c + x) = norm x`] THEN REWRITE_TAC[ONCE_REWRITE_RULE[REAL_MUL_SYM] NORM_MUL] THEN ASM_SIMP_TAC[REAL_ABS_INV; REAL_ABS_NUM; REAL_LT_LDIV_EQ; GSYM real_div; REAL_OF_NUM_LT; LE_1; REAL_MUL_LID] THEN - UNDISCH_TAC `dist(a:real^N,b) + &1 <= &n` THEN CONV_TAC NORM_ARITH; + UNDISCH_TAC `dist(a:real^N,b) + &1 <= &n` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; MAP_EVERY X_GEN_TAC [`k:num`; `c:real^N`; `d:real^N`] THEN STRIP_TAC THEN MP_TAC(ISPEC `dist(c:real^N,d) * &(k + 2) + &1` REAL_ARCH_SIMPLE) THEN DISCH_THEN(X_CHOOSE_THEN `n:num` MP_TAC) THEN ASM_CASES_TAC `n = 0` THENL @@ -21168,7 +21168,7 @@ let ABSOLUTE_INTEGRATION_BY_PARTS = prove (CONJ_TAC THENL [MATCH_MP_TAC INTEGRAL_NORM_BOUND_INTEGRAL; REWRITE_TAC[REAL_MUL_ASSOC] THEN REWRITE_TAC[LIFT_CMUL] THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) [INTEGRAL_CMUL; ABSOLUTELY_INTEGRABLE_IMP_INTEGRABLE; ABSOLUTELY_INTEGRABLE_NORM; ABSOLUTELY_INTEGRABLE_SUB; ABSOLUTELY_INTEGRABLE_CONTINUOUS; ETA_AX] THEN @@ -21182,7 +21182,7 @@ let ABSOLUTE_INTEGRATION_BY_PARTS = prove MATCH_MP_TAC(REAL_ARITH `abs x <= a ==> x <= a`) THEN ASM_SIMP_TAC[GSYM ABS_DROP; REAL_LT_IMP_LE]]) THEN REWRITE_TAC[REAL_MUL_ASSOC] THEN REWRITE_TAC[LIFT_CMUL] THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) [VECTOR_MUL_ASSOC; INTEGRABLE_CMUL; ABSOLUTELY_INTEGRABLE_IMP_INTEGRABLE; ABSOLUTELY_INTEGRABLE_NORM; ABSOLUTELY_INTEGRABLE_SUB; CONTINUOUS_ON_SUB; ABSOLUTELY_INTEGRABLE_CONTINUOUS; ETA_AX] THEN @@ -21521,11 +21521,11 @@ let EGOROV = prove ASM_SIMP_TAC[SUM_LE_NUMSEG; REAL_LT_IMP_LE] THEN REWRITE_TAC[REAL_POW_ADD; real_div; REAL_INV_POW; REAL_MUL_ASSOC] THEN REWRITE_TAC[SUM_RMUL; SUM_LMUL; SUM_GP; CONJUNCT1 LT] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_LE_LMUL_EQ; GSYM REAL_MUL_ASSOC] THEN MATCH_MP_TAC(REAL_ARITH `&0 <= x ==> (&1 - x) / (&1 / &2) * &1 / &4 <= &1 / &2`) THEN - MATCH_MP_TAC REAL_POW_LE THEN CONV_TAC REAL_RAT_REDUCE_CONV; + MATCH_MP_TAC REAL_POW_LE THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; X_GEN_TAC `e:real` THEN DISCH_TAC THEN MP_TAC(SPEC `e:real` REAL_ARCH_INV) THEN ASM_REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN @@ -21750,7 +21750,7 @@ let LEBESGUE_DIFFERENTIATION_THEOREM_COMPACT = prove SUBGOAL_THEN `e / &3 = (abs B + &1) / (&3 * (abs B + &1) / e)` SUBST1_TAC THENL - [UNDISCH_TAC `&0 < e` THEN CONV_TAC REAL_FIELD; + [UNDISCH_TAC `&0 < e` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ASM_SIMP_TAC[REAL_LT_RDIV_EQ; REAL_ARITH `&0 < &3 * M <=> &0 < M`; REAL_LT_DIV; REAL_ARITH `&0 < abs B + &1`]] THEN MATCH_MP_TAC(REAL_ARITH `x <= b ==> x < abs b + &1`) THEN @@ -22802,7 +22802,7 @@ let LEBESGUE_DIFFERENTIATION_THEOREM_ALT = prove REPEAT STRIP_TAC THEN EXISTS_TAC `{x | x IN s /\ ~((f:real^1->real^N) differentiable at x)}` THEN ASM_SIMP_TAC[LEBESGUE_DIFFERENTIATION_THEOREM; SUBSET_RESTRICT] THEN - REWRITE_TAC[IN_DIFF; IN_ELIM_THM] THEN CONV_TAC TAUT);; + REWRITE_TAC[IN_DIFF; IN_ELIM_THM] THEN (CONV_TAC "TAUT") TAUT);; let LEBESGUE_DIFFERENTIATION_THEOREM_GEN = prove (`!f:real^1->real^N s. @@ -22906,13 +22906,13 @@ let ABSOLUTELY_CONTINUOUS_INTEGRAL = prove ALL_TAC] THEN CONJ_TAC THENL [MATCH_MP_TAC INTEGRAL_NORM_BOUND_INTEGRAL THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [ABSOLUTELY_INTEGRABLE_NORM; ABSOLUTELY_INTEGRABLE_ADD; ABSOLUTELY_INTEGRABLE_IMP_INTEGRABLE; ABSOLUTELY_INTEGRABLE_SUB] THEN GEN_TAC THEN DISCH_TAC THEN REWRITE_TAC[LIFT_DROP; DROP_ADD] THEN - COND_CASES_TAC THENL [CONV_TAC NORM_ARITH; ASM SET_TAC[]]; + COND_CASES_TAC THENL [(CONV_TAC "NORM_ARITH") NORM_ARITH; ASM SET_TAC[]]; ALL_TAC] THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [ABSOLUTELY_INTEGRABLE_NORM; INTEGRAL_ADD; DROP_ADD; ABSOLUTELY_INTEGRABLE_IMP_INTEGRABLE; ABSOLUTELY_INTEGRABLE_SUB] THEN MATCH_MP_TAC(REAL_ARITH `x < e / &2 /\ y < e / &2 ==> x + y < e`) THEN @@ -23123,7 +23123,7 @@ let ABSOLUTELY_INTEGRABLE_BOUNDED_VARIATION_EQ = prove ASM_REWRITE_TAC[] THEN EQ_TAC THEN MATCH_MP_TAC(ONCE_REWRITE_RULE[IMP_CONJ] HAS_BOUNDED_SETVARIATION_ON_EQ) THEN MAP_EVERY X_GEN_TAC [`c:real^1`; `d:real^1`] THEN STRIP_TAC THEN - REWRITE_TAC[] THENL [CONV_TAC SYM_CONV; ALL_TAC] THEN + REWRITE_TAC[] THENL [(CONV_TAC "SYM_CONV") SYM_CONV; ALL_TAC] THEN ASM_SIMP_TAC[INTERVAL_LOWERBOUND_NONEMPTY; INTERVAL_UPPERBOUND_NONEMPTY] THEN MATCH_MP_TAC(VECTOR_ARITH `b + c:real^N = a ==> a - b = c`) THEN MATCH_MP_TAC INTEGRAL_COMBINE THEN REPEAT CONJ_TAC THEN @@ -23153,7 +23153,7 @@ let ABSOLUTELY_INTEGRABLE_ABSOLUTELY_CONTINUOUS_DERIVATIVE = prove EXISTS_TAC `\x. (f:real^1->real^N) x - f a` THEN ASM_SIMP_TAC[ABSOLUTELY_CONTINUOUS_ON_SUB; ABSOLUTELY_CONTINUOUS_ON_CONST] THEN - X_GEN_TAC `c:real^1` THEN DISCH_TAC THEN CONV_TAC SYM_CONV THEN + X_GEN_TAC `c:real^1` THEN DISCH_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_UNIQUE THEN MATCH_MP_TAC FUNDAMENTAL_THEOREM_OF_CALCULUS_ABSOLUTELY_CONTINUOUS THEN EXISTS_TAC `s:real^1->bool` THEN ASM_REWRITE_TAC[] THEN @@ -23397,7 +23397,7 @@ let ABSOLUTELY_INTEGRABLE_INCREASING_DERIVATIVE = prove DISCH_THEN(MP_TAC o SPECL [`&1`; `lift(inv(&n))`] o MATCH_MP(REWRITE_RULE[IMP_CONJ] INTEGRABLE_AFFINITY)) THEN REWRITE_TAC[IMAGE_AFFINITY_INTERVAL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_div; REAL_MUL_LID; VECTOR_MUL_LID] THEN REWRITE_TAC[VECTOR_ARITH `(a + x) + --x:real^1 = a`] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN @@ -23420,7 +23420,7 @@ let ABSOLUTELY_INTEGRABLE_INCREASING_DERIVATIVE = prove `&1`; `lift(inv(&n))`] HAS_INTEGRAL_AFFINITY) THEN REWRITE_TAC[DIMINDEX_1] THEN REWRITE_TAC[GSYM HAS_INTEGRAL_INTEGRAL; IMAGE_AFFINITY_INTERVAL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[VECTOR_MUL_LID; INTERVAL_EQ_EMPTY_1] THEN REWRITE_TAC[DROP_ADD; LIFT_DROP] THEN COND_CASES_TAC THENL @@ -23470,7 +23470,7 @@ let ABSOLUTELY_INTEGRABLE_INCREASING_DERIVATIVE = prove REAL_LE_DIV; REAL_POS] THEN REWRITE_TAC[DROP_CMUL] THEN MATCH_MP_TAC REAL_EQ_IMP_LE THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM REAL_OF_NUM_LE]) THEN - CONV_TAC REAL_FIELD]; + (CONV_TAC "REAL_FIELD") REAL_FIELD]; TRANS_TAC REAL_LE_TRANS `&n * drop(integral (interval[a,a + lift (&1 / &n)]) (\x. (f:real^1->real^1) a))` THEN @@ -23480,7 +23480,7 @@ let ABSOLUTELY_INTEGRABLE_INCREASING_DERIVATIVE = prove REAL_LE_DIV; REAL_POS] THEN REWRITE_TAC[DROP_CMUL] THEN MATCH_MP_TAC REAL_EQ_IMP_LE THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM REAL_OF_NUM_LE]) THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; MATCH_MP_TAC REAL_LE_LMUL THEN REWRITE_TAC[REAL_POS] THEN MATCH_MP_TAC INTEGRAL_DROP_LE THEN ASM_SIMP_TAC[INTEGRABLE_CONST; IN_INTERVAL_1]]]);; @@ -23827,7 +23827,7 @@ let VECTOR_VARIATION_INTEGRAL_NORM_DERIVATIVE_GEN = prove MAP_EVERY X_GEN_TAC [`u:real^1`; `v:real^1`] THEN SIMP_TAC[INTERVAL_NE_EMPTY_1; INTERVAL_LOWERBOUND_1; INTERVAL_UPPERBOUND_1] THEN - STRIP_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC INTEGRAL_UNIQUE THEN + STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_UNIQUE THEN MATCH_MP_TAC FUNDAMENTAL_THEOREM_OF_CALCULUS_ABSOLUTELY_CONTINUOUS THEN EXISTS_TAC `s:real^1->bool` THEN ASM_REWRITE_TAC[] THEN CONJ_TAC THENL [ASM_MESON_TAC[ABSOLUTELY_CONTINUOUS_ON_SUBSET]; ALL_TAC] THEN @@ -23881,7 +23881,7 @@ let ABSOLUTELY_CONTINUOUS_VECTOR_VARIATION = prove TAUT `(p ==> q) ==> (p /\ q /\ r <=> p /\ r)`] THEN X_GEN_TAC `c:real^1` THEN DISCH_TAC THEN REWRITE_TAC[GSYM DROP_EQ; LIFT_DROP] THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN W(MP_TAC o PART_MATCH (rand o rand) VECTOR_VARIATION_INTEGRAL_NORM_DERIVATIVE_GEN o rand o snd) THEN ASM_REWRITE_TAC[] THEN ANTS_TAC THENL @@ -24321,7 +24321,7 @@ let MEASURABLE_ABSOLUTELY_CONTINUOUS_IMAGE = prove X_GEN_TAC `t:real^1->bool` THEN DISCH_TAC THEN SUBGOAL_THEN `?n. measure(t:real^1->bool) < &2 pow n * d` ASSUME_TAC THENL [ASM_SIMP_TAC[GSYM REAL_LT_LDIV_EQ] THEN MATCH_MP_TAC REAL_ARCH_POW THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; FIRST_X_ASSUM(MP_TAC o check (is_conj o concl)) THEN FIRST_X_ASSUM(MP_TAC o check (is_exists o concl)) THEN SPEC_TAC(`t:real^1->bool`,`t:real^1->bool`) THEN @@ -25277,7 +25277,7 @@ let CONVERGENCE_IN_MEASURE = prove REWRITE_TAC[EVENTUALLY_SEQUENTIALLY] THENL [MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `m:num` THEN DISCH_THEN(MP_TAC o SPEC `m:num`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LE_REFL]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LE_REFL]; DISCH_THEN(X_CHOOSE_THEN `m:num` (MP_TAC o SPEC `m + p + 1:num`)) THEN DISCH_THEN(fun th -> EXISTS_TAC `m + p + 1:num` THEN MP_TAC th) THEN REWRITE_TAC[LE_ADD; ARITH_RULE `p < m + p + 1`]]; @@ -25293,7 +25293,7 @@ let CONVERGENCE_IN_MEASURE = prove SIMP_TAC[NEGLIGIBLE_OUTER_LE] THEN X_GEN_TAC `e:real` THEN DISCH_TAC THEN MP_TAC(ISPECL [`inv(&2)`; `e / &2`] REAL_ARCH_POW_INV) THEN ASM_REWRITE_TAC[REAL_POW_INV; REAL_HALF] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_THEN `N:num` STRIP_ASSUME_TAC) THEN EXISTS_TAC `UNIONS {(t:num->real^M->bool) k | N <= k}` THEN CONJ_TAC THENL [MATCH_MP_TAC(SET_RULE `x IN s ==> INTERS s SUBSET x`) THEN SET_TAC[]; @@ -25307,7 +25307,7 @@ let CONVERGENCE_IN_MEASURE = prove [MATCH_MP_TAC SUM_LE_NUMSEG THEN ASM_SIMP_TAC[REAL_LT_IMP_LE]; ALL_TAC] THEN REWRITE_TAC[REAL_POW_ADD; REAL_INV_MUL; SUM_LMUL; GSYM REAL_POW_INV] THEN - REWRITE_TAC[SUM_GP; CONJUNCT1 LT] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[SUM_GP; CONJUNCT1 LT] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[real_div; REAL_MUL_LID; REAL_INV_INV] THEN REWRITE_TAC[REAL_ARITH `x * y * &2 <= e <=> y * x <= e / &2`] THEN REWRITE_TAC[REAL_POW_INV] THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP @@ -25326,7 +25326,7 @@ let CONVERGENCE_IN_MEASURE = prove REWRITE_TAC[LIM_SEQUENTIALLY] THEN X_GEN_TAC `e:real` THEN DISCH_TAC THEN MP_TAC(ISPECL [`inv(&2)`; `e:real`] REAL_ARCH_POW_INV) THEN - ASM_REWRITE_TAC[REAL_POW_INV] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[REAL_POW_INV] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_THEN `M:num` STRIP_ASSUME_TAC) THEN EXISTS_TAC `N + M:num` THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN REMOVE_THEN "*" (MP_TAC o SPEC `n:num`) THEN @@ -25337,7 +25337,7 @@ let CONVERGENCE_IN_MEASURE = prove MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ_ALT] REAL_LT_TRANS) THEN TRANS_TAC REAL_LET_TRANS `inv(&2 pow M)` THEN ASM_REWRITE_TAC[] THEN REWRITE_TAC[GSYM REAL_POW_INV] THEN MATCH_MP_TAC REAL_POW_MONO_INV THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC]);; let CONVERGENCE_IN_MEASURE_UNIQUE = prove (`!f:num->real^M->real^N g h s. @@ -25456,7 +25456,7 @@ let FUBINI_MEASURE = prove REWRITE_TAC[IN_DIFF; IN_UNIV]] THEN REWRITE_TAC[REWRITE_RULE[o_DEF] (GSYM LIFT_SUM); FUN_EQ_THM; LIFT_EQ] THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC MEASURE_NEGLIGIBLE_UNIONS; + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MEASURE_NEGLIGIBLE_UNIONS; GEN_TAC THEN DISCH_TAC THEN REWRITE_TAC[SIMPLE_IMAGE] THEN MATCH_MP_TAC MEASURE_NEGLIGIBLE_UNIONS_IMAGE] THEN ASM_REWRITE_TAC[GSYM HAS_MEASURE_MEASURE] THEN @@ -25636,7 +25636,7 @@ let FUBINI_MEASURE = prove STRIP_ASSUME_TAC THENL [MATCH_MP_TAC DEPENDENT_CHOICE THEN CONJ_TAC THENL [MATCH_MP_TAC MEASURABLE_INNER_COMPACT THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN MAP_EVERY X_GEN_TAC [`n:num`; `t:real^(M,N)finite_sum->bool`] THEN STRIP_TAC THEN @@ -25659,7 +25659,7 @@ let FUBINI_MEASURE = prove STRIP_ASSUME_TAC THENL [MATCH_MP_TAC DEPENDENT_CHOICE THEN CONJ_TAC THENL [MATCH_MP_TAC MEASURABLE_OUTER_OPEN THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]; ALL_TAC] THEN MAP_EVERY X_GEN_TAC [`n:num`; `t:real^(M,N)finite_sum->bool`] THEN STRIP_TAC THEN @@ -26049,7 +26049,7 @@ let NEGLIGIBLE_PCROSS = prove TRANS_TAC EQ_TRANS `sum (D:(real^M->bool)->bool) content` THEN CONJ_TAC THENL [MATCH_MP_TAC SUM_EQ THEN ASM_MESON_TAC[MEASURE_INTERVAL; SUBSET]; - CONV_TAC SYM_CONV THEN MATCH_MP_TAC MEASURE_ELEMENTARY THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MEASURE_ELEMENTARY THEN REWRITE_TAC[division_of] THEN ASM SET_TAC[]]; ONCE_REWRITE_TAC[NEGLIGIBLE_ON_INTERVALS] THEN REWRITE_TAC[FORALL_PASTECART; GSYM PCROSS_INTERVAL; INTER_PCROSS] THEN @@ -26107,7 +26107,7 @@ let NEGLIGIBLE_PCROSS = prove TRANS_TAC EQ_TRANS `sum (D:(real^N->bool)->bool) content` THEN CONJ_TAC THENL [MATCH_MP_TAC SUM_EQ THEN ASM_MESON_TAC[MEASURE_INTERVAL; SUBSET]; - CONV_TAC SYM_CONV THEN MATCH_MP_TAC MEASURE_ELEMENTARY THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MEASURE_ELEMENTARY THEN REWRITE_TAC[division_of] THEN ASM SET_TAC[]]]);; let FUBINI_TONELLI_MEASURE = prove @@ -26304,7 +26304,7 @@ let LEBESGUE_MEASURABLE_PCROSS = prove [REWRITE_TAC[indicator; PASTECART_IN_PCROSS] THEN MAP_EVERY ASM_CASES_TAC [`(x:real^M) IN s`; `(y:real^N) IN t`] THEN ASM_REWRITE_TAC[GSYM DROP_EQ; DROP_CMUL; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; MATCH_MP_TAC LIM_MUL THEN REWRITE_TAC[o_DEF; LIFT_DROP] THEN ASM_SIMP_TAC[]]]]);; @@ -26579,7 +26579,7 @@ let NEGLIGIBLE_MEASURABLE_FUNCTION_GRAPH = prove REPEAT(FIRST_X_ASSUM(SUBST1_TAC o SYM)) THEN ASM_CASES_TAC `x':real^M = x` THEN ASM_REWRITE_TAC[] THEN UNDISCH_TAC `~(a:real^N = b)` THEN REWRITE_TAC[CONTRAPOS_THM] THEN - CONV_TAC VECTOR_ARITH]);; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH]);; (* ------------------------------------------------------------------------- *) (* Hence relate integrals and "area under curve" for functions into R^+. *) @@ -26724,7 +26724,7 @@ let MEASURABLE_ON_COMPOSE_SUB = prove REWRITE_TAC[FORALL_PASTECART; FSTCART_PASTECART; SNDCART_PASTECART] THEN ANTS_TAC THENL [REWRITE_TAC[PASTECART_INJ] THEN - CONJ_TAC THENL [MATCH_MP_TAC LINEAR_PASTECART; CONV_TAC VECTOR_ARITH] THEN + CONJ_TAC THENL [MATCH_MP_TAC LINEAR_PASTECART; (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH] THEN SIMP_TAC[LINEAR_SNDCART; LINEAR_FSTCART; LINEAR_COMPOSE_SUB]; DISCH_THEN SUBST1_TAC THEN MATCH_MP_TAC MEASURABLE_ON_LEBESGUE_MEASURABLE_SUBSET THEN @@ -26810,10 +26810,10 @@ let FUBINI_ABSOLUTELY_INTEGRABLE = prove `y = z /\ ((f has_integral y) s ==> (g has_integral y) s) ==> (f has_integral y) s ==> (g has_integral z) s`) THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC INTEGRAL_UNIQUE THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_UNIQUE THEN ASM_SIMP_TAC[HAS_INTEGRAL_MEASURE_UNDER_CURVE] THEN ASM_REWRITE_TAC[HAS_MEASURE_MEASURABLE_MEASURE] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC MEASURE_UNIQUE THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MEASURE_UNIQUE THEN MATCH_MP_TAC assoclemma THEN ASM_REWRITE_TAC[HAS_MEASURE_MEASURABLE_MEASURE]; MATCH_MP_TAC(ONCE_REWRITE_RULE[IMP_CONJ] @@ -27127,7 +27127,7 @@ let FUBINI_TONELLI = prove MATCH_MP_TAC NONNEGATIVE_ABSOLUTELY_INTEGRABLE THEN REWRITE_TAC[IN_UNIV; DIMINDEX_1; FORALL_1] THEN REWRITE_TAC[COND_RAND; COND_RATOR; GSYM drop; LIFT_DROP; DROP_VEC] THEN - CONJ_TAC THENL [CONV_TAC NORM_ARITH; ALL_TAC] THEN + CONJ_TAC THENL [(CONV_TAC "NORM_ARITH") NORM_ARITH; ALL_TAC] THEN MATCH_MP_TAC INTEGRABLE_CASES THEN REWRITE_TAC[INTEGRABLE_0; IN_UNIV; SET_RULE `{x | x IN s} = s`] THEN MATCH_MP_TAC MEASURABLE_BOUNDED_BY_INTEGRABLE_IMP_INTEGRABLE THEN @@ -27158,7 +27158,7 @@ let FUBINI_TONELLI = prove [REPEAT GEN_TAC THEN EXPAND_TAC "g" THEN REWRITE_TAC[] THEN REPEAT(COND_CASES_TAC THEN ASM_REWRITE_TAC[LIFT_DROP]) THEN REWRITE_TAC[REAL_LE_REFL; DROP_VEC; GSYM REAL_OF_NUM_SUC] THEN - TRY(CONV_TAC NORM_ARITH) THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP + TRY((CONV_TAC "NORM_ARITH") NORM_ARITH) THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (TAUT `~p ==> p ==> q`)) THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (SET_RULE `x IN s ==> s SUBSET t ==> x IN t`)) THEN @@ -27225,7 +27225,7 @@ let FUBINI_TONELLI = prove ASM_REWRITE_TAC[LIFT_DROP; REAL_LE_REFL; IN_UNIV] THEN X_GEN_TAC `y:real^N` THEN EXPAND_TAC "g" THEN COND_CASES_TAC THEN REWRITE_TAC[NORM_0; NORM_POS_LE] THEN - REWRITE_TAC[NORM_LIFT] THEN CONV_TAC NORM_ARITH]]);; + REWRITE_TAC[NORM_LIFT] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]]);; let FUBINI_TONELLI_ALT = prove (`!f:real^(M,N)finite_sum->real^P. @@ -27248,7 +27248,7 @@ let FUBINI_TONELLI_ALT = prove FSTCART_ADD; SNDCART_ADD; FSTCART_CMUL; SNDCART_CMUL] THEN REWRITE_TAC[GSYM PASTECART_ADD; GSYM PASTECART_CMUL]; DISCH_THEN SUBST1_TAC THEN POP_ASSUM MP_TAC THEN - MATCH_MP_TAC EQ_IMP THEN AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC EQ_IMP THEN AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_UNIV] THEN REWRITE_TAC[EXISTS_PASTECART; FORALL_PASTECART] THEN REWRITE_TAC[FSTCART_PASTECART; SNDCART_PASTECART] THEN MESON_TAC[]]; @@ -27346,7 +27346,7 @@ let HAS_DOUBLE_INTEGRAL_PCROSS = prove CONJ_TAC THENL [X_GEN_TAC `y:real^N` THEN REWRITE_TAC[GSYM LIFT_CMUL] THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN REWRITE_TAC[LIFT_CMUL] THEN - REWRITE_TAC[LIFT_DROP] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[LIFT_DROP] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_CMUL THEN MATCH_MP_TAC ABSOLUTELY_INTEGRABLE_IMP_INTEGRABLE THEN MATCH_MP_TAC ABSOLUTELY_INTEGRABLE_NORM THEN ASM_REWRITE_TAC[]; @@ -27423,7 +27423,7 @@ let FUBINI_NEGLIGIBLE_REPLACEMENTS = prove FIRST_ASSUM(SUBST1_TAC o MATCH_MP FUBINI_TONELLI_NEGLIGIBLE_ALT) THEN AP_TERM_TAC THEN GEN_REWRITE_TAC RAND_CONV [SIMPLE_IMAGE_GEN] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN CONJ_TAC THENL [MESON_TAC[LIFT_DROP]; X_GEN_TAC `y:real`] THEN REWRITE_TAC[IN_ELIM_THM] THEN GEN_REWRITE_TAC (LAND_CONV o ONCE_DEPTH_CONV) [lemma3] THEN @@ -27460,7 +27460,7 @@ let FUBINI_NEGLIGIBLE_REPLACEMENTS = prove DISCH_THEN SUBST1_TAC] THEN AP_TERM_TAC THEN ONCE_REWRITE_TAC[SIMPLE_IMAGE_GEN] THEN AP_TERM_TAC THEN REWRITE_TAC[EXTENSION; IN_ELIM_THM] THEN X_GEN_TAC `a:real` THEN - AP_TERM_TAC THEN AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + AP_TERM_TAC THEN AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN CONJ_TAC THENL [MATCH_MP_TAC(MESON[] `(!x. f(f x) = x) ==> (!y. P y ==> ?x. f x = y)`) THEN @@ -27562,7 +27562,7 @@ let FUBINI_NEGLIGIBLE_REPLACEMENTS_ALT = prove MAP_EVERY X_GEN_TAC [`x:real^N`; `z:real^1`] THEN AP_TERM_TAC THEN AP_TERM_TAC THEN GEN_REWRITE_TAC RAND_CONV [SIMPLE_IMAGE_GEN] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN CONJ_TAC THENL [MESON_TAC[LIFT_DROP]; X_GEN_TAC `y:real`] THEN REWRITE_TAC[IN_ELIM_THM] THEN AP_THM_TAC THEN AP_TERM_TAC THEN SIMP_TAC[CART_EQ; pastecart; DIMINDEX_FINITE_SUM; @@ -27591,7 +27591,7 @@ let FUBINI_NEGLIGIBLE_REPLACEMENTS_ALT = prove ASM_REWRITE_TAC[LE_REFL] THEN MATCH_MP_TAC lemma0 THEN REWRITE_TAC[DIMINDEX_FINITE_SUM; DIMINDEX_1] THEN ASM_ARITH_TAC; DISCH_THEN SUBST1_TAC] THEN - AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN CONJ_TAC THENL [MATCH_MP_TAC(MESON[] `(!x. f(f x) = x) ==> (!y. P y ==> ?x. f x = y)`) THEN @@ -27694,7 +27694,7 @@ let FUBINI_NEGLIGIBLE_OFFSET = prove IMAGE (\x. inv(norm v) % x) {t | P(t)}` (fun th -> REWRITE_TAC[th]) THENL - [GEN_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + [GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_ELIM_THM] THEN CONJ_TAC THENL [X_GEN_TAC `y:real^1` THEN DISCH_TAC THEN EXISTS_TAC `norm(v:real^N) % y:real^1`; @@ -27718,7 +27718,7 @@ let FUBINI_NEGLIGIBLE_OFFSET = prove {t | ((lambda i. if i = 1 then drop t else x$i):real^N) IN s}` (fun th -> ONCE_REWRITE_TAC[th]) THENL - [REPEAT GEN_TAC THEN CONV_TAC SYM_CONV THEN + [REPEAT GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[EXISTS_REFL; VECTOR_ARITH `--a + x:real^N = y <=> x = y + a`] THEN @@ -27868,7 +27868,7 @@ let ABSOLUTELY_INTEGRABLE_CONVOLUTION_AE, CONJ_TAC THENL [X_GEN_TAC `y:real^M` THEN REWRITE_TAC[GSYM LIFT_CMUL] THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN REWRITE_TAC[LIFT_CMUL] THEN - REWRITE_TAC[LIFT_DROP] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[LIFT_DROP] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTEGRAL_CMUL THEN MATCH_MP_TAC ABSOLUTELY_INTEGRABLE_IMP_INTEGRABLE THEN MATCH_MP_TAC ABSOLUTELY_INTEGRABLE_NORM THEN @@ -27911,7 +27911,7 @@ let ABSOLUTELY_INTEGRABLE_CONVOLUTION_AE, EXISTS_TAC `\y:real^M. (bop:real^N->real^P->real^Q) (integral (:real^M) (\x. f(x - y))) (g y)` THEN REWRITE_TAC[IN_UNIV] THEN CONJ_TAC THENL - [X_GEN_TAC `y:real^M` THEN CONV_TAC SYM_CONV THEN + [X_GEN_TAC `y:real^M` THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MP_TAC(ISPECL [`\x. (f:real^M->real^N)(x - y)`; `(:real^M)`; `\x. (bop:real^N->real^P->real^Q) x (g(y:real^M))`] @@ -28191,7 +28191,7 @@ let STEINHAUS_SUMS = prove ONCE_REWRITE_TAC[COND_RATOR] THEN REWRITE_TAC[VEC_EQ; ARITH_EQ] THEN REWRITE_TAC[TAUT `(if p then F else T) <=> ~p`] THEN STRIP_TAC THEN MAP_EVERY EXISTS_TAC [`y - z:real^N`; `z:real^N`] THEN - ASM_REWRITE_TAC[] THEN CONV_TAC VECTOR_ARITH; + ASM_REWRITE_TAC[] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; REPEAT GEN_TAC THEN STRIP_TAC THEN MP_TAC(ISPEC `t:real^N->bool` NEGLIGIBLE_ON_INTERVALS) THEN MP_TAC(ISPEC `s:real^N->bool` NEGLIGIBLE_ON_INTERVALS) THEN @@ -28299,7 +28299,7 @@ let MIDPOINT_CONVEX_IMP_CONTINUOUS_OSTROWSKI = prove ASM_REWRITE_TAC[VECTOR_MUL_RCANCEL; VECTOR_ARITH `a % b % x:real^N = x <=> (a * b) % x = &1 % x`] THEN MP_TAC(SPEC `n:num` REAL_LT_POW2) THEN UNDISCH_TAC `&0 < &p` THEN - SPEC_TAC(`&2 pow n`,`k:real`) THEN CONV_TAC REAL_FIELD]; + SPEC_TAC(`&2 pow n`,`k:real`) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]; MAP_EVERY EXISTS_TAC [`IMAGE (\x:real^N. y + x) (IMAGE (\x. (&1 - &p / &2 pow n) % x) u)`; `&(2 EXP n - p) / &2 pow n * b + &p / &2 pow n * f(z:real^N)`] THEN @@ -28334,7 +28334,7 @@ let MIDPOINT_CONVEX_IMP_CONTINUOUS_OSTROWSKI = prove REAL_ARITH `(a - b) / c:real = a / c - b / c`] THEN SIMP_TAC[REAL_OF_NUM_POW; REAL_DIV_REFL; REAL_OF_NUM_EQ; EXP_EQ_0; ARITH_EQ] THEN - CONV_TAC VECTOR_ARITH; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; MATCH_MP_TAC MONO_AND THEN REWRITE_TAC[] THEN MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ_ALT] REAL_LE_TRANS) THEN REWRITE_TAC[REAL_LE_RADD] THEN @@ -28435,7 +28435,7 @@ let MIDPOINT_CONVEX_IMP_CONTINUOUS_OSTROWSKI = prove `inv(&2) % (a + (&2 % x - a)):real^N = x`] THEN ANTS_TAC THENL [ASM_REWRITE_TAC[]; ASM_REAL_ARITH_TAC] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN - UNDISCH_TAC `dist(a:real^N,x) < r / &2` THEN CONV_TAC NORM_ARITH; + UNDISCH_TAC `dist(a:real^N,x) < r / &2` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; ALL_TAC] THEN MP_TAC(SPEC `(C - (f:real^N->real) a) / e` REAL_ARCH_POW2) THEN ASM_SIMP_TAC[REAL_LT_LDIV_EQ] THEN @@ -28705,7 +28705,7 @@ let OSTROWSKI_THEOREM = prove [GEN_TAC THEN FIRST_X_ASSUM(MP_TAC o SPECL [`inv(&2) % x:real^M`; `inv(&2) % x:real^M`]) THEN REWRITE_TAC[VECTOR_ARITH `inv(&2) % x + inv(&2) % x:real^N = x`] THEN - CONV_TAC VECTOR_ARITH; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; CONJ_TAC THEN MATCH_MP_TAC MIDPOINT_CONVEX_IMP_CONVEX_OSTROWSKI THEN MAP_EVERY EXISTS_TAC [`s:real^M->bool`; `B:real`] THEN REWRITE_TAC[o_THM; LIFT_DROP; CONVEX_UNIV; OPEN_UNIV; SUBSET_UNIV] THEN @@ -28739,11 +28739,11 @@ let MEASURABLE_ADDITIVE_IMP_LINEAR = prove [GEN_TAC THEN FIRST_X_ASSUM(MP_TAC o SPECL [`inv(&2) % x:real^M`; `inv(&2) % x:real^M`]) THEN REWRITE_TAC[VECTOR_ARITH `inv(&2) % x + inv(&2) % x:real^N = x`] THEN - CONV_TAC VECTOR_ARITH; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN CONJ_TAC THENL [FIRST_X_ASSUM(MP_TAC o SPECL [`vec 0:real^M`; `vec 0:real^M`]) THEN - REWRITE_TAC[VECTOR_ADD_LID] THEN CONV_TAC VECTOR_ARITH; + REWRITE_TAC[VECTOR_ADD_LID] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN CONJ_TAC THEN MATCH_MP_TAC MEASURABLE_MIDPOINT_CONVEX_IMP_CONVEX_OPEN THEN ASM_REWRITE_TAC[CONVEX_UNIV; OPEN_UNIV; o_DEF; LIFT_DROP; ETA_AX] THEN @@ -28926,7 +28926,7 @@ let RADEMACHER_UNIV = prove REWRITE_TAC[NORM_MUL; GSYM DROP_SUB; GSYM NORM_1; VECTOR_ARITH `(x + a % v) - (x + b % v):real^M = (a - b) % v`] THEN REWRITE_TAC[REAL_LE_REFL; REAL_MUL_AC]; - MATCH_MP_TAC EQ_IMP THEN AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC EQ_IMP THEN AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN GEN_REWRITE_TAC I [EXTENSION] THEN X_GEN_TAC `h:real^1` THEN REWRITE_TAC[IN_ELIM_THM; IN_UNIV] THEN REWRITE_TAC[IN_ELIM_THM; IN_UNIV; VECTOR_DIFFERENTIABLE] THEN @@ -29031,7 +29031,7 @@ let RADEMACHER_UNIV = prove W(MP_TAC o PART_MATCH lhand th o lhand o snd)) THEN MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ_ALT] REAL_LE_TRANS) THEN MATCH_MP_TAC REAL_EQ_IMP_LE THEN AP_TERM_TAC THEN AP_TERM_TAC THEN - CONV_TAC VECTOR_ARITH; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN REWRITE_TAC[continuous_on; IN_UNIV] THEN GEN_REWRITE_TAC LAND_CONV [SWAP_FORALL_THM] THEN @@ -29071,7 +29071,7 @@ let RADEMACHER_UNIV = prove MAP_EVERY UNDISCH_TAC [`dist(u':real^M,u) < duv / &2`; `dist(v':real^M,v) < duv / &2`] THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; ALL_TAC] THEN GEN_REWRITE_TAC (LAND_CONV o RAND_CONV) [GSYM DROP_EQ] THEN GEN_REWRITE_TAC LAND_CONV [REAL_ARITH `~(x = y) <=> x < y \/ y < x`] THEN @@ -29225,7 +29225,7 @@ let RADEMACHER_UNIV = prove y + drop(--t) % w = x + drop t % v` STRIP_ASSUME_TAC THENL [MAP_EVERY EXPAND_TAC ["x"; "y"; "t"] THEN - REWRITE_TAC[DROP_SUB; DROP_NEG] THEN CONV_TAC VECTOR_ARITH; + REWRITE_TAC[DROP_SUB; DROP_NEG] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ASM_REWRITE_TAC[VECTOR_NEG_EQ_0; NORM_NEG]] THEN REWRITE_TAC[DROP_NEG; real_div; REAL_INV_NEG; REAL_MUL_RNEG] THEN ASM_REAL_ARITH_TAC);; @@ -29409,7 +29409,7 @@ let STEPANOV_GEN = prove MAP_EVERY UNDISCH_TAC [`dist(q:real^M,x) < d / &3`; `dist(q:real^M,y) < e`; `e < &2 * d / &3`] THEN - CONV_TAC NORM_ARITH]; + (CONV_TAC "NORM_ARITH") NORM_ARITH]; ALL_TAC] THEN ASM_CASES_TAC `t:real^M->bool = {}` THEN ASM_REWRITE_TAC[EMPTY_GSPEC; NOT_IN_EMPTY; NEGLIGIBLE_EMPTY] THEN @@ -29590,7 +29590,7 @@ let STEPANOV_GEN = prove (CONJ_TAC THENL [ALL_TAC; REPEAT STRIP_TAC THEN MATCH_MP_TAC REAL_LE_LMUL THEN - REWRITE_TAC[REAL_POS] THEN CONV_TAC NORM_ARITH]) THEN + REWRITE_TAC[REAL_POS] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]) THEN REWRITE_TAC[DROP_ADD; DROP_SUB] THEN X_GEN_TAC `y:real^M` THEN STRIP_TAC THENL [MATCH_MP_TAC(REAL_ARITH `abs(y - x) <= e ==> y <= x + e`); diff --git a/Multivariate/metric.ml b/Multivariate/metric.ml index 68a341d5..2ec979cc 100644 --- a/Multivariate/metric.ml +++ b/Multivariate/metric.ml @@ -665,7 +665,7 @@ let CLOSURE_OF_CLOSURE_OF = prove let CLOSURE_OF_HULL = prove (`!top s:A->bool. s SUBSET topspace top ==> top closure_of s = (closed_in top) hull s`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC HULL_UNIQUE THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC HULL_UNIQUE THEN ASM_SIMP_TAC[CLOSURE_OF_SUBSET; CLOSED_IN_CLOSURE_OF] THEN ASM_MESON_TAC[CLOSURE_OF_EQ; CLOSURE_OF_MONO]);; @@ -915,7 +915,7 @@ let INTERIOR_OF_EQ_EMPTY_ALT = prove let INTERIOR_OF_UNIONS_OPEN_IN_SUBSETS = prove (`!top s:A->bool. UNIONS {t | open_in top t /\ t SUBSET s} = top interior_of s`, - REPEAT GEN_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTERIOR_OF_UNIQUE THEN SIMP_TAC[OPEN_IN_UNIONS; IN_ELIM_THM] THEN SET_TAC[]);; @@ -1014,7 +1014,7 @@ let frontier_of = new_definition let FRONTIER_OF_CLOSURES = prove (`!top s. top frontier_of s = top closure_of s INTER top closure_of (topspace top DIFF s)`, - REPEAT GEN_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[frontier_of; CLOSURE_OF_COMPLEMENT] THEN MATCH_MP_TAC(SET_RULE `s SUBSET u ==> s INTER (u DIFF t) = s DIFF t`) THEN REWRITE_TAC[CLOSURE_OF_SUBSET_TOPSPACE]);; @@ -2254,7 +2254,7 @@ let METRIC_ARITH : term -> thm = elim_exists tm in EQ_MP (SYM th0) (GENL avs (elim_exists bod));; -let METRIC_ARITH_TAC = CONV_TAC METRIC_ARITH;; +let METRIC_ARITH_TAC = (CONV_TAC "METRIC_ARITH") METRIC_ARITH;; let ASM_METRIC_ARITH_TAC = REPEAT(FIRST_X_ASSUM(MP_TAC o check (not o is_forall o concl))) THEN @@ -3590,10 +3590,10 @@ let METRIC_BAIRE_CATEGORY = prove ALL_TAC] THEN CLAIM_TAC "rlt" `!n:num. r n < inv (&2 pow n)` THENL [LABEL_INDUCT_TAC THENL - [CONV_TAC (RAND_CONV REAL_RAT_REDUCE_CONV) THEN HYP REWRITE_TAC "r0lt1" []; + [(CONV_TAC "(RAND_CONV REAL_RAT_REDUCE_CONV)") (RAND_CONV REAL_RAT_REDUCE_CONV) THEN HYP REWRITE_TAC "r0lt1" []; TRANS_TAC REAL_LTE_TRANS `r (n:num) / &2` THEN HYP REWRITE_TAC "r1lt" [real_pow] THEN REMOVE_THEN "ind_n" MP_TAC THEN - REMOVE_THEN "rpos" (MP_TAC o SPEC `n:num`) THEN CONV_TAC REAL_FIELD]; + REMOVE_THEN "rpos" (MP_TAC o SPEC `n:num`) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]; ALL_TAC] THEN CLAIM_TAC "nested" `!p q:num. p <= q ==> mball m (x q:A, r q) SUBSET mball m (x p, r p)` THENL @@ -3680,7 +3680,7 @@ let DIMENSION_LE_MONO = prove let DIMENSION_LE_EQ_EMPTY = prove (`!top:(A)topology. top dimension_le (-- &1) <=> topspace top = {}`, REPEAT GEN_TAC THEN ONCE_REWRITE_TAC[DIMENSION_LE_CASES] THEN - CONV_TAC INT_REDUCE_CONV THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN SUBGOAL_THEN `!top:A topology. ~(top dimension_le --(&2))` (fun th -> REWRITE_TAC[th]) THENL diff --git a/Multivariate/misc.ml b/Multivariate/misc.ml index a00be55f..f1d4029a 100644 --- a/Multivariate/misc.ml +++ b/Multivariate/misc.ml @@ -123,7 +123,7 @@ let REAL_CONVEX_BOUND_LT = prove EXISTS_TAC `u * a + v * a:real` THEN CONJ_TAC THENL [ASM_SIMP_TAC[REAL_CONVEX_BOUND2_LT]; MATCH_MP_TAC REAL_EQ_IMP_LE THEN - UNDISCH_TAC `u + v = &1` THEN CONV_TAC REAL_RING]);; + UNDISCH_TAC `u + v = &1` THEN (CONV_TAC "REAL_RING") REAL_RING]);; let REAL_CONVEX_BOUND_LE = prove (`!x y a u v. x <= a /\ y <= a /\ &0 <= u /\ &0 <= v /\ (u + v = &1) @@ -184,7 +184,7 @@ let LAMBDA_SKOLEM = prove let LAMBDA_PAIR = prove (`(\(x,y). P x y) = (\p. P (FST p) (SND p))`, REWRITE_TAC[FUN_EQ_THM; FORALL_PAIR_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[]);; + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[]);; let EPSILON_DELTA_MINIMAL = prove (`!P:real->A->bool Q. @@ -781,7 +781,7 @@ let REAL_NON_MONOTONE = prove MATCH_MP_TAC(MESON[] `P(v:real) \/ P z ==> ?x. P x`)] THEN ASM_SIMP_TAC[REAL_LT_REFL; REAL_ARITH `a < b ==> ~(b < a)`] THEN POP_ASSUM_LIST(MP_TAC o end_itlist CONJ o rev) THEN - CONV_TAC NNFC_CONV THEN CONV_TAC CNF_CONV THEN + (CONV_TAC "NNFC_CONV") NNFC_CONV THEN (CONV_TAC "CNF_CONV") CNF_CONV THEN REPEAT CONJ_TAC THEN TRY REAL_ARITH_TAC THEN ASM_CASES_TAC `u:real = w` THEN ASM_REWRITE_TAC[REAL_LT_REFL] THEN ASM_CASES_TAC `u:real = z` THEN ASM_REWRITE_TAC[REAL_LT_REFL] THEN @@ -857,7 +857,7 @@ let COUNTABLE_LOCAL_MAXIMA = prove MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `a:real` THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `g:real` THEN STRIP_TAC THEN ASM_REWRITE_TAC[IN] THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_SUP_UNIQUE THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_SUP_UNIQUE THEN REWRITE_TAC[FORALL_IN_GSPEC; EXISTS_IN_GSPEC]; ALL_TAC] THEN REPEAT STRIP_TAC THEN TRY(EXISTS_TAC `x:real`) THEN @@ -1188,13 +1188,13 @@ let GENERAL_REDUCTION_THEOREM_2 = prove (MESON[] `(!n. P n) ==> P 0 /\ P 1`)) THEN ONCE_REWRITE_TAC[MESON[] `(!n. P n) <=> P 0 /\ P 1 /\ (!n. ~(n = 0) /\ ~(n = 1) ==> P n)`] THEN - CONV_TAC NUM_REDUCE_CONV THEN SIMP_TAC[SUBSET_EMPTY] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN SIMP_TAC[SUBSET_EMPTY] THEN STRIP_TAC THEN ONCE_REWRITE_TAC[SET_RULE `(:num) = 0 INSERT 1 INSERT ((:num) DIFF {0,1})`] THEN SIMP_TAC[SIMPLE_IMAGE; IMAGE_CLAUSES; UNIONS_INSERT; PAIRWISE_INSERT] THEN DISCH_THEN(MP_TAC o SPEC `1` o CONJUNCT1) THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[IN_INSERT] THEN STRIP_TAC THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[IN_INSERT] THEN STRIP_TAC THEN DISCH_THEN(MP_TAC o MATCH_MP (SET_RULE `s UNION t UNION u = s' UNION t' UNION u' ==> u = {} /\ u' = {} ==> s UNION t = s' UNION t'`)) THEN @@ -1373,10 +1373,10 @@ let SUSLIN_SUSLIN = prove EXISTS_TAC `\(a,b). if (a,b) = (0,0) then 1 else if (a,b) = (0,1) then 2 else q(a,b)` THEN ASM_REWRITE_TAC[PAIR_EQ; ARITH_RULE `1 <= n <=> ~(n = 0)`] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN CONJ_TAC THEN REPEAT GEN_TAC THEN REPEAT(COND_CASES_TAC THEN ASM_REWRITE_TAC[]) THEN - CONV_TAC NUM_REDUCE_CONV THEN ASM_MESON_TAC[]]; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_MESON_TAC[]]; ALL_TAC] THEN ABBREV_TAC `J = \(k,m). {(i,0) | i < k} UNION {(i,k) | i < m}` THEN SUBGOAL_THEN @@ -1458,7 +1458,7 @@ let SUSLIN_SUSLIN = prove [REWRITE_TAC[SUBSET; FORALL_IN_IMAGE] THEN REPEAT STRIP_TAC THEN COND_CASES_TAC THEN REWRITE_TAC[IN_CROSS; IN_UNIV; IN_DELETE] THEN - CONV_TAC NUM_REDUCE_CONV THEN ASM SET_TAC[]; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM SET_TAC[]; ASM SET_TAC[]; REPEAT STRIP_TAC THEN REWRITE_TAC[SUBSET; FORALL_IN_IMAGE] THEN @@ -1508,7 +1508,7 @@ let SUSLIN_SUSLIN = prove REWRITE_TAC[FORALL_IN_GSPEC] THEN DISCH_THEN(MP_TAC o SPECL [`list_of_seq s 1:num list`; `list_of_seq (s' 1) 1:num list`]) THEN - REWRITE_TAC[LIST_OF_SEQ_EQ_NIL] THEN CONV_TAC NUM_REDUCE_CONV THEN + REWRITE_TAC[LIST_OF_SEQ_EQ_NIL] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_THEN `p:num` (SUBST1_TAC o SYM)) THEN EXISTS_TAC `\n. if n = 0 then p:num else t n` THEN ASM_SIMP_TAC[LE_1]; @@ -1516,7 +1516,7 @@ let SUSLIN_SUSLIN = prove X_GEN_TAC `n:num` THEN REWRITE_TAC[LENGTH_LIST_OF_SEQ] THEN SIMP_TAC[LE_1; EL_LIST_OF_SEQ] THEN DISCH_TAC THEN COND_CASES_TAC THENL [ASM_REWRITE_TAC[] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN - CONV_TAC NUM_REDUCE_CONV; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; RULE_ASSUM_TAC(REWRITE_RULE[ARITH_RULE `~(n <= 2) <=> 3 <= n`])] THEN FIRST_ASSUM(MP_TAC o MATCH_MP (SET_RULE `IMAGE f s = t ==> !x. x IN s ==> f x IN t`)) THEN diff --git a/Multivariate/moretop.ml b/Multivariate/moretop.ml index c5449022..34d8660e 100644 --- a/Multivariate/moretop.ml +++ b/Multivariate/moretop.ml @@ -295,7 +295,7 @@ let INESSENTIAL_SPHEREMAP_LOWDIM_GEN = prove MP_TAC(ISPECL [`f:real^N->real^N`; `sphere(vec 0:real^N,&1) INTER s`; `&1 / &2`; `t:real^N->bool`;] STONE_WEIERSTRASS_VECTOR_POLYNOMIAL_FUNCTION_SUBSPACE) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[COMPACT_INTER_CLOSED; COMPACT_SPHERE; CLOSED_SUBSPACE] THEN ANTS_TAC THENL [ASM SET_TAC[]; REWRITE_TAC[SUBSET; FORALL_IN_IMAGE]] THEN DISCH_THEN(X_CHOOSE_THEN `g:real^N->real^N` STRIP_ASSUME_TAC) THEN @@ -309,7 +309,7 @@ let INESSENTIAL_SPHEREMAP_LOWDIM_GEN = prove RULE_ASSUM_TAC(REWRITE_RULE[IN_SPHERE_0]) THEN DISCH_THEN(MP_TAC o SPEC `x:real^N`) THEN ASM_REWRITE_TAC[] THEN REWRITE_TAC[IN_INTER; IN_SPHERE_0] THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; ALL_TAC] THEN SUBGOAL_THEN `(g:real^N->real^N) differentiable_on sphere(vec 0,&1) INTER s` @@ -376,7 +376,7 @@ let INESSENTIAL_SPHEREMAP_LOWDIM_GEN = prove `(f:real^N->real^N) x IN sphere(vec 0,&1) /\ norm(f x - g x) < &1/ &2` MP_TAC THENL [ASM SET_TAC[]; ALL_TAC] THEN - REWRITE_TAC[IN_SPHERE_0] THEN CONV_TAC NORM_ARITH]; + REWRITE_TAC[IN_SPHERE_0] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]; DISCH_THEN(MP_TAC o ISPECL [`\y:real^N. inv(norm y) % y`; `sphere(vec 0:real^N,&1) INTER t`] o @@ -467,7 +467,7 @@ let INESSENTIAL_SPHEREMAP_LOWDIM_GEN = prove ASM_SIMP_TAC[HOMEOMORPHIC_EMPTY; SET_RULE `s INTER {a} = {} <=> ~(a IN s)`; IN_SPHERE_0; NORM_0; SING_SUBSET; SUBSPACE_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; FIRST_X_ASSUM(X_CHOOSE_THEN `a:real^M` MP_TAC o GEN_REWRITE_RULE I [GSYM MEMBER_NOT_EMPTY]) THEN GEOM_ORIGIN_TAC `a:real^M` THEN @@ -720,7 +720,7 @@ let SIMPLY_CONNECTED_PUNCTURED_UNIVERSE = prove HOMOTOPY_EQUIVALENT_RELATIVE_FRONTIER_PUNCTURED_AFFINE_HULL) THEN REWRITE_TAC[CONVEX_CBALL; BOUNDED_CBALL; RELATIVE_INTERIOR_CBALL; RELATIVE_FRONTIER_CBALL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SIMP_TAC[CENTRE_IN_BALL; AFFINE_HULL_NONEMPTY_INTERIOR; INTERIOR_CBALL; BALL_EQ_EMPTY; REAL_OF_NUM_LE; ARITH; REAL_LT_01]);; @@ -823,7 +823,7 @@ let SIMPLY_CONNECTED_CONVEX_DIFF_FINITE = prove MATCH_MP_TAC(MESON[FINITE_SUBSET; INFINITE] `INFINITE s /\ FINITE t ==> ~(s SUBSET t)`) THEN ASM_REWRITE_TAC[]] THEN - (ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + (ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [CONNECTED_FINITE_IFF_SING; INFINITE; CONVEX_CONNECTED; CONVEX_INTER; CONVEX_HALFSPACE_COMPONENT_LT; REWRITE_RULE[real_gt] CONVEX_HALFSPACE_COMPONENT_GT] THEN @@ -1625,7 +1625,7 @@ let EXTEND_MAP_AFFINE_TO_SPHERE_COFINITE_SIMPLE = prove STRIP_ASSUME_TAC THENL [MATCH_MP_TAC lemma THEN ASM_SIMP_TAC[INFINITE; FINITE_REAL_INTERVAL; REAL_NOT_LE] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_WLOG_LT THEN REWRITE_TAC[] THEN CONJ_TAC THENL [SET_TAC[]; ALL_TAC] THEN MAP_EVERY X_GEN_TAC [`x:real`; `y:real`] THEN REPEAT STRIP_TAC THEN @@ -2254,7 +2254,7 @@ let EXTEND_MAP_AFFINE_TO_SPHERE_COFINITE_GEN = prove STRIP_ASSUME_TAC THENL [MATCH_MP_TAC lemma1 THEN ASM_SIMP_TAC[INFINITE; FINITE_REAL_INTERVAL; REAL_NOT_LE] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC REAL_WLOG_LT THEN REWRITE_TAC[] THEN CONJ_TAC THENL [SET_TAC[]; ALL_TAC] THEN MAP_EVERY X_GEN_TAC [`x:real`; `y:real`] THEN REPEAT STRIP_TAC THEN @@ -3665,7 +3665,7 @@ let CONNECTED_COMPLEMENT_SIMPLE_PATH_IMAGE = prove MATCH_MP_TAC HOMEOMORPHIC_RELATIVE_FRONTIERS_CONVEX_BOUNDED_SETS THEN REWRITE_TAC[CONVEX_CBALL; BOUNDED_CBALL; CONVEX_CONVEX_HULL] THEN REWRITE_TAC[BOUNDED_CONVEX_HULL_EQ; BOUNDED_INSERT; BOUNDED_EMPTY] THEN - REWRITE_TAC[AFF_DIM_CBALL; REAL_LT_01] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[AFF_DIM_CBALL; REAL_LT_01] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[AFF_DIM_CONVEX_HULL; DIMINDEX_2] THEN SIMP_TAC[AFF_DIM_DIM_0; HULL_INC; IN_INSERT; INT_OF_NUM_EQ] THEN REWRITE_TAC[DIM_INSERT_0] THEN @@ -3781,7 +3781,7 @@ let INVARIANCE_OF_DOMAIN = prove ANTS_TAC THENL [MP_TAC(ISPECL [`a:real^N`; `r:real`] OPEN_BALL); ALL_TAC] THEN MATCH_MP_TAC EQ_IMP THENL - [CONV_TAC SYM_CONV; + [(CONV_TAC "SYM_CONV") SYM_CONV; REWRITE_TAC[GSYM o_ASSOC] THEN ONCE_REWRITE_TAC[IMAGE_o] THEN ASM_REWRITE_TAC[o_DEF; ETA_AX]] THEN MATCH_MP_TAC OPEN_BIJECTIVE_LINEAR_IMAGE_EQ THEN @@ -4870,7 +4870,7 @@ let EMPTY_INTERIOR_LOWDIM_GEN = prove EXISTS_TAC `IMAGE (h:real^M->real^N) t` THEN CONJ_TAC THENL [MATCH_MP_TAC HOMEOMORPHIC_INTERIORS_SAME_DIMENSION THEN REWRITE_TAC[] THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [HOMEOMORPHIC_SYM]) THEN - MATCH_MP_TAC EQ_IMP THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC EQ_IMP THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC HOMEOMORPHIC_INJECTIVE_LINEAR_IMAGE_LEFT_EQ THEN ASM_MESON_TAC[PRESERVES_NORM_INJECTIVE]; MATCH_MP_TAC(SET_RULE `!t. s SUBSET t /\ t = {} ==> s = {}`) THEN @@ -5047,19 +5047,19 @@ let SIMPLY_CONNECTED_SPHERE_EQ = prove REPEAT STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o SPEC `\x:real^2. x`) THEN REWRITE_TAC[CONTINUOUS_ON_ID; IMAGE_ID; SUBSET_REFL] THEN REWRITE_TAC[GSYM contractible; CONTRACTIBLE_SPHERE] THEN - CONV_TAC REAL_RAT_REDUCE_CONV]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]);; let SIMPLY_CONNECTED_PUNCTURED_UNIVERSE_EQ = prove (`!a. simply_connected((:real^N) DELETE a) <=> 3 <= dimindex(:N)`, GEN_TAC THEN TRANS_TAC EQ_TRANS `simply_connected(sphere(a:real^N,&1))` THEN CONJ_TAC THENL [ALL_TAC; REWRITE_TAC[SIMPLY_CONNECTED_SPHERE_EQ]] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ONCE_REWRITE_TAC[EQ_SYM_EQ] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ONCE_REWRITE_TAC[EQ_SYM_EQ] THEN MATCH_MP_TAC HOMOTOPY_EQUIVALENT_SIMPLE_CONNECTEDNESS THEN MP_TAC(ISPECL [`cball(a:real^N,&1)`; `a:real^N`] HOMOTOPY_EQUIVALENT_RELATIVE_FRONTIER_PUNCTURED_AFFINE_HULL) THEN REWRITE_TAC[CONVEX_CBALL; BOUNDED_CBALL; RELATIVE_INTERIOR_CBALL; RELATIVE_FRONTIER_CBALL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SIMP_TAC[CENTRE_IN_BALL; AFFINE_HULL_NONEMPTY_INTERIOR; INTERIOR_CBALL; BALL_EQ_EMPTY; REAL_OF_NUM_LE; ARITH; REAL_LT_01]);; @@ -5094,7 +5094,7 @@ let COVERING_SPACE_CEXP_PUNCTURED_PLANE = prove MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `norm(x - y:complex)` THEN REWRITE_TAC[GSYM IM_SUB; COMPLEX_NORM_GE_RE_IM] THEN MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `&2` THEN CONJ_TAC THENL - [REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC NORM_ARITH; + [REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; MP_TAC PI_APPROX_32 THEN REAL_ARITH_TAC]; ALL_TAC] THEN CONJ_TAC THENL @@ -5369,7 +5369,7 @@ let CONTINUOUS_SQRT_ON_CONTRACTIBLE = prove REWRITE_TAC[CONTINUOUS_ON_CEXP] THEN MATCH_MP_TAC CONTINUOUS_ON_COMPLEX_DIV THEN ASM_SIMP_TAC[CONTINUOUS_ON_CONST] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let CONTINUOUS_SQRT_ON_SIMPLY_CONNECTED = prove (`!f:real^N->complex s. @@ -5386,7 +5386,7 @@ let CONTINUOUS_SQRT_ON_SIMPLY_CONNECTED = prove REWRITE_TAC[CONTINUOUS_ON_CEXP] THEN MATCH_MP_TAC CONTINUOUS_ON_COMPLEX_DIV THEN ASM_SIMP_TAC[CONTINUOUS_ON_CONST] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; (* ------------------------------------------------------------------------- *) (* Analogously, holomorphic logarithms and square roots. *) @@ -5466,7 +5466,7 @@ let CONTRACTIBLE_IMP_HOLOMORPHIC_LOG,SIMPLY_CONNECTED_IMP_HOLOMORPHIC_LOG = REAL_LET_TRANS)) THEN REWRITE_TAC[GSYM IM_SUB; COMPLEX_NORM_GE_RE_IM]; REPEAT(FIRST_X_ASSUM(MP_TAC o check(is_neg o concl))) THEN - CONV_TAC COMPLEX_FIELD]]]));; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]]]));; let CONTRACTIBLE_IMP_HOLOMORPHIC_SQRT,SIMPLY_CONNECTED_IMP_HOLOMORPHIC_SQRT = (CONJ_PAIR o prove) @@ -5492,7 +5492,7 @@ let CONTRACTIBLE_IMP_HOLOMORPHIC_SQRT,SIMPLY_CONNECTED_IMP_HOLOMORPHIC_SQRT = REWRITE_TAC[HOLOMORPHIC_ON_CEXP] THEN MATCH_MP_TAC HOLOMORPHIC_ON_DIV THEN ASM_SIMP_TAC[HOLOMORPHIC_ON_CONST] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; (* ------------------------------------------------------------------------- *) (* Related theorems about holomorphic inverse cosines. *) @@ -5528,7 +5528,7 @@ let CONTRACTIBLE_IMP_HOLOMORPHIC_ACS = prove FIRST_X_ASSUM(ASSUME_TAC o SYM) THEN DISCH_THEN(ASSUME_TAC o SYM) THEN ASM_REWRITE_TAC[COMPLEX_RING `ii * --ii * z = z`; COMPLEX_RING `--ii * --ii * z = --z`] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let CONTRACTIBLE_IMP_HOLOMORPHIC_ACS_BOUNDED = prove (`!f s a. @@ -5565,7 +5565,7 @@ let CONTRACTIBLE_IMP_HOLOMORPHIC_ACS_BOUNDED = prove EXISTS_TAC `\z:complex. --(g z) + Cx(&2 * n * pi)`] THEN ASM_SIMP_TAC[HOLOMORPHIC_ON_ADD; HOLOMORPHIC_ON_NEG; HOLOMORPHIC_ON_CONST] THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN REWRITE_TAC[CCOS_EQ] THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN REWRITE_TAC[CCOS_EQ] THEN ASM_MESON_TAC[]);; (* ------------------------------------------------------------------------- *) @@ -5597,7 +5597,7 @@ let INESSENTIAL_NEIGHBOURHOOD_EXTENSION_LOGARITHM = prove DISCH_THEN(MP_TAC o SPEC `x:real^N`) THEN ASM_REWRITE_TAC[continuous_within] THEN DISCH_THEN(MP_TAC o SPEC `&1 / &5`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN GEN_REWRITE_TAC (LAND_CONV o ONCE_DEPTH_CONV) [dist] THEN DISCH_THEN(X_CHOOSE_THEN `e:real` STRIP_ASSUME_TAC) THEN SUBGOAL_THEN `~((f:real^N->complex) x = Cx(&0))` ASSUME_TAC THENL @@ -5610,7 +5610,7 @@ let INESSENTIAL_NEIGHBOURHOOD_EXTENSION_LOGARITHM = prove ASM_MESON_TAC[CONTINUOUS_ON_EQ_CONTINUOUS_WITHIN; SUBSET]; REWRITE_TAC[continuous_within] THEN DISCH_THEN(MP_TAC o SPEC `&1 / &7`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[COMPLEX_DIV_REFL; dist] THEN DISCH_THEN(X_CHOOSE_THEN `d:real` STRIP_ASSUME_TAC)] THEN EXISTS_TAC `min d (e / &2)` THEN @@ -6438,7 +6438,7 @@ let BORSUKIAN_IMP_UNICOHERENT = prove REWRITE_TAC[RE_II; IM_II; REAL_MUL_RZERO; REAL_MUL_RID] THEN REWRITE_TAC[REAL_EXP_0; COMPLEX_MUL_LID; COS_PI; SIN_PI] THEN REWRITE_TAC[COMPLEX_MUL_RZERO; COMPLEX_ADD_RID] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN SIMP_TAC[] THEN REPEAT CONJ_TAC THENL [EXPAND_TAC "u" THEN MATCH_MP_TAC CONTINUOUS_ON_CASES_LOCAL THEN @@ -7118,7 +7118,7 @@ let LOCALLY_CONNECTED_FRONTIER_ANR = prove REWRITE_TAC[IN_ELIM_THM; IN_CBALL_0] THEN MAP_EVERY EXISTS_TAC [`p:real^N`; `y - p:real^N`] THEN ASM_REWRITE_TAC[ONCE_REWRITE_RULE[DIST_SYM] (GSYM dist)] THEN - CONV_TAC VECTOR_ARITH]; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH]; ABBREV_TAC `sd = {x + l:real^N | x IN s /\ l IN cball(vec 0,d)}`] THEN SUBGOAL_THEN `(s:real^N->bool) SUBSET interior sd` ASSUME_TAC THENL [TRANS_TAC SUBSET_TRANS @@ -7187,7 +7187,7 @@ let LOCALLY_CONNECTED_FRONTIER_ANR = prove FIRST_X_ASSUM(MP_TAC o SPEC `y:real^N` o GEN_REWRITE_RULE I [EXTENSION]) THEN ASM_SIMP_TAC[IN_INTER; CLOSURE_INC; NOT_IN_EMPTY; IN_CBALL] THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; MATCH_MP_TAC SETDIST_LE_DIST THEN ASM_REWRITE_TAC[IN_SING]]; DISJ2_TAC THEN EXISTS_TAC `c:real^N->bool` THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC SETDIST_LE_DIST THEN ASM_REWRITE_TAC[IN_SING]]]; @@ -7360,7 +7360,7 @@ let LOCALLY_CONNECTED_FRONTIER_ANR = prove MAP_EVERY EXISTS_TAC [`p:real^N`; `y - p:real^N`] THEN ASM_REWRITE_TAC[DIST_0] THEN ASM_REWRITE_TAC[ONCE_REWRITE_RULE[DIST_SYM] (GSYM dist)] THEN - CONV_TAC VECTOR_ARITH; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; DISCH_THEN(X_CHOOSE_THEN `f:real^N->bool` STRIP_ASSUME_TAC)] THEN ABBREV_TAC `h = connected_component (cball(p:real^N,e) DIFF f) (g(lift(&1 / &2)))` THEN @@ -7378,7 +7378,7 @@ let LOCALLY_CONNECTED_FRONTIER_ANR = prove EXISTS_TAC `g(lift(&1 / &2)):real^N` THEN REWRITE_TAC[] THEN FIRST_X_ASSUM(MP_TAC o SPEC `lift(&1 / &2)`) THEN REWRITE_TAC[IN_INTERVAL_1; DROP_VEC; LIFT_DROP] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REPEAT(FIRST_X_ASSUM(MP_TAC o MATCH_MP IN_COMPONENTS_SUBSET)) THEN SUBGOAL_THEN `cball(p:real^N,d) SUBSET cball(p,e)` MP_TAC THENL [ASM_REWRITE_TAC[SUBSET_BALLS; DIST_REFL] THEN ASM_REAL_ARITH_TAC; @@ -7460,7 +7460,7 @@ let LOCALLY_CONNECTED_FRONTIER_ANR = prove MATCH_MP_TAC CONNECTED_COMPONENT_MAXIMAL THEN REPEAT CONJ_TAC THENL [MATCH_MP_TAC FUN_IN_IMAGE THEN REWRITE_TAC[IN_INTERVAL_1; DROP_VEC; LIFT_DROP] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; MATCH_MP_TAC CONNECTED_CONTINUOUS_IMAGE THEN REWRITE_TAC[CONNECTED_INTERVAL] THEN MATCH_MP_TAC CONTINUOUS_ON_SUBSET THEN @@ -7507,7 +7507,7 @@ let INESSENTIAL_EQ_EXTENSIBLE = prove ASM_CASES_TAC `s:real^N->bool = {}` THENL [EXISTS_TAC `\x:real^N. Cx(&1)` THEN ASM_REWRITE_TAC[CONTINUOUS_ON_CONST; NOT_IN_EMPTY] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN FIRST_ASSUM(ASSUME_TAC o MATCH_MP HOMOTOPIC_WITH_IMP_CONTINUOUS) THEN FIRST_ASSUM(ASSUME_TAC o MATCH_MP HOMOTOPIC_WITH_IMP_SUBSET) THEN @@ -7881,7 +7881,7 @@ let JORDAN_CURVE_THEOREM = prove [`(path_image u UNION path_image g):real^2->bool`; `(path_image d UNION path_image g):real^2->bool`; `x:real^2`; `y:real^2`] JANISZEWSKI) THEN - ASM (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ASM ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [COMPACT_UNION; COMPACT_IMP_CLOSED; COMPACT_PATH_IMAGE; ARC_IMP_PATH; NOT_IMP] THEN REPEAT CONJ_TAC THENL diff --git a/Multivariate/paths.ml b/Multivariate/paths.ml index b2023f74..a6adb107 100644 --- a/Multivariate/paths.ml +++ b/Multivariate/paths.ml @@ -281,7 +281,7 @@ let ARC_DISTINCT_ENDS = prove ONCE_REWRITE_TAC[TAUT `a /\ b /\ c ==> d <=> a /\ b /\ ~d ==> ~c`] THEN DISCH_THEN(MATCH_MP_TAC o CONJUNCT2) THEN REWRITE_TAC[GSYM DROP_EQ; IN_INTERVAL_1; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let ARC_SIMPLE_PATH = prove (`!g:real^1->real^N. @@ -402,7 +402,7 @@ let CARD_EQ_SIMPLE_PATH_IMAGE = prove ==> ~(?c. IMAGE f s SUBSET {c})`) THEN MAP_EVERY EXISTS_TAC [`lift(&1 / &3)`; `lift(&1 / &2)`] THEN REWRITE_TAC[IN_INTERVAL_1; LIFT_DROP; GSYM LIFT_NUM; LIFT_EQ] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let INFINITE_SIMPLE_PATH_IMAGE = prove (`!g. simple_path g ==> INFINITE(path_image g)`, @@ -431,7 +431,7 @@ let JOINPATHS = prove [FIRST_X_ASSUM(MP_TAC o AP_TERM `lift`) THEN REWRITE_TAC[LIFT_DROP] THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[LIFT_DROP; REAL_LE_REFL; GSYM LIFT_CMUL; REAL_LT_REFL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[LIFT_NUM; VECTOR_SUB_REFL]; REPEAT(COND_CASES_TAC THEN ASM_REWRITE_TAC[]) THEN ASM_REAL_ARITH_TAC]);; @@ -451,12 +451,12 @@ let PATHFINISH_REVERSEPATH = prove let PATHSTART_JOIN = prove (`!g1 g2. pathstart(g1 ++ g2) = pathstart g1`, REWRITE_TAC[joinpaths; pathstart; pathstart; DROP_VEC; VECTOR_MUL_RZERO] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let PATHFINISH_JOIN = prove (`!g1 g2. pathfinish(g1 ++ g2) = pathfinish g2`, REPEAT GEN_TAC THEN REWRITE_TAC[joinpaths; pathfinish; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN AP_TERM_TAC THEN VECTOR_ARITH_TAC);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN AP_TERM_TAC THEN VECTOR_ARITH_TAC);; let PATH_IMAGE_REVERSEPATH = prove (`!g:real^1->real^N. path_image(reversepath g) = path_image g`, @@ -523,7 +523,7 @@ let PATH_JOIN = prove `&1 / &2 * (x + &1) <= &1 / &2 <=> x <= &0`] THEN SIMP_TAC[REAL_ARITH `&0 <= x ==> (x <= &0 <=> x = &0)`; LIFT_NUM; VECTOR_MUL_ASSOC; GSYM LIFT_EQ; LIFT_DROP; GSYM LIFT_CMUL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[VECTOR_ADD_LID; VECTOR_MUL_LID] THEN REPEAT STRIP_TAC THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN REWRITE_TAC[VECTOR_ARITH `(x + vec 1) - vec 1 = x`]; @@ -552,16 +552,16 @@ let PATH_JOIN = prove REWRITE_TAC[IMAGE_AFFINITY_INTERVAL] THEN REWRITE_TAC[REAL_POS; INTERVAL_EQ_EMPTY_1; LIFT_DROP; DROP_VEC] THEN REWRITE_TAC[GSYM LIFT_CMUL; VECTOR_ADD_RID; VECTOR_MUL_RZERO] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[LIFT_NUM]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[LIFT_NUM]; ALL_TAC] THEN CONJ_TAC THENL [SIMP_TAC[REAL_ARITH `&1 / &2 <= x ==> (x <= &1 / &2 <=> x = &1 / &2)`; GSYM LIFT_EQ; LIFT_DROP; GSYM LIFT_CMUL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN RULE_ASSUM_TAC(REWRITE_RULE[pathstart; pathfinish]) THEN ASM_REWRITE_TAC[LIFT_NUM] THEN REPEAT STRIP_TAC THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN - REWRITE_TAC[GSYM LIFT_CMUL] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[GSYM LIFT_CMUL] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_NUM; VECTOR_SUB_REFL]; ALL_TAC] THEN GEN_REWRITE_TAC LAND_CONV [GSYM o_DEF] THEN @@ -572,7 +572,7 @@ let PATH_JOIN = prove REWRITE_TAC[IMAGE_AFFINITY_INTERVAL] THEN REWRITE_TAC[REAL_POS; INTERVAL_EQ_EMPTY_1; LIFT_DROP; DROP_VEC] THEN REWRITE_TAC[GSYM LIFT_CMUL; VECTOR_ADD_RID; VECTOR_MUL_RZERO] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[LIFT_NUM] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[LIFT_NUM] THEN ASM_REWRITE_TAC[VECTOR_ARITH `&2 % x + --x = x /\ x + --x = vec 0`]]);; let PATH_JOIN_IMP = prove @@ -614,11 +614,11 @@ let PATH_IMAGE_JOIN = prove [EXISTS_TAC `(&1 / &2) % x:real^1` THEN ASM_REWRITE_TAC[DROP_CMUL; REAL_ARITH `&1 / &2 * x <= &1 / &2 <=> x <= &1`] THEN - REWRITE_TAC[VECTOR_MUL_ASSOC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[VECTOR_MUL_ASSOC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[VECTOR_MUL_LID]; EXISTS_TAC `(&1 / &2) % (x + vec 1):real^1` THEN ASM_REWRITE_TAC[DROP_CMUL; DROP_ADD; DROP_VEC] THEN - REWRITE_TAC[VECTOR_MUL_ASSOC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[VECTOR_MUL_ASSOC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[VECTOR_MUL_LID; VECTOR_ARITH `(x + vec 1) - vec 1 = x`] THEN ASM_SIMP_TAC[REAL_ARITH `&0 <= x ==> (&1 / &2 * (x + &1) <= &1 / &2 <=> x = &0)`] THEN @@ -798,7 +798,7 @@ let REVERSEPATH_JOINPATHS = prove ASM_CASES_TAC `t = lift(&1 / &2)` THENL [ASM_REWRITE_TAC[LIFT_DROP; REAL_LE_REFL; GSYM LIFT_NUM; GSYM LIFT_SUB; GSYM LIFT_CMUL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[LIFT_NUM]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[LIFT_NUM]; FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE RAND_CONV [GSYM DROP_EQ]) THEN REWRITE_TAC[LIFT_DROP] THEN DISCH_TAC THEN ASM_SIMP_TAC[REAL_ARITH @@ -824,7 +824,7 @@ let PATH_JOIN_PATH_ENDS = prove (MP_TAC o SPEC `vec 0:real^1`) (MP_TAC o SPEC `lift(&1 / &2)`)) THEN REWRITE_TAC[ENDS_IN_UNIT_INTERVAL; LIFT_DROP; REAL_LE_REFL] THEN REWRITE_TAC[GSYM LIFT_CMUL; IN_INTERVAL_1; DROP_VEC; LIFT_DROP] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_NUM] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_NUM] THEN DISCH_THEN(MP_TAC o SPEC `e / &2`) THEN ASM_REWRITE_TAC[REAL_HALF] THEN DISCH_THEN(X_CHOOSE_THEN `d1:real` (CONJUNCTS_THEN2 ASSUME_TAC (LABEL_TAC "1"))) THEN @@ -840,7 +840,7 @@ let PATH_JOIN_PATH_ENDS = prove ANTS_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN COND_CASES_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN REWRITE_TAC[GSYM LIFT_CMUL; LIFT_ADD; REAL_ADD_LDISTRIB] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_NUM] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_NUM] THEN REWRITE_TAC[VECTOR_ADD_SUB; REAL_ARITH `&2 * x / &4 = x / &2`] THEN REPEAT(POP_ASSUM MP_TAC) THEN NORM_ARITH_TAC);; @@ -867,7 +867,7 @@ let SIMPLE_PATH_JOIN_IMP = prove [`&1 / &2 % x:real^1`; `&1 / &2 % y:real^1`]) THEN REWRITE_TAC[IN_INTERVAL_1; DROP_VEC; joinpaths; DROP_CMUL] THEN REPEAT(COND_CASES_TAC THEN TRY ASM_REAL_ARITH_TAC) THEN - REWRITE_TAC[VECTOR_MUL_ASSOC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[VECTOR_MUL_ASSOC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[GSYM DROP_EQ; DROP_CMUL; VECTOR_MUL_LID; DROP_VEC] THEN ASM_REAL_ARITH_TAC; MAP_EVERY X_GEN_TAC [`x:real^1`; `y:real^1`] THEN @@ -877,7 +877,7 @@ let SIMPLE_PATH_JOIN_IMP = prove ASM_SIMP_TAC[JOINPATHS; pathstart; pathfinish] THEN REWRITE_TAC[IN_INTERVAL_1; DROP_VEC; DROP_ADD; DROP_CMUL] THEN REPEAT(COND_CASES_TAC THEN TRY ASM_REAL_ARITH_TAC) THEN - REWRITE_TAC[VECTOR_MUL_ASSOC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[VECTOR_MUL_ASSOC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[VECTOR_MUL_LID; VECTOR_ARITH `(a + b) - b:real^N = a`] THEN ASM_REWRITE_TAC[GSYM DROP_EQ; DROP_CMUL; VECTOR_MUL_LID; DROP_VEC; DROP_ADD] THEN @@ -950,7 +950,7 @@ let ARC_JOIN_EQ = prove CONJUNCT2) THEN REWRITE_TAC[GSYM DROP_EQ; IN_INTERVAL_1; DROP_ADD; DROP_VEC; DROP_CMUL; LIFT_DROP; joinpaths] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_LT_IMP_LE; REAL_LT_IMP_NZ; REAL_ARITH `&0 <= x ==> &0 < &1 / &2 + &1 / &2 * x`] THEN REWRITE_TAC[REAL_ARITH `&1 / &2 + &1 / &2 * u = &1 <=> u = &1`] THEN @@ -961,11 +961,11 @@ let ARC_JOIN_EQ = prove ASM_SIMP_TAC[REAL_ARITH `u <= &1 ==> &1 / &2 + &1 / &2 * u <= &1`] THEN REWRITE_TAC[GSYM LIFT_EQ; LIFT_NUM; LIFT_DROP] THEN COND_CASES_TAC THENL [ASM_REWRITE_TAC[VECTOR_MUL_RZERO; VECTOR_ADD_RID; GSYM LIFT_CMUL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_NUM] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_NUM] THEN ASM_REWRITE_TAC[VEC_EQ] THEN ARITH_TAC; REWRITE_TAC[VECTOR_ADD_LDISTRIB; GSYM LIFT_CMUL] THEN REWRITE_TAC[VECTOR_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_NUM; VECTOR_MUL_LID; VECTOR_ADD_SUB] THEN ASM_MESON_TAC[]]);; @@ -988,7 +988,7 @@ let PATH_ASSOC = prove (`!p q r:real^1->real^N. pathfinish p = pathstart q /\ pathfinish q = pathstart r ==> (path(p ++ (q ++ r)) <=> path((p ++ q) ++ r))`, - SIMP_TAC[PATH_JOIN; PATHSTART_JOIN; PATHFINISH_JOIN] THEN CONV_TAC TAUT);; + SIMP_TAC[PATH_JOIN; PATHSTART_JOIN; PATHFINISH_JOIN] THEN (CONV_TAC "TAUT") TAUT);; let SIMPLE_PATH_ASSOC = prove (`!p q r:real^1->real^N. @@ -1201,7 +1201,7 @@ let SUBPATH_SCALING_LEMMA = prove REPEAT GEN_TAC THEN ONCE_REWRITE_TAC[VECTOR_ADD_SYM] THEN REWRITE_TAC[IMAGE_AFFINITY_INTERVAL; SEGMENT_1] THEN REWRITE_TAC[DROP_SUB; REAL_SUB_LE; INTERVAL_EQ_EMPTY_1; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN COND_CASES_TAC THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN AP_TERM_TAC THEN AP_THM_TAC THEN AP_TERM_TAC THEN BINOP_TAC THEN REWRITE_TAC[GSYM LIFT_EQ_CMUL; VECTOR_MUL_RZERO] THEN REWRITE_TAC[LIFT_DROP; LIFT_SUB] THEN VECTOR_ARITH_TAC);; @@ -1304,7 +1304,7 @@ let SIMPLE_PATH_SUBPATH_EQ = prove REWRITE_TAC[RIGHT_IMP_FORALL_THM] THEN DISCH_THEN(MP_TAC o SPECL [`lift(&1 / &2)`; `lift(&3 / &4)`]) THEN REWRITE_TAC[IN_INTERVAL_1; DROP_VEC; GSYM DROP_EQ; LIFT_DROP] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let ARC_SUBPATH_EQ = prove (`!g u v. arc(subpath u v g) <=> @@ -1321,7 +1321,7 @@ let ARC_SUBPATH_EQ = prove REWRITE_TAC[RIGHT_IMP_FORALL_THM] THEN DISCH_THEN(MP_TAC o SPECL [`lift(&1 / &2)`; `lift(&3 / &4)`]) THEN REWRITE_TAC[IN_INTERVAL_1; DROP_VEC; GSYM DROP_EQ; LIFT_DROP] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let SIMPLE_PATH_SUBPATH = prove (`!g u v. simple_path g /\ @@ -1988,7 +1988,7 @@ let PATH_COMBINE = prove REAL_LE_INV_EQ; DROP_SUB; REAL_SUB_LE] THEN AP_TERM_TAC THEN REWRITE_TAC[CONS_11; PAIR_EQ] THEN REWRITE_TAC[GSYM DROP_EQ; DROP_CMUL; DROP_VEC; DROP_ADD; DROP_NEG] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD]]]);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]]]);; (* ------------------------------------------------------------------------- *) (* Special case of straight-line paths. *) @@ -2069,7 +2069,7 @@ let SIMPLE_PATH_LINEPATH_EQ = prove REWRITE_TAC[linepath; GSYM VECTOR_ADD_RDISTRIB] THEN DISCH_THEN(MP_TAC o SPECL [`lift(&0)`; `lift(&1 / &2)`]) THEN REWRITE_TAC[IN_INTERVAL_1; LIFT_DROP; GSYM DROP_EQ; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let ARC_LINEPATH_EQ = prove (`!a b. arc(linepath(a,b)) <=> ~(a = b)`, @@ -2459,7 +2459,7 @@ let HOMEOMORPHIC_SIMPLE_PATH_IMAGE_CIRCLE_EQ = prove ASM_SIMP_TAC[AFF_DIM_AFFINE_INDEPENDENT] THEN SIMP_TAC[CARD_CLAUSES; FINITE_INSERT; FINITE_EMPTY] THEN ASM_REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY; ARITH] THEN - CONV_TAC INT_REDUCE_CONV]]; + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV]]; TRANS_TAC EQ_TRANS `(s:real^N->bool) homeomorphic (path_image p:real^2->bool)` THEN CONJ_TAC THENL @@ -3515,7 +3515,7 @@ let CONNECTED_SUBSET_SEGMENT = prove X_GEN_TAC `h:real^N->real^1` THEN SUBGOAL_THEN `(g:real^1->real^N)(vec 0) = a /\ g(vec 1) = b` MP_TAC THENL - [EXPAND_TAC "g" THEN REWRITE_TAC[DROP_VEC] THEN CONV_TAC VECTOR_ARITH; + [EXPAND_TAC "g" THEN REWRITE_TAC[DROP_VEC] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; FIRST_X_ASSUM(K ALL_TAC o SYM) THEN REPEAT STRIP_TAC] THEN SUBGOAL_THEN `IMAGE (h:real^N->real^1) (segment[a,b]) SUBSET IMAGE h s` @@ -3658,14 +3658,14 @@ let HOMEOMORPHIC_SIMPLE_PATH_ARC = prove REWRITE_TAC[path_image; NOT_IMP; EXISTS_IN_IMAGE] THEN EXISTS_TAC `lift(&1 / &2)` THEN REWRITE_TAC[IN_INTERVAL_1; LIFT_DROP; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[IN_INSERT; pathstart; pathfinish; NOT_IN_EMPTY] THEN REWRITE_TAC[DE_MORGAN_THM] THEN FIRST_ASSUM(MP_TAC o CONJUNCT2 o REWRITE_RULE[arc]) THEN ONCE_REWRITE_TAC[SET_RULE `p /\ q /\ r ==> s <=> p /\ q /\ ~s ==> ~r`] THEN DISCH_TAC THEN CONJ_TAC THEN FIRST_X_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[IN_INTERVAL_1; GSYM DROP_EQ; DROP_VEC; LIFT_DROP] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [homeomorphic]) THEN REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN @@ -3703,7 +3703,7 @@ let ARC_ENDS_UNIQUE = prove ASM_REWRITE_TAC[HOMEOMORPHIC_REFL] THEN DISCH_TAC THEN TRANS_TAC EQ_TRANS `{x:real^N | x IN path_image g /\ connected(path_image g DELETE x)}` THEN - CONJ_TAC THENL [CONV_TAC SYM_CONV; ASM_REWRITE_TAC[]] THEN + CONJ_TAC THENL [(CONV_TAC "SYM_CONV") SYM_CONV; ASM_REWRITE_TAC[]] THEN MATCH_MP_TAC(SET_RULE `a IN s /\ b IN s /\ (!x. x IN s ==> (P x <=> x IN {a,b})) ==> {x | x IN s /\ P x} = {a,b}`) THEN @@ -4354,7 +4354,7 @@ let LIPSCHITZ_ON_UNION = prove REWRITE_TAC[REAL_ADD_LDISTRIB] THEN TRANS_TAC REAL_LE_TRANS `norm((f:real^1->real^N) x - f z) + norm(f z - f y)` THEN - CONJ_TAC THENL [CONV_TAC NORM_ARITH; ASM_MESON_TAC[REAL_LE_ADD2]]; + CONJ_TAC THENL [(CONV_TAC "NORM_ARITH") NORM_ARITH; ASM_MESON_TAC[REAL_LE_ADD2]]; RULE_ASSUM_TAC(REWRITE_RULE[IS_INTERVAL_CONVEX_1]) THEN REWRITE_TAC[BETWEEN_IN_SEGMENT] THEN ASM_MESON_TAC[CONVEX_CONTAINS_SEGMENT; SUBSET]]);; @@ -4722,25 +4722,25 @@ let CARD_EQ_CLOSED = prove [FIRST_X_ASSUM(MATCH_MP_TAC o GEN_REWRITE_RULE I [CONDENSATION_POINT_INFINITE_CBALL]) THEN REWRITE_TAC[REAL_LT_MIN; REAL_LT_INV_EQ; REAL_LT_POW2] THEN - UNDISCH_TAC `~(a:real^N = b)` THEN CONV_TAC NORM_ARITH; + UNDISCH_TAC `~(a:real^N = b)` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; FIRST_X_ASSUM(MATCH_MP_TAC o GEN_REWRITE_RULE I [CONDENSATION_POINT_INFINITE_CBALL]) THEN REWRITE_TAC[REAL_LT_MIN; REAL_LT_INV_EQ; REAL_LT_POW2] THEN - UNDISCH_TAC `~(a:real^N = b)` THEN CONV_TAC NORM_ARITH; + UNDISCH_TAC `~(a:real^N = b)` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; MATCH_MP_TAC(SET_RULE `(!x. ~(x IN t /\ x IN u)) ==> (s INTER t) INTER (s INTER u) = {}`) THEN REWRITE_TAC[IN_CBALL; REAL_LE_MIN] THEN - UNDISCH_TAC `~(a:real^N = b)` THEN CONV_TAC NORM_ARITH; + UNDISCH_TAC `~(a:real^N = b)` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; SET_TAC[]; SET_TAC[]; MATCH_MP_TAC DIAMETER_LE THEN SIMP_TAC[REAL_LE_INV_EQ; REAL_LT_IMP_LE; REAL_LT_POW2] THEN REWRITE_TAC[IN_INTER; IN_CBALL; REAL_LE_MIN; real_pow; REAL_INV_MUL] THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; MATCH_MP_TAC DIAMETER_LE THEN SIMP_TAC[REAL_LE_INV_EQ; REAL_LT_IMP_LE; REAL_LT_POW2] THEN REWRITE_TAC[IN_INTER; IN_CBALL; REAL_LE_MIN; real_pow; REAL_INV_MUL] THEN - CONV_TAC NORM_ARITH]; + (CONV_TAC "NORM_ARITH") NORM_ARITH]; REWRITE_TAC[RIGHT_IMP_EXISTS_THM; SKOLEM_THM; LEFT_IMP_EXISTS_THM] THEN MAP_EVERY X_GEN_TAC [`l:num->(real^N->bool)->(real^N->bool)`; @@ -4777,7 +4777,7 @@ let CARD_EQ_CLOSED = prove REWRITE_TAC[SUBSET_REFL] THEN ASM SET_TAC[]; MAP_EVERY X_GEN_TAC [`b:num->bool`; `e:real`] THEN DISCH_TAC THEN MP_TAC(ISPECL [`inv(&2)`; `e:real`] REAL_ARCH_POW_INV) THEN - ASM_REWRITE_TAC[REAL_POW_INV] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[REAL_POW_INV] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_TAC `m:num`) THEN EXISTS_TAC `SUC m` THEN ASM_SIMP_TAC[] THEN REPEAT GEN_TAC THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN @@ -5418,7 +5418,7 @@ let HOMEOMORPHIC_MONOTONE_IMAGE_INTERVAL = prove ASSUME_TAC THENL [ONCE_REWRITE_TAC[SWAP_FORALL_THM] THEN INDUCT_TAC THENL [ASM_REWRITE_TAC[REAL_ARITH `x / &2 pow 0 = (&2 * x) / &2`] THEN - ASM_REWRITE_TAC[REAL_OF_NUM_MUL] THEN CONV_TAC NUM_REDUCE_CONV THEN + ASM_REWRITE_TAC[REAL_OF_NUM_MUL] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN RULE_ASSUM_TAC(REWRITE_RULE[DROP_VEC]) THEN ASM_REAL_ARITH_TAC; ALL_TAC] THEN X_GEN_TAC `m:num` THEN REWRITE_TAC[ODD_EXISTS] THEN @@ -5482,7 +5482,7 @@ let HOMEOMORPHIC_MONOTONE_IMAGE_INTERVAL = prove ALL_TAC] THEN X_GEN_TAC `n:num` THEN DISCH_THEN(LABEL_TAC "+") THEN DISJ_CASES_TAC(ARITH_RULE `n = 0 \/ 0 < n`) THENL - [ASM_REWRITE_TAC[] THEN CONV_TAC NUM_REDUCE_CONV THEN + [ASM_REWRITE_TAC[] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[ARITH_RULE `0 < 2 * j <=> 0 < j`; ARITH_RULE `2 * j < 2 <=> j < 1`] THEN ARITH_TAC; @@ -5491,7 +5491,7 @@ let HOMEOMORPHIC_MONOTONE_IMAGE_INTERVAL = prove [FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [EVEN_EXISTS]) THEN DISCH_THEN(X_CHOOSE_THEN `j:num` SUBST1_TAC) THEN REWRITE_TAC[EXP; ARITH_RULE `0 < 2 * j <=> 0 < j`; LT_MULT_LCANCEL] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_SIMP_TAC[ARITH_RULE `0 < j ==> 2 * 2 * j - 1 = 4 * (j - 1) + 3`; ADD1; ARITH_RULE `2 * 2 * j + 1 = 4 * j + 1`] THEN SIMP_TAC[ARITH_RULE `0 < j ==> 2 * (j - 1) + 1 = 2 * j - 1`] THEN @@ -5594,10 +5594,10 @@ let HOMEOMORPHIC_MONOTONE_IMAGE_INTERVAL = prove DISCH_THEN(X_CHOOSE_THEN `d:real` STRIP_ASSUME_TAC) THEN MP_TAC(SPECL [`inv(&2)`; `min (d:real) (&1 / &4)`] REAL_ARCH_POW_INV) THEN ASM_REWRITE_TAC[REAL_HALF; REAL_POW_INV; REAL_LT_MIN] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_THEN `n:num` MP_TAC) THEN ASM_CASES_TAC `n = 0` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN STRIP_TAC THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN STRIP_TAC THEN EXISTS_TAC `inv(&2 pow n)` THEN REWRITE_TAC[REAL_LT_POW2; REAL_LT_INV_EQ] THEN REWRITE_TAC[IMP_CONJ; RIGHT_FORALL_IMP_THM] THEN @@ -5684,9 +5684,9 @@ let HOMEOMORPHIC_MONOTONE_IMAGE_INTERVAL = prove REWRITE_TAC[REAL_ARITH `(j + &1) / n = j / n + inv n`] THEN ASM_CASES_TAC `j = 0` THENL [ASM_REWRITE_TAC[REAL_ARITH `&0 / x = &0`; REAL_ADD_LID] THEN - DISCH_TAC THEN EXISTS_TAC `1` THEN CONV_TAC NUM_REDUCE_CONV THEN + DISCH_TAC THEN EXISTS_TAC `1` THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[ARITH_RULE `1 < n <=> 2 EXP 1 <= n`] THEN - ASM_SIMP_TAC[LE_EXP; LE_1] THEN CONV_TAC NUM_REDUCE_CONV THEN + ASM_SIMP_TAC[LE_EXP; LE_1] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN MATCH_MP_TAC(REAL_ARITH `&0 < x /\ x < inv n /\ &0 < y /\ y < inv n ==> abs(x - &1 / n) < inv n /\ abs(y - &1 / n) < inv n`) THEN @@ -5775,10 +5775,10 @@ let HOMEOMORPHIC_MONOTONE_IMAGE_INTERVAL = prove MP_TAC(SPECL [`inv(&2)`; `min (d / &2) (&1 / &4)`] REAL_ARCH_POW_INV) THEN ASM_REWRITE_TAC[REAL_HALF; REAL_POW_INV; REAL_LT_MIN] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_THEN `n:num` MP_TAC) THEN ASM_CASES_TAC `n = 0` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN STRIP_TAC THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN STRIP_TAC THEN DISCH_THEN(MP_TAC o SPEC `n:num`) THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `m:num` THEN DISCH_THEN(X_CHOOSE_THEN `y:real^1` MP_TAC) THEN @@ -5797,7 +5797,7 @@ let HOMEOMORPHIC_MONOTONE_IMAGE_INTERVAL = prove ASM_SIMP_TAC[] THEN ASM_REAL_ARITH_TAC] THEN MATCH_MP_TAC num_INDUCTION THEN REWRITE_TAC[NOT_SUC] THEN X_GEN_TAC `n:num` THEN ASM_CASES_TAC `n = 0` THEN ASM_REWRITE_TAC[] THENL - [EXISTS_TAC `1` THEN CONV_TAC NUM_REDUCE_CONV THEN + [EXISTS_TAC `1` THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_REWRITE_TAC[REAL_POW_1] THEN SUBGOAL_THEN `x IN interval[vec 0:real^1,u] \/ @@ -6254,7 +6254,7 @@ let HOMEOMORPHIC_MONOTONE_IMAGE_INTERVAL = prove REAL_MUL_LID; GSYM real_div]; MATCH_MP_TAC REAL_LET_TRANS THEN EXISTS_TAC `inv(&2) pow N` THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC REAL_POW_MONO_INV THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LE_ADD]]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LE_ADD]]; REWRITE_TAC[CONJ_ASSOC] THEN MATCH_MP_TAC(MESON[] `!m n m' n'. (P m n /\ P m' n') /\ (P m n /\ P m' n' ==> ~(g m n = g m' n')) @@ -6262,7 +6262,7 @@ let HOMEOMORPHIC_MONOTONE_IMAGE_INTERVAL = prove MAP_EVERY EXISTS_TAC [`2 * m + 1`; `n + 1`; `4 * m + 3`; `n + 2`] THEN CONJ_TAC THENL - [REWRITE_TAC[EXP_ADD] THEN CONV_TAC NUM_REDUCE_CONV THEN CONJ_TAC THEN + [REWRITE_TAC[EXP_ADD] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN CONJ_TAC THEN (REWRITE_TAC[GSYM CONJ_ASSOC] THEN REPLICATE_TAC 2 (CONJ_TAC THENL [ASM_ARITH_TAC; ALL_TAC])) THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REAL_ARITH @@ -6282,7 +6282,7 @@ let HOMEOMORPHIC_MONOTONE_IMAGE_INTERVAL = prove SIMP_TAC[REAL_LT_RMUL_EQ; REAL_EQ_MUL_RCANCEL; REAL_LT_INV_EQ; REAL_LT_POW2; REAL_INV_EQ_0; REAL_POW_EQ_0; ARITH_EQ; REAL_OF_NUM_EQ] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REAL_ARITH_TAC; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REAL_ARITH_TAC; ASM_SIMP_TAC[] THEN DISCH_THEN(K ALL_TAC) THEN FIRST_X_ASSUM(MP_TAC o CONJUNCT1 o SPECL [`n + 2`; `4 * m + 3`]) THEN UNDISCH_THEN `!x. midpoint ((a:real->real^1) x,b x) = c x` @@ -6290,7 +6290,7 @@ let HOMEOMORPHIC_MONOTONE_IMAGE_INTERVAL = prove ASM_SIMP_TAC[ARITH_RULE `n + 2 = (n + 1) + 1 /\ 0 < n + 1`] THEN REWRITE_TAC[th] THEN ASSUME_TAC th) THEN DISCH_TAC THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN FIRST_X_ASSUM(MP_TAC o SPECL [`a(&(2 * m + 1) / &2 pow (n + 1)):real^1`; `b(&(2 * m + 1) / &2 pow (n + 1)):real^1`; @@ -6436,7 +6436,7 @@ let PATH_CONTAINS_ARC = prove ASM_REWRITE_TAC[dist] THEN ANTS_TAC THENL [ASM SET_TAC[]; ALL_TAC] THEN MATCH_MP_TAC(TAUT `q /\ (p ==> ~r) ==> p ==> ~(q ==> r)`) THEN - CONJ_TAC THENL [ASM SET_TAC[]; CONV_TAC NORM_ARITH]] THEN + CONJ_TAC THENL [ASM SET_TAC[]; (CONV_TAC "NORM_ARITH") NORM_ARITH]] THEN SUBGOAL_THEN `?w z. w IN interval(x,y) /\ z IN interval(x,y) /\ drop w < drop z /\ norm(w - x) < e /\ norm(z - y) < e` @@ -8562,7 +8562,7 @@ let COMPACT_LOCALLY_CONNECTED_IMP_ULC = prove GEN_REWRITE_TAC RAND_CONV [GSYM REAL_INV_INV] THEN MATCH_MP_TAC REAL_LT_INV2 THEN ASM_REWRITE_TAC[REAL_LT_INV_EQ] THEN TRANS_TAC REAL_LTE_TRANS `&2 pow n` THEN ASM_REWRITE_TAC[] THEN - MATCH_MP_TAC REAL_POW_MONO THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN TRANS_TAC LE_TRANS `m:num` THEN ASM_MESON_TAC[MONOTONE_BIGGER]; ALL_TAC] THEN FIRST_ASSUM(MP_TAC o GEN_REWRITE_RULE I [LOCALLY_CONNECTED]) THEN @@ -8681,7 +8681,7 @@ let BOUNDED_ULC_IMP_FCCOVERABLE = prove MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `f:num->real^N` THEN DISCH_TAC THEN MATCH_MP_TAC num_WF THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN - ONCE_ASM_REWRITE_TAC[] THEN CONV_TAC SELECT_CONV THEN + ONCE_ASM_REWRITE_TAC[] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN FIRST_X_ASSUM(MP_TAC o SPEC `IMAGE (f:num->real^N) {m | m < n}`) THEN SIMP_TAC[FINITE_NUMSEG_LT; FINITE_IMAGE] THEN ANTS_TAC THENL [ASM SET_TAC[]; REWRITE_TAC[IMAGE_o]] THEN @@ -8841,7 +8841,7 @@ let LOCALLY_FCCOVERABLE = prove MATCH_MP_TAC SUBSET_BALL THEN ASM_SIMP_TAC[REAL_LE_RMUL_EQ; REAL_ARITH `x - a <= x <=> &0 <= a`] THEN SIMP_TAC[REAL_POW_LE; REAL_POS; REAL_LE_INV_EQ]] THEN - MATCH_MP_TAC num_INDUCTION THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC num_INDUCTION THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN EXPAND_TAC "t" THEN REWRITE_TAC[SUBSET; IN_ELIM_THM; REAL_MUL_LID] THEN CONJ_TAC THENL [REWRITE_TAC[LE; LT; FORALL_UNWIND_THM2] THEN @@ -8993,7 +8993,7 @@ let LOCALLY_FCCOVERABLE = prove SUBGOAL_THEN `?k. r / &2 pow k < e / &4` STRIP_ASSUME_TAC THENL [REWRITE_TAC[ONCE_REWRITE_RULE[REAL_MUL_SYM] real_div] THEN ASM_SIMP_TAC[REAL_INV_POW; GSYM REAL_LT_RDIV_EQ] THEN - MATCH_MP_TAC REAL_ARCH_POW_INV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_ARCH_POW_INV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `&0 < (&1 / &4 * x) / y <=> &0 < x / y`] THEN ASM_SIMP_TAC[REAL_LT_DIV]; ALL_TAC] THEN @@ -9300,7 +9300,7 @@ let LOCALLY_FCCOVERABLE_ALT = prove MATCH_MP_TAC SUBSET_BALL THEN ASM_SIMP_TAC[REAL_LE_RMUL_EQ; REAL_ARITH `x - a <= x <=> &0 <= a`] THEN SIMP_TAC[REAL_POW_LE; REAL_POS; REAL_LE_INV_EQ]] THEN - MATCH_MP_TAC num_INDUCTION THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC num_INDUCTION THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN EXPAND_TAC "t" THEN REWRITE_TAC[SUBSET; IN_ELIM_THM; REAL_MUL_LID] THEN CONJ_TAC THENL [REWRITE_TAC[LE; LT; FORALL_UNWIND_THM2] THEN @@ -9451,7 +9451,7 @@ let LOCALLY_FCCOVERABLE_ALT = prove SUBGOAL_THEN `?k. r / &2 pow k < e / &4` STRIP_ASSUME_TAC THENL [REWRITE_TAC[ONCE_REWRITE_RULE[REAL_MUL_SYM] real_div] THEN ASM_SIMP_TAC[REAL_INV_POW; GSYM REAL_LT_RDIV_EQ] THEN - MATCH_MP_TAC REAL_ARCH_POW_INV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_ARCH_POW_INV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `&0 < (&1 / &4 * x) / y <=> &0 < x / y`] THEN ASM_SIMP_TAC[REAL_LT_DIV]; ALL_TAC] THEN @@ -11456,7 +11456,7 @@ let COMPACT_PARTITION_CONTAINING_CLOSED = prove `\i. if i = 0 then a:real^N else if i <= SUC n then p(i - 1) else b` THEN EXISTS_TAC `n + 2` THEN ASM_REWRITE_TAC[ADD_EQ_0; ARITH_EQ; ARITH_RULE `~(n + 2 <= SUC n)`] THEN - MATCH_MP_TAC num_INDUCTION THEN CONV_TAC NUM_REDUCE_CONV THEN + MATCH_MP_TAC num_INDUCTION THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_REWRITE_TAC[ARITH_RULE `1 <= SUC n`; NOT_SUC; LE_SUC] THEN CONJ_TAC THENL [ASM_MESON_TAC[DIST_SYM]; ALL_TAC] THEN X_GEN_TAC `i:num` THEN DISCH_THEN(K ALL_TAC) THEN CONJ_TAC THENL @@ -11565,7 +11565,7 @@ let CONNECTED_COMPONENT_LIMIT = prove [REPEAT STRIP_TAC THEN REPEAT(COND_CASES_TAC THEN ASM_REWRITE_TAC[]) THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_ARITH_TAC; - MATCH_MP_TAC num_INDUCTION THEN CONV_TAC NUM_REDUCE_CONV THEN + MATCH_MP_TAC num_INDUCTION THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_REWRITE_TAC[ARITH_RULE `1 <= SUC n`; NOT_SUC; LE_SUC] THEN CONJ_TAC THENL [ASM_MESON_TAC[DIST_SYM]; ALL_TAC] THEN X_GEN_TAC `i:num` THEN DISCH_THEN(K ALL_TAC) THEN @@ -12246,7 +12246,7 @@ let LOCALLY_COMPACT_CONNECTED_IMP_PATH_CONNECTED = prove REWRITE_TAC[IN_ELIM_THM] THENL [EXISTS_TAC `0`; EXISTS_TAC `1`] THEN EXISTS_TAC `0` THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_NUM]]] THEN SUBGOAL_THEN `?f:real->real^N. @@ -12265,7 +12265,7 @@ let LOCALLY_COMPACT_CONNECTED_IMP_PATH_CONNECTED = prove ASM_REWRITE_TAC[LE_0; LIFT_DROP] THEN X_GEN_TAC `e:real` THEN DISCH_TAC THEN MP_TAC(ISPECL [`inv(&2)`; `e:real`] REAL_ARCH_POW_INV) THEN - REWRITE_TAC[REAL_POW_INV] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[REAL_POW_INV] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN X_GEN_TAC `j:num` THEN DISCH_TAC THEN FIRST_X_ASSUM(fun th -> @@ -12529,14 +12529,14 @@ let LOCALLY_COMPACT_CONNECTED_IMP_PATH_CONNECTED = prove ASM_REWRITE_TAC[] THEN REPEAT CONJ_TAC THENL [LET_TAC THEN SUBGOAL_THEN `&(SND t) / &2 pow r(FST t:num) = &0` MP_TAC THENL - [EXPAND_TAC "t" THEN CONV_TAC SELECT_CONV THEN + [EXPAND_TAC "t" THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN EXISTS_TAC `0,0` THEN REWRITE_TAC[real_div; REAL_MUL_LZERO]; REWRITE_TAC[REAL_DIV_EQ_0; REAL_POW_EQ_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_OF_NUM_EQ]]; LET_TAC THEN SUBGOAL_THEN `&(SND t) / &2 pow r(FST t:num) = &1` MP_TAC THENL - [EXPAND_TAC "t" THEN CONV_TAC SELECT_CONV THEN + [EXPAND_TAC "t" THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN EXISTS_TAC `0,2 EXP r 0` THEN SIMP_TAC[GSYM REAL_OF_NUM_POW; REAL_DIV_REFL; REAL_POW_EQ_0; REAL_OF_NUM_EQ; ARITH_EQ]; @@ -12547,7 +12547,7 @@ let LOCALLY_COMPACT_CONNECTED_IMP_PATH_CONNECTED = prove `t = @t. &(SND t) / &2 pow r (FST t:num) = &m / &2 pow r n` THEN ABBREV_TAC `u = @t. &(SND t) / &2 pow r (FST t) = &k / &2 pow r(SUC n)` THEN - CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV let_CONV)") (TOP_DEPTH_CONV let_CONV) THEN SUBGOAL_THEN `(f:num->num->real^N) (FST t) (SND t) = f n m /\ (f:num->num->real^N) (FST u) (SND u) = f (SUC n) k` @@ -12558,7 +12558,7 @@ let LOCALLY_COMPACT_CONNECTED_IMP_PATH_CONNECTED = prove ==> (f:num->num->real^N) n m = f n' m'` (fun th -> CONJ_TAC THEN MATCH_MP_TAC th THEN ASM_REWRITE_TAC[] THEN MAP_EVERY EXPAND_TAC ["t"; "u"] THEN - CONV_TAC SELECT_CONV THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN REWRITE_TAC[EXISTS_PAIR_THM] THEN MESON_TAC[]) THEN REWRITE_TAC[GSYM REAL_OF_NUM_LE; GSYM REAL_OF_NUM_POW] THEN ONCE_REWRITE_TAC[REAL_ARITH `x <= y <=> x <= &1 * y`] THEN @@ -12594,12 +12594,12 @@ let LOCALLY_COMPACT_CONNECTED_IMP_PATH_CONNECTED = prove `x <= y /\ y <= z ==> z - x:num = (z - y) + (y - x)`) THEN CONJ_TAC THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_ARITH_TAC; REWRITE_TAC[EXP_ADD; GSYM MULT_ASSOC]] THEN - CONV_TAC SYM_CONV THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN TRANS_TAC EQ_TRANS `(f:num->num->real^N) p (2 EXP (r p - r(n:num)) * m1)` THEN CONJ_TAC THENL [FIRST_X_ASSUM MATCH_MP_TAC; - CONV_TAC SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN SIMP_TAC[REAL_EQ_RDIV_EQ; REAL_LE_LDIV_EQ; REAL_LT_POW2] THEN ONCE_REWRITE_TAC[REAL_ARITH `m / x * y:real = (y / x) * m`] THEN ASM_SIMP_TAC[GSYM REAL_POW_SUB; REAL_OF_NUM_EQ; ARITH_EQ] THEN @@ -12640,7 +12640,7 @@ let LOCALLY_COMPACT_CONNECTED_IMP_PATH_CONNECTED = prove ASM_REWRITE_TAC[o_THM] THEN ASM_SIMP_TAC[LE_REFL]] THEN CONJ_TAC THENL [MP_TAC(ISPEC `s:real^N->bool` COMPACT_LOCALLY_CONNECTED_IMP_ULC_ALT) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(MP_TAC o SPEC `&1`) THEN REWRITE_TAC[REAL_LT_01] THEN DISCH_THEN(X_CHOOSE_THEN `d:real` STRIP_ASSUME_TAC) THEN MP_TAC(ISPECL [`s:real^N->bool`; @@ -12730,7 +12730,7 @@ let LOCALLY_COMPACT_CONNECTED_IMP_PATH_CONNECTED = prove ==> p < 2 EXP p ==> (!x. x IN s ==> x <= 2 EXP p)`))) THEN ANTS_TAC THEN REWRITE_TAC[LT_POW2_REFL] THEN REWRITE_TAC[FORALL_IN_INSERT; LE_EXP] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[FORALL_IN_IMAGE; FORALL_IN_GSPEC] THEN STRIP_TAC THEN EXISTS_TAC `m + p:num` THEN EXISTS_TAC @@ -13130,7 +13130,7 @@ let CONTINUOUS_WITHIN_SEQUENTIALLY_COMPACT_MAP = prove REWRITE_TAC[AND_FORALL_THM] THEN MATCH_MP_TAC MONO_FORALL THEN X_GEN_TAC `n:num` THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[TAUT `(p ==> q) /\ (p ==> r) <=> p ==> q /\ r`] THEN - CONV_TAC SELECT_CONV THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN MP_TAC(ISPECL [`\i:num. i`; `UNIONS {{i | (f:real^M->real^N)(p i) = f(p(r m:num))} @@ -13837,7 +13837,7 @@ let DENSE_ACCESSIBLE_FRONTIER_POINT_PAIRS = prove ALL_TAC] THEN REPEAT GEN_TAC THEN DISCH_TAC THEN ASM_CASES_TAC `s:real^N->bool = {}` THEN ASM_REWRITE_TAC[FRONTIER_EMPTY; OPEN_IN_SUBTOPOLOGY_EMPTY] THENL - [CONV_TAC TAUT; STRIP_TAC THEN UNDISCH_TAC `~(s:real^N->bool = {})`] THEN + [(CONV_TAC "TAUT") TAUT; STRIP_TAC THEN UNDISCH_TAC `~(s:real^N->bool = {})`] THEN REWRITE_TAC[GSYM MEMBER_NOT_EMPTY; LEFT_IMP_EXISTS_THM] THEN X_GEN_TAC `x:real^N` THEN DISCH_TAC THEN MP_TAC(ISPECL @@ -13910,7 +13910,7 @@ let PATH_CONNECTED_CONVEX_DIFF_CARD_LT = prove SUBGOAL_THEN `(vec 0:real^N) IN u` ASSUME_TAC THENL [FIRST_X_ASSUM(MATCH_MP_TAC o GEN_REWRITE_RULE I [SUBSET]) THEN REWRITE_TAC[IN_SEGMENT] THEN EXISTS_TAC `&1 / &2` THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN VECTOR_ARITH_TAC; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN VECTOR_ARITH_TAC; ALL_TAC] THEN SUBGOAL_THEN `?c:real^N k. 1 <= k /\ ~(k = 1) /\ k <= dimindex(:N) /\ c IN u /\ ~(c$k = &0)` @@ -13999,7 +13999,7 @@ let PATH_CONNECTED_CONVEX_DIFF_CARD_LT = prove REWRITE_TAC[VECTOR_ADD_LID; VECTOR_SUB_RZERO; NOT_EXISTS_THM] THEN X_GEN_TAC `r:real` THEN ASM_CASES_TAC `r = &0` THEN ASM_REWRITE_TAC[VECTOR_MUL_LZERO] THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN DISCH_THEN(MP_TAC o AP_TERM `\x:real^N. x$k`) THEN ASM_SIMP_TAC[VECTOR_MUL_COMPONENT; REAL_ENTIRE]]);; @@ -14316,7 +14316,7 @@ let FINITE_SPHERE = prove DIMINDEX_GE_1; CONNECTED_FINITE_IFF_SING] THEN REWRITE_TAC[SET_RULE `(s = {} \/ ?a. s = {a}) <=> (!a b. a IN s /\ b IN s ==> a = b)`] THEN - SIMP_TAC[IN_SPHERE] THEN EQ_TAC THENL [ALL_TAC; CONV_TAC NORM_ARITH] THEN + SIMP_TAC[IN_SPHERE] THEN EQ_TAC THENL [ALL_TAC; (CONV_TAC "NORM_ARITH") NORM_ARITH] THEN ONCE_REWRITE_TAC[GSYM CONTRAPOS_THM] THEN REWRITE_TAC[REAL_NOT_LE] THEN DISCH_TAC THEN MP_TAC(ISPECL [`a:real^N`; `r:real`] VECTOR_CHOOSE_DIST) THEN @@ -14324,7 +14324,7 @@ let FINITE_SPHERE = prove X_GEN_TAC `x:real^N` THEN DISCH_TAC THEN DISCH_THEN(MP_TAC o SPECL [`x:real^N`; `a - (x - a):real^N`]) THEN FIRST_X_ASSUM(K ALL_TAC o check (is_neg o concl)) THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC NORM_ARITH]);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]);; let LIMIT_POINT_OF_SPHERE = prove (`!a r x:real^N. x limit_point_of sphere(a,r) <=> @@ -14355,10 +14355,10 @@ let HAS_SIZE_SPHERE_2 = prove REPEAT GEN_TAC THEN ASM_CASES_TAC `r < &0` THEN ASM_SIMP_TAC[HAS_SIZE; SPHERE_EMPTY; CARD_CLAUSES] THENL - [CONV_TAC NUM_REDUCE_CONV THEN ASM_REAL_ARITH_TAC; ALL_TAC] THEN + [(CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_REAL_ARITH_TAC; ALL_TAC] THEN ASM_CASES_TAC `r = &0` THEN ASM_SIMP_TAC[SPHERE_SING; CARD_CLAUSES; FINITE_EMPTY; NOT_IN_EMPTY] THEN - REWRITE_TAC[REAL_LT_REFL] THEN CONV_TAC NUM_REDUCE_CONV THEN + REWRITE_TAC[REAL_LT_REFL] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN SUBGOAL_THEN `&0 < r` ASSUME_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN ASM_CASES_TAC `r <= &0` THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN ASM_REWRITE_TAC[FINITE_SPHERE] THEN @@ -14376,7 +14376,7 @@ let HAS_SIZE_SPHERE_2 = prove SIMP_TAC[CARD_CLAUSES; FINITE_INSERT; FINITE_EMPTY; NOT_IN_EMPTY] THEN SIMP_TAC[IN_SING; VECTOR_ARITH `a - r:real^N = a + r <=> r = vec 0`] THEN ASM_SIMP_TAC[VECTOR_MUL_EQ_0; BASIS_NONZERO; LE_REFL; DIMINDEX_GE_1] THEN - CONV_TAC NUM_REDUCE_CONV]);; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV]);; let FINITE_CIRCLE_INTERSECTION,CARD_CIRCLE_INTERSECTION_LE = (CONJ_PAIR o prove) @@ -14394,7 +14394,7 @@ let FINITE_CIRCLE_INTERSECTION,CARD_CIRCLE_INTERSECTION_LE = ==> FINITE s /\ CARD s <= n`) THEN EXISTS_TAC `{a:real^2}` THEN REWRITE_TAC[FINITE_SING; CARD_SING; SUBSET; IN_SING; IN_INTER; ARITH] THEN - REWRITE_TAC[IN_SPHERE] THEN POP_ASSUM MP_TAC THEN CONV_TAC NORM_ARITH] THEN + REWRITE_TAC[IN_SPHERE] THEN POP_ASSUM MP_TAC THEN (CONV_TAC "NORM_ARITH") NORM_ARITH] THEN ASM_CASES_TAC `&0 < s` THEN ASM_REWRITE_TAC[] THENL [ALL_TAC; MATCH_MP_TAC(MESON[FINITE_SUBSET; CARD_SUBSET; LE_TRANS] @@ -14402,7 +14402,7 @@ let FINITE_CIRCLE_INTERSECTION,CARD_CIRCLE_INTERSECTION_LE = ==> FINITE s /\ CARD s <= n`) THEN EXISTS_TAC `{b:real^2}` THEN REWRITE_TAC[FINITE_SING; CARD_SING; SUBSET; IN_SING; IN_INTER; ARITH] THEN - REWRITE_TAC[IN_SPHERE] THEN POP_ASSUM MP_TAC THEN CONV_TAC NORM_ARITH] THEN + REWRITE_TAC[IN_SPHERE] THEN POP_ASSUM MP_TAC THEN (CONV_TAC "NORM_ARITH") NORM_ARITH] THEN ASM_CASES_TAC `a:real^2 = b /\ r:real = s` THEN ASM_REWRITE_TAC[INTER_IDEMPOT; FINITE_SPHERE] THEN ASM_REWRITE_TAC[DIMINDEX_2; ARITH_EQ; REAL_NOT_LE] THEN @@ -14410,7 +14410,7 @@ let FINITE_CIRCLE_INTERSECTION,CARD_CIRCLE_INTERSECTION_LE = MP_TAC(ISPECL [`3`; `sphere(a:real^2,r) INTER sphere(b,s)`] CHOOSE_SUBSET_STRONG) THEN MATCH_MP_TAC(TAUT `~r ==> ((p ==> q) ==> r) ==> p /\ ~q`) THEN - CONV_TAC (ONCE_DEPTH_CONV HAS_SIZE_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV HAS_SIZE_CONV)") (ONCE_DEPTH_CONV HAS_SIZE_CONV) THEN DISCH_THEN(CHOOSE_THEN (CONJUNCTS_THEN MP_TAC)) THEN SIMP_TAC[LEFT_IMP_EXISTS_THM] THEN REPEAT STRIP_TAC THEN FIRST_X_ASSUM SUBST_ALL_TAC THEN @@ -14421,7 +14421,7 @@ let FINITE_CIRCLE_INTERSECTION,CARD_CIRCLE_INTERSECTION_LE = REWRITE_TAC[INSERT_SUBSET; EMPTY_SUBSET; IN_INTER; IN_SPHERE] THEN ONCE_REWRITE_TAC[GSYM DIST_EQ_0] THEN REWRITE_TAC[dist; NORM_EQ_SQUARE; REAL_POS] THEN - REWRITE_TAC[DOT_2; VECTOR_SUB_COMPONENT] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[DOT_2; VECTOR_SUB_COMPONENT] THEN (CONV_TAC "REAL_RING") REAL_RING);; let INTER_SPHERE_EQ_EMPTY = prove (`!a b:real^N r s. @@ -14448,7 +14448,7 @@ let INTER_SPHERE_EQ_EMPTY = prove EQ_TAC THENL [ALL_TAC; REWRITE_TAC[EXTENSION; IN_INTER; IN_SPHERE; NOT_IN_EMPTY] THEN - CONV_TAC NORM_ARITH] THEN + (CONV_TAC "NORM_ARITH") NORM_ARITH] THEN DISCH_TAC THEN FIRST_X_ASSUM(MP_TAC o MATCH_MP (ARITH_RULE `~(n = 1) ==> 1 <= n ==> 2 <= n`)) THEN REWRITE_TAC[DIMINDEX_GE_1] THEN DISCH_TAC THEN @@ -14493,7 +14493,7 @@ let HAS_SIZE_INTER_SPHERE_1 = prove ASM_REWRITE_TAC[INTER_IDEMPOT; HAS_SIZE_SPHERE_1] THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN EQ_TAC THENL [ALL_TAC; ASM_REAL_ARITH_TAC] THEN - CONV_TAC(LAND_CONV HAS_SIZE_CONV) THEN + (CONV_TAC "(LAND_CONV HAS_SIZE_CONV)") (LAND_CONV HAS_SIZE_CONV) THEN MATCH_MP_TAC(SET_RULE `s = {} ==> (?a. s = {a}) ==> P`) THEN REWRITE_TAC[EXTENSION; IN_INTER; IN_SPHERE_0; NOT_IN_EMPTY] THEN ASM_REAL_ARITH_TAC; @@ -14539,7 +14539,7 @@ let HAS_SIZE_INTER_SPHERE_1 = prove SIMP_TAC[NORM_MUL; NORM_BASIS; DIMINDEX_GE_1; LE_REFL; dist; GSYM VECTOR_SUB_RDISTRIB] THEN REAL_ARITH_TAC; - DISCH_TAC THEN CONV_TAC HAS_SIZE_CONV THEN EXISTS_TAC `x:real^N` THEN + DISCH_TAC THEN (CONV_TAC "HAS_SIZE_CONV") HAS_SIZE_CONV THEN EXISTS_TAC `x:real^N` THEN REWRITE_TAC[EXTENSION; IN_INTER; IN_SPHERE; DIST_0; IN_SING] THEN X_GEN_TAC `y:real^N` THEN EQ_TAC THEN ASM_SIMP_TAC[] THEN REPEAT STRIP_TAC THEN @@ -15216,19 +15216,19 @@ let INTERIOR_SIMPLE_PATH_IMAGE = prove MP_TAC(ISPECL [`g:real^1->real^N`; `lift(&1 / &2)`] PATH_IMAGE_SUBPATH_COMBINE) THEN REWRITE_TAC[IN_INTERVAL_1; LIFT_DROP; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[SIMPLE_PATH_IMP_PATH] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[SIMPLE_PATH_IMP_PATH] THEN DISCH_THEN(SUBST1_TAC o SYM) THEN W(MP_TAC o PART_MATCH (lhs o rand) INTERIOR_UNION_EQ_EMPTY o snd) THEN ANTS_TAC THENL [DISJ1_TAC THEN MATCH_MP_TAC CLOSED_PATH_IMAGE THEN MATCH_MP_TAC PATH_SUBPATH THEN REWRITE_TAC[IN_INTERVAL_1; LIFT_DROP; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[SIMPLE_PATH_IMP_PATH]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[SIMPLE_PATH_IMP_PATH]; DISCH_THEN SUBST1_TAC THEN CONJ_TAC THEN MATCH_MP_TAC INTERIOR_ARC_IMAGE THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC ARC_SIMPLE_PATH_SUBPATH_INTERIOR THEN ASM_REWRITE_TAC[IN_INTERVAL_1; LIFT_DROP; DROP_VEC; GSYM DROP_EQ] THEN - CONV_TAC REAL_RAT_REDUCE_CONV]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]);; let ENDPOINTS_NOT_IN_INTERIOR_SIMPLE_PATH_IMAGE = prove (`!g:real^1->real^N. @@ -15611,7 +15611,7 @@ let HOMEOMORPHISM_MOVING_POINTS_EXISTS_GEN = prove ONCE_REWRITE_TAC[GSYM CONTRAPOS_THM] THEN REWRITE_TAC[] THEN STRIP_TAC THEN ASM_REWRITE_TAC[AFF_DIM_EMPTY; AFF_DIM_SING] THEN - CONV_TAC INT_REDUCE_CONV]; + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV]; ASM_REWRITE_TAC[]] THEN ANTS_TAC THENL [REPEAT CONJ_TAC THENL @@ -17693,7 +17693,7 @@ let HOMOTOPIC_WITH_TRANS = prove else (k2:real^(1,M)finite_sum->real^N) (pastecart (&2 % fstcart y - vec 1) (sndcart y))` THEN REWRITE_TAC[FSTCART_PASTECART; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[VECTOR_MUL_RZERO] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[VECTOR_MUL_RZERO] THEN ASM_REWRITE_TAC[VECTOR_ARITH `&2 % x - x:real^N = x`; SNDCART_PASTECART] THEN REPEAT CONJ_TAC THENL [SUBGOAL_THEN @@ -17728,7 +17728,7 @@ let HOMOTOPIC_WITH_TRANS = prove CONJ_TAC THENL [CONJ_TAC THEN GEN_REWRITE_TAC LAND_CONV [GSYM o_DEF] THEN MATCH_MP_TAC CONTINUOUS_ON_COMPOSE THEN - (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [CONTINUOUS_ON_PASTECART; CONTINUOUS_ON_CMUL; CONTINUOUS_ON_SUB; CONTINUOUS_ON_CONST; LINEAR_CONTINUOUS_ON; LINEAR_FSTCART; LINEAR_SNDCART] THEN @@ -17746,7 +17746,7 @@ let HOMOTOPIC_WITH_TRANS = prove SIMP_TAC[LIFT_DROP; DROP_VEC; REAL_ARITH `&1 / &2 <= t ==> (t <= &1 / &2 <=> t = &1 / &2)`] THEN SIMP_TAC[GSYM LIFT_EQ; LIFT_DROP; GSYM LIFT_CMUL; GSYM LIFT_NUM] THEN - REWRITE_TAC[GSYM LIFT_SUB] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[GSYM LIFT_SUB] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[LIFT_NUM]]; REWRITE_TAC[SUBSET; FORALL_IN_IMAGE; FORALL_IN_GSPEC] THEN REWRITE_TAC[FSTCART_PASTECART; SNDCART_PASTECART] THEN @@ -18079,7 +18079,7 @@ let HOMOTOPIC_PATHS_REPARAMETRIZE = prove drop(fstcart y) % sndcart y)` THEN ASM_REWRITE_TAC[o_THM; FSTCART_PASTECART; SNDCART_PASTECART; DROP_VEC; pathstart; pathfinish] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[VECTOR_MUL_LZERO; VECTOR_MUL_RZERO; VECTOR_ADD_LID; VECTOR_MUL_LID; VECTOR_ADD_RID] THEN REWRITE_TAC[VECTOR_ARITH `(&1 - u) % x + u % x:real^N = x`] THEN @@ -18145,7 +18145,7 @@ let HOMOTOPIC_JOIN_LEMMA = prove SIMP_TAC[o_DEF; LIFT_DROP; LINEAR_CONTINUOUS_ON; LINEAR_SNDCART; ETA_AX]; SIMP_TAC[IMP_CONJ; FORALL_IN_GSPEC; FSTCART_PASTECART; SNDCART_PASTECART; GSYM LIFT_EQ; LIFT_DROP; GSYM LIFT_CMUL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN RULE_ASSUM_TAC(REWRITE_RULE[pathstart; pathfinish]) THEN ASM_SIMP_TAC[LIFT_NUM; VECTOR_SUB_REFL]] THEN MATCH_MP_TAC CONTINUOUS_ON_COMPOSE THEN @@ -18232,7 +18232,7 @@ let HOMOTOPIC_PATHS_JOIN = prove ASM_REWRITE_TAC[joinpaths; o_DEF] THEN RULE_ASSUM_TAC(REWRITE_RULE[pathstart; pathfinish]) THEN REWRITE_TAC[pathstart; pathfinish; DROP_VEC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[VECTOR_ARITH `&2 % x - x:real^N = x`; VECTOR_MUL_RZERO]);; let HOMOTOPIC_PATHS_CONTINUOUS_IMAGE = prove @@ -18259,7 +18259,7 @@ let HOMOTOPIC_PATHS_RID = prove MATCH_MP_TAC HOMOTOPIC_PATHS_REPARAMETRIZE THEN ASM_REWRITE_TAC[joinpaths] THEN EXISTS_TAC `\t. if drop t <= &1 / &2 then &2 % t else vec 1` THEN - ASM_REWRITE_TAC[DROP_VEC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[DROP_VEC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[VECTOR_MUL_RZERO; linepath; pathfinish; VECTOR_ARITH `(&1 - t) % x + t % x:real^N = x`] THEN REWRITE_TAC[CONJ_ASSOC] THEN CONJ_TAC THENL [ALL_TAC; MESON_TAC[]] THEN @@ -18313,34 +18313,34 @@ let HOMOTOPIC_PATHS_ASSOC = prove [MATCH_MP_TAC CONTINUOUS_ON_CASES_1 THEN SIMP_TAC[CONTINUOUS_ON_CMUL; CONTINUOUS_ON_ID; LIFT_DROP] THEN REWRITE_TAC[GSYM LIFT_SUB; GSYM LIFT_CMUL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC CONTINUOUS_ON_CASES_1 THEN SIMP_TAC[CONTINUOUS_ON_CMUL; CONTINUOUS_ON_SUB; CONTINUOUS_ON_ID; CONTINUOUS_ON_CONST] THEN REWRITE_TAC[GSYM LIFT_SUB; GSYM LIFT_CMUL; GSYM LIFT_NUM] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; REWRITE_TAC[SUBSET; FORALL_IN_IMAGE; IN_INTERVAL_1; DROP_VEC] THEN REPEAT STRIP_TAC THEN REPEAT(COND_CASES_TAC THEN ASM_REWRITE_TAC[]) THEN REWRITE_TAC[DROP_CMUL; DROP_VEC; LIFT_DROP; DROP_SUB] THEN ASM_REAL_ARITH_TAC; - REWRITE_TAC[DROP_VEC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[DROP_VEC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[VECTOR_MUL_RZERO]; - REWRITE_TAC[DROP_VEC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[DROP_VEC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN VECTOR_ARITH_TAC; X_GEN_TAC `t:real^1` THEN REWRITE_TAC[IN_INTERVAL_1; DROP_VEC] THEN STRIP_TAC THEN ASM_CASES_TAC `drop t <= &1 / &2` THEN ASM_REWRITE_TAC[DROP_CMUL] THEN ASM_REWRITE_TAC[REAL_ARITH `inv(&2) * t <= &1 / &2 <=> t <= &1`] THEN REWRITE_TAC[VECTOR_MUL_ASSOC; REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[REAL_MUL_LID] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[REAL_MUL_LID] THEN ASM_CASES_TAC `drop t <= &3 / &4` THEN ASM_REWRITE_TAC[DROP_SUB; DROP_VEC; DROP_CMUL; LIFT_DROP; REAL_ARITH `&2 * (t - &1 / &4) <= &1 / &2 <=> t <= &1 / &2`; REAL_ARITH `&2 * t - &1 <= &1 / &2 <=> t <= &3 / &4`; REAL_ARITH `t - &1 / &4 <= &1 / &2 <=> t <= &3 / &4`] THEN REWRITE_TAC[VECTOR_SUB_LDISTRIB; VECTOR_MUL_ASSOC; GSYM LIFT_CMUL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_NUM] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[LIFT_NUM] THEN REWRITE_TAC[VECTOR_ARITH `a - b - b:real^N = a - &2 % b`]]);; let HOMOTOPIC_PATHS_RINV = prove @@ -18815,7 +18815,7 @@ let HOMOTOPIC_LOOPS_IMP_HOMOTOPIC_PATHS_NULL = prove REWRITE_TAC[subpath] THEN GEN_REWRITE_TAC LAND_CONV [GSYM o_DEF] THEN MATCH_MP_TAC CONTINUOUS_ON_COMPOSE THEN REWRITE_TAC[VECTOR_SUB_RZERO; VECTOR_SUB_LZERO; VECTOR_ADD_LID] THEN - (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [CONTINUOUS_ON_PASTECART; CONTINUOUS_ON_ADD; CONTINUOUS_ON_MUL; LIFT_DROP; CONTINUOUS_ON_NEG; DROP_NEG; CONTINUOUS_ON_CONST; CONTINUOUS_ON_ID; LINEAR_CONTINUOUS_ON; LINEAR_FSTCART; LINEAR_SNDCART; @@ -19405,12 +19405,12 @@ let HOMOTOPIC_JOIN_SUBPATHS = prove then inv(drop(w - u)) % (&2 * drop(v - u)) % t else inv(drop(w - u)) % ((v - u) + drop(w - v) % (&2 % t - vec 1))` THEN - REWRITE_TAC[DROP_VEC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[DROP_VEC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[VECTOR_MUL_RZERO] THEN REPEAT CONJ_TAC THENL [MATCH_MP_TAC CONTINUOUS_ON_CASES_1 THEN REWRITE_TAC[GSYM DROP_EQ; DROP_CMUL; LIFT_DROP; GSYM LIFT_NUM; DROP_ADD; DROP_SUB] THEN - (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) + ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 5) [CONTINUOUS_ON_MUL; o_DEF; CONTINUOUS_ON_CONST; CONTINUOUS_ON_ID; CONTINUOUS_ON_SUB; CONTINUOUS_ON_ADD] THEN REPEAT STRIP_TAC THEN REAL_ARITH_TAC; @@ -19435,7 +19435,7 @@ let HOMOTOPIC_JOIN_SUBPATHS = prove (CONJ_TAC THENL [MATCH_MP_TAC REAL_LE_LMUL; ALL_TAC]) THEN ASM_REAL_ARITH_TAC; REWRITE_TAC[GSYM DROP_EQ; DROP_VEC; DROP_ADD; DROP_CMUL; DROP_SUB] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `(v - u) + (w - v) * &1 = w - u`] THEN ASM_SIMP_TAC[REAL_SUB_0; DROP_EQ; REAL_MUL_LINV]; X_GEN_TAC `t:real^1` THEN DISCH_TAC THEN @@ -19635,7 +19635,7 @@ let HOMOTOPIC_LOOPS_ADD_SYM = prove MATCH_MP_TAC HOMOTOPIC_LOOPS_TRANS THEN SUBGOAL_THEN `lift(&1 / &2) IN interval[vec 0,vec 1]` ASSUME_TAC THENL [REWRITE_TAC[IN_INTERVAL_1; DROP_VEC; LIFT_DROP] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN EXISTS_TAC `shiftpath (lift(&1 / &2)) (p ++ q:real^1->real^N)` THEN CONJ_TAC THENL @@ -19653,7 +19653,7 @@ let HOMOTOPIC_LOOPS_ADD_SYM = prove [REWRITE_TAC[GSYM LIFT_EQ; LIFT_NUM; LIFT_DROP] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[VECTOR_ADD_RID] THENL [REWRITE_TAC[GSYM LIFT_CMUL; VECTOR_MUL_RZERO] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_MESON_TAC[LIFT_NUM; pathstart; pathfinish]; ALL_TAC]; ALL_TAC] THEN @@ -20065,7 +20065,7 @@ let CARD_EQ_FUNDAMENTAL_GROUPS_BASEPOINTS = prove REPEAT GEN_TAC THEN STRIP_TAC THEN MATCH_MP_TAC(TAUT `p /\ (p ==> q) ==> p /\ q`) THEN CONJ_TAC THENL [GEN_REWRITE_TAC (RAND_CONV o RAND_CONV) [GSYM ETA_AX] THEN - CONV_TAC SELECT_CONV THEN ASM_MESON_TAC[HOMOTOPIC_PATHS_REFL]; + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_MESON_TAC[HOMOTOPIC_PATHS_REFL]; ASM MESON_TAC[HOMOTOPIC_PATHS_IMP_PATH; HOMOTOPIC_PATHS_IMP_SUBSET; HOMOTOPIC_PATHS_IMP_PATHSTART; HOMOTOPIC_PATHS_IMP_PATHFINISH]]) @@ -20289,7 +20289,7 @@ let NULLHOMOTOPIC_FROM_SPHERE_EXTENSION = prove ASM_SIMP_TAC[REAL_ARITH `&0 < r ==> abs r = r`] THEN REWRITE_TAC[PASTECART_SUB; VECTOR_SUB_REFL; NORM_PASTECART] THEN REWRITE_TAC[NORM_0; VECTOR_SUB_RZERO] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ADD_RID] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ADD_RID] THEN REWRITE_TAC[POW_2_SQRT_ABS; REAL_ABS_NORM; NORM_LIFT] THEN ASM_SIMP_TAC[REAL_ABS_DIV; REAL_LT_LDIV_EQ; REAL_ABS_NORM; REAL_ARITH `&0 < r ==> abs r = r`]; @@ -20437,7 +20437,7 @@ let HOMOTOPY_EQUIVALENT_SYM = prove s homotopy_equivalent t <=> t homotopy_equivalent s`, REPEAT GEN_TAC THEN REWRITE_TAC[homotopy_equivalent] THEN GEN_REWRITE_TAC RAND_CONV [SWAP_EXISTS_THM] THEN - REPEAT(AP_TERM_TAC THEN ABS_TAC) THEN CONV_TAC TAUT);; + REPEAT(AP_TERM_TAC THEN ABS_TAC) THEN (CONV_TAC "TAUT") TAUT);; let HOMOTOPY_EQUIVALENT_TRANS = prove (`!s:real^M->bool t:real^N->bool u:real^P->bool. @@ -20902,7 +20902,7 @@ let HOMOTOPY_INVARIANT_PATH_CONNECTEDNESS = prove UNDISCH_TAC `FINITE {path_component t (x:real^N) | x | x IN t}` THEN REWRITE_TAC[ARITH_RULE `n <= 1 <=> n = 0 \/ n = 1`] THEN REWRITE_TAC[IMP_IMP; LEFT_OR_DISTRIB; GSYM HAS_SIZE] THEN - CONV_TAC(ONCE_DEPTH_CONV HAS_SIZE_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV HAS_SIZE_CONV)") (ONCE_DEPTH_CONV HAS_SIZE_CONV) THEN DISCH_THEN(MP_TAC o MATCH_MP (SET_RULE `s = {} \/ (?a. s = {a}) ==> !x. x IN s ==> !y. y IN s ==> x = y`)) THEN SIMP_TAC[FORALL_IN_GSPEC; PATH_COMPONENT_EQ_EQ] THEN @@ -20964,7 +20964,7 @@ let CONTRACTIBLE_IMP_SIMPLY_CONNECTED = prove EXISTS_TAC `(h o (\y. pastecart (fstcart y) (p(sndcart y):real^N))) :real^(1,1)finite_sum->real^N` THEN ASM_SIMP_TAC[FSTCART_PASTECART; SNDCART_PASTECART; linepath; o_THM] THEN - CONJ_TAC THENL [ALL_TAC; CONV_TAC VECTOR_ARITH] THEN + CONJ_TAC THENL [ALL_TAC; (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH] THEN MATCH_MP_TAC CONTINUOUS_ON_COMPOSE THEN CONJ_TAC THENL [MATCH_MP_TAC CONTINUOUS_ON_PASTECART THEN SIMP_TAC[LINEAR_CONTINUOUS_ON; LINEAR_FSTCART] THEN @@ -21392,7 +21392,7 @@ let HOMEOMORPHIC_PUNCTURED_AFFINE_SPHERE_AFFINE = prove DISCH_THEN(K ALL_TAC) THEN DISCH_THEN SUBST1_TAC THEN REPEAT GEN_TAC THEN REWRITE_TAC[VECTOR_MUL_LID] THEN ASM_CASES_TAC `r = &1` THEN ASM_REWRITE_TAC[] THEN POP_ASSUM(K ALL_TAC) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SIMP_TAC[BASIS_NONZERO; DIMINDEX_GE_1; LE_REFL] THEN STRIP_TAC THEN SUBGOAL_THEN `subspace(t:real^N->bool)` ASSUME_TAC THENL [ASM_MESON_TAC[AFFINE_EQ_SUBSPACE]; ALL_TAC] THEN @@ -21464,7 +21464,7 @@ let HOMEOMORPHIC_PUNCTURED_AFFINE_SPHERE_AFFINE = prove REWRITE_TAC[IN_ELIM_THM; IN_DELETE] THEN SIMP_TAC[VECTOR_ADD_COMPONENT; VECTOR_MUL_COMPONENT; BASIS_COMPONENT; LE_REFL; DIMINDEX_GE_1; VECTOR_SUB_COMPONENT] THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; MATCH_MP_TAC(MESON[CONTINUOUS_ON_SUBSET; INTER_SUBSET] `f continuous_on s ==> f continuous_on (s INTER t)`) THEN EXPAND_TAC "g" THEN MATCH_MP_TAC CONTINUOUS_ON_ADD THEN @@ -21497,7 +21497,7 @@ let HOMEOMORPHIC_PUNCTURED_AFFINE_SPHERE_AFFINE = prove REWRITE_TAC[REAL_MUL_RZERO; REAL_MUL_RID; GSYM REAL_POW_2] THEN SUBGOAL_THEN `~((y:real^N) dot y + &4 = &0)` MP_TAC THENL [MESON_TAC[DOT_POS_LE; REAL_ARITH `&0 <= x ==> ~(x + &4 = &0)`]; - CONV_TAC REAL_FIELD]; + (CONV_TAC "REAL_FIELD") REAL_FIELD]; SUBGOAL_THEN `!x. norm x = &1 /\ ~(x$1 = &1) ==> norm((f:real^N->real^N) x) pow 2 = &4 * (&1 + x$1) / (&1 - x$1)` @@ -21511,7 +21511,7 @@ let HOMEOMORPHIC_PUNCTURED_AFFINE_SPHERE_AFFINE = prove DIMINDEX_GE_1; LE_REFL; VECTOR_MUL_COMPONENT] THEN ASM_REWRITE_TAC[GSYM NORM_POW_2; GSYM REAL_POW_2; REAL_MUL_RID; REAL_POW_ONE] THEN - UNDISCH_TAC `~((x:real^N)$1 = &1)` THEN CONV_TAC REAL_FIELD; + UNDISCH_TAC `~((x:real^N)$1 = &1)` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN EXPAND_TAC "g" THEN REWRITE_TAC[IN_INTER; IN_ELIM_THM] THEN ASM_SIMP_TAC[] THEN X_GEN_TAC `x:real^N` THEN STRIP_TAC THEN @@ -21525,7 +21525,7 @@ let HOMEOMORPHIC_PUNCTURED_AFFINE_SPHERE_AFFINE = prove REWRITE_TAC[VECTOR_MUL_ASSOC; VECTOR_ARITH `b + a % (x - b):real^N = x <=> (&1 - a) % (x - b) = vec 0`] THEN REWRITE_TAC[VECTOR_MUL_EQ_0] THEN DISJ1_TAC THEN - UNDISCH_TAC `~((x:real^N)$1 = &1)` THEN CONV_TAC REAL_FIELD; + UNDISCH_TAC `~((x:real^N)$1 = &1)` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; X_GEN_TAC `y:real^N` THEN REWRITE_TAC[IN_INTER; IN_ELIM_THM] THEN DISCH_TAC THEN SUBGOAL_THEN `~((y:real^N) dot y + &4 = &0)` ASSUME_TAC THENL @@ -21537,14 +21537,14 @@ let HOMEOMORPHIC_PUNCTURED_AFFINE_SPHERE_AFFINE = prove REWRITE_TAC[VECTOR_MUL_COMPONENT; VECTOR_SUB_COMPONENT] THEN ASM_SIMP_TAC[BASIS_COMPONENT; LE_REFL; NORM_POW_2; DIMINDEX_GE_1] THEN UNDISCH_TAC `~((y:real^N) dot y + &4 = &0)` THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN EXPAND_TAC "f" THEN REWRITE_TAC[] THEN ASM_REWRITE_TAC[] THEN EXPAND_TAC "g" THEN SIMP_TAC[VECTOR_ARITH `(a + x) - a:real^N = x`] THEN REWRITE_TAC[VECTOR_MUL_ASSOC; VECTOR_ARITH `b + a % (x - b):real^N = x <=> (&1 - a) % (x - b) = vec 0`] THEN REWRITE_TAC[VECTOR_MUL_EQ_0; NORM_POW_2] THEN DISJ1_TAC THEN - UNDISCH_TAC `~((y:real^N) dot y + &4 = &0)` THEN CONV_TAC REAL_FIELD]);; + UNDISCH_TAC `~((y:real^N) dot y + &4 = &0)` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]);; let HOMEOMORPHIC_PUNCTURED_SPHERE_AFFINE_GEN = prove (`!s:real^N->bool t:real^M->bool a. @@ -21651,7 +21651,7 @@ let CONNECTED_PUNCTURED_SPHERE = prove SUBGOAL_THEN `&0 < r` ASSUME_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN ASM_CASES_TAC `dimindex(:N) = 1` THEN ASM_REWRITE_TAC[] THENL [MP_TAC(ISPECL [`a:real^N`; `r:real`] HAS_SIZE_SPHERE_2) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC(LAND_CONV HAS_SIZE_CONV) THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "(LAND_CONV HAS_SIZE_CONV)") (LAND_CONV HAS_SIZE_CONV) THEN REWRITE_TAC[LEFT_IMP_EXISTS_THM] THEN MAP_EVERY X_GEN_TAC [`u:real^N`; `v:real^N`] THEN STRIP_TAC THEN ASM_REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY] THEN @@ -21741,7 +21741,7 @@ let CONNECTED_IN_SPHERE_DELETE_INTERIOR_POINT_EQ = prove [FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (ONCE_REWRITE_RULE[IMP_CONJ] OPEN_IN_SUBSET_TRANS)) THEN ASM SET_TAC[]; - MATCH_MP_TAC EQ_IMP THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC EQ_IMP THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC HOMEOMORPHISM_OPENNESS THEN EXISTS_TAC `g:real^(N,1)finite_diff->real^N` THEN ASM_REWRITE_TAC[] THEN ASM SET_TAC[]]);; @@ -22242,7 +22242,7 @@ let (HOMEOMORPHIC_DIMENSION,DIMENSION_LE_EQ, LOCALLY_DIMENSION_LE, s homeomorphic t /\ (subtopology euclidean s) dimension_le (&n - &1) ==> (subtopology euclidean t) dimension_le (&n - &1)`, INDUCT_TAC THENL - [CONV_TAC INT_REDUCE_CONV THEN + [(CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN REWRITE_TAC[DIMENSION_LE_EQ_EMPTY; TOPSPACE_EUCLIDEAN_SUBTOPOLOGY] THEN MESON_TAC[HOMEOMORPHIC_EMPTY]; REWRITE_TAC[GSYM INT_OF_NUM_SUC; INT_ARITH `(x + y) - y:int = x`]] THEN @@ -22431,7 +22431,7 @@ let (HOMEOMORPHIC_DIMENSION,DIMENSION_LE_EQ, LOCALLY_DIMENSION_LE, ONCE_REWRITE_TAC[SWAP_FORALL_THM] THEN SIMP_TAC[INT_ARITH `x + &1:int = &n <=> x = &n - &1`] THEN REWRITE_TAC[LEFT_FORALL_IMP_THM; EXISTS_REFL] THEN - INDUCT_TAC THEN CONV_TAC INT_REDUCE_CONV THEN + INDUCT_TAC THEN (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN SIMP_TAC[AFF_DIM_EQ_MINUS1; DIMENSION_LE_EQ_EMPTY] THEN REWRITE_TAC[TOPSPACE_EUCLIDEAN_SUBTOPOLOGY; GSYM INT_OF_NUM_SUC] THEN REWRITE_TAC[INT_ARITH `(x + &1) - &1:int = x`] THEN @@ -22750,7 +22750,7 @@ let DIMENSION_EQ_LOCALLY_CLOPEN = prove locally (\u. closed_in (subtopology euclidean s) u /\ open_in (subtopology euclidean s) u) s`, GEN_TAC THEN GEN_REWRITE_TAC LAND_CONV [DIMENSION_LE_EQ_LOCALLY] THEN - CONV_TAC INT_REDUCE_CONV THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN SIMP_TAC[DIMENSION_LE_MINUS1] THEN AP_THM_TAC THEN AP_TERM_TAC THEN GEN_REWRITE_TAC I [FUN_EQ_THM] THEN X_GEN_TAC `u:real^N->bool` THEN @@ -22831,7 +22831,7 @@ let SMALL_INDUCTIVE_DIMENSION = prove let SMALL_IMP_DIMENSION_LE_0 = prove (`!s:real^N->bool. s <_c (:real) ==> dimension s <= &0`, REPEAT STRIP_TAC THEN ONCE_REWRITE_TAC[DIMENSION_LE_EQ] THEN - CONV_TAC INT_REDUCE_CONV THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN SIMP_TAC[DIMENSION_GE; INT_ARITH `a:int <= d ==> (d <= a <=> d = a)`] THEN REWRITE_TAC[DIMENSION_EQ_MINUS1] THEN MAP_EVERY X_GEN_TAC [`v:real^N->bool`; `a:real^N`] THEN STRIP_TAC THEN @@ -22884,11 +22884,11 @@ let CONNECTED_DIMENSION_EQ_SING = prove `~(s = {}) /\ (!a b. ~(a = b) /\ a IN s /\ b IN s ==> F) ==> ?a. s = {a}`) THEN ASM_REWRITE_TAC[GSYM DIMENSION_EQ_MINUS1] THEN - CONV_TAC INT_REDUCE_CONV THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN MAP_EVERY X_GEN_TAC [`a:real^N`; `b:real^N`] THEN STRIP_TAC THEN FIRST_ASSUM(MP_TAC o MATCH_MP (INT_ARITH `i:int = &0 ==> i <= &0`)) THEN REWRITE_TAC[] THEN ONCE_REWRITE_TAC[SMALL_INDUCTIVE_DIMENSION] THEN - CONV_TAC INT_REDUCE_CONV THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN SIMP_TAC[DIMENSION_GE; INT_ARITH `a:int <= d ==> (d <= a <=> d = a)`] THEN REWRITE_TAC[DIMENSION_EQ_MINUS1] THEN DISCH_THEN(MP_TAC o SPECL [`{b:real^N}`; `a:real^N`]) THEN @@ -23118,7 +23118,7 @@ let DIMENSION_LE_CLOSED_IN_UNIONS,DIMENSION_DECOMPOSITION = MATCH_MP_TAC COUNTABLE_UNION_OF_INC THEN ASM_SIMP_TAC[CLOSED_IN_FRONTIER_OF]; GEN_REWRITE_TAC I [DIMENSION_LE_EQ_LOCAL] THEN - CONV_TAC INT_REDUCE_CONV THEN REWRITE_TAC[DIMENSION_LE_MINUS1] THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN REWRITE_TAC[DIMENSION_LE_MINUS1] THEN MAP_EVERY X_GEN_TAC [`v:real^N->bool`; `a:real^N`] THEN STRIP_TAC THEN FIRST_ASSUM(MP_TAC o GEN_REWRITE_RULE I [OPEN_IN_OPEN]) THEN DISCH_THEN(X_CHOOSE_THEN `w:real^N->bool` @@ -23172,7 +23172,7 @@ let DIMENSION_LE_CLOSED_IN_UNIONS,DIMENSION_DECOMPOSITION = MAP_EVERY X_GEN_TAC [`uu:real^N->bool`; `cc:(real^N->bool)->bool`] THEN ASM_CASES_TAC `cc:(real^N->bool)->bool = {}` THEN ASM_REWRITE_TAC[UNIONS_0; DIMENSION_EMPTY] THEN - CONV_TAC INT_REDUCE_CONV THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN MP_TAC(ISPEC `cc:(real^N->bool)->bool` COUNTABLE_AS_IMAGE) THEN ASM_REWRITE_TAC[] THEN POP_ASSUM_LIST(K ALL_TAC) THEN @@ -23191,7 +23191,7 @@ let DIMENSION_LE_CLOSED_IN_UNIONS,DIMENSION_DECOMPOSITION = `!n. closed_in (subtopology euclidean uu) ((c:num->real^N->bool) n)` (K ALL_TAC)] THEN GEN_REWRITE_TAC I [SMALL_INDUCTIVE_DIMENSION] THEN - CONV_TAC INT_REDUCE_CONV THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN MAP_EVERY X_GEN_TAC [`l:real^N->bool`; `aa:real^N`] THEN REWRITE_TAC[SET_RULE `~(a IN l) <=> DISJOINT {a} l`] THEN GEN_REWRITE_TAC (LAND_CONV o ONCE_DEPTH_CONV) [GSYM CLOSED_IN_SING] THEN @@ -23555,7 +23555,7 @@ let DIMENSION_LE_UNIONS_ZERODIMENSIONAL = prove REWRITE_TAC[IMP_CONJ] THEN MATCH_MP_TAC FINITE_INDUCT_STRONG THEN REWRITE_TAC[UNIONS_0; CARD_CLAUSES; DIMENSION_EMPTY] THEN - CONV_TAC INT_REDUCE_CONV THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN SIMP_TAC[FORALL_IN_INSERT; UNIONS_INSERT; CARD_CLAUSES] THEN MAP_EVERY X_GEN_TAC [`s:real^N->bool`; `f:(real^N->bool)->bool`] THEN DISCH_THEN(fun th -> STRIP_TAC THEN MP_TAC th) THEN @@ -23587,9 +23587,9 @@ let DIMENSION_LE_UNIONS_ZERODIMENSIONAL_EQ = prove X_GEN_TAC `m:int` THEN SPEC_TAC(`m + &1:int`,`n:int`) THEN REWRITE_TAC[INT_ADD_LINV; GSYM INT_FORALL_POS] THEN REWRITE_TAC[INT_LE_RADD; INT_ARITH `d + &1:int <= &1 <=> d <= &0`] THEN - CONV_TAC INT_REDUCE_CONV THEN REWRITE_TAC[GSYM INT_LE_SUB_LADD] THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN REWRITE_TAC[GSYM INT_LE_SUB_LADD] THEN MATCH_MP_TAC num_INDUCTION THEN CONJ_TAC THENL - [CONV_TAC INT_REDUCE_CONV THEN + [(CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN REWRITE_TAC[DIMENSION_LE_MINUS1; FORALL_UNWIND_THM2] THEN EXISTS_TAC `{}:(real^N->bool)->bool` THEN REWRITE_TAC[FINITE_RULES; UNIONS_0; NOT_IN_EMPTY; CARD_CLAUSES] THEN @@ -23730,7 +23730,7 @@ let DIMENSION_PCROSS_EQ_0 = prove REPEAT GEN_TAC THEN MAP_EVERY ASM_CASES_TAC [`s:real^M->bool = {}`; `t:real^N->bool = {}`] THEN ASM_REWRITE_TAC[PCROSS_EMPTY; DIMENSION_EMPTY] THEN - CONV_TAC INT_REDUCE_CONV THEN EQ_TAC THEN REPEAT STRIP_TAC THENL + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN EQ_TAC THEN REPEAT STRIP_TAC THENL [MP_TAC(ASSUME `~(t:real^N->bool = {})`) THEN REWRITE_TAC[GSYM MEMBER_NOT_EMPTY; LEFT_IMP_EXISTS_THM] THEN X_GEN_TAC `b:real^N` THEN DISCH_TAC THEN @@ -23743,7 +23743,7 @@ let DIMENSION_PCROSS_EQ_0 = prove MATCH_MP_TAC DIMENSION_SUBSET THEN REWRITE_TAC[SUBSET_PCROSS] THEN ASM SET_TAC[]; MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC HOMEOMORPHIC_DIMENSION THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC HOMEOMORPHIC_DIMENSION THEN REWRITE_TAC[HOMEOMORPHIC_PCROSS_SING]]; MP_TAC(ASSUME `~(s:real^M->bool = {})`) THEN REWRITE_TAC[GSYM MEMBER_NOT_EMPTY; LEFT_IMP_EXISTS_THM] THEN @@ -23757,7 +23757,7 @@ let DIMENSION_PCROSS_EQ_0 = prove MATCH_MP_TAC DIMENSION_SUBSET THEN REWRITE_TAC[SUBSET_PCROSS] THEN ASM SET_TAC[]; MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC HOMEOMORPHIC_DIMENSION THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC HOMEOMORPHIC_DIMENSION THEN REWRITE_TAC[HOMEOMORPHIC_PCROSS_SING]]; MP_TAC(ISPECL [`s:real^M->bool`; `t:real^N->bool`] DIMENSION_PCROSS_LE) THEN @@ -23867,7 +23867,7 @@ let DIMENSION_SEPARATION_THEOREM = prove REWRITE_TAC[UNION_SUBSET] THEN STRIP_TAC THEN EXISTS_TAC `t INTER frontier w:real^N->bool` THEN SIMP_TAC[CLOSED_IN_CLOSED_INTER; FRONTIER_CLOSED] THEN - CONV_TAC INT_REDUCE_CONV THEN ASM_REWRITE_TAC[DIMENSION_LE_MINUS1] THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN ASM_REWRITE_TAC[DIMENSION_LE_MINUS1] THEN ASM_SIMP_TAC[frontier; INTERIOR_OPEN] THEN CONJ_TAC THENL [MP_TAC(ISPECL [`z:real^N->bool`; `w:real^N->bool`] OPEN_INTER_CLOSURE_EQ_EMPTY) THEN @@ -23893,7 +23893,7 @@ let DIMENSION_SEPARATION_THEOREM = prove STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o SPECL [`z:real^N->bool`; `c:real^N->bool`; `d:real^N->bool`]) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC INT_REDUCE_CONV THEN + ASM_REWRITE_TAC[] THEN (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN ANTS_TAC THENL [ASM SET_TAC[]; REWRITE_TAC[DIMENSION_LE_MINUS1]] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `b:real^N->bool` THEN DISCH_THEN(REPEAT_TCL CONJUNCTS_THEN ASSUME_TAC) THEN @@ -24577,7 +24577,7 @@ let COVERING_SPACE_LIFT_HOMOTOPY = prove ASM_SIMP_TAC[REWRITE_RULE[GSYM PCROSS] OPEN_PCROSS; OPEN_UNIV] THEN REWRITE_TAC[EXTENSION; FORALL_PASTECART; PASTECART_IN_PCROSS; IN_INTER; IN_UNIV] THEN - REPEAT GEN_TAC THEN CONV_TAC TAUT; + REPEAT GEN_TAC THEN (CONV_TAC "TAUT") TAUT; REWRITE_TAC[FORALL_PASTECART; IN_INTER; PASTECART_IN_PCROSS] THEN MAP_EVERY X_GEN_TAC [`x:real^P`; `z:real^P`; `t:real^1`; `y:real^P`] THEN @@ -24881,12 +24881,12 @@ let COVERING_SPACE_LIFT_HOMOTOPY = prove EXISTS_TAC `interval[vec 0,lift(&m / &N)] PCROSS (:real^P)` THEN SIMP_TAC[CLOSED_PCROSS; CLOSED_INTERVAL; CLOSED_UNIV] THEN REWRITE_TAC[EXTENSION; IN_INTER; IN_UNION; FORALL_PASTECART] THEN - REWRITE_TAC[PASTECART_IN_PCROSS; IN_UNIV] THEN CONV_TAC TAUT; + REWRITE_TAC[PASTECART_IN_PCROSS; IN_UNIV] THEN (CONV_TAC "TAUT") TAUT; REWRITE_TAC[CLOSED_IN_CLOSED] THEN EXISTS_TAC `interval[lift(&m / &N),lift(&(SUC m) / &N)] PCROSS (:real^P)` THEN SIMP_TAC[CLOSED_PCROSS; CLOSED_INTERVAL; CLOSED_UNIV] THEN REWRITE_TAC[EXTENSION; IN_INTER; IN_UNION; FORALL_PASTECART] THEN - REWRITE_TAC[PASTECART_IN_PCROSS; IN_UNIV] THEN CONV_TAC TAUT; + REWRITE_TAC[PASTECART_IN_PCROSS; IN_UNIV] THEN (CONV_TAC "TAUT") TAUT; FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ] CONTINUOUS_ON_SUBSET)) THEN REWRITE_TAC[SUBSET; FORALL_PASTECART; PASTECART_IN_PCROSS] THEN @@ -24973,7 +24973,7 @@ let COVERING_SPACE_LIFT_HOMOTOPY = prove COND_CASES_TAC THEN ASM_REWRITE_TAC[] THENL [FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[PASTECART_IN_PCROSS] THEN ASM SET_TAC[]; - REWRITE_TAC[o_THM] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[o_THM] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC]] THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (SET_RULE `IMAGE h s SUBSET t ==> x IN s ==> h x IN t`)) THEN @@ -25451,7 +25451,7 @@ let COVERING_SPACE_LIFT_GENERAL = prove `(!x. x IN s ==> f x = g x) /\ s SUBSET t ==> IMAGE f s SUBSET IMAGE g t`) THEN REWRITE_TAC[SUBSET_INTERVAL_1; LIFT_DROP; DROP_VEC; IN_INTERVAL_1] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN SIMP_TAC[joinpaths; o_THM]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SIMP_TAC[joinpaths; o_THM]; MATCH_MP_TAC CONTINUOUS_ON_SUBSET THEN EXISTS_TAC `interval[vec 0:real^1,vec 1]` THEN ASM_REWRITE_TAC[GSYM path] THEN @@ -25486,7 +25486,7 @@ let COVERING_SPACE_LIFT_GENERAL = prove REAL_ARITH_TAC; X_GEN_TAC `t':real^1` THEN REWRITE_TAC[IN_INTERVAL_1; DROP_VEC; LIFT_DROP] THEN STRIP_TAC THEN - CONV_TAC SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[IN_INTERVAL_1; DROP_VEC; DROP_CMUL] THEN ASM_REAL_ARITH_TAC; REWRITE_TAC[CONNECTED_INTERVAL]; @@ -25560,7 +25560,7 @@ let COVERING_SPACE_LIFT_GENERAL = prove REWRITE_TAC[IN_INTERVAL_1; DROP_VEC; DROP_CMUL; DROP_SUB] THEN REAL_ARITH_TAC; X_GEN_TAC `t':real^1` THEN REWRITE_TAC[IN_ELIM_THM] THEN STRIP_TAC THEN - REWRITE_TAC[reversepath] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[reversepath] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[IN_INTERVAL_1; DROP_SUB; DROP_VEC; DROP_CMUL] THEN ASM_REAL_ARITH_TAC; @@ -26316,7 +26316,7 @@ let PROPER_LOCAL_HOMEOMORPHISM_IMP_COVERING_MAP = prove MATCH_MP_TAC(SET_RULE `(!y. y IN s /\ y IN t ==> ~P) ==> P ==> Q ==> DISJOINT (s INTER s') (t INTER t')`) THEN - REWRITE_TAC[IN_BALL] THEN CONV_TAC NORM_ARITH; + REWRITE_TAC[IN_BALL] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; ALL_TAC] THEN X_GEN_TAC `x:real^M` THEN STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o SPEC `x:real^M`) THEN ASM_REWRITE_TAC[] THEN @@ -26897,7 +26897,7 @@ let UNIVERSAL_COVERING_SPACE = prove [MATCH_MP_TAC CONNECTED_CONTINUOUS_IMAGE THEN CONJ_TAC THENL [ASM_MESON_TAC[CONTINUOUS_ON_SUBSET; OPEN_IN_IMP_SUBSET]; ALL_TAC] THEN UNDISCH_TAC `connected(t:real^P->bool)` THEN MATCH_MP_TAC EQ_IMP THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC HOMEOMORPHIC_CONNECTEDNESS THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC HOMEOMORPHIC_CONNECTEDNESS THEN REWRITE_TAC[homeomorphic] THEN ASM_MESON_TAC[]; REWRITE_TAC[CONNECTED_OPEN_IN; NOT_EXISTS_THM; TAUT `~(p /\ q /\ r /\ s /\ t) <=> p /\ q /\ r /\ s ==> ~t`] THEN @@ -26981,7 +26981,7 @@ let CARD_EQ_FUNDAMENTAL_GROUP_COVERING_SPACE_ALT = prove ((@) (homotopic_paths c g))` MP_TAC THENL [GEN_REWRITE_TAC (RAND_CONV o RAND_CONV) [GSYM ETA_AX] THEN - CONV_TAC SELECT_CONV THEN ASM_MESON_TAC[HOMOTOPIC_PATHS_REFL]; + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_MESON_TAC[HOMOTOPIC_PATHS_REFL]; ABBREV_TAC `h:real^1->real^M = (@) (homotopic_paths c g)` THEN ONCE_REWRITE_TAC[HOMOTOPIC_PATHS_SYM] THEN DISCH_TAC] THEN MATCH_MP_TAC(SET_RULE @@ -26999,7 +26999,7 @@ let CARD_EQ_FUNDAMENTAL_GROUP_COVERING_SPACE_ALT = prove ((@) (homotopic_paths c g))` MP_TAC THENL [GEN_REWRITE_TAC (RAND_CONV o RAND_CONV) [GSYM ETA_AX] THEN - CONV_TAC SELECT_CONV THEN ASM_MESON_TAC[HOMOTOPIC_PATHS_REFL]; + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_MESON_TAC[HOMOTOPIC_PATHS_REFL]; ABBREV_TAC `g':real^1->real^M = (@) (homotopic_paths c g)` THEN ONCE_REWRITE_TAC[HOMOTOPIC_PATHS_SYM] THEN DISCH_TAC] THEN ONCE_REWRITE_TAC[FUN_EQ_THM] THEN @@ -27023,14 +27023,14 @@ let CARD_EQ_FUNDAMENTAL_GROUP_COVERING_SPACE_ALT = prove ((@) (homotopic_paths c g))` MP_TAC THENL [GEN_REWRITE_TAC (RAND_CONV o RAND_CONV) [GSYM ETA_AX] THEN - CONV_TAC SELECT_CONV THEN ASM_MESON_TAC[HOMOTOPIC_PATHS_REFL]; + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_MESON_TAC[HOMOTOPIC_PATHS_REFL]; ABBREV_TAC `k:real^1->real^M = (@) (homotopic_paths c g)` THEN ONCE_REWRITE_TAC[HOMOTOPIC_PATHS_SYM] THEN DISCH_TAC] THEN SUBGOAL_THEN `homotopic_paths (c:real^M->bool) g' ((@) (homotopic_paths c g'))` MP_TAC THENL [GEN_REWRITE_TAC (RAND_CONV o RAND_CONV) [GSYM ETA_AX] THEN - CONV_TAC SELECT_CONV THEN ASM_MESON_TAC[HOMOTOPIC_PATHS_REFL]; + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_MESON_TAC[HOMOTOPIC_PATHS_REFL]; ABBREV_TAC `k':real^1->real^M = (@) (homotopic_paths c g')` THEN ONCE_REWRITE_TAC[HOMOTOPIC_PATHS_SYM] THEN DISCH_TAC] THEN DISCH_THEN(MP_TAC o C AP_THM @@ -27059,7 +27059,7 @@ let CARD_EQ_FUNDAMENTAL_GROUP_COVERING_SPACE = prove REPEAT GEN_TAC THEN STRIP_TAC THEN MATCH_MP_TAC(TAUT `p /\ (p ==> q) ==> p /\ q`) THEN CONJ_TAC THENL [GEN_REWRITE_TAC (RAND_CONV o RAND_CONV) [GSYM ETA_AX] THEN - CONV_TAC SELECT_CONV THEN ASM_MESON_TAC[HOMOTOPIC_PATHS_REFL]; + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_MESON_TAC[HOMOTOPIC_PATHS_REFL]; ASM MESON_TAC[HOMOTOPIC_PATHS_IMP_PATH; HOMOTOPIC_PATHS_IMP_SUBSET; HOMOTOPIC_PATHS_IMP_PATHSTART; HOMOTOPIC_PATHS_IMP_PATHFINISH]]) in @@ -27209,4 +27209,4 @@ let COVERING_SPACE_SELF_FINITE_FUNDAMENTAL_GROUP = prove ASM_SIMP_TAC[CARD_EQ_0; FUNDAMENTAL_GROUP_EQ_EMPTY] THEN ASM_SIMP_TAC[MESON[HAS_SIZE] `FINITE s ==> (CARD s = n <=> s HAS_SIZE n)`] THEN - CONV_TAC(LAND_CONV HAS_SIZE_CONV) THEN ASM SET_TAC[]);; + (CONV_TAC "(LAND_CONV HAS_SIZE_CONV)") (LAND_CONV HAS_SIZE_CONV) THEN ASM SET_TAC[]);; diff --git a/Multivariate/polytope.ml b/Multivariate/polytope.ml index 5c1f3355..15107f3d 100644 --- a/Multivariate/polytope.ml +++ b/Multivariate/polytope.ml @@ -166,7 +166,7 @@ let FACE_OF_STILLCONVEX = prove REWRITE_TAC[EXISTS_IN_GSPEC] THEN EXISTS_TAC `min (&1 / &2) (e / norm(x - y:real^N))` THEN REWRITE_TAC[REAL_LT_MIN; REAL_MIN_LT] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_LT_DIV; NORM_POS_LT; VECTOR_SUB_EQ] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[IN_INTER; IN_CBALL; dist] THEN CONJ_TAC THENL @@ -208,7 +208,7 @@ let FACE_OF_STILLCONVEX = prove DISCH_THEN SUBST1_TAC THEN DISCH_TAC THEN MATCH_MP_TAC(REWRITE_RULE[affine] AFFINE_AFFINE_HULL) THEN ASM_SIMP_TAC[HULL_INC] THEN - UNDISCH_TAC `u < &1` THEN CONV_TAC REAL_FIELD; + UNDISCH_TAC `u < &1` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; MP_TAC(ISPEC `s DIFF t:real^N->bool` CONVEX_CONTAINS_SEGMENT) THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(MP_TAC o SPECL [`a:real^N`; `b:real^N`]) THEN @@ -436,7 +436,7 @@ let FACE_OF_AFF_DIM_LT = prove SIMP_TAC[INT_LT_LE; FACE_OF_IMP_SUBSET; AFF_DIM_SUBSET] THEN REWRITE_TAC[IMP_CONJ; CONTRAPOS_THM] THEN ASM_CASES_TAC `f:real^N->bool = {}` THENL - [CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + [(CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN ASM_REWRITE_TAC[AFF_DIM_EQ_MINUS1; AFF_DIM_EMPTY]; REPEAT STRIP_TAC THEN MATCH_MP_TAC FACE_OF_EQ THEN EXISTS_TAC `s:real^N->bool` THEN ASM_SIMP_TAC[FACE_OF_REFL] THEN @@ -462,7 +462,7 @@ let FACE_OF_CONVEX_HULLS = prove REWRITE_TAC[VECTOR_MUL_EQ_0; VECTOR_ARITH `k % (x - y):real^N = a % b % y + k % x <=> (a * b + k) % y = vec 0`] THEN DISJ1_TAC THEN MAP_EVERY UNDISCH_TAC [`~(k = &0)`; `~(k = &1)`] THEN - CONV_TAC REAL_FIELD) in + (CONV_TAC "REAL_FIELD") REAL_FIELD) in REPEAT STRIP_TAC THEN REWRITE_TAC[face_of] THEN SUBGOAL_THEN `FINITE(f:real^N->bool)` ASSUME_TAC THENL [ASM_MESON_TAC[FINITE_SUBSET]; ALL_TAC] THEN @@ -496,7 +496,7 @@ let FACE_OF_CONVEX_HULLS = prove STRIP_TAC THEN CONJ_TAC THENL [EXISTS_TAC `a:real^N->real`; EXISTS_TAC `b:real^N->real`] THEN ASM_SIMP_TAC[] THEN CONJ_TAC THEN FIRST_X_ASSUM(fun th g -> - (GEN_REWRITE_TAC RAND_CONV [GSYM th] THEN CONV_TAC SYM_CONV THEN + (GEN_REWRITE_TAC RAND_CONV [GSYM th] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN (MATCH_MP_TAC SUM_SUPERSET ORELSE MATCH_MP_TAC VSUM_SUPERSET)) g) THEN ASM_SIMP_TAC[VECTOR_MUL_LZERO]; ALL_TAC] THEN @@ -598,7 +598,7 @@ let FACE_OF_AFFINE_TRIVIAL = prove CONJ_TAC THENL [REWRITE_TAC[VECTOR_ARITH `&2 % a - b:real^N = a + &1 % (a - b)`] THEN MATCH_MP_TAC IN_AFFINE_ADD_MUL_DIFF THEN ASM SET_TAC[]; - EXISTS_TAC `&1 / &2` THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + EXISTS_TAC `&1 / &2` THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN VECTOR_ARITH_TAC]);; let FACE_OF_AFFINE_EQ = prove @@ -824,7 +824,7 @@ let FACES_OF_TRANSLATION = prove (`!s a:real^N. {f | f face_of IMAGE (\x. a + x) s} = IMAGE (IMAGE (\x. a + x)) {f | f face_of s}`, - REPEAT GEN_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_ELIM_THM; FACE_OF_TRANSLATION_EQ] THEN REPEAT STRIP_TAC THEN ONCE_REWRITE_TAC[EQ_SYM_EQ] THEN @@ -877,7 +877,7 @@ let FACE_OF_CONIC = prove REWRITE_TAC[VECTOR_MUL_ASSOC; GSYM VECTOR_ADD_RDISTRIB] THEN REWRITE_TAC[VECTOR_ARITH `x:real^N = a % x <=> (a - &1) % x = vec 0`] THEN ASM_REWRITE_TAC[VECTOR_MUL_EQ_0] THEN - UNDISCH_TAC `d:real < e` THEN CONV_TAC REAL_FIELD]);; + UNDISCH_TAC `d:real < e` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]);; let FACE_OF_PCROSS = prove (`!f s:real^M->bool f' s':real^N->bool. @@ -1238,14 +1238,14 @@ let EMPTY_EXPOSED_FACE_OF = prove (`!s:real^N->bool. {} exposed_face_of s`, GEN_TAC THEN REWRITE_TAC[exposed_face_of; EMPTY_FACE_OF] THEN MAP_EVERY EXISTS_TAC [`vec 0:real^N`; `&1:real`] THEN - REWRITE_TAC[DOT_LZERO] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN SET_TAC[]);; + REWRITE_TAC[DOT_LZERO] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SET_TAC[]);; let EXPOSED_FACE_OF_REFL_EQ = prove (`!s:real^N->bool. s exposed_face_of s <=> convex s`, GEN_TAC THEN REWRITE_TAC[exposed_face_of; FACE_OF_REFL_EQ] THEN ASM_CASES_TAC `convex(s:real^N->bool)` THEN ASM_REWRITE_TAC[] THEN MAP_EVERY EXISTS_TAC [`vec 0:real^N`; `&0:real`] THEN - REWRITE_TAC[DOT_LZERO] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN SET_TAC[]);; + REWRITE_TAC[DOT_LZERO] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SET_TAC[]);; let EXPOSED_FACE_OF_REFL = prove (`!s:real^N->bool. convex s ==> s exposed_face_of s`, @@ -1574,7 +1574,7 @@ let EXTREME_POINT_NOT_IN_RELATIVE_INTERIOR = prove (`!s x:real^N. x extreme_point_of s /\ ~(s = {x}) ==> ~(x IN relative_interior s)`, - REPEAT GEN_TAC THEN CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + REPEAT GEN_TAC THEN (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN REWRITE_TAC[GSYM FACE_OF_SING] THEN DISCH_THEN(MP_TAC o MATCH_MP FACE_OF_DISJOINT_RELATIVE_INTERIOR) THEN SET_TAC[]);; @@ -1680,7 +1680,7 @@ add_linear_invariants [EXTREME_POINT_OF_LINEAR_IMAGE];; let EXTREME_POINTS_OF_TRANSLATION = prove (`!a s. {x:real^N | x extreme_point_of (IMAGE (\x. a + x) s)} = IMAGE (\x. a + x) {x | x extreme_point_of s}`, - REPEAT GEN_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[VECTOR_ARITH `a + x:real^N = y <=> x = y - a`; EXISTS_REFL] THEN REWRITE_TAC[IN_ELIM_THM; EXTREME_POINT_OF_TRANSLATION_EQ]);; @@ -1763,7 +1763,7 @@ let EXPOSED_POINT_OF_FURTHEST_POINT = prove ASM_REWRITE_TAC[IN_INTER; SING_SUBSET; IN_ELIM_THM] THEN REWRITE_TAC[SUBSET; IN_SING; IN_INTER; IN_ELIM_THM] THEN X_GEN_TAC `x:real^N` THEN STRIP_TAC THEN - CONV_TAC SYM_CONV THEN ASM_REWRITE_TAC[VECTOR_EQ] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN ASM_REWRITE_TAC[VECTOR_EQ] THEN ASM_SIMP_TAC[GSYM REAL_LE_ANTISYM] THEN UNDISCH_TAC `(b:real^N) dot x = b dot b`] THEN MP_TAC(ISPEC `b - x:real^N` DOT_POS_LE) THEN @@ -1776,7 +1776,7 @@ let COLLINEAR_EXTREME_POINTS = prove REWRITE_TAC[GSYM NOT_LT; TAUT `a /\ ~b <=> ~(a ==> b)`] THEN REWRITE_TAC[ARITH_RULE `2 < n <=> 3 <= n`] THEN REPEAT STRIP_TAC THEN FIRST_ASSUM(MP_TAC o MATCH_MP CHOOSE_SUBSET_STRONG) THEN - CONV_TAC(ONCE_DEPTH_CONV HAS_SIZE_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV HAS_SIZE_CONV)") (ONCE_DEPTH_CONV HAS_SIZE_CONV) THEN REWRITE_TAC[RIGHT_AND_EXISTS_THM] THEN REWRITE_TAC[NOT_EXISTS_THM] THEN MAP_EVERY X_GEN_TAC [`t:real^N->bool`; `a:real^N`; `b:real^N`; `c:real^N`] THEN @@ -2073,7 +2073,7 @@ let CLOSURE_CONIC_HULL = prove REPEAT STRIP_TAC THENL [ASM_SIMP_TAC[CONIC_HULL_EQ_AFFINE_HULL; CLOSED_AFFINE_HULL; CLOSURE_CLOSED] THEN - CONV_TAC SYM_CONV THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN GEN_REWRITE_TAC RAND_CONV [GSYM AFFINE_HULL_CLOSURE] THEN MATCH_MP_TAC CONIC_HULL_EQ_AFFINE_HULL THEN MP_TAC(ISPEC `s:real^N->bool` RELATIVE_INTERIOR_CLOSURE_SUBSET) THEN @@ -2228,7 +2228,7 @@ let OPEN_IN_CONIC_HULL = prove MAP_EVERY EXISTS_TAC [`t:real^N->bool`; `q:real^N->real`] THEN ASM_REWRITE_TAC[] THEN UNDISCH_TAC `sum (t:real^N->bool) q = &1` THEN ONCE_REWRITE_TAC[GSYM CONTRAPOS_THM] THEN - SIMP_TAC[SUM_CLAUSES] THEN CONV_TAC REAL_RAT_REDUCE_CONV]);; + SIMP_TAC[SUM_CLAUSES] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]);; let CONIC_INTERIOR_INSERT = prove (`!s:real^N->bool. conic s ==> conic(vec 0 INSERT interior s)`, @@ -2661,7 +2661,7 @@ let facet_of = new_definition let FACET_OF_EMPTY = prove (`!s. ~(s facet_of {})`, - REWRITE_TAC[facet_of; FACE_OF_EMPTY] THEN CONV_TAC TAUT);; + REWRITE_TAC[facet_of; FACE_OF_EMPTY] THEN (CONV_TAC "TAUT") TAUT);; let FACET_OF_REFL = prove (`!s. ~(s facet_of s)`, @@ -3059,7 +3059,7 @@ let KREIN_MILMAN_MINKOWSKI = prove (fun th -> ASM_MESON_TAC[th; REAL_LT_REFL]) THEN MATCH_MP_TAC SPAN_INDUCT THEN SIMP_TAC[IN_INTER; IN_ELIM_THM] THEN REWRITE_TAC[subspace; DOT_RZERO; DOT_RADD; DOT_RMUL; IN_ELIM_THM] THEN - CONV_TAC REAL_RING; + (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN REPEAT STRIP_TAC THEN MATCH_MP_TAC SUBSET_ANTISYM THEN CONJ_TAC THENL [REWRITE_TAC[SUBSET] THEN X_GEN_TAC `a:real^N` THEN DISCH_TAC THEN @@ -3109,7 +3109,7 @@ let EXTREME_POINTS_OF_CONVEX_HULL_EQ = prove MATCH_MP_TAC(SET_RULE `P /\ t SUBSET s ==> (t PSUBSET s ==> ~P) ==> t = s`) THEN REWRITE_TAC[EXTREME_POINTS_OF_CONVEX_HULL] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC KREIN_MILMAN_MINKOWSKI THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC KREIN_MILMAN_MINKOWSKI THEN ASM_SIMP_TAC[CONVEX_CONVEX_HULL; COMPACT_CONVEX_HULL]);; let EXTREME_POINT_OF_CONVEX_HULL_EQ = prove @@ -3223,7 +3223,7 @@ let FACET_OF_CONVEX_HULL_AFFINE_INDEPENDENT = prove SUBGOAL_THEN `(s DIFF c:real^N->bool) HAS_SIZE 1` MP_TAC THENL [ASM_SIMP_TAC[HAS_SIZE; FINITE_DIFF; CARD_DIFF; AFFINE_INDEPENDENT_IMP_FINITE] THEN ARITH_TAC; - CONV_TAC(LAND_CONV HAS_SIZE_CONV) THEN + (CONV_TAC "(LAND_CONV HAS_SIZE_CONV)") (LAND_CONV HAS_SIZE_CONV) THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `u:real^N` THEN DISCH_THEN(MP_TAC o MATCH_MP (SET_RULE `s DIFF t = {a} ==> t SUBSET s ==> s = a INSERT t`)) THEN @@ -3346,7 +3346,7 @@ let FACE_OF_CONVEX_HULL_INSERT_EQ = prove REWRITE_TAC[AFFINE_HULL_3; IN_ELIM_THM] THEN MAP_EVERY EXISTS_TAC [`inv x * u:real`; `inv x * v:real`; `inv x * w:real`] THEN REWRITE_TAC[] THEN UNDISCH_TAC `u + v + w:real = x` THEN - UNDISCH_TAC `~(x = &0)` THEN CONV_TAC REAL_FIELD) in + UNDISCH_TAC `~(x = &0)` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD) in REPEAT STRIP_TAC THEN EQ_TAC THENL [DISCH_TAC THEN FIRST_ASSUM(MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ_ALT] FACE_OF_CONVEX_HULL_SUBSET)) THEN @@ -3436,7 +3436,7 @@ let FACE_OF_CONVEX_HULL_INSERT_EQ = prove ASM_REWRITE_TAC[] THEN CONJ_TAC THENL [ASM SET_TAC[]; ALL_TAC] THEN REWRITE_TAC[IN_ELIM_THM] THEN MAP_EVERY EXISTS_TAC [`&0`; `x:real^N`] THEN - ASM_REWRITE_TAC[] THEN CONV_TAC VECTOR_ARITH]; + ASM_REWRITE_TAC[] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH]; ALL_TAC] THEN ASM_CASES_TAC `ub = &0` THENL [UNDISCH_THEN `ub = &0` SUBST_ALL_TAC THEN @@ -3450,7 +3450,7 @@ let FACE_OF_CONVEX_HULL_INSERT_EQ = prove ASM_REWRITE_TAC[] THEN CONJ_TAC THENL [ALL_TAC; ASM SET_TAC[]] THEN REWRITE_TAC[IN_ELIM_THM] THEN MAP_EVERY EXISTS_TAC [`&0`; `x:real^N`] THEN - ASM_REWRITE_TAC[] THEN CONV_TAC VECTOR_ARITH]; + ASM_REWRITE_TAC[] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH]; ALL_TAC] THEN DISCH_THEN(fun th -> SUBGOAL_THEN @@ -3494,7 +3494,7 @@ let FACE_OF_CONVEX_HULL_INSERT_EQ = prove BINOP_TAC THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[REAL_ARITH `inv u * v * uc:real = (v * uc) / u`] THEN UNDISCH_TAC `(&1 - v) * ub + v * uc = ux` THEN - UNDISCH_TAC `~(ux = &0)` THEN CONV_TAC REAL_FIELD]; + UNDISCH_TAC `~(ux = &0)` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]; DISCH_THEN(MP_TAC o MATCH_MP (VECTOR_ARITH `a + (b - c):real^N = vec 0 ==> a = c + --b`)) THEN REWRITE_TAC[GSYM VECTOR_ADD_ASSOC; GSYM VECTOR_MUL_LNEG] THEN @@ -3502,7 +3502,7 @@ let FACE_OF_CONVEX_HULL_INSERT_EQ = prove MATCH_MP lemma) THEN ASM_REWRITE_TAC[AFFINE_AFFINE_HULL] THEN MATCH_MP_TAC(TAUT `p ==> ~p ==> q`) THEN - CONJ_TAC THENL [CONV_TAC REAL_RING; REPEAT CONJ_TAC] THEN + CONJ_TAC THENL [(CONV_TAC "REAL_RING") REAL_RING; REPEAT CONJ_TAC] THEN MATCH_MP_TAC(REWRITE_RULE[SUBSET] CONVEX_HULL_SUBSET_AFFINE_HULL) THEN ASM_REWRITE_TAC[] THEN ASM SET_TAC[]]);; @@ -3586,7 +3586,7 @@ let CONVEX_HULL_INSERT_REDUNDANT_POINT = prove `inv(u - w * u + w * v) * (u - w * u) = &1 - inv(u - w * u + w * v) * w * v` SUBST1_TAC THENL - [UNDISCH_TAC `&0 < u - w * u + w * v` THEN CONV_TAC REAL_FIELD; + [UNDISCH_TAC `&0 < u - w * u + w * v` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; MATCH_MP_TAC IN_CONVEX_SET] THEN ASM_REWRITE_TAC[CONVEX_CONVEX_HULL] THEN REWRITE_TAC[ONCE_REWRITE_RULE[REAL_MUL_SYM] (GSYM real_div)] THEN @@ -3935,7 +3935,7 @@ let HAUSDIST_STILL_SAME_PLACE_CONIC_HULL_STRONG = prove CONJ_TAC THENL [ASM_REAL_ARITH_TAC; X_GEN_TAC `y:real^N`] THEN MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] REAL_LET_TRANS) THEN GEN_REWRITE_TAC RAND_CONV [REAL_MUL_SYM] THEN - ASM_SIMP_TAC[REAL_LE_LMUL_EQ] THEN CONV_TAC NORM_ARITH; + ASM_SIMP_TAC[REAL_LE_LMUL_EQ] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; MATCH_MP_TAC(MESON[] `(!e. &0 < e <=> &0 < a * e) /\ (!e. &0 < e <=> &0 < e / a) /\ (!e. a * e / a = e) /\ (!d e. a * d <= a * e <=> d <= e) /\ @@ -3955,7 +3955,7 @@ let HAUSDIST_STILL_SAME_PLACE_CONIC_HULL_STRONG = prove X_GEN_TAC `y:real^N` THEN REWRITE_TAC[BALL_MIN_INTER; IN_INTER] THEN STRIP_TAC THEN MATCH_MP_TAC lemma THEN ASM_SIMP_TAC[] THEN UNDISCH_TAC `y IN ball(x:real^N,norm x)` THEN - REWRITE_TAC[IN_BALL] THEN CONV_TAC NORM_ARITH]) in + REWRITE_TAC[IN_BALL] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]) in let flemma = prove (`!a x:real^N s. convex s /\ bounded s /\ ~(vec 0 IN closure s) /\ @@ -4067,7 +4067,7 @@ let CONVEX_SYMDIFF_CLOSE_TO_FRONTIER = prove REWRITE_TAC[IN_SING; RIGHT_EXISTS_AND_THM; UNWIND_THM2; GSYM CONJ_ASSOC] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `u:real^N` THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THEN EXISTS_TAC `x - u:real^N` THEN - ASM_REWRITE_TAC[IN_BALL_0; GSYM dist] THEN CONV_TAC VECTOR_ARITH);; + ASM_REWRITE_TAC[IN_BALL_0; GSYM dist] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH);; (* ------------------------------------------------------------------------- *) (* Polytopes. *) @@ -4249,7 +4249,7 @@ let POLYTOPE_AFF_DIM_1 = prove ASM_SIMP_TAC[POLYTOPE_IMP_COMPACT; POLYTOPE_IMP_CONVEX] THEN UNDISCH_TAC `aff_dim(p:real^N->bool) = &1` THEN ASM_CASES_TAC `p:real^N->bool = {}` THEN - ASM_REWRITE_TAC[AFF_DIM_EMPTY] THEN CONV_TAC INT_REDUCE_CONV THEN + ASM_REWRITE_TAC[AFF_DIM_EMPTY] THEN (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN DISCH_TAC THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `a:real^N` THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `b:real^N` THEN @@ -4374,7 +4374,7 @@ let CONVEX_OUTER_APPROXIMATION = prove REWRITE_TAC[RIGHT_EXISTS_AND_THM; UNWIND_THM2] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `y:real^N` THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THEN EXISTS_TAC `z - y:real^N` THEN - ASM_REWRITE_TAC[GSYM dist] THEN CONV_TAC VECTOR_ARITH; + ASM_REWRITE_TAC[GSYM dist] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; FIRST_ASSUM(MATCH_MP_TAC o MATCH_MP (REAL_ARITH `&0 < e ==> x <= e / &2 ==> x < e`)) THEN MATCH_MP_TAC REAL_HAUSDIST_LE THEN @@ -4727,7 +4727,7 @@ let RELATIVE_INTERIOR_POLYHEDRON_EXPLICIT = prove REWRITE_TAC[SUBSET; IN_INTER; IN_BALL; dist] THEN STRIP_TAC THEN EXISTS_TAC `min (&1 / &2) (e / &2 / norm(z - x:real^N))` THEN REWRITE_TAC[REAL_MIN_LT; REAL_LT_MIN] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_HALF; REAL_LT_DIV; NORM_POS_LT; VECTOR_SUB_EQ] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN CONJ_TAC THENL [REWRITE_TAC[VECTOR_ARITH @@ -4940,7 +4940,7 @@ let FACET_OF_POLYHEDRON_EXPLICIT = prove ASM_REWRITE_TAC[IN_INTER; IN_ELIM_THM] THEN MATCH_MP_TAC(TAUT `b /\ (b ==> a) ==> a /\ b`) THEN CONJ_TAC THENL [EXPAND_TAC "c" THEN REWRITE_TAC[DOT_RADD; DOT_RMUL] THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RING; + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RING") REAL_RING; DISCH_TAC] THEN FIRST_ASSUM(fun t -> GEN_REWRITE_TAC RAND_CONV [t]) THEN REWRITE_TAC[IN_INTER; IN_INTERS] THEN CONJ_TAC THENL @@ -5789,7 +5789,7 @@ add_linear_invariants [POLYHEDRON_LINEAR_IMAGE_EQ];; let POLYHEDRON_NEGATIONS = prove (`!s:real^N->bool. polyhedron s ==> polyhedron(IMAGE (--) s)`, - GEN_TAC THEN MATCH_MP_TAC EQ_IMP THEN CONV_TAC SYM_CONV THEN + GEN_TAC THEN MATCH_MP_TAC EQ_IMP THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC POLYHEDRON_LINEAR_IMAGE_EQ THEN REWRITE_TAC[VECTOR_ARITH `--x:real^N = y <=> x = --y`; EXISTS_REFL] THEN REWRITE_TAC[LINEAR_NEGATION] THEN VECTOR_ARITH_TAC);; @@ -5849,7 +5849,7 @@ let POLYTOPE_IMP_POLYHEDRON = prove let POLYTOPE_FACET_EXISTS = prove (`!p:real^N->bool. polytope p /\ &0 < aff_dim p ==> ?f. f facet_of p`, GEN_TAC THEN ASM_CASES_TAC `p:real^N->bool = {}` THEN - ASM_REWRITE_TAC[AFF_DIM_EMPTY] THEN CONV_TAC INT_REDUCE_CONV THEN + ASM_REWRITE_TAC[AFF_DIM_EMPTY] THEN (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN STRIP_TAC THEN MP_TAC(ISPEC `p:real^N->bool` EXTREME_POINT_EXISTS_CONVEX) THEN ASM_SIMP_TAC[POLYTOPE_IMP_COMPACT; POLYTOPE_IMP_CONVEX] THEN @@ -6090,7 +6090,7 @@ let POLYHEDRON_CONVEX_CONE_HULL = prove SUBST1_TAC THENL [GEN_REWRITE_TAC LAND_CONV [GSYM VECTOR_MUL_LID] THEN REWRITE_TAC[VECTOR_MUL_ASSOC] THEN AP_THM_TAC THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_MUL_LINV THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_MUL_LINV THEN MATCH_MP_TAC REAL_LT_IMP_NZ THEN ASM_SIMP_TAC[REAL_LT_INF_FINITE; FINITE_IMAGE; IMAGE_EQ_EMPTY] THEN ASM_SIMP_TAC[FORALL_IN_IMAGE]; @@ -6189,7 +6189,7 @@ let FINITELY_GENERATED_CONIC_POLYHEDRON = prove [EXISTS_TAC `interval[--vec 1:real^N,vec 1:real^N]` THEN REWRITE_TAC[POLYTOPE_INTERVAL; INTERIOR_CLOSED_INTERVAL] THEN SIMP_TAC[IN_INTERVAL; VECTOR_NEG_COMPONENT; VEC_COMPONENT] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN SUBGOAL_THEN `polytope(s INTER p:real^N->bool)` MP_TAC THENL [REWRITE_TAC[POLYTOPE_EQ_BOUNDED_POLYHEDRON] THEN @@ -6498,7 +6498,7 @@ let POLYHEDRAL_CONVEX_CONE = prove [`(norm(y:real^N) + &1) / e % x:real^N`; `y:real^N`] THEN ASM_SIMP_TAC[HULL_INC] THEN MATCH_MP_TAC CONVEX_CONE_HULL_MUL THEN ASM_SIMP_TAC[HULL_INC] THEN MATCH_MP_TAC REAL_LE_DIV THEN - ASM_SIMP_TAC[REAL_LT_IMP_LE] THEN CONV_TAC NORM_ARITH; + ASM_SIMP_TAC[REAL_LT_IMP_LE] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; REWRITE_TAC[VECTOR_ADD_LDISTRIB; VECTOR_MUL_ASSOC] THEN ASM_SIMP_TAC[NORM_POS_LE; VECTOR_MUL_LID; REAL_FIELD `&0 <= y /\ &0 < e ==> e / (y + &1) * (y + &1) / e = &1`] THEN @@ -6721,7 +6721,7 @@ let RELATIVE_BOUNDARY_OF_CONVEX_HULL = prove DISCH_TAC THEN MP_TAC(HAS_SIZE_CONV `(s:real^N->bool) HAS_SIZE 1`) THEN ASM_SIMP_TAC[HAS_SIZE; LEFT_IMP_EXISTS_THM; CONVEX_HULL_SING] THEN REWRITE_TAC[RELATIVE_INTERIOR_SING; DIFF_EQ_EMPTY] THEN - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN REWRITE_TAC[EMPTY_UNIONS] THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[EMPTY_UNIONS] THEN REWRITE_TAC[FORALL_IN_GSPEC; IN_SING; FORALL_UNWIND_THM2] THEN REWRITE_TAC[CONVEX_HULL_EQ_EMPTY] THEN SET_TAC[]; DISCH_TAC THEN @@ -6796,7 +6796,7 @@ let FRONTIER_OF_CONVEX_HULL = prove [MATCH_MP_TAC CLOSURE_CLOSED THEN ASM_SIMP_TAC[CLOSURE_CLOSED; COMPACT_IMP_CLOSED; COMPACT_CONVEX_HULL; FINITE_IMP_COMPACT; FINITE_INSERT; FINITE_EMPTY]; - CONV_TAC SYM_CONV THEN MATCH_MP_TAC RELATIVE_INTERIOR_INTERIOR THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC RELATIVE_INTERIOR_INTERIOR THEN REWRITE_TAC[AFFINE_HULL_CONVEX_HULL] THEN REWRITE_TAC[GSYM AFF_DIM_EQ_FULL] THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I @@ -6857,7 +6857,7 @@ let FRONTIER_OF_TRIANGLE = prove SUBGOAL_THEN `{a:real^2,b,c} HAS_SIZE (dimindex(:2) + 1)` ASSUME_TAC THENL [SIMP_TAC[HAS_SIZE; CARD_CLAUSES; FINITE_INSERT; FINITE_EMPTY] THEN ASM_REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY; DIMINDEX_2] THEN - CONV_TAC NUM_REDUCE_CONV; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ASM_SIMP_TAC[FRONTIER_OF_CONVEX_HULL] THEN ONCE_REWRITE_TAC[SIMPLE_IMAGE] THEN REWRITE_TAC[IMAGE_CLAUSES; UNIONS_INSERT; UNIONS_0; UNION_EMPTY] THEN @@ -7289,7 +7289,7 @@ let POLYTOPE_FACET_LOWER_BOUND = prove ==> aff_dim p + &1 <= &(CARD {f | f facet_of p})`, GEN_TAC THEN ASM_CASES_TAC `p:real^N->bool = {}` THEN ASM_SIMP_TAC[AFF_DIM_EMPTY; FACET_OF_EMPTY; EMPTY_GSPEC; CARD_CLAUSES] THEN - CONV_TAC INT_REDUCE_CONV THEN STRIP_TAC THEN + (CONV_TAC "INT_REDUCE_CONV") INT_REDUCE_CONV THEN STRIP_TAC THEN SUBGOAL_THEN `?n. {f:real^N->bool | f facet_of p} HAS_SIZE n /\ aff_dim p + &1 <= &n` (fun th -> MESON_TAC[th; HAS_SIZE]) THEN @@ -7694,7 +7694,7 @@ let CHOOSE_SURROUNDING_SIMPLEX = prove EXISTS_TAC `IMAGE (\x:real^N. (a - b) + x) c` THEN ASM_REWRITE_TAC[SIMPLEX_TRANSLATION_EQ; RELATIVE_INTERIOR_TRANSLATION] THEN REWRITE_TAC[IN_IMAGE] THEN EXISTS_TAC `b:real^N` THEN - ASM_REWRITE_TAC[] THEN CONV_TAC VECTOR_ARITH]);; + ASM_REWRITE_TAC[] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH]);; let CHOOSE_SURROUNDING_SIMPLEX_FULL = prove (`!a:real^N. ?s. &(dimindex(:N)) simplex s /\ a IN interior s`, @@ -7792,7 +7792,7 @@ let SIMPLEX_ALT1 = prove {v | v extreme_point_of s} HAS_SIZE n /\ ~affine_dependent {v | v extreme_point_of s}`, REWRITE_TAC[SIMPLEX_ALT; INT_SUB_ADD; INT_OF_NUM_EQ; HAS_SIZE] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; let SIMPLEX_0_NOT_IN_AFFINE_HULL = prove (`!s:real^N->bool. @@ -8328,7 +8328,7 @@ let SIMPLICIAL_SUBDIVISION_OF_CELL_COMPLEX_LOWDIM = prove REPEAT CONJ_TAC THENL [MESON_TAC[POLYTOPE_IMP_CONVEX; POLYTOPE_IMP_CLOSED]; ASM SET_TAC[]; - REPEAT STRIP_TAC THEN CONV_TAC SELECT_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_SIMP_TAC[MEMBER_NOT_EMPTY; RELATIVE_INTERIOR_EQ_EMPTY] THEN UNDISCH_TAC `(c:real^N->bool) IN fat` THEN EXPAND_TAC "fat" THEN ONCE_REWRITE_TAC[GSYM CONTRAPOS_THM] THEN SIMP_TAC[IN_ELIM_THM] THEN @@ -8856,7 +8856,7 @@ let REGULAR_CLOSED_UNIONS_FAT_CELLS_UNIV = prove [REWRITE_TAC[GSYM UNIONS_UNION] THEN EXPAND_TAC "u" THEN AP_TERM_TAC THEN SET_TAC[]; ALL_TAC] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC lemma THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC lemma THEN ASM_REWRITE_TAC[GSYM UNIONS_UNION; SET_RULE `{x | x IN s /\ ~P x} UNION {x | x IN s /\ P x} = s`] THEN REPEAT CONJ_TAC THENL @@ -8945,7 +8945,7 @@ let TRIANGULAR_SUBDIVISION_OF_CELL_COMPLEX = prove (STRIP_ASSUME_TAC o GSYM)) THEN EXISTS_TAC `{k:real^N->bool | k IN f /\ aff_dim k = d}` THEN ASM_SIMP_TAC[FINITE_RESTRICT] THEN - CONJ_TAC THENL [ASM SET_TAC[]; CONV_TAC SYM_CONV] THEN + CONJ_TAC THENL [ASM SET_TAC[]; (CONV_TAC "SYM_CONV") SYM_CONV] THEN SUBGOAL_THEN `d = aff_dim(c:real^N->bool)` SUBST1_TAC THENL [ASM_MESON_TAC[]; MATCH_MP_TAC CONVEX_UNIONS_FULLDIM_CELLS] THEN ASM_REWRITE_TAC[] THEN @@ -8983,7 +8983,7 @@ let FINE_TRIANGULAR_SUBDIVISION_OF_CELL_COMPLEX = prove (STRIP_ASSUME_TAC o GSYM)) THEN EXISTS_TAC `{k:real^N->bool | k IN f /\ aff_dim k = d}` THEN ASM_SIMP_TAC[FINITE_RESTRICT] THEN - CONJ_TAC THENL [ASM SET_TAC[]; CONV_TAC SYM_CONV] THEN + CONJ_TAC THENL [ASM SET_TAC[]; (CONV_TAC "SYM_CONV") SYM_CONV] THEN SUBGOAL_THEN `d = aff_dim(c:real^N->bool)` SUBST1_TAC THENL [ASM_MESON_TAC[]; MATCH_MP_TAC CONVEX_UNIONS_FULLDIM_CELLS] THEN ASM_REWRITE_TAC[] THEN diff --git a/Multivariate/realanalysis.ml b/Multivariate/realanalysis.ml index f2820392..1b489b0b 100644 --- a/Multivariate/realanalysis.ml +++ b/Multivariate/realanalysis.ml @@ -95,7 +95,7 @@ let REAL_OPEN_UNIONS = prove let REAL_OPEN_IN = prove (`!s. real_open s <=> open_in euclideanreal s`, - GEN_TAC THEN REWRITE_TAC[euclideanreal] THEN CONV_TAC SYM_CONV THEN + GEN_TAC THEN REWRITE_TAC[euclideanreal] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN AP_THM_TAC THEN REWRITE_TAC[GSYM(CONJUNCT2 topology_tybij)] THEN REWRITE_TAC[REWRITE_RULE[IN] istopology] THEN REWRITE_TAC[REAL_OPEN_EMPTY; REAL_OPEN_INTER; SUBSET] THEN @@ -461,7 +461,7 @@ let REALLIM_NULL_RMUL_EQ = prove let REALLIM_NULL_NEG = prove (`!net f. ((\x. --(f x)) ---> &0) net <=> (f ---> &0) net`, REPEAT GEN_TAC THEN ONCE_REWRITE_TAC[REAL_ARITH `--x = --(&1) * x`] THEN - MATCH_MP_TAC REALLIM_NULL_LMUL_EQ THEN CONV_TAC REAL_RAT_REDUCE_CONV);; + MATCH_MP_TAC REALLIM_NULL_LMUL_EQ THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let REALLIM_NULL_SUB = prove (`!net:(A)net f g. @@ -1893,9 +1893,9 @@ let TRIVIAL_LIMIT_WITHINREAL_WITHINCOMPLEX = prove REWRITE_TAC[dist; GSYM CX_SUB; o_THM; RE_CX; COMPLEX_NORM_CX] THEN MATCH_MP_TAC(TAUT `~p /\ ~q /\ (r <=> s) ==> (p \/ r <=> q \/ s)`) THEN REPEAT CONJ_TAC THEN TRY EQ_TAC THEN REWRITE_TAC[LEFT_IMP_EXISTS_THM] THENL - [DISCH_THEN(MP_TAC o SPECL [`&0`; `&1`]) THEN CONV_TAC REAL_RING; + [DISCH_THEN(MP_TAC o SPECL [`&0`; `&1`]) THEN (CONV_TAC "REAL_RING") REAL_RING; DISCH_THEN(MP_TAC o SPECL [`Cx(&0)`; `Cx(&1)`]) THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; MAP_EVERY X_GEN_TAC [`a:real`; `b:real`] THEN STRIP_TAC THEN MAP_EVERY EXISTS_TAC [`Cx a`; `Cx b`] THEN ASM_REWRITE_TAC[CX_INJ] THEN ASM_REWRITE_TAC[GSYM CX_SUB; COMPLEX_NORM_CX]; @@ -2066,7 +2066,7 @@ let REAL_ABEL_LIMIT_THEOREM = prove REPEAT DISCH_TAC THEN SUBGOAL_THEN `abs(r) < &1` ASSUME_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN ASM_SIMP_TAC[REAL_INFSUM_COMPLEX; o_THM; RE_CX] THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[GSYM REAL; o_DEF; CX_MUL; CX_POW] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[GSYM REAL; o_DEF; CX_MUL; CX_POW] THEN MATCH_MP_TAC(ISPEC `sequentially` REAL_LIM) THEN EXISTS_TAC `\n. vsum(s INTER (0..n)) (\i. Cx(a i) * Cx r pow i)` THEN REWRITE_TAC[SEQUENTIALLY; TRIVIAL_LIMIT_SEQUENTIALLY; GSYM sums] THEN @@ -3254,7 +3254,7 @@ let HAS_REAL_DERIVATIVE_CARATHEODORY_ATREAL = prove EQ_TAC THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THENL [EXISTS_TAC `\w. if w = z then f':real else (f(w) - f(z)) / (w - z)` THEN ASM_SIMP_TAC[FUN_EQ_THM; COND_RAND; COND_RATOR; REAL_SUB_REFL] THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; FIRST_X_ASSUM SUBST_ALL_TAC THEN FIRST_X_ASSUM SUBST1_TAC THEN ASM_SIMP_TAC[REAL_RING `(z + a) - (z + b * (w - w)):real = a`] THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ_ALT] @@ -3274,7 +3274,7 @@ let HAS_REAL_DERIVATIVE_CARATHEODORY_WITHINREAL = prove EQ_TAC THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THENL [EXISTS_TAC `\w. if w = z then f':real else (f(w) - f(z)) / (w - z)` THEN ASM_SIMP_TAC[FUN_EQ_THM; COND_RAND; COND_RATOR; REAL_SUB_REFL] THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; FIRST_X_ASSUM SUBST_ALL_TAC THEN FIRST_X_ASSUM SUBST1_TAC THEN ASM_SIMP_TAC[REAL_RING `(z + a) - (z + b * (w - w)):real = a`] THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ_ALT] @@ -3395,7 +3395,7 @@ let REAL_MIDPOINT_IN_CONVEX = prove REPEAT STRIP_TAC THEN REWRITE_TAC[REAL_ARITH `(x + y) / &2 = inv(&2) * x + inv(&2) * y`] THEN FIRST_X_ASSUM(MATCH_MP_TAC o GEN_REWRITE_RULE I [REAL_CONVEX]) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[]);; (* ------------------------------------------------------------------------- *) (* Some relations with the complex numbers can also be useful. *) @@ -3591,7 +3591,7 @@ let REAL_INTERVAL_TRANSLATION = prove IMAGE (\x. c + x) (real_interval[a,b])) /\ (!c a b. real_interval(c + a,c + b) = IMAGE (\x. c + x) (real_interval(a,b)))`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[REAL_ARITH `c + x:real = y <=> x = y - c`; EXISTS_REFL] THEN REWRITE_TAC[IN_REAL_INTERVAL] THEN REAL_ARITH_TAC);; @@ -4085,7 +4085,7 @@ let HAS_REAL_DERIVATIVE_DIV_WITHIN = prove DISCH_THEN(MP_TAC o MATCH_MP HAS_REAL_DERIVATIVE_MUL_WITHIN) THEN REWRITE_TAC[GSYM real_div] THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN - POP_ASSUM MP_TAC THEN CONV_TAC REAL_FIELD);; + POP_ASSUM MP_TAC THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let HAS_REAL_DERIVATIVE_DIV_ATREAL = prove (`!f f' g g' x. @@ -5102,7 +5102,7 @@ let HAS_REAL_DERIVATIVE_FRAC = prove ASM_REWRITE_TAC[REAL_LT_MIN; REAL_FRAC_POS_LT] THEN REWRITE_TAC[REAL_ARITH `&0 < x + &1 - y <=> y < x + &1`; FLOOR] THEN CONJ_TAC THENL [ALL_TAC; REAL_DIFF_TAC THEN REAL_ARITH_TAC] THEN - X_GEN_TAC `y:real` THEN DISCH_TAC THEN CONV_TAC SYM_CONV THEN + X_GEN_TAC `y:real` THEN DISCH_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[GSYM FRAC_UNIQUE; REAL_ARITH `y - (y - x):real = x`] THEN MP_TAC(SPEC `x:real` FLOOR_FRAC) THEN SIMP_TAC[] THEN ASM_REAL_ARITH_TAC);; @@ -5342,7 +5342,7 @@ let REAL_MVT = prove DISCH_THEN MATCH_MP_TAC THEN ASM_SIMP_TAC[REAL_CONTINUOUS_ON_SUB; REAL_CONTINUOUS_ON_LMUL; REAL_CONTINUOUS_ON_ID] THEN - CONJ_TAC THENL [UNDISCH_TAC `a < b` THEN CONV_TAC REAL_FIELD; ALL_TAC] THEN + CONJ_TAC THENL [UNDISCH_TAC `a < b` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN REPEAT STRIP_TAC THEN MATCH_MP_TAC HAS_REAL_DERIVATIVE_SUB THEN ASM_SIMP_TAC[] THEN GEN_REWRITE_TAC LAND_CONV [GSYM REAL_MUL_RID] THEN ASM_SIMP_TAC[HAS_REAL_DERIVATIVE_LMUL_ATREAL; HAS_REAL_DERIVATIVE_ID]);; @@ -5414,7 +5414,7 @@ let REAL_MVT_CAUCHY = prove ASM_SIMP_TAC[REAL_CONTINUOUS_ON_SUB; REAL_CONTINUOUS_ON_RMUL; HAS_REAL_DERIVATIVE_SUB; HAS_REAL_DERIVATIVE_RMUL_ATREAL] THEN MATCH_MP_TAC MONO_EXISTS THEN SIMP_TAC[] THEN - UNDISCH_TAC `a < b` THEN CONV_TAC REAL_FIELD);; + UNDISCH_TAC `a < b` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; let LHOSPITAL = prove (`!f g f' g' c l d. @@ -5785,7 +5785,7 @@ let REAL_TAYLOR_MVT_POS = prove [SIMP_TAC[SUM_CLAUSES_LEFT; LE_0] THEN REWRITE_TAC[GSYM ADD1; real_pow; REAL_SUB_REFL; REAL_POW_ZERO; REAL_MUL_LZERO; REAL_MUL_RZERO; REAL_ADD_RID] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[NOT_SUC; REAL_MUL_RZERO; REAL_DIV_1; REAL_MUL_RID] THEN REWRITE_TAC[REAL_ARITH `x = (x + y) + &0 <=> y = &0`] THEN MATCH_MP_TAC SUM_EQ_0_NUMSEG THEN @@ -5795,7 +5795,7 @@ let REAL_TAYLOR_MVT_POS = prove X_GEN_TAC `t:real` THEN DISCH_TAC THEN REWRITE_TAC[real_sub] THEN MATCH_MP_TAC HAS_REAL_DERIVATIVE_ADD THEN CONJ_TAC THENL [ALL_TAC; - REAL_DIFF_TAC THEN REWRITE_TAC[ADD_SUB] THEN CONV_TAC REAL_RING] THEN + REAL_DIFF_TAC THEN REWRITE_TAC[ADD_SUB] THEN (CONV_TAC "REAL_RING") REAL_RING] THEN REWRITE_TAC[GSYM real_sub] THEN MATCH_MP_TAC(MESON[] `!g'. f' = g' /\ (f has_real_derivative g') net @@ -5845,7 +5845,7 @@ let REAL_TAYLOR_MVT_POS = prove ASM_REWRITE_TAC[GSYM ADD1; FACT] THEN REWRITE_TAC[GSYM REAL_OF_NUM_MUL; GSYM REAL_OF_NUM_ADD; ADD1] THEN SUBGOAL_THEN `~(&(FACT n) = &0)` MP_TAC THENL - [REWRITE_TAC[REAL_OF_NUM_EQ; FACT_NZ]; CONV_TAC REAL_FIELD]);; + [REWRITE_TAC[REAL_OF_NUM_EQ; FACT_NZ]; (CONV_TAC "REAL_FIELD") REAL_FIELD]);; let REAL_TAYLOR_MVT_NEG = prove (`!f a x n. @@ -6660,7 +6660,7 @@ let REAL_CONVEX_ON_SECOND_DERIVATIVE = prove `!x y. x IN s /\ y IN s /\ x <= y ==> (f':real->real)(x) <= f'(y)` THEN CONJ_TAC THENL [MATCH_MP_TAC REAL_CONVEX_ON_DERIVATIVE_INCREASING; - CONV_TAC SYM_CONV THEN MATCH_MP_TAC HAS_REAL_DERIVATIVE_INCREASING] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC HAS_REAL_DERIVATIVE_INCREASING] THEN ASM_REWRITE_TAC[]);; let REAL_CONVEX_ON_ASYM = prove @@ -6805,7 +6805,7 @@ let AGM_GEN = prove FIRST_X_ASSUM(SUBST1_TAC o SYM) THEN GEN_REWRITE_TAC RAND_CONV [GSYM SUM_SUPPORT] THEN REWRITE_TAC[support; NEUTRAL_REAL_ADD]; - MATCH_MP_TAC EQ_IMP THEN CONV_TAC SYM_CONV THEN BINOP_TAC THENL + MATCH_MP_TAC EQ_IMP THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN BINOP_TAC THENL [MATCH_MP_TAC PRODUCT_SUPERSET; MATCH_MP_TAC SUM_SUPERSET] THEN SIMP_TAC[IN_ELIM_THM; SUBSET_RESTRICT; IMP_CONJ; RPOW_0] THEN @@ -6913,7 +6913,7 @@ let HOELDER = prove FIRST_X_ASSUM(MP_TAC o MATCH_MP REAL_LT_IMP_NZ) THEN ASM_SIMP_TAC[PRODUCT_EQ_0; RPOW_EQ_0; NOT_EXISTS_THM] THEN DISCH_THEN(MP_TAC o SPEC `i:A`) THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; (* ------------------------------------------------------------------------- *) (* Some other inequalities where it's handy just to use calculus. *) @@ -6930,7 +6930,7 @@ let RPOW_MINUS1_QUOTIENT_LT = prove ASM_REWRITE_TAC[IN_REAL_INTERVAL] THEN DISCH_THEN MATCH_MP_TAC THEN CONJ_TAC THENL [ASM_SIMP_TAC[rpow] THEN REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; ALL_TAC] THEN X_GEN_TAC `z:real` THEN DISCH_TAC THEN SUBGOAL_THEN `&0 < z` ASSUME_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN @@ -6946,7 +6946,7 @@ let RPOW_MINUS1_QUOTIENT_LT = prove ASM_REWRITE_TAC[RPOW_0] THEN ANTS_TAC THENL [ALL_TAC; REAL_ARITH_TAC] THEN CONJ_TAC THENL [REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; REWRITE_TAC[IN_REAL_INTERVAL] THEN REPEAT STRIP_TAC THEN REPEAT(MATCH_MP_TAC REAL_LT_MUL THEN CONJ_TAC) THEN ASM_SIMP_TAC[RPOW_POS_LT; REAL_LT_POW_2] THEN @@ -7083,7 +7083,7 @@ let LOG_CONVEX_IMP_POS = prove REWRITE_TAC[log_convex_on] THEN REPEAT STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o SPECL [`x:real^N`; `x:real^N`; `&0`; `&1`]) THEN REWRITE_TAC[VECTOR_MUL_LZERO; VECTOR_MUL_LID; VECTOR_ADD_LID] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_MESON_TAC[]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_MESON_TAC[]);; let LOG_CONVEX_ON_CONVEX = prove (`!f s:real^N->bool. @@ -7428,7 +7428,7 @@ let REAL_INTEGRABLE_INTEGRAL = prove (`!f i. f real_integrable_on i ==> (f has_real_integral (real_integral i f)) i`, REPEAT GEN_TAC THEN REWRITE_TAC[real_integrable_on; real_integral] THEN - CONV_TAC(RAND_CONV SELECT_CONV) THEN REWRITE_TAC[]);; + (CONV_TAC "(RAND_CONV SELECT_CONV)") (RAND_CONV SELECT_CONV) THEN REWRITE_TAC[]);; let HAS_REAL_INTEGRAL_INTEGRABLE = prove (`!f i s. (f has_real_integral i) s ==> f real_integrable_on s`, @@ -8179,7 +8179,7 @@ let REAL_INTEGRAL_COMBINE = prove ==> real_integral(real_interval[a,c]) f + real_integral(real_interval[c,b]) f = real_integral(real_interval[a,b]) f`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_INTEGRAL_UNIQUE THEN MATCH_MP_TAC HAS_REAL_INTEGRAL_COMBINE THEN EXISTS_TAC `c:real` THEN ASM_REWRITE_TAC[] THEN CONJ_TAC THEN @@ -8246,7 +8246,7 @@ let REAL_INTEGRAL_HAS_REAL_DERIVATIVE_POINTWISE = prove EXISTS_TAC `&1` THEN ASM_REWRITE_TAC[REAL_LT_01] THEN X_GEN_TAC `y:real^1` THEN STRIP_TAC THEN ONCE_REWRITE_TAC[GSYM DROP_EQ] THEN - REWRITE_TAC[LIFT_DROP] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[LIFT_DROP] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[INTERVAL_REAL_INTERVAL; GSYM IMAGE_o; LIFT_DROP; o_DEF] THEN REWRITE_TAC[GSYM o_DEF; SET_RULE `IMAGE (\x. x) s = s`] THEN MATCH_MP_TAC REAL_INTEGRAL THEN @@ -8441,7 +8441,7 @@ let REAL_INDEFINITE_INTEGRAL_CONTINUOUS_RIGHT = prove GEN_TAC THEN DISCH_TAC THEN REWRITE_TAC[o_DEF] THEN GEN_REWRITE_TAC I [GSYM DROP_EQ] THEN REWRITE_TAC[INTERVAL_REAL_INTERVAL; LIFT_DROP; GSYM o_DEF] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_INTEGRAL THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_INTEGRAL THEN MATCH_MP_TAC REAL_INTEGRABLE_SUBINTERVAL THEN MAP_EVERY EXISTS_TAC [`a:real`; `b:real`] THEN ASM_REWRITE_TAC[SUBSET_REAL_INTERVAL] THEN @@ -8461,7 +8461,7 @@ let REAL_INDEFINITE_INTEGRAL_CONTINUOUS_LEFT = prove GEN_TAC THEN DISCH_TAC THEN REWRITE_TAC[o_DEF] THEN GEN_REWRITE_TAC I [GSYM DROP_EQ] THEN REWRITE_TAC[INTERVAL_REAL_INTERVAL; LIFT_DROP; GSYM o_DEF] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_INTEGRAL THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_INTEGRAL THEN MATCH_MP_TAC REAL_INTEGRABLE_SUBINTERVAL THEN MAP_EVERY EXISTS_TAC [`a:real`; `b:real`] THEN ASM_REWRITE_TAC[SUBSET_REAL_INTERVAL] THEN @@ -8535,7 +8535,7 @@ let HAS_REAL_DERIVATIVE_INDEFINITE_INTEGRAL = prove REWRITE_TAC[IMP_CONJ; FORALL_IN_IMAGE] THEN X_GEN_TAC `y:real` THEN REPEAT DISCH_TAC THEN REWRITE_TAC[GSYM DROP_EQ; LIFT_DROP; o_THM] THEN - REWRITE_TAC[GSYM IMAGE_LIFT_REAL_INTERVAL] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[GSYM IMAGE_LIFT_REAL_INTERVAL] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_INTEGRAL THEN MATCH_MP_TAC REAL_INTEGRABLE_SUBINTERVAL THEN MAP_EVERY EXISTS_TAC [`a:real`; `b:real`] THEN @@ -8826,7 +8826,7 @@ let REAL_MONOTONE_CONVERGENCE_INCREASING = prove DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN ONCE_REWRITE_TAC[GSYM DROP_EQ] THEN REWRITE_TAC[LIFT_DROP] THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[GSYM o_DEF] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[GSYM o_DEF] THEN MATCH_MP_TAC REAL_INTEGRAL THEN ASM_REWRITE_TAC[REAL_INTEGRABLE_ON; o_DEF]);; let REAL_MONOTONE_CONVERGENCE_DECREASING = prove @@ -8862,7 +8862,7 @@ let REAL_MONOTONE_CONVERGENCE_DECREASING = prove DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN ONCE_REWRITE_TAC[GSYM DROP_EQ] THEN REWRITE_TAC[LIFT_DROP] THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[GSYM o_DEF] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[GSYM o_DEF] THEN MATCH_MP_TAC REAL_INTEGRAL THEN ASM_REWRITE_TAC[REAL_INTEGRABLE_ON; o_DEF]);; let REAL_BEPPO_LEVI_INCREASING = prove @@ -9271,7 +9271,7 @@ let REAL_DOMINATED_CONVERGENCE = prove DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN ONCE_REWRITE_TAC[GSYM DROP_EQ] THEN REWRITE_TAC[LIFT_DROP] THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[GSYM o_DEF] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[GSYM o_DEF] THEN MATCH_MP_TAC REAL_INTEGRAL THEN ASM_REWRITE_TAC[REAL_INTEGRABLE_ON; o_DEF]);; let HAS_REAL_MEASURE_HAS_MEASURE = prove @@ -9325,7 +9325,7 @@ let REAL_MEASURABLE_REAL_INTEGRABLE = prove let REAL_MEASURE_REAL_INTEGRAL = prove (`!s. real_measurable s ==> real_measure s = real_integral s (\x. &1)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_INTEGRAL_UNIQUE THEN ASM_REWRITE_TAC[GSYM has_real_measure; GSYM HAS_REAL_MEASURE_MEASURE]);; @@ -9333,7 +9333,7 @@ let REAL_MEASURE_REAL_INTEGRAL_UNIV = prove (`!s. real_measurable s ==> real_measure s = real_integral UNIV (\x. if x IN s then &1 else &0)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_INTEGRAL_UNIQUE THEN ASM_REWRITE_TAC[GSYM HAS_REAL_MEASURE; GSYM HAS_REAL_MEASURE_MEASURE]);; @@ -9632,7 +9632,7 @@ let HAS_REAL_MEASURE_REAL_NEGLIGIBLE_UNIONS_IMAGE = prove `sum s (\x. real_measure(f x)) = sum (IMAGE (f:A->real->bool) s) real_measure` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN ONCE_REWRITE_TAC[GSYM o_DEF] THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[GSYM o_DEF] THEN MATCH_MP_TAC SUM_IMAGE_NONZERO THEN ASM_REWRITE_TAC[] THEN MAP_EVERY X_GEN_TAC [`x:A`; `y:A`] THEN STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o SPECL [`x:A`; `y:A`]) THEN @@ -9688,7 +9688,7 @@ let HAS_REAL_MEASURE_REAL_NEGLIGIBLE_UNIONS_IMAGE_STRONG = prove [GEN_REWRITE_TAC I [EXTENSION] THEN REWRITE_TAC[IN_UNIONS; IN_IMAGE; IN_ELIM_THM] THEN MESON_TAC[NOT_IN_EMPTY]; - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN SIMP_TAC[SUBSET; IN_ELIM_THM; TAUT `a /\ ~(a /\ b) <=> a /\ ~b`] THEN REWRITE_TAC[REAL_MEASURE_EMPTY]]);; @@ -9745,7 +9745,7 @@ let REAL_MEASURE_UNION = prove [EXISTS_TAC `real_measure((s DIFF t) UNION (s INTER t):real->bool)`; EXISTS_TAC `real_measure((t DIFF s) UNION (s INTER t):real->bool)`] THEN (CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_MEASURE_DISJOINT_UNION THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_MEASURE_DISJOINT_UNION THEN ASM_SIMP_TAC[REAL_MEASURABLE_DIFF; REAL_MEASURABLE_INTER]; AP_TERM_TAC] THEN SET_TAC[]));; @@ -10938,7 +10938,7 @@ let SLICE_CBALL = prove `y:real^M = dropout k (pushin k t y:real^N)` (fun th -> GEN_REWRITE_TAC (RAND_CONV o ONCE_DEPTH_CONV) [th]) THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC DROPOUT_PUSHIN THEN ASM_ARITH_TAC; + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC DROPOUT_PUSHIN THEN ASM_ARITH_TAC; ASM_SIMP_TAC[DOT_DROPOUT] THEN ASM_SIMP_TAC[pushin; LAMBDA_BETA; LT_REFL] THEN REAL_ARITH_TAC]);; @@ -10978,7 +10978,7 @@ let SLICE_BALL = prove `y:real^M = dropout k (pushin k t y:real^N)` (fun th -> GEN_REWRITE_TAC (RAND_CONV o ONCE_DEPTH_CONV) [th]) THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC DROPOUT_PUSHIN THEN ASM_ARITH_TAC; + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC DROPOUT_PUSHIN THEN ASM_ARITH_TAC; ASM_SIMP_TAC[DOT_DROPOUT] THEN ASM_SIMP_TAC[pushin; LAMBDA_BETA; LT_REFL] THEN REAL_ARITH_TAC]);; @@ -11090,7 +11090,7 @@ let MEASURABLE_OUTER_INTERVALS_BOUNDED_EXPLICIT_SPECIAL = prove REWRITE_TAC[] THEN CONJ_TAC THENL [X_GEN_TAC `i:num` THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THENL [ASM_MESON_TAC[REAL_NOT_LT; IN_NUMSEG; REAL_NOT_LE; INTERVAL_EQ_EMPTY]; - REWRITE_TAC[EMPTY_SUBSET] THEN CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + REWRITE_TAC[EMPTY_SUBSET] THEN (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN EXISTS_TAC `(lambda i. if i = k then &0 else &1):real^N` THEN EXISTS_TAC `(lambda i. if i = k then &1 else &0):real^N` THEN REWRITE_TAC[INTERVAL_EQ_EMPTY] THEN CONJ_TAC THENL @@ -11400,7 +11400,7 @@ let FUBINI_SIMPLE_LEMMA = prove ALL_TAC] THEN DISCH_THEN SUBST1_TAC THEN MATCH_MP_TAC SUM_EQ_NUMSEG THEN X_GEN_TAC `j:num` THEN STRIP_TAC THEN REWRITE_TAC[] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_INTEGRAL_UNIQUE THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_INTEGRAL_UNIQUE THEN SUBGOAL_THEN `?u v. u$k <= v$k /\ (d:num->real^N->bool) j = interval[u,v]` STRIP_ASSUME_TAC THENL [ASM_MESON_TAC[]; ALL_TAC] THEN @@ -11741,7 +11741,7 @@ let REAL_TIETZE_PERIODIC_INTERVAL = prove [REWRITE_TAC[REAL_FRAC_EQ] THEN ASM_SIMP_TAC[REAL_LE_RDIV_EQ; REAL_LT_LDIV_EQ; REAL_SUB_LT] THEN ASM_REAL_ARITH_TAC; - AP_TERM_TAC THEN UNDISCH_TAC `a:real < b` THEN CONV_TAC REAL_FIELD]]; + AP_TERM_TAC THEN UNDISCH_TAC `a:real < b` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]]; ASM_SIMP_TAC[REAL_FIELD `a < b ==> ((x + b - a) - a) / (b - a) = &1 + (x - a) / (b - a)`] THEN REWRITE_TAC[REAL_FRAC_ADD; FRAC_NUM; FLOOR_FRAC; REAL_ADD_LID]]]);; @@ -11897,7 +11897,7 @@ let REAL_CONTINUOUS_ADDITIVE_IMP_LINEAR_INTERVAL = prove ASM_SIMP_TAC[REAL_ARITH `a <= x /\ x <= a /\ a <= y /\ y <= a <=> x = a /\ y = a`] THEN FIRST_X_ASSUM(MP_TAC o SPECL [`&0`; `&0`]) THEN - ASM_REWRITE_TAC[REAL_ADD_LID; REAL_LE_REFL] THEN CONV_TAC REAL_RING; + ASM_REWRITE_TAC[REAL_ADD_LID; REAL_LE_REFL] THEN (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN FIRST_X_ASSUM(MP_TAC o ISPEC `(\x. f(b * x)):real->real`) THEN REWRITE_TAC[] THEN ANTS_TAC THENL @@ -12007,7 +12007,7 @@ let BERNSTEIN_LEMMA = prove CONJ_TAC THENL [MATCH_MP_TAC HAS_REAL_DERIVATIVE_SUM THEN REWRITE_TAC[FINITE_NUMSEG]; ASM_REWRITE_TAC[]] THEN - REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN CONV_TAC REAL_RING; + REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN SUBGOAL_THEN `!x y. sum(0..n) @@ -12022,7 +12022,7 @@ let BERNSTEIN_LEMMA = prove [MATCH_MP_TAC HAS_REAL_DERIVATIVE_SUM THEN REWRITE_TAC[FINITE_NUMSEG]; ASM_REWRITE_TAC[]] THEN REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN - REWRITE_TAC[ARITH_RULE `n - 1 - 1 = n - 2`] THEN CONV_TAC REAL_RING; + REWRITE_TAC[ARITH_RULE `n - 1 - 1 = n - 2`] THEN (CONV_TAC "REAL_RING") REAL_RING; ALL_TAC] THEN REWRITE_TAC[REAL_ARITH `(a - b) pow 2 * x = @@ -12041,7 +12041,7 @@ let BERNSTEIN_LEMMA = prove ALL_TAC] THEN SUBGOAL_THEN `sum(0..n) (\k. &k * (&k - &1) * bernstein n k x) = &n * (&n - &1) * x pow 2` - SUBST1_TAC THENL [ALL_TAC; CONV_TAC REAL_RING] THEN + SUBST1_TAC THENL [ALL_TAC; (CONV_TAC "REAL_RING") REAL_RING] THEN REMOVE_THEN "2" (MP_TAC o SPECL [`x:real`; `&1 - x`]) THEN REWRITE_TAC[REAL_SUB_ADD2; REAL_POW_ONE; bernstein; REAL_MUL_RID] THEN ASM_CASES_TAC `n = 0` THEN @@ -12281,7 +12281,7 @@ let STONE_WEIERSTRASS_ALT = prove ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN ASM_SIMP_TAC[GSYM real_div; REAL_LE_LDIV_EQ; REAL_LT_MUL; REAL_OF_NUM_LT; ARITH; REAL_MUL_ASSOC] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_MUL_LID; REAL_LT_IMP_LE]; ASM_SIMP_TAC[REAL_ABS_MUL; REAL_ARITH `&0 < B ==> abs(B) = B`; REAL_LT_INV_EQ; REAL_LT_MUL; REAL_OF_NUM_LT; ARITH] THEN @@ -12402,7 +12402,7 @@ let STONE_WEIERSTRASS_ALT = prove EXISTS_TAC `\z. (f y - f x) / (h y - h x) * (h:real^N->real)(z) + (f x - (f y - f x) / (h y - h x) * h(x))` THEN ASM_SIMP_TAC[] THEN - UNDISCH_TAC `~((h:real^N->real) x = h y)` THEN CONV_TAC REAL_FIELD]; + UNDISCH_TAC `~((h:real^N->real) x = h y)` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]; ALL_TAC] THEN GEN_REWRITE_TAC (LAND_CONV o ONCE_DEPTH_CONV) [RIGHT_IMP_EXISTS_THM] THEN REWRITE_TAC[SKOLEM_THM; LEFT_IMP_EXISTS_THM] THEN @@ -12803,7 +12803,7 @@ let REAL_POLYNOMIAL_FUNCTION_EXPLICIT, [FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ] FINITE_SUBSET)) THEN SET_TAC[]; - ABS_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_EQ_SUPERSET THEN + ABS_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_EQ_SUPERSET THEN ASM_SIMP_TAC[SUBSET_UNIV; REAL_MUL_LZERO]]]) in let REAL_POLYNOMIAL_FUNCTION_EXPLICIT_UNIV = prove (`!f:real^N->real. @@ -12855,7 +12855,7 @@ let REAL_POLYNOMIAL_FUNCTION_EXPLICIT, ASM_REWRITE_TAC[FINITE_UNION; SUBSET; IN_UNION; IN_ELIM_THM] THEN REAL_ARITH_TAC; ASM_REWRITE_TAC[REAL_ADD_RDISTRIB] THEN ABS_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_ADD_GEN THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_ADD_GEN THEN REWRITE_TAC[IN_UNIV; REAL_ENTIRE; DE_MORGAN_THM] THEN CONJ_TAC THEN MATCH_MP_TAC(MESON[FINITE_SUBSET] `FINITE {k | P k} /\ {k | P k /\ Q k} SUBSET {k | P k} @@ -13717,11 +13717,11 @@ let BERNOULLI,BERNOULLI_EXPANSION = (CONJ_PAIR o prove) GEN_REWRITE_TAC LAND_CONV [cth] THEN GEN_REWRITE_TAC (LAND_CONV o RAND_CONV) [cth] THEN SIMP_TAC[SUM_CLAUSES_NUMSEG; LE_0; BINOM_REFL; BINOM_PENULT; SUC_SUB1] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[REAL_MUL_LID; REAL_MUL_LZERO; REAL_SUB_REFL] THEN SIMP_TAC[ADD1; ARITH_RULE `(n + 1) + 1 = n + 2`; GSYM REAL_OF_NUM_ADD] THEN BINOP_TAC THEN REPEAT(AP_TERM_TAC THEN ABS_TAC) THEN - CONV_TAC REAL_FIELD) in + (CONV_TAC "REAL_FIELD") REAL_FIELD) in REWRITE_TAC[lemma; bernoulli] THEN SUBGOAL_THEN `!n x. sum(0..n) (\k. &(binom(n,k)) * @@ -13779,7 +13779,7 @@ let BERNOULLI_NUMBER = prove MATCH_MP_TAC num_INDUCTION THEN REWRITE_TAC[ARITH; REAL_MUL_LZERO] THEN MATCH_MP_TAC num_INDUCTION THEN REWRITE_TAC[SUC_SUB1] THEN REWRITE_TAC[ARITH_RULE `SUC n = 1 <=> n = 0`] THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[real_pow; REAL_MUL_LID] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[real_pow; REAL_MUL_LID] THEN REWRITE_TAC[NOT_SUC; REAL_MUL_LZERO; REAL_MUL_RZERO]);; let BERNOULLI_NUMBER_ALT = prove @@ -13835,7 +13835,7 @@ let HAS_REAL_DERIVATIVE_BERNOULLI = prove ASM_SIMP_TAC[GSYM REAL_OF_NUM_ADD; GSYM REAL_OF_NUM_SUB; ARITH_RULE `k <= n ==> ~(k = n + 1) /\ (n + 1) - k - 1 = n - k /\ k <= n + 1`] THEN UNDISCH_TAC `k:num <= n` THEN REWRITE_TAC[GSYM REAL_OF_NUM_LE] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; add_real_differentiation_theorems (CONJUNCTS(REWRITE_RULE[FORALL_AND_THM] @@ -13861,7 +13861,7 @@ let HAS_REAL_INTEGRAL_BERNOULLI = prove REAL_FUNDAMENTAL_THEOREM_OF_CALCULUS) THEN REWRITE_TAC[REAL_POS] THEN ANTS_TAC THENL [REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN - REWRITE_TAC[ADD_SUB; GSYM REAL_OF_NUM_ADD] THEN CONV_TAC REAL_FIELD; + REWRITE_TAC[ADD_SUB; GSYM REAL_OF_NUM_ADD] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; REWRITE_TAC[BERNOULLI_1; ARITH_RULE `n + 1 = 1 <=> n = 0`] THEN ASM_CASES_TAC `n = 0` THEN ASM_REWRITE_TAC[REAL_SUB_REFL] THEN REWRITE_TAC[REAL_ADD_LID; ADD_CLAUSES; REAL_DIV_1; REAL_ADD_SUB]]);; @@ -13892,7 +13892,7 @@ let BERNOULLI_UNIQUE = prove EXISTS_TAC `IMAGE (&) (:num)` THEN SIMP_TAC[INFINITE_IMAGE_INJ; REAL_OF_NUM_EQ; num_INFINITE; SUBSET; FORALL_IN_IMAGE; IN_UNIV; IN_ELIM_THM] THEN - CONV_TAC(BINDER_CONV SYM_CONV) THEN INDUCT_TAC THEN + (CONV_TAC "(BINDER_CONV SYM_CONV)") (BINDER_CONV SYM_CONV) THEN INDUCT_TAC THEN ASM_REWRITE_TAC[GSYM REAL_OF_NUM_SUC] THEN ASM_MESON_TAC[BERNOULLI_SUB_ADD1; REAL_ARITH `p - b:real = p' - b' <=> p' - p = b' - b`]; @@ -13915,7 +13915,7 @@ let BERNOULLI_RAABE_2 = prove (`!n x. bernoulli n ((x + &1) / &2) + bernoulli n (x / &2) = &2 / &2 pow n * bernoulli n x`, GEN_TAC THEN ASM_CASES_TAC `n = 0` THEN - ASM_REWRITE_TAC[bernoulli] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[bernoulli] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SIMP_TAC[REAL_LT_POW2; REAL_FIELD `&0 < p ==> (x = &2 / p * y <=> p / &2 * x = y)`] THEN GEN_REWRITE_TAC I [GSYM FUN_EQ_THM] THEN @@ -13954,7 +13954,7 @@ let BERNOULLI_RAABE_2 = prove (MP_TAC o SPECL [`inv(&2)`; `inv(&2)`]) (MP_TAC o SPECL [`inv(&2)`; `&0`])) THEN REWRITE_TAC[REAL_INTERVAL_EQ_EMPTY] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM IMP_CONJ_ALT] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM IMP_CONJ_ALT] THEN DISCH_THEN(MP_TAC o MATCH_MP HAS_REAL_INTEGRAL_ADD) THEN DISCH_THEN(MP_TAC o SPEC `&2 pow n / &2` o MATCH_MP HAS_REAL_INTEGRAL_LMUL) THEN @@ -13964,7 +13964,7 @@ let BERNOULLI_RAABE_2 = prove ASM_REWRITE_TAC[REAL_ENTIRE] THEN DISJ2_TAC THEN REWRITE_TAC[REAL_ARITH `&2 * x + &2 * y = &0 <=> y + x = &0`] THEN IMP_REWRITE_TAC[REAL_INTEGRAL_COMBINE] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ONCE_REWRITE_TAC[CONJ_SYM] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ONCE_REWRITE_TAC[CONJ_SYM] THEN REWRITE_TAC[GSYM HAS_REAL_INTEGRAL_INTEGRABLE_INTEGRAL] THEN ASM_MESON_TAC[HAS_REAL_INTEGRAL_BERNOULLI]]);; @@ -13972,7 +13972,7 @@ let BERNOULLI_HALF = prove (`!n. bernoulli n (&1 / &2) = (&2 / &2 pow n - &1) * bernoulli n (&0)`, GEN_TAC THEN MP_TAC(ISPECL [`n:num`; `&1`] BERNOULLI_RAABE_2) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `a + b:real = c * a <=> b = (c - &1) * a`] THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[BERNOULLI_1] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN REAL_ARITH_TAC);; @@ -14028,7 +14028,7 @@ let BERNOULLI_1_0 = prove (`!n. bernoulli n (&1) = --(&1) pow n * bernoulli n (&0)`, GEN_TAC THEN SUBST1_TAC(REAL_ARITH `&0 = &1 - &1`) THEN REWRITE_TAC[BERNOULLI_REFLECT; REAL_MUL_ASSOC; GSYM REAL_POW_MUL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_POW_ONE; REAL_MUL_LID]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_POW_ONE; REAL_MUL_LID]);; let BERNOULLI_NUMBER_ZERO = prove (`!n. ODD n /\ ~(n = 1) ==> bernoulli n (&0) = &0`, @@ -14049,8 +14049,8 @@ let BERNOULLI_EVEN_BOUND = prove bernoulli (2 * n) x = &0 /\ bernoulli (2 * n) y = &0 ==> x = y)`, REWRITE_TAC[AND_FORALL_THM; IN_REAL_INTERVAL] THEN INDUCT_TAC THENL - [CONV_TAC NUM_REDUCE_CONV THEN - CONV_TAC(ONCE_DEPTH_CONV BERNOULLI_CONV) THEN REAL_ARITH_TAC; + [(CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN + (CONV_TAC "(ONCE_DEPTH_CONV BERNOULLI_CONV)") (ONCE_DEPTH_CONV BERNOULLI_CONV) THEN REAL_ARITH_TAC; POP_ASSUM MP_TAC THEN REWRITE_TAC[FORALL_AND_THM] THEN STRIP_TAC] THEN MATCH_MP_TAC(TAUT `q /\ (q ==> p) ==> p /\ q`) THEN CONJ_TAC THENL [MATCH_MP_TAC REAL_WLOG_LT THEN REWRITE_TAC[] THEN @@ -14064,7 +14064,7 @@ let BERNOULLI_EVEN_BOUND = prove [REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN REWRITE_TAC[GSYM REAL_OF_NUM_MUL; GSYM REAL_OF_NUM_SUC; ARITH_RULE `2 * SUC n - 1 = 2 * n + 1`] THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; REWRITE_TAC[IN_REAL_INTERVAL; LEFT_IMP_EXISTS_THM] THEN X_GEN_TAC `z:real` THEN DISCH_THEN(CONJUNCTS_THEN2 STRIP_ASSUME_TAC MP_TAC) THEN @@ -14083,7 +14083,7 @@ let BERNOULLI_EVEN_BOUND = prove REWRITE_TAC[ODD_ADD; ODD_MULT; ADD1; ARITH] THEN ARITH_TAC; REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN SIMP_TAC[ADD_SUB; GSYM REAL_OF_NUM_MUL; GSYM REAL_OF_NUM_ADD; ADD1] THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; REWRITE_TAC[IN_REAL_INTERVAL; NOT_EXISTS_THM] THEN X_GEN_TAC `u:real` THEN STRIP_TAC] THEN MP_TAC(ISPECL @@ -14091,16 +14091,16 @@ let BERNOULLI_EVEN_BOUND = prove `bernoulli (2 * SUC n)`; `x:real`; `&1 / &2`] REAL_ROLLE_SIMPLE) THEN ASM_REWRITE_TAC[NOT_IMP] THEN REPEAT CONJ_TAC THENL - [REWRITE_TAC[real_div; REAL_MUL_LZERO] THEN CONV_TAC SYM_CONV THEN + [REWRITE_TAC[real_div; REAL_MUL_LZERO] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[REAL_ENTIRE] THEN DISJ1_TAC THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[BERNOULLI_HALF] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[BERNOULLI_HALF] THEN REWRITE_TAC[REAL_ENTIRE] THEN DISJ2_TAC THEN MATCH_MP_TAC BERNOULLI_NUMBER_ZERO THEN REWRITE_TAC[ODD_ADD; ODD_MULT; ADD1; ARITH] THEN ARITH_TAC; REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN SIMP_TAC[ADD_SUB; GSYM REAL_OF_NUM_MUL; GSYM REAL_OF_NUM_ADD; ADD1] THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; REWRITE_TAC[IN_REAL_INTERVAL; NOT_EXISTS_THM] THEN X_GEN_TAC `v:real` THEN STRIP_TAC] THEN FIRST_X_ASSUM(MP_TAC o SPECL [`u:real`; `v:real`]) THEN @@ -14158,7 +14158,7 @@ let BERNOULLI_EVEN_BOUND = prove ASM_REWRITE_TAC[IN_REAL_INTERVAL] THEN ANTS_TAC THENL [ASM_REAL_ARITH_TAC; REWRITE_TAC[BERNOULLI_REFLECT]] THEN REWRITE_TAC[REAL_ENTIRE; REAL_POW_EQ_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN SUBGOAL_THEN `2 * (n - 2) DIV 2 + 1 = n - 1` (fun th -> ASM_REWRITE_TAC[th]) THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [EVEN_EXISTS]) THEN @@ -14172,7 +14172,7 @@ let BERNOULLI_NUMBER_EQ_0 = prove GEN_TAC THEN EQ_TAC THEN REWRITE_TAC[BERNOULLI_NUMBER_ZERO] THEN ASM_CASES_TAC `n = 1` THEN ASM_REWRITE_TAC[BERNOULLI_CONV `bernoulli 1 (&0)`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN DISCH_TAC THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_TAC THEN DISJ_CASES_TAC(SPEC `n:num` EVEN_OR_ODD) THEN ASM_REWRITE_TAC[] THEN MP_TAC(ISPECL [`n:num`; `\k. &(binom(n,n - k)) * bernoulli (n - k) (&0)`] REAL_POLYFUN_FINITE_ROOTS) THEN @@ -14182,7 +14182,7 @@ let BERNOULLI_NUMBER_EQ_0 = prove REWRITE_TAC[GSYM INFINITE] THEN MATCH_MP_TAC INFINITE_SUPERSET THEN EXISTS_TAC `real_interval[&0,&1]` THEN REWRITE_TAC[real_interval; INFINITE; FINITE_REAL_INTERVAL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[SUBSET; IN_ELIM_THM] THEN X_GEN_TAC `x:real` THEN STRIP_TAC THEN MP_TAC(ISPECL [`n:num`; `x:real`] BERNOULLI_EVEN_BOUND) THEN @@ -14231,7 +14231,7 @@ let BERNOULLI_BOUND = prove REWRITE_TAC[ADD1; REAL_ARITH `(x + &1) + &1 = x + &2`] THEN ASM_CASES_TAC `m = 0` THENL [ASM_REWRITE_TAC[MULT_CLAUSES; ADD_CLAUSES] THEN - CONV_TAC(ONCE_DEPTH_CONV BERNOULLI_CONV) THEN ASM_REAL_ARITH_TAC; + (CONV_TAC "(ONCE_DEPTH_CONV BERNOULLI_CONV)") (ONCE_DEPTH_CONV BERNOULLI_CONV) THEN ASM_REAL_ARITH_TAC; MP_TAC(ISPECL [`\x. bernoulli (2 * m + 1) x / &(2 * m + 1)`; `bernoulli (2 * m)`; `&0`; `x:real`] REAL_FUNDAMENTAL_THEOREM_OF_CALCULUS) THEN @@ -14240,7 +14240,7 @@ let BERNOULLI_BOUND = prove ANTS_TAC THENL [REPEAT STRIP_TAC THEN REAL_DIFF_TAC THEN REWRITE_TAC[ADD_SUB] THEN REWRITE_TAC[GSYM REAL_OF_NUM_ADD; GSYM REAL_OF_NUM_MUL] THEN - CONV_TAC REAL_FIELD; + (CONV_TAC "REAL_FIELD") REAL_FIELD; DISCH_THEN(MP_TAC o MATCH_MP REAL_INTEGRAL_UNIQUE) THEN REWRITE_TAC[GSYM REAL_OF_NUM_ADD; GSYM REAL_OF_NUM_MUL] THEN REWRITE_TAC[REAL_FIELD @@ -14484,7 +14484,7 @@ let REAL_EULER_MACLAURIN = prove `0`; `m:num`; `n:num`] step) THEN ASM_SIMP_TAC[REAL_DIFFERENTIABLE_ON_IMP_REAL_CONTINUOUS_ON; ARITH_RULE `0 + 1 <= 2 * p + 1`; LE_0] THEN - CONV_TAC NUM_REDUCE_CONV THEN REWRITE_TAC[CONJUNCT1 bernoulli] THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[CONJUNCT1 bernoulli] THEN REWRITE_TAC[REAL_ADD_LID; REAL_MUL_LID; ETA_AX] THEN REWRITE_TAC[BERNOULLI_CONV `bernoulli 1 (&0)`] THEN MATCH_MP_TAC(REAL_ARITH @@ -14492,7 +14492,7 @@ let REAL_EULER_MACLAURIN = prove ==> m + s = i + (m + n) / &2 + r`) THEN POP_ASSUM_LIST(MP_TAC o end_itlist CONJ o rev) THEN SPEC_TAC(`p:num`,`p:num`) THEN INDUCT_TAC THENL - [REWRITE_TAC[SUM_CLAUSES_NUMSEG] THEN CONV_TAC NUM_REDUCE_CONV THEN + [REWRITE_TAC[SUM_CLAUSES_NUMSEG] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REAL_ARITH_TAC; GEN_REWRITE_TAC (LAND_CONV o ONCE_DEPTH_CONV) [ARITH_RULE `2 * SUC p + 1 = 2 * p + 3`] THEN @@ -14532,7 +14532,7 @@ let REAL_EULER_MACLAURIN = prove ARITH_RULE `SUC(2 * p + 1) + 1 <= 2 * p + 3`; ARITH_RULE `SUC(2 * p + 1) <= 2 * p + 3`] THEN REWRITE_TAC[ADD1; GSYM ADD_ASSOC; REAL_OF_NUM_ADD] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[GSYM REAL_OF_NUM_ADD; REAL_ADD_RID; GSYM REAL_OF_NUM_MUL] THEN DISCH_THEN SUBST1_TAC THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[REAL_ENTIRE] THEN DISJ1_TAC THEN @@ -14561,11 +14561,11 @@ let REAL_EULER_MACLAURIN_ANTIDERIVATIVE = prove ASM_SIMP_TAC[ARITH_RULE `k <= 2 * p + 1 ==> SUC k <= 2 * p + 2`; ARITH_RULE `SUC(k + 1) = SUC k + 1`; ARITH_RULE `SUC(2 * p) + 1 = 2 * p + 2`] THEN - CONV_TAC NUM_REDUCE_CONV THEN DISCH_THEN(SUBST1_TAC o CONJUNCT2) THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN DISCH_THEN(SUBST1_TAC o CONJUNCT2) THEN MP_TAC(ISPECL [`f 0:real->real`; `f (0 + 1):real->real`; `&m`; `&n`] REAL_FUNDAMENTAL_THEOREM_OF_CALCULUS) THEN - ASM_SIMP_TAC[REAL_OF_NUM_LE; LE_0] THEN CONV_TAC NUM_REDUCE_CONV THEN + ASM_SIMP_TAC[REAL_OF_NUM_LE; LE_0] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN DISCH_THEN(SUBST1_TAC o MATCH_MP REAL_INTEGRAL_UNIQUE) THEN AP_TERM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[ARITH_RULE `SUC(2 * p) + 1 = 2 * p + 2`] THEN @@ -14703,7 +14703,7 @@ let MEASURABLE_ON_COMPLEX_INV = prove ASM_REWRITE_TAC[REAL_HALF] THEN DISCH_THEN(X_CHOOSE_THEN `N2:num` STRIP_ASSUME_TAC) THEN EXISTS_TAC `N1 + N2 + 1` THEN X_GEN_TAC `n:num` THEN STRIP_TAC THEN - REWRITE_TAC[VECTOR_SUB_EQ] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[VECTOR_SUB_EQ] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[GSYM COMPLEX_VEC_0; DIST_0] THEN REMOVE_THEN "*" (MP_TAC o SPEC `n:num`) THEN @@ -15310,7 +15310,7 @@ let REAL_MEASURABLE_ON_PREIMAGE_HALFSPACE_LT = prove MEASURABLE_ON_PREIMAGE_HALFSPACE_COMPONENT_LT] THEN REWRITE_TAC[DIMINDEX_1; FORALL_1; GSYM drop; o_DEF; LIFT_DROP] THEN GEN_TAC THEN AP_TERM_TAC THEN ABS_TAC THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_ELIM_THM] THEN MESON_TAC[LIFT_DROP]);; let REAL_MEASURABLE_ON_PREIMAGE_HALFSPACE_LE = prove @@ -15320,7 +15320,7 @@ let REAL_MEASURABLE_ON_PREIMAGE_HALFSPACE_LE = prove MEASURABLE_ON_PREIMAGE_HALFSPACE_COMPONENT_LE] THEN REWRITE_TAC[DIMINDEX_1; FORALL_1; GSYM drop; o_DEF; LIFT_DROP] THEN GEN_TAC THEN AP_TERM_TAC THEN ABS_TAC THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_ELIM_THM] THEN MESON_TAC[LIFT_DROP]);; let REAL_MEASURABLE_ON_PREIMAGE_HALFSPACE_GT = prove @@ -15330,7 +15330,7 @@ let REAL_MEASURABLE_ON_PREIMAGE_HALFSPACE_GT = prove MEASURABLE_ON_PREIMAGE_HALFSPACE_COMPONENT_GT] THEN REWRITE_TAC[DIMINDEX_1; FORALL_1; GSYM drop; o_DEF; LIFT_DROP] THEN GEN_TAC THEN AP_TERM_TAC THEN ABS_TAC THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_ELIM_THM] THEN MESON_TAC[LIFT_DROP]);; let REAL_MEASURABLE_ON_PREIMAGE_HALFSPACE_GE = prove @@ -15340,7 +15340,7 @@ let REAL_MEASURABLE_ON_PREIMAGE_HALFSPACE_GE = prove MEASURABLE_ON_PREIMAGE_HALFSPACE_COMPONENT_GE] THEN REWRITE_TAC[DIMINDEX_1; FORALL_1; GSYM drop; o_DEF; LIFT_DROP] THEN GEN_TAC THEN AP_TERM_TAC THEN ABS_TAC THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_ELIM_THM] THEN MESON_TAC[LIFT_DROP]);; let REAL_MEASURABLE_ON_PREIMAGE_OPEN_INTERVAL = prove @@ -15349,7 +15349,7 @@ let REAL_MEASURABLE_ON_PREIMAGE_OPEN_INTERVAL = prove REWRITE_TAC[real_measurable_on; REAL_LEBESGUE_MEASURABLE; IMAGE_LIFT_UNIV; MEASURABLE_ON_PREIMAGE_OPEN_INTERVAL; FORALL_DROP] THEN GEN_TAC THEN REPEAT(AP_TERM_TAC THEN ABS_TAC) THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_ELIM_THM; o_DEF; GSYM IMAGE_DROP_INTERVAL; LIFT_DROP; FORALL_DROP; IN_IMAGE] THEN MESON_TAC[LIFT_DROP]);; @@ -15359,7 +15359,7 @@ let REAL_MEASURABLE_ON_PREIMAGE_CLOSED_INTERVAL = prove REWRITE_TAC[real_measurable_on; REAL_LEBESGUE_MEASURABLE; IMAGE_LIFT_UNIV; MEASURABLE_ON_PREIMAGE_CLOSED_INTERVAL; FORALL_DROP] THEN GEN_TAC THEN REPEAT(AP_TERM_TAC THEN ABS_TAC) THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_ELIM_THM; o_DEF; GSYM IMAGE_DROP_INTERVAL; LIFT_DROP; FORALL_DROP; IN_IMAGE] THEN MESON_TAC[LIFT_DROP]);; @@ -15376,7 +15376,7 @@ let REAL_MEASURABLE_ON_PREIMAGE_OPEN = prove FIRST_X_ASSUM(MP_TAC o SPEC `IMAGE drop t`) THEN ASM_REWRITE_TAC[IMAGE_LIFT_DROP; GSYM IMAGE_o]] THEN MATCH_MP_TAC EQ_IMP THEN AP_TERM_TAC THENL - [CONV_TAC SYM_CONV; ALL_TAC] THEN + [(CONV_TAC "SYM_CONV") SYM_CONV; ALL_TAC] THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_IMAGE; o_DEF; IN_ELIM_THM] THEN MESON_TAC[LIFT_DROP]);; @@ -15393,7 +15393,7 @@ let REAL_MEASURABLE_ON_PREIMAGE_CLOSED = prove FIRST_X_ASSUM(MP_TAC o SPEC `IMAGE drop t`) THEN ASM_REWRITE_TAC[IMAGE_LIFT_DROP; GSYM IMAGE_o]] THEN MATCH_MP_TAC EQ_IMP THEN AP_TERM_TAC THENL - [CONV_TAC SYM_CONV; ALL_TAC] THEN + [(CONV_TAC "SYM_CONV") SYM_CONV; ALL_TAC] THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_IMAGE; o_DEF; IN_ELIM_THM] THEN MESON_TAC[LIFT_DROP]);; @@ -15524,7 +15524,7 @@ let REAL_CONTINUOUS_MEASURE_IN_HALFSPACE_LE = prove measure((s DIFF interval[u,v]) INTER {x | x$i <= b})` (fun th -> REWRITE_TAC[th]) THENL - [GEN_TAC THEN CONV_TAC SYM_CONV THEN + [GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MEASURE_NEGLIGIBLE_UNION_EQ THEN ASM_SIMP_TAC[MEASURABLE_INTER; MEASURABLE_INTER_HALFSPACE_LE; MEASURABLE_INTERVAL; MEASURABLE_DIFF] THEN @@ -16598,7 +16598,7 @@ let REAL_LEBESGUE_DIFFERENTIATION_THEOREM_ALT = prove REPEAT STRIP_TAC THEN EXISTS_TAC `{x | x IN s /\ ~(f real_differentiable atreal x)}` THEN ASM_SIMP_TAC[REAL_LEBESGUE_DIFFERENTIATION_THEOREM; SUBSET_RESTRICT] THEN - REWRITE_TAC[IN_DIFF; IN_ELIM_THM] THEN CONV_TAC TAUT);; + REWRITE_TAC[IN_DIFF; IN_ELIM_THM] THEN (CONV_TAC "TAUT") TAUT);; let REAL_LEBESGUE_DIFFERENTIATION_THEOREM_INCREASING = prove (`!f s. is_realinterval s /\ diff --git a/Multivariate/tarski.ml b/Multivariate/tarski.ml index 8e9d0315..32858945 100644 --- a/Multivariate/tarski.ml +++ b/Multivariate/tarski.ml @@ -136,7 +136,7 @@ let TARSKI_AXIOM_7_EUCLIDEAN = prove SIMP_TAC[CART_EQ; DIMINDEX_2; FORALL_2; BASIS_COMPONENT; VEC_COMPONENT; ARITH; VECTOR_ADD_COMPONENT; VECTOR_MUL_COMPONENT; VECTOR_SUB_COMPONENT] THEN - UNDISCH_TAC `&0 < &1 - d + e` THEN CONV_TAC REAL_FIELD; + UNDISCH_TAC `&0 < &1 - d + e` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; EXISTS_TAC `(&1 - d + e - d * e) / (&1 - d + e)` THEN ASM_SIMP_TAC[REAL_LE_LDIV_EQ; REAL_LE_RDIV_EQ] THEN SUBGOAL_THEN `&0 <= (&1 - d) * (&1 + e) /\ &0 <= d * e` MP_TAC THENL @@ -154,7 +154,7 @@ let TARSKI_AXIOM_8_EUCLIDEAN = prove MAP_EVERY EXISTS_TAC [`vec 0:real^2`; `basis 1:real^2`; `basis 2:real^2`] THEN SIMP_TAC[BASIS_COMPONENT; VEC_COMPONENT; DIMINDEX_2; ARITH] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; (* ------------------------------------------------------------------------- *) (* Axiom 9 (upper 2-dimensional axiom). *) @@ -172,7 +172,7 @@ let TARSKI_AXIOM_9_EUCLIDEAN = prove ONCE_REWRITE_TAC[REAL_RING `~(x = &0) <=> ~(x pow 2 = &0)`] THEN REWRITE_TAC[NORM_POW_2; COLLINEAR_3_2D] THEN REWRITE_TAC[DOT_2; VECTOR_SUB_COMPONENT] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; (* ------------------------------------------------------------------------- *) (* Axiom 10 (Euclidean axiom). *) diff --git a/Multivariate/topology.ml b/Multivariate/topology.ml index db889fc5..1f40e90a 100644 --- a/Multivariate/topology.ml +++ b/Multivariate/topology.ml @@ -104,7 +104,7 @@ let OPEN_EXISTS = prove let OPEN_IN = prove (`!s:real^N->bool. open s <=> open_in euclidean s`, - GEN_TAC THEN REWRITE_TAC[euclidean] THEN CONV_TAC SYM_CONV THEN + GEN_TAC THEN REWRITE_TAC[euclidean] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN AP_THM_TAC THEN REWRITE_TAC[GSYM(CONJUNCT2 topology_tybij)] THEN REWRITE_TAC[REWRITE_RULE[IN] istopology] THEN REWRITE_TAC[OPEN_EMPTY; OPEN_INTER; SUBSET] THEN @@ -342,7 +342,7 @@ add_linear_invariants let BALL_SCALING = prove (`!c. &0 < c ==> !x r. ball(c % x,c * r) = IMAGE (\x. c % x) (ball(x,r))`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[] THEN CONJ_TAC THENL [ASM_MESON_TAC[SURJECTIVE_SCALING; REAL_LT_IMP_NZ]; ALL_TAC] THEN REWRITE_TAC[IN_BALL; DIST_MUL] THEN @@ -350,7 +350,7 @@ let BALL_SCALING = prove let CBALL_SCALING = prove (`!c. &0 < c ==> !x r. cball(c % x,c * r) = IMAGE (\x. c % x) (cball(x,r))`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[] THEN CONJ_TAC THENL [ASM_MESON_TAC[SURJECTIVE_SCALING; REAL_LT_IMP_NZ]; ALL_TAC] THEN REWRITE_TAC[IN_CBALL; DIST_MUL] THEN @@ -359,7 +359,7 @@ let CBALL_SCALING = prove let SPHERE_SCALING = prove (`!c. &0 < c ==> !x r. sphere(c % x,c * r) = IMAGE (\x. c % x) (sphere(x,r))`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[] THEN CONJ_TAC THENL [ASM_MESON_TAC[SURJECTIVE_SCALING; REAL_LT_IMP_NZ]; ALL_TAC] THEN REWRITE_TAC[IN_SPHERE; DIST_MUL] THEN @@ -434,7 +434,7 @@ let OPEN_CONTAINS_CBALL_EQ = prove let SPHERE_EQ_EMPTY = prove (`!a:real^N r. sphere(a,r) = {} <=> r < &0`, REWRITE_TAC[sphere; EXTENSION; IN_ELIM_THM; NOT_IN_EMPTY] THEN - REPEAT GEN_TAC THEN EQ_TAC THENL [ALL_TAC; CONV_TAC NORM_ARITH] THEN + REPEAT GEN_TAC THEN EQ_TAC THENL [ALL_TAC; (CONV_TAC "NORM_ARITH") NORM_ARITH] THEN MESON_TAC[VECTOR_CHOOSE_DIST; REAL_NOT_LE]);; let SPHERE_EMPTY = prove @@ -882,7 +882,7 @@ let MIDPOINT_IN_SEGMENT = prove REWRITE_TAC[IN_SEGMENT] THEN REPEAT STRIP_TAC THENL [ALL_TAC; ASM_CASES_TAC `a:real^N = b` THEN ASM_REWRITE_TAC[]] THEN EXISTS_TAC `&1 / &2` THEN REWRITE_TAC[midpoint] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN VECTOR_ARITH_TAC);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN VECTOR_ARITH_TAC);; let BETWEEN_IN_SEGMENT = prove (`!x a b:real^N. between x (a,b) <=> x IN segment[a,b]`, @@ -905,7 +905,7 @@ let BETWEEN_IN_SEGMENT = prove REWRITE_TAC[VECTOR_ARITH `a - ((&1 - u) % a + u % b) = u % (a - b)`; VECTOR_ARITH `((&1 - u) % a + u % b) - b = (&1 - u) % (a - b)`; NORM_MUL; GSYM REAL_ADD_LDISTRIB] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD]);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]);; let IN_SEGMENT_COMPONENT = prove (`!a b x:real^N i. @@ -1065,7 +1065,7 @@ let CONNECTED_OPEN_IN = prove ~(e2 = {}))`, GEN_TAC THEN REWRITE_TAC[connected; OPEN_IN_OPEN] THEN REWRITE_TAC[LEFT_AND_EXISTS_THM; RIGHT_AND_EXISTS_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV UNWIND_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV UNWIND_CONV)") (ONCE_DEPTH_CONV UNWIND_CONV) THEN AP_TERM_TAC THEN REPEAT(AP_TERM_TAC THEN ABS_TAC) THEN SET_TAC[]);; @@ -1094,7 +1094,7 @@ let CONNECTED_CLOSED_IN = prove ~(e2 = {}))`, GEN_TAC THEN REWRITE_TAC[CONNECTED_CLOSED; CLOSED_IN_CLOSED] THEN REWRITE_TAC[LEFT_AND_EXISTS_THM; RIGHT_AND_EXISTS_THM] THEN - CONV_TAC(ONCE_DEPTH_CONV UNWIND_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV UNWIND_CONV)") (ONCE_DEPTH_CONV UNWIND_CONV) THEN AP_TERM_TAC THEN REPEAT(AP_TERM_TAC THEN ABS_TAC) THEN SET_TAC[]);; @@ -1553,7 +1553,7 @@ let LOCALLY_CONSTANT_IMP_CONSTANT = prove ==> ?c. !x. x IN s ==> f x = c`, REPEAT STRIP_TAC THEN ONCE_REWRITE_TAC[MESON[] `(?c. !x. P x ==> f x = c) <=> (!x y. P x /\ P y ==> f x = f y)`] THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN MATCH_MP_TAC CONNECTED_EQUIVALENCE_RELATION THEN ASM_SIMP_TAC[]);; @@ -1743,7 +1743,7 @@ let LIMPT_OF_UNIV = prove X_GEN_TAC `e:real` THEN DISCH_TAC THEN MP_TAC(ISPECL [`x:real^N`; `e / &2`] VECTOR_CHOOSE_DIST) THEN ANTS_TAC THENL [ASM_REAL_ARITH_TAC; MATCH_MP_TAC MONO_EXISTS] THEN - POP_ASSUM MP_TAC THEN CONV_TAC NORM_ARITH);; + POP_ASSUM MP_TAC THEN (CONV_TAC "NORM_ARITH") NORM_ARITH);; let LIMPT_OF_OPEN_IN = prove (`!s t x:real^N. @@ -1912,7 +1912,7 @@ let INTERIOR_LIMIT_POINT = prove MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `y:real^N` THEN STRIP_TAC THEN REPEAT CONJ_TAC THENL [FIRST_X_ASSUM MATCH_MP_TAC; - CONV_TAC (RAND_CONV SYM_CONV) THEN REWRITE_TAC[GSYM DIST_EQ_0]; + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN REWRITE_TAC[GSYM DIST_EQ_0]; ONCE_REWRITE_TAC[DIST_SYM]] THEN ASM_REAL_ARITH_TAC);; @@ -1939,7 +1939,7 @@ let INTERIOR_UNION_EQ_EMPTY = prove let INTERIOR_UNIONS_OPEN_SUBSETS = prove (`!s:real^N->bool. UNIONS {t | open t /\ t SUBSET s} = interior s`, - GEN_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC INTERIOR_UNIQUE THEN + GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC INTERIOR_UNIQUE THEN SIMP_TAC[OPEN_UNIONS; IN_ELIM_THM] THEN SET_TAC[]);; (* ------------------------------------------------------------------------- *) @@ -2384,7 +2384,7 @@ let DENSE_OPEN_INTER = prove MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `z:real^N` THEN RULE_ASSUM_TAC(REWRITE_RULE[SUBSET]) THEN ASM_SIMP_TAC[] THEN REPEAT(FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM REAL_NOT_LE])) THEN - CONV_TAC NORM_ARITH);; + (CONV_TAC "NORM_ARITH") NORM_ARITH);; let DENSE_OPEN_INTERS = prove (`!g s:real^N->bool. @@ -3125,7 +3125,7 @@ let EVENTUALLY_SCALABLE_PROPERTY = prove ASM_REWRITE_TAC[VECTOR_MUL_LZERO; REAL_LE_REFL]; FIRST_X_ASSUM(MP_TAC o SPEC `d / &2 / norm(x) % x:real^N`) THEN ASM_SIMP_TAC[VECTOR_MUL_EQ_0; NORM_MUL; REAL_DIV_EQ_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[NORM_EQ_0; REAL_LT_IMP_NZ; REAL_ABS_DIV; REAL_ABS_NUM] THEN ASM_SIMP_TAC[REAL_ABS_NORM; REAL_DIV_RMUL; NORM_EQ_0] THEN ANTS_TAC THENL [ASM_REAL_ARITH_TAC; DISCH_TAC] THEN @@ -3149,7 +3149,7 @@ let ONORM_LE_EVENTUALLY = prove ==> (onorm f <= b <=> eventually (\y. norm(f y) <= b * norm y) (at (vec 0)))`, REPEAT STRIP_TAC THEN ASM_SIMP_TAC[ONORM_LE_EQ] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC EVENTUALLY_SCALABLE_PROPERTY_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC EVENTUALLY_SCALABLE_PROPERTY_EQ THEN FIRST_ASSUM(fun th -> REWRITE_TAC[MATCH_MP LINEAR_CMUL th]) THEN REWRITE_TAC[NORM_MUL] THEN MESON_TAC[REAL_LE_LMUL; REAL_ABS_POS; REAL_MUL_AC]);; @@ -3581,7 +3581,7 @@ let [LIMPT_SEQUENTIAL; LIMPT_SEQUENTIAL_INJ; LIMPT_SEQUENTIAL_DECREASING] = (!n. (f n) IN s /\ ~(f n = x) /\ dist(f n,x) < inv(&n + &1)) /\ (!n. dist(f(SUC n),x) < dist(f n,x))` MP_TAC THENL - [MATCH_MP_TAC DEPENDENT_CHOICE THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [MATCH_MP_TAC DEPENDENT_CHOICE THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL [ASM_MESON_TAC[REAL_LT_01]; ALL_TAC] THEN MAP_EVERY X_GEN_TAC [`n:num`; `z:real^N`] THEN STRIP_TAC THEN REWRITE_TAC[GSYM CONJ_ASSOC; GSYM REAL_LT_MIN] THEN @@ -3880,7 +3880,7 @@ let LIM_NULL_NEG = prove (`!net f:A->real^N. ((\x. --(f x)) --> vec 0) net <=> (f --> vec 0) net`, REPEAT GEN_TAC THEN ONCE_REWRITE_TAC[VECTOR_ARITH `--x:real^N = --(&1) % x`] THEN - REWRITE_TAC[LIM_NULL_CMUL_EQ] THEN CONV_TAC REAL_RAT_REDUCE_CONV);; + REWRITE_TAC[LIM_NULL_CMUL_EQ] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let LIM_NULL_ADD = prove (`!net f g:A->real^N. @@ -4124,7 +4124,7 @@ let UNIFORM_LIM_ADD = prove GEN_TAC THEN REWRITE_TAC[AND_FORALL_THM] THEN MATCH_MP_TAC MONO_FORALL THEN X_GEN_TAC `n:B` THEN ASM_CASES_TAC `(P:B->bool) n` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC NORM_ARITH);; + (CONV_TAC "NORM_ARITH") NORM_ARITH);; let UNIFORM_LIM_SUB = prove (`!net:(A)net P f g l m. @@ -4145,7 +4145,7 @@ let UNIFORM_LIM_SUB = prove GEN_TAC THEN REWRITE_TAC[AND_FORALL_THM] THEN MATCH_MP_TAC MONO_FORALL THEN X_GEN_TAC `n:B` THEN ASM_CASES_TAC `(P:B->bool) n` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC NORM_ARITH);; + (CONV_TAC "NORM_ARITH") NORM_ARITH);; (* ------------------------------------------------------------------------- *) (* Limit under bilinear function, uniform version first. *) @@ -4617,7 +4617,7 @@ let SEQ_HARMONIC_RATIO = prove MP_TAC(ISPEC `abs b + &1` REAL_ARCH_SIMPLE) THEN REWRITE_TAC[EVENTUALLY_SEQUENTIALLY] THEN MATCH_MP_TAC MONO_EXISTS THEN REWRITE_TAC[GSYM DROP_EQ; DROP_ADD; DROP_VEC; DROP_CMUL; LIFT_DROP] THEN - REWRITE_TAC[GSYM REAL_OF_NUM_LE] THEN CONV_TAC REAL_FIELD);; + REWRITE_TAC[GSYM REAL_OF_NUM_LE] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD);; (* ------------------------------------------------------------------------- *) (* More properties of closed balls. *) @@ -4780,11 +4780,11 @@ let SPHERE_EQ_SING = prove MATCH_MP_TAC(SET_RULE `!y. (x IN s ==> y IN s /\ ~(y = x)) ==> ~(s = {x})`) THEN EXISTS_TAC `a - (x - a):real^N` THEN REWRITE_TAC[IN_SPHERE] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC NORM_ARITH);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "NORM_ARITH") NORM_ARITH);; let HAS_SIZE_SPHERE_1 = prove (`!a:real^N r. sphere(a,r) HAS_SIZE 1 <=> r = &0`, - REPEAT GEN_TAC THEN CONV_TAC(LAND_CONV HAS_SIZE_CONV) THEN + REPEAT GEN_TAC THEN (CONV_TAC "(LAND_CONV HAS_SIZE_CONV)") (LAND_CONV HAS_SIZE_CONV) THEN REWRITE_TAC[SPHERE_EQ_SING] THEN MESON_TAC[]);; let IMAGE_AFFINITY_CBALL = prove @@ -5348,7 +5348,7 @@ let INTER_BALLS_EQ_EMPTY = prove REWRITE_TAC[EXTENSION; NOT_IN_EMPTY; IN_INTER; IN_CBALL; IN_BALL] THEN (EQ_TAC THENL [ALL_TAC; - SPEC_TAC(`b % basis 1:real^N`,`v:real^N`) THEN CONV_TAC NORM_ARITH]) THEN + SPEC_TAC(`b % basis 1:real^N`,`v:real^N`) THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]) THEN DISCH_THEN(MP_TAC o GEN `c:real` o SPEC `c % basis 1:real^N`) THEN SIMP_TAC[NORM_MUL; NORM_BASIS; LE_REFL; DIMINDEX_GE_1; dist; NORM_NEG; VECTOR_SUB_LZERO; GSYM VECTOR_SUB_RDISTRIB; REAL_MUL_RID] THEN @@ -5649,7 +5649,7 @@ let CONVERGENT_EQ_CAUCHY_WITHIN = prove ASM_REWRITE_TAC[] THEN MAP_EVERY X_GEN_TAC [`x:real^M`; `y:real^M`] THEN STRIP_TAC THEN FIRST_X_ASSUM(fun th -> MP_TAC(SPEC `y:real^M` th) THEN MP_TAC(SPEC `x:real^M` th)) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NORM_ARITH; + ASM_REWRITE_TAC[] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; ASM_CASES_TAC `trivial_limit (at (a:real^M) within s)` THENL [ASM_REWRITE_TAC[LIM]; ALL_TAC] THEN FIRST_X_ASSUM(MP_TAC o @@ -5747,7 +5747,7 @@ let COMPACT_IMP_TOTALLY_BOUNDED = prove MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `x:num->real^N` THEN DISCH_TAC THEN MATCH_MP_TAC num_WF THEN X_GEN_TAC `n:num` THEN FIRST_X_ASSUM(SUBST1_TAC o SPEC `n:num`) THEN STRIP_TAC THEN - CONV_TAC SELECT_CONV THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN FIRST_X_ASSUM(MP_TAC o SPEC `IMAGE (x:num->real^N) {m | m < n}`) THEN SIMP_TAC[FINITE_IMAGE; FINITE_NUMSEG_LT; NOT_FORALL_THM; NOT_IMP] THEN REWRITE_TAC[IN_UNIONS; IN_IMAGE; IN_ELIM_THM] THEN ASM_MESON_TAC[IN_BALL]; @@ -5895,7 +5895,7 @@ let BOLZANO_WEIERSTRASS_IMP_BOUNDED = prove REWRITE_TAC[IN_IMAGE; IN_UNIV; LEFT_AND_EXISTS_THM] THEN ONCE_REWRITE_TAC[SWAP_EXISTS_THM] THEN REWRITE_TAC[UNWIND_THM2] THEN STRIP_TAC THEN FIRST_ASSUM(MP_TAC o SPEC `&1 / &2`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_THEN `k:num` STRIP_ASSUME_TAC) THEN FIRST_X_ASSUM(MP_TAC o SPEC `dist((x:num->real^N) k,l)`) THEN ASM_SIMP_TAC[DIST_POS_LT] THEN @@ -6208,7 +6208,7 @@ let BOUNDED_EQ_TOTALLY_BOUNDED = prove X_GEN_TAC `y:real^N` THEN REWRITE_TAC[IN_BALL] THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN FIRST_X_ASSUM(MP_TAC o SPEC `y:real^N`) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NORM_ARITH; + ASM_REWRITE_TAC[] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; FIRST_X_ASSUM(MP_TAC o SPEC `&1`) THEN REWRITE_TAC[REAL_LT_01] THEN STRIP_TAC THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ_ALT] BOUNDED_SUBSET)) THEN @@ -7152,7 +7152,7 @@ let [LIM_WITHIN_SEQUENTIALLY; dist(x n,a) < inv(&n + &1)) /\ (!n. dist(x(SUC n),a) < dist(x n,a))` MP_TAC THENL - [MATCH_MP_TAC DEPENDENT_CHOICE THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [MATCH_MP_TAC DEPENDENT_CHOICE THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL [ASM_MESON_TAC[REAL_LT_01; DIST_NZ]; ALL_TAC] THEN MAP_EVERY X_GEN_TAC [`n:num`; `x:real^M`] THEN STRIP_TAC THEN REWRITE_TAC[GSYM CONJ_ASSOC; GSYM REAL_LT_MIN] THEN @@ -7225,7 +7225,7 @@ let CONTINUOUS_WITHIN_SEQUENTIALLY_INJ, e <= dist((f:real^M->real^N) (x n),f a)) /\ (!n. dist(x(SUC n),a) < dist(x n,a))` MP_TAC THENL - [MATCH_MP_TAC DEPENDENT_CHOICE THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [MATCH_MP_TAC DEPENDENT_CHOICE THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL [FIRST_X_ASSUM(MP_TAC o SPEC `&1`) THEN REWRITE_TAC[REAL_LT_01]; MAP_EVERY X_GEN_TAC [`n:num`; `x:real^M`] THEN STRIP_TAC THEN @@ -10471,7 +10471,7 @@ let CONTINUOUS_ON_INTERMEDIATE_CLOSURE = prove ASM_REWRITE_TAC[] THEN REPEAT(ANTS_TAC ORELSE DISCH_TAC) THEN REPEAT(FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM REAL_NOT_LE])) THEN - CONV_TAC NORM_ARITH);; + (CONV_TAC "NORM_ARITH") NORM_ARITH);; let CONTINUOUS_ON_INTERMEDIATE_CLOSURE_EQ = prove (`!f:real^M->real^N s t. @@ -10777,7 +10777,7 @@ let CAUCHY_CONTINUOUS_UNIQUENESS_LEMMA = prove REPEAT(ANTS_TAC THENL [ASM_ARITH_TAC; DISCH_TAC]) THEN REPEAT(COND_CASES_TAC THEN ASM_REWRITE_TAC[]) THEN REPEAT(FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM REAL_NOT_LE])) THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; MATCH_MP_TAC MONO_FORALL THEN X_GEN_TAC `e:real` THEN ASM_CASES_TAC `&0 < e` THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `N:num` THEN DISCH_TAC THEN @@ -11993,8 +11993,7 @@ let CONTINUOUS_ON_COMPONENTS_GEN = prove `{x | x IN s /\ (f:real^M->real^N) x IN t} = UNIONS {{x | x IN c /\ f x IN t} | c IN components s}` SUBST1_TAC THENL - [CONV_TAC(LAND_CONV(SUBS_CONV - [ISPEC `s:real^M->bool` UNIONS_COMPONENTS])) THEN + [(CONV_TAC "(LAND_CONV(SUBS_CONV [ISPEC `s:real^M->bool` UNIONS_COMPONENTS]))") (LAND_CONV(SUBS_CONV [ISPEC `s:real^M->bool` UNIONS_COMPONENTS])) THEN REWRITE_TAC[UNIONS_GSPEC; IN_UNIONS] THEN SET_TAC[]; MATCH_MP_TAC OPEN_IN_UNIONS THEN REWRITE_TAC[FORALL_IN_GSPEC] THEN ASM_MESON_TAC[OPEN_IN_TRANS]]);; @@ -12010,8 +12009,7 @@ let CONTINUOUS_ON_COMPONENTS_FINITE = prove `{x | x IN s /\ (f:real^M->real^N) x IN t} = UNIONS {{x | x IN c /\ f x IN t} | c IN components s}` SUBST1_TAC THENL - [CONV_TAC(LAND_CONV(SUBS_CONV - [ISPEC `s:real^M->bool` UNIONS_COMPONENTS])) THEN + [(CONV_TAC "(LAND_CONV(SUBS_CONV [ISPEC `s:real^M->bool` UNIONS_COMPONENTS]))") (LAND_CONV(SUBS_CONV [ISPEC `s:real^M->bool` UNIONS_COMPONENTS])) THEN REWRITE_TAC[UNIONS_GSPEC; IN_UNIONS] THEN SET_TAC[]; MATCH_MP_TAC CLOSED_IN_UNIONS THEN ASM_SIMP_TAC[SIMPLE_IMAGE; FINITE_IMAGE; FORALL_IN_IMAGE] THEN @@ -12073,7 +12071,7 @@ let CONNECTED_EQ_CARD_COMPONENTS = prove GEN_TAC THEN REWRITE_TAC[CONNECTED_EQ_COMPONENTS_SING_EXISTS] THEN REWRITE_TAC[ARITH_RULE `n <= 1 <=> n = 0 \/ n = 1`] THEN REWRITE_TAC[IMP_IMP; LEFT_OR_DISTRIB; GSYM HAS_SIZE] THEN - CONV_TAC(ONCE_DEPTH_CONV HAS_SIZE_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV HAS_SIZE_CONV)") (ONCE_DEPTH_CONV HAS_SIZE_CONV) THEN REWRITE_TAC[COMPONENTS_EQ_EMPTY]);; let COMPONENTS_UNIV = prove @@ -12159,7 +12157,7 @@ let COMPONENTS_UNIQUE = prove ASM_REWRITE_TAC[] THEN STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM MEMBER_NOT_EMPTY]) THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `x:real^N` THEN STRIP_TAC THEN - CONJ_TAC THENL [ASM SET_TAC[]; CONV_TAC SYM_CONV] THEN + CONJ_TAC THENL [ASM SET_TAC[]; (CONV_TAC "SYM_CONV") SYM_CONV] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[CONNECTED_CONNECTED_COMPONENT; CONNECTED_COMPONENT_SUBSET] THEN MATCH_MP_TAC CONNECTED_COMPONENT_MAXIMAL THEN @@ -12492,7 +12490,7 @@ let COMPACT_UNIFORMLY_EQUICONTINUOUS = prove DISCH_THEN(MP_TAC o SPEC `f:real^M->real^N` o CONJUNCT2) THEN DISCH_THEN(fun th -> MP_TAC(SPEC `u:real^M` th) THEN MP_TAC(SPEC `v:real^M` th)) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NORM_ARITH);; + ASM_REWRITE_TAC[] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH);; let COMPACT_UNIFORMLY_CONTINUOUS = prove (`!f:real^M->real^N s. @@ -15055,7 +15053,7 @@ let FINITE_INTERVAL_1 = prove REWRITE_TAC[FINITE_DELETE] THEN REPEAT GEN_TAC THEN SUBGOAL_THEN `interval[a,b] = IMAGE lift {x | drop a <= x /\ x <= drop b}` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN CONJ_TAC THENL [MESON_TAC[LIFT_DROP]; ALL_TAC] THEN REWRITE_TAC[IN_INTERVAL_1; IN_ELIM_THM; LIFT_DROP]; SIMP_TAC[FINITE_IMAGE_INJ_EQ; LIFT_EQ; FINITE_REAL_INTERVAL]]);; @@ -15673,7 +15671,7 @@ let IS_INTERVAL_REFLECT = prove `is_interval(IMAGE (\x:real^N. --(&1) % x) s)` THEN CONJ_TAC THENL [REWRITE_TAC[VECTOR_MUL_LNEG; VECTOR_MUL_LID] THEN REWRITE_TAC[ETA_AX]; - REWRITE_TAC[IS_INTERVAL_SCALING_EQ] THEN CONV_TAC REAL_RAT_REDUCE_CONV]);; + REWRITE_TAC[IS_INTERVAL_SCALING_EQ] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]);; let lemma = prove (`!c. &0 < c @@ -16401,7 +16399,7 @@ let LIM_NULL_ONORM = prove ASM_SIMP_TAC[LINEAR_COMPOSE_SUB; LINEAR_COMPOSE_NEG; ETA_AX] THEN MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] REAL_LE_TRANS) THEN MATCH_MP_TAC REAL_EQ_IMP_LE THEN AP_TERM_TAC THEN - REWRITE_TAC[FUN_EQ_THM] THEN CONV_TAC VECTOR_ARITH);; + REWRITE_TAC[FUN_EQ_THM] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH);; let LIM_MATRIX_COMPONENTWISE = prove (`!net A:A->real^M^N B. @@ -16468,7 +16466,7 @@ let MAPPING_CONNECTED_ONTO_SEGMENT = prove REWRITE_TAC[GSYM SUBSET_ANTISYM_EQ; SUBSET; FORALL_IN_IMAGE] THEN ASM_SIMP_TAC[IN_ELIM_THM; REAL_LE_RDIV_EQ; REAL_LE_LDIV_EQ; NORM_ARITH `~(u:real^N = v) ==> &0 < dist(u,x) + dist(v,x)`] THEN - CONJ_TAC THENL [CONV_TAC NORM_ARITH; REWRITE_TAC[IN_IMAGE]] THEN + CONJ_TAC THENL [(CONV_TAC "NORM_ARITH") NORM_ARITH; REWRITE_TAC[IN_IMAGE]] THEN X_GEN_TAC `t:real` THEN STRIP_TAC THEN MP_TAC(ISPECL [`IMAGE (\x:real^M. lift(dist(u,x) / (dist(u,x) + dist(v,x)))) s`; @@ -16676,7 +16674,7 @@ let HOMEOMORPHIC_SYM = prove (`!s t. s homeomorphic t <=> t homeomorphic s`, REPEAT GEN_TAC THEN REWRITE_TAC[homeomorphic; homeomorphism] THEN GEN_REWRITE_TAC RAND_CONV [SWAP_EXISTS_THM] THEN - REPEAT(AP_TERM_TAC THEN ABS_TAC) THEN CONV_TAC TAUT);; + REPEAT(AP_TERM_TAC THEN ABS_TAC) THEN (CONV_TAC "TAUT") TAUT);; let HOMEOMORPHISM_COMPOSE = prove (`!f:real^M->real^N g h:real^N->real^P k s t u. @@ -17252,7 +17250,7 @@ let INJECTIVE_MAP_OPEN_IFF_CLOSED = prove REPEAT STRIP_TAC THEN MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `?g:real^N->real^M. homeomorphism (s,t) (f,g)` THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC HOMEOMORPHISM_INJECTIVE_OPEN_MAP_EQ; + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC HOMEOMORPHISM_INJECTIVE_OPEN_MAP_EQ; MATCH_MP_TAC HOMEOMORPHISM_INJECTIVE_CLOSED_MAP_EQ] THEN ASM_REWRITE_TAC[]);; @@ -17468,7 +17466,7 @@ let DERIVED_SET_OF_TRANSLATION = prove (subtopology euclidean (IMAGE (\x. a + x) u)) derived_set_of (IMAGE (\x. a + x) s) = IMAGE (\x. a + x) (subtopology euclidean u derived_set_of s)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[DERIVED_SET_OF_RESTRICT] THEN REWRITE_TAC[TOPSPACE_EUCLIDEAN_SUBTOPOLOGY] THEN SIMP_TAC[GSYM IMAGE_INTER_INJ; @@ -17488,7 +17486,7 @@ let CLOSURE_OF_TRANSLATION = prove (subtopology euclidean (IMAGE (\x. a + x) u)) closure_of (IMAGE (\x. a + x) s) = IMAGE (\x. a + x) (subtopology euclidean u closure_of s)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[CLOSURE_OF_RESTRICT] THEN REWRITE_TAC[TOPSPACE_EUCLIDEAN_SUBTOPOLOGY] THEN SIMP_TAC[GSYM IMAGE_INTER_INJ; @@ -17528,7 +17526,7 @@ let DERIVED_SET_OF_INJECTIVE_LINEAR_IMAGE = prove linear f /\ (!x y. f x = f y ==> x = y) ==> (subtopology euclidean (IMAGE f u)) derived_set_of (IMAGE f s) = IMAGE f (subtopology euclidean u derived_set_of s)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[DERIVED_SET_OF_RESTRICT] THEN REWRITE_TAC[TOPSPACE_EUCLIDEAN_SUBTOPOLOGY] THEN FIRST_ASSUM(fun th -> REWRITE_TAC[GSYM(MATCH_MP IMAGE_INTER_INJ th)]) THEN @@ -17546,7 +17544,7 @@ let CLOSURE_OF_INJECTIVE_LINEAR_IMAGE = prove linear f /\ (!x y. f x = f y ==> x = y) ==> (subtopology euclidean (IMAGE f u)) closure_of (IMAGE f s) = IMAGE f (subtopology euclidean u closure_of s)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[CLOSURE_OF_RESTRICT] THEN REWRITE_TAC[TOPSPACE_EUCLIDEAN_SUBTOPOLOGY] THEN FIRST_ASSUM(fun th -> REWRITE_TAC[GSYM(MATCH_MP IMAGE_INTER_INJ th)]) THEN @@ -17564,7 +17562,7 @@ let FRONTIER_OF_INJECTIVE_LINEAR_IMAGE = prove linear f /\ (!x y. f x = f y ==> x = y) ==> (subtopology euclidean (IMAGE f u)) frontier_of (IMAGE f s) = IMAGE f (subtopology euclidean u frontier_of s)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[FRONTIER_OF_RESTRICT] THEN REWRITE_TAC[TOPSPACE_EUCLIDEAN_SUBTOPOLOGY] THEN FIRST_ASSUM(fun th -> REWRITE_TAC[GSYM(MATCH_MP IMAGE_INTER_INJ th)]) THEN @@ -17582,7 +17580,7 @@ let INTERIOR_OF_INJECTIVE_LINEAR_IMAGE = prove linear f /\ (!x y. f x = f y ==> x = y) ==> (subtopology euclidean (IMAGE f u)) interior_of (IMAGE f s) = IMAGE f (subtopology euclidean u interior_of s)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[INTERIOR_OF_RESTRICT] THEN REWRITE_TAC[TOPSPACE_EUCLIDEAN_SUBTOPOLOGY] THEN FIRST_ASSUM(fun th -> REWRITE_TAC[GSYM(MATCH_MP IMAGE_INTER_INJ th)]) THEN @@ -17958,7 +17956,7 @@ let HOMEOMORPHIC_OPEN_INTERVAL_UNIV_1 = prove REPEAT STRIP_TAC THEN MP_TAC(SPECL [`a:real^1`; `b:real^1`; `--vec 1:real^1`; `vec 1:real^1`] HOMEOMORPHIC_OPEN_INTERVALS_1) THEN - ASM_REWRITE_TAC[DROP_VEC; DROP_NEG] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[DROP_VEC; DROP_NEG] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ_ALT] HOMEOMORPHIC_TRANS) THEN POP_ASSUM_LIST(K ALL_TAC) THEN REWRITE_TAC[HOMEOMORPHIC_MINIMAL; IN_UNIV] THEN @@ -17974,7 +17972,7 @@ let HOMEOMORPHIC_OPEN_INTERVAL_UNIV_1 = prove COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN STRIP_TAC THEN GEN_REWRITE_TAC RAND_CONV [GSYM VECTOR_MUL_LID] THEN AP_THM_TAC THEN AP_TERM_TAC THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; X_GEN_TAC `y:real^1` THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[IN_INTERVAL_1; DROP_NEG; DROP_VEC; REAL_BOUNDS_LT] THEN REWRITE_TAC[DROP_CMUL; REAL_ABS_MUL; REAL_ABS_INV] THEN @@ -17989,7 +17987,7 @@ let HOMEOMORPHIC_OPEN_INTERVAL_UNIV_1 = prove REAL_ARITH `~(&0 <= x) ==> &0 <= &1 - x`] THEN GEN_REWRITE_TAC RAND_CONV [GSYM VECTOR_MUL_LID] THEN AP_THM_TAC THEN AP_TERM_TAC THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; MATCH_MP_TAC CONTINUOUS_AT_IMP_CONTINUOUS_ON THEN X_GEN_TAC `x:real^1` THEN REWRITE_TAC[IN_INTERVAL_1; DROP_NEG; DROP_VEC] THEN @@ -18110,7 +18108,7 @@ let HOMEOMORPHIC_BALL_UNIV = prove REWRITE_TAC[GSYM REAL_INV_MUL; REAL_SUB_0; REAL_INV_EQ_1] THEN REWRITE_TAC[NORM_MUL; REAL_ABS_INV] THEN ASM_SIMP_TAC[REAL_ARITH `x < &1 ==> abs(&1 - x) = &1 - x`] THEN - POP_ASSUM MP_TAC THEN CONV_TAC REAL_FIELD; + POP_ASSUM MP_TAC THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; X_GEN_TAC `y:real^N` THEN REWRITE_TAC[NORM_MUL; REAL_ABS_INV] THEN ASM_SIMP_TAC[NORM_POS_LE; REAL_ARITH `&0 <= y ==> inv(abs(&1 + y)) * z = z / (&1 + y)`] THEN @@ -18118,7 +18116,7 @@ let HOMEOMORPHIC_BALL_UNIV = prove `&0 <= y ==> &0 < &1 + y`] THEN CONJ_TAC THENL [REAL_ARITH_TAC; DISJ1_TAC] THEN REWRITE_TAC[GSYM REAL_INV_MUL; REAL_SUB_0; REAL_INV_EQ_1] THEN - MP_TAC(ISPEC `y:real^N` NORM_POS_LE) THEN CONV_TAC REAL_FIELD; + MP_TAC(ISPEC `y:real^N` NORM_POS_LE) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; MATCH_MP_TAC CONTINUOUS_ON_MUL THEN REWRITE_TAC[CONTINUOUS_ON_ID] THEN GEN_REWRITE_TAC (LAND_CONV o RAND_CONV) [GSYM o_DEF] THEN MATCH_MP_TAC CONTINUOUS_ON_INV THEN @@ -18402,11 +18400,11 @@ let [CONTINUOUS_DISCONNECTED_RANGE_CONSTANT_EQ; ==> (!x. x IN connected_component s y ==> P x)`) THEN REWRITE_TAC[FORALL_IN_IMAGE] THEN X_GEN_TAC `z:real^M` THEN DISCH_TAC THEN FIRST_X_ASSUM(MP_TAC o SPEC `z:real^M`) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NORM_ARITH; + ASM_REWRITE_TAC[] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; MATCH_MP_TAC(SET_RULE `(!x. x IN s /\ x IN t ==> F) ==> s INTER t INTER u = {}`) THEN REWRITE_TAC[IN_BALL; IN_CBALL; IN_DIFF; IN_UNIV] THEN - UNDISCH_TAC `&0 < e` THEN CONV_TAC NORM_ARITH; + UNDISCH_TAC `&0 < e` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; EXISTS_TAC `(f:real^M->real^N) x` THEN ASM_SIMP_TAC[CENTRE_IN_CBALL; REAL_HALF; REAL_LT_IMP_LE; IN_INTER] THEN REWRITE_TAC[IN] THEN @@ -18445,7 +18443,7 @@ let [CONTINUOUS_DISCONNECTED_RANGE_CONSTANT_EQ; DISCH_THEN(fun th -> MP_TAC(SPEC `a:real^M` th) THEN MP_TAC(SPEC `b:real^M` th)) THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(SUBST1_TAC o SYM) THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN SIMP_TAC[BASIS_NONZERO; LE_REFL; DIMINDEX_GE_1; REAL_LE_REFL]]]);; let CONTINUOUS_DISCONNECTED_RANGE_CONSTANT = prove @@ -19051,7 +19049,7 @@ let FRONTIER_SCALING = prove ASM_CASES_TAC `s:real^N->bool = {}` THEN ASM_REWRITE_TAC[COND_ID] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[CLOSURE_EMPTY; EMPTY_DIFF] THEN SET_TAC[]; - CONV_TAC SYM_CONV THEN MATCH_MP_TAC IMAGE_DIFF_INJ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC IMAGE_DIFF_INJ THEN ASM_SIMP_TAC[VECTOR_MUL_LCANCEL]]);; let FRONTIER_AFFINITY = prove @@ -19377,11 +19375,11 @@ let REAL_LT_AFFINITY = prove let REAL_AFFINITY_EQ = prove (`!m c x y. ~(m = &0) ==> (m * x + c = y <=> x = inv(m) * y + --(c / m))`, - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let REAL_EQ_AFFINITY = prove (`!m c x y. ~(m = &0) ==> (y = m * x + c <=> inv(m) * y + --(c / m) = x)`, - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let VECTOR_AFFINITY_EQ = prove (`!m c x y. ~(m = &0) @@ -19592,7 +19590,7 @@ let NEARBY_INVERTIBLE_MATRIX_GEN = prove DISCH_THEN(MP_TAC o AP_TERM `( * ) (det(matrix_inv(B:real^N^N)))`) THEN REWRITE_TAC[GSYM DET_MUL; REAL_MUL_RZERO; MATRIX_ADD_LDISTRIB] THEN DISCH_THEN(SUBST1_TAC o SYM) THEN AP_TERM_TAC THEN AP_TERM_TAC THEN - REWRITE_TAC[MATRIX_MUL_RMUL] THEN AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[MATRIX_MUL_RMUL] THEN AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ASM_SIMP_TAC[MATRIX_MUL_LINV]);; let MATRIX_WLOG_INVERTIBLE = prove @@ -19608,7 +19606,7 @@ let MATRIX_WLOG_INVERTIBLE = prove FIRST_ASSUM(MP_TAC o SPEC `vec 0:real^1` o GEN_REWRITE_RULE I [CLOSED_LIMPT]) THEN ASM_SIMP_TAC[IN_ELIM_THM; DROP_VEC; MATRIX_CMUL_LZERO; MATRIX_ADD_RID] THEN - ANTS_TAC THENL [ALL_TAC; CONV_TAC TAUT] THEN + ANTS_TAC THENL [ALL_TAC; (CONV_TAC "TAUT") TAUT] THEN MP_TAC(ISPEC `A:real^N^N` NEARBY_INVERTIBLE_MATRIX) THEN DISCH_THEN(X_CHOOSE_THEN `e:real` STRIP_ASSUME_TAC) THEN REWRITE_TAC[LIMPT_APPROACHABLE] THEN X_GEN_TAC `k:real` THEN @@ -19634,7 +19632,7 @@ let SYLVESTER_DETERMINANT_IDENTITY = prove REWRITE_TAC[MATRIX_MUL_LID; MATRIX_MUL_RID; MATRIX_MUL_ASSOC]; REWRITE_TAC[DET_MUL] THEN FIRST_ASSUM(MP_TAC o GEN_REWRITE_RULE I [INVERTIBLE_DET_NZ]) THEN - CONV_TAC REAL_RING]; + (CONV_TAC "REAL_RING") REAL_RING]; X_GEN_TAC `A:real^N^N` THEN EXISTS_TAC `&1` THEN REWRITE_TAC[REAL_LT_01; SET_RULE `{x | x IN s /\ P x} = s INTER {x | P x}`] THEN @@ -19688,7 +19686,7 @@ let SYLVESTER_DETERMINANT_IDENTITY = prove (\i. (mat 1 + (A':real^N^N) ** (B':real^N^N))$i$p i))` THEN CONJ_TAC THENL [ALL_TAC; - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN CONJ_TAC THENL [SET_TAC[]; SIMP_TAC[IN_ELIM_THM; IMP_CONJ]] THEN X_GEN_TAC `p:num->num` THEN REPEAT STRIP_TAC THEN REWRITE_TAC[REAL_ENTIRE; PRODUCT_EQ_0_NUMSEG] THEN DISJ2_TAC THEN @@ -19707,7 +19705,7 @@ let SYLVESTER_DETERMINANT_IDENTITY = prove MATCH_MP_TAC SUM_EQ_0_NUMSEG THEN REPEAT STRIP_TAC THEN REWRITE_TAC[REAL_ENTIRE] THEN DISJ1_TAC THEN EXPAND_TAC "A'" THEN ASM_SIMP_TAC[LAMBDA_BETA; GSYM NOT_LT]] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_EQ_GENERAL THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_EQ_GENERAL THEN EXISTS_TAC `\f:num->num. f` THEN REWRITE_TAC[IN_ELIM_THM] THEN CONJ_TAC THEN X_GEN_TAC `p:num->num` THEN STRIP_TAC THENL [REWRITE_TAC[MESON[] `(?!x. P x /\ x = y) <=> P y`] THEN CONJ_TAC THENL @@ -19757,7 +19755,7 @@ let SYLVESTER_DETERMINANT_IDENTITY = prove ASM_SIMP_TAC[LAMBDA_BETA; ARITH_RULE `m + 1 <= i ==> ~(i <= m)`]]]) in REPEAT GEN_TAC THEN DISJ_CASES_TAC (ARITH_RULE `dimindex(:M) <= dimindex(:N) \/ dimindex(:N) <= dimindex(:M)`) - THENL [ALL_TAC; CONV_TAC SYM_CONV] THEN + THENL [ALL_TAC; (CONV_TAC "SYM_CONV") SYM_CONV] THEN MATCH_MP_TAC lemma2 THEN ASM_REWRITE_TAC[]);; let COFACTOR_MATRIX_MUL = prove @@ -19920,7 +19918,7 @@ let RANK_COFACTOR_EQ_FULL = prove dimindex(:N) = 1 \/ rank A = dimindex(:N)`, REWRITE_TAC[RANK_EQ_FULL_DET; DET_COFACTOR; REAL_POW_EQ_0] THEN SIMP_TAC[DIMINDEX_GE_1; ARITH_RULE `1 <= n ==> (n - 1 = 0 <=> n = 1)`] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; let COFACTOR_EQ_0 = prove (`!A:real^N^N. cofactor A = mat 0 <=> rank(A) < dimindex(:N) - 1`, @@ -20182,7 +20180,7 @@ let NORMAL_MATRIX_SAME_EIGENPAIRS_TRANSP = prove ASM_REWRITE_TAC[MATRIX_MUL_LMUL; MATRIX_MUL_RMUL] THEN REWRITE_TAC[MATRIX_MUL_LID; MATRIX_MUL_RID] THEN REWRITE_TAC[MATRIX_NEG_MINUS1; MATRIX_SUB; MATRIX_CMUL_ADD_LDISTRIB] THEN - REWRITE_TAC[MATRIX_CMUL_ASSOC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[MATRIX_CMUL_ASSOC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[MATRIX_ADD_AC]);; let NORMAL_MATRIX_SAME_EIGENVECTORS_TRANSP = prove @@ -20481,7 +20479,7 @@ let SELF_ADJOINT_HAS_EIGENVECTOR_IN_SUBSPACE = prove ASM_REWRITE_TAC[GSYM NORM_POW_2] THEN REWRITE_TAC[NORM_POW_2] THEN MATCH_MP_TAC(REAL_ARITH `&4 * (z - y) = x ==> &0 <= x ==> y <= z`) THEN - REWRITE_TAC[DOT_SYM] THEN CONV_TAC REAL_RING; + REWRITE_TAC[DOT_SYM] THEN (CONV_TAC "REAL_RING") REAL_RING; DISCH_THEN(MP_TAC o GEN `y:real^N` o DISCH `(y:real^N) IN s` o MATCH_MP lemma o C MP (ASSUME `(y:real^N) IN s`) o SPEC `y:real^N`) THEN ASM_SIMP_TAC[] THEN EXPAND_TAC "p" THEN @@ -20532,7 +20530,7 @@ let SELF_ADJOINT_HAS_EIGENVECTOR_BASIS_OF_SUBSPACE = prove ASM_REWRITE_TAC[RIGHT_EXISTS_AND_THM] THEN DISCH_THEN(X_CHOOSE_THEN `v:real^N` MP_TAC) THEN ASM_CASES_TAC `v:real^N = vec 0` THEN ASM_REWRITE_TAC[NORM_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(REPEAT_TCL CONJUNCTS_THEN ASSUME_TAC) THEN FIRST_X_ASSUM(MP_TAC o SPEC `{y:real^N | y IN s /\ orthogonal v y}`) THEN REWRITE_TAC[SUBSPACE_ORTHOGONAL_TO_VECTOR; IN_ELIM_THM] THEN @@ -20614,7 +20612,7 @@ let EIGENVALUE_LOWERBOUND_DOT = prove FIRST_X_ASSUM MATCH_MP_TAC THEN EXISTS_TAC `v:real^N` THEN ASM_REWRITE_TAC[] THEN UNDISCH_TAC `norm(v:real^N) = &1` THEN ONCE_REWRITE_TAC[GSYM CONTRAPOS_THM] THEN SIMP_TAC[NORM_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let EIGENVALUE_LOWERBOUND_DOT_EQ = prove (`!A:real^N^N a. @@ -21031,7 +21029,7 @@ let POSITIVE_SEMIDEFINITE_ZERO_ROW = prove POSITIVE_SEMIDEFINITE_DIAGONAL_INEQUALITY) THEN ASM_SIMP_TAC[REAL_MUL_LZERO; REAL_LE_POW_2; REAL_ARITH `&0 <= x ==> (x <= &0 <=> x = &0)`] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let POSITIVE_SEMIDEFINITE_ZERO_COLUMN = prove (`!A:real^N^N i. @@ -21044,7 +21042,7 @@ let POSITIVE_SEMIDEFINITE_ZERO_COLUMN = prove POSITIVE_SEMIDEFINITE_DIAGONAL_INEQUALITY) THEN ASM_SIMP_TAC[REAL_MUL_RZERO; REAL_LE_POW_2; REAL_ARITH `&0 <= x ==> (x <= &0 <=> x = &0)`] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let POSITIVE_SEMIDEFINITE_TRACE_EQ_0 = prove (`!A:real^N^N. positive_semidefinite A ==> (trace A = &0 <=> A = mat 0)`, @@ -21144,7 +21142,7 @@ let POSITIVE_SEMIDEFINITE_AND_ORTHOGONAL = prove `(if i = j then x else y:real) * (if i = j then a else b) = (if j = i then x * a else y * b)`] THEN SIMP_TAC[SUM_DELTA; REAL_MUL_LZERO; REAL_POS; FINITE_NUMSEG] THEN - SIMP_TAC[mat; LAMBDA_BETA; IN_NUMSEG] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + SIMP_TAC[mat; LAMBDA_BETA; IN_NUMSEG] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SUBGOAL_THEN `!x. x * x = &1 /\ &0 <= x ==> x = &1` (fun th -> MESON_TAC[th]) THEN REWRITE_TAC[REAL_RING `x * x = &1 <=> x = &1 \/ x = -- &1`] THEN @@ -21260,7 +21258,7 @@ let POSITIVE_SEMIDEFINITE_COVARIANCE_UNIQUE = prove ASM_REWRITE_TAC[MATRIX_SUB_EQ] THEN SUBGOAL_THEN `transp(U:real^N^N) ** (S:real^N^N) = A` ASSUME_TAC THENL [ALL_TAC; - ASM_REWRITE_TAC[MATRIX_SUB_REFL] THEN CONV_TAC SYM_CONV THEN + ASM_REWRITE_TAC[MATRIX_SUB_REFL] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[MATRIX_SUB_EQ] THEN GEN_REWRITE_TAC BINOP_CONV [GSYM TRANSP_TRANSP] THEN ONCE_REWRITE_TAC[MATRIX_TRANSP_MUL] THEN @@ -21760,7 +21758,7 @@ let ONORM_INVERSE_DET_LE_ONORM_POW_ALT = prove AP_TERM_TAC THEN MP_TAC(ISPEC `f:real^N->real^N` MATRIX_VECTOR_MUL) THEN ASM_REWRITE_TAC[] THEN DISCH_THEN SUBST1_TAC THEN ABS_TAC THEN AP_THM_TAC THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC MATRIX_INV_UNIQUE THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MATRIX_INV_UNIQUE THEN ASM_SIMP_TAC[GSYM MATRIX_COMPOSE; MATRIX_I]);; let HADAMARD_INEQUALITY_PSD = prove @@ -21997,7 +21995,7 @@ let RIGHT_POLAR_DECOMPOSITION = prove FIRST_ASSUM(MATCH_MP_TAC o REWRITE_RULE[diagonal_matrix]) THEN ASM_MESON_TAC[]; REWRITE_TAC[NORM_EQ_SQUARE; DOT_LMUL; DOT_RMUL; REAL_POS] THEN - ASM_SIMP_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_SIMP_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(REAL_FIELD `s pow 2 = x /\ ~(x = &0) ==> inv s * inv s * x = &1`) THEN ASM_SIMP_TAC[SQRT_POW2]]; @@ -22016,7 +22014,7 @@ let RIGHT_POLAR_DECOMPOSITION = prove [MATCH_MP_TAC PAIRWISE_ORTHOGONAL_INDEPENDENT THEN ASM_REWRITE_TAC[IN_UNION; DE_MORGAN_THM] THEN REPEAT STRIP_TAC THEN REPEAT(FIRST_X_ASSUM(MP_TAC o SPEC `vec 0:real^N`)) THEN - ASM_REWRITE_TAC[NORM_0] THEN CONV_TAC REAL_RAT_REDUCE_CONV; + ASM_REWRITE_TAC[NORM_0] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ONCE_REWRITE_TAC[UNION_COMM] THEN ASM_SIMP_TAC[CARD_UNION; GSYM DISJOINT] THEN MATCH_MP_TAC(ARITH_RULE `s + b:num = n ==> c + b = n ==> s = c`)] THEN @@ -22113,7 +22111,7 @@ let RIGHT_POLAR_DECOMPOSITION = prove ASM_SIMP_TAC[LAMBDA_BETA] THEN REWRITE_TAC[COND_RATOR; COND_RAND; SQRT_0; REAL_MUL_LZERO; REAL_MUL_RZERO] THEN - CONV_TAC(LAND_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN + (CONV_TAC "(LAND_CONV(ONCE_DEPTH_CONV SYM_CONV))") (LAND_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN ASM_SIMP_TAC[SUM_DELTA; IN_NUMSEG] THEN EXPAND_TAC "U" THEN ASM_SIMP_TAC[LAMBDA_BETA] THEN REWRITE_TAC[MATRIX_VECTOR_MUL_ASSOC] THEN COND_CASES_TAC THEN @@ -22622,7 +22620,7 @@ let SERIES_EVEN = prove [ALL_TAC; REWRITE_TAC[VSUM_PAIR] THEN REWRITE_TAC[EVEN_ADD; EVEN_MULT; ARITH_EVEN; VECTOR_ADD_RID]] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_EQ_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_EQ_SUPERSET THEN REWRITE_TAC[FINITE_NUMSEG; IN_NUMSEG; SUBSET_NUMSEG] THEN CONJ_TAC THENL [ARITH_TAC; ALL_TAC] THEN X_GEN_TAC `p:num` THEN DISCH_TAC THEN @@ -23036,7 +23034,7 @@ let SUMMABLE_IFF_EVENTUALLY = prove (ANTS_TAC THENL [ASM_ARITH_TAC; ALL_TAC]) THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN AP_TERM_TAC THEN MATCH_MP_TAC VSUM_EQ THEN ASM_SIMP_TAC[IN_INTER; IN_NUMSEG] THEN - REPEAT STRIP_TAC THENL [ALL_TAC; CONV_TAC SYM_CONV] THEN + REPEAT STRIP_TAC THENL [ALL_TAC; (CONV_TAC "SYM_CONV") SYM_CONV] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[] THEN ASM_ARITH_TAC);; @@ -23143,7 +23141,7 @@ let SUMMABLE_IMP_TOZERO = prove [ASM_ARITH_TAC; ALL_TAC] THEN REWRITE_TAC[VSUM_CLAUSES_NUMSEG; LE_0] THEN REWRITE_TAC[NORM_ARITH `dist(x,vec 0) = norm x`] THEN - COND_CASES_TAC THEN ASM_REWRITE_TAC[NORM_0] THEN CONV_TAC NORM_ARITH);; + COND_CASES_TAC THEN ASM_REWRITE_TAC[NORM_0] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH);; let SUMMABLE_IMP_BOUNDED = prove (`!f:num->real^N k. summable k f ==> bounded (IMAGE f k)`, @@ -23586,7 +23584,7 @@ let SERIES_INJECTIVE_IMAGE = prove summable (IMAGE f s) (\n. lift(norm(x n))) /\ (!m n. m IN s /\ n IN s /\ f m = f n ==> m = n) ==> (((x o f) sums l) s <=> (x sums l) (IMAGE f s))`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN REWRITE_TAC[sums] THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[sums] THEN MATCH_MP_TAC LIM_TRANSFORM_EQ THEN REWRITE_TAC[] THEN MATCH_MP_TAC SERIES_INJECTIVE_IMAGE_STRONG THEN ASM_REWRITE_TAC[]);; @@ -24080,7 +24078,7 @@ let CAUCHY_EQ_SUMMABLE = prove FIRST_X_ASSUM(MP_TAC o SPECL [`m:num`; `n:num`]) THEN ANTS_TAC THENL [ASM_ARITH_TAC; ALL_TAC] THEN COND_CASES_TAC THENL [ALL_TAC; ASM_ARITH_TAC] THEN - REWRITE_TAC[ADD1] THEN CONV_TAC NORM_ARITH]);; + REWRITE_TAC[ADD1] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]);; let CAUCHY_ABSOLUTELY_SUMMABLE_SUBSEQUENCE = prove (`!x:num->real^N. @@ -24105,7 +24103,7 @@ let CAUCHY_ABSOLUTELY_SUMMABLE_SUBSEQUENCE = prove MATCH_MP_TAC SUMMABLE_COMPARISON THEN EXISTS_TAC `\n. inv(&2 pow n)` THEN CONJ_TAC THENL [REWRITE_TAC[o_DEF; REAL_INV_POW] THEN MATCH_MP_TAC SUMMABLE_REAL_GP THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; EXISTS_TAC `0` THEN X_GEN_TAC `n:num` THEN STRIP_TAC THEN REWRITE_TAC[] THEN MATCH_MP_TAC REAL_LT_IMP_LE THEN REWRITE_TAC[NORM_LIFT; REAL_ABS_DIST] THEN @@ -24497,7 +24495,7 @@ let CLOSEST_POINT_EXISTS = prove (`!s a. closed s /\ ~(s = {}) ==> (closest_point s a) IN s /\ !y. y IN s ==> dist(a,closest_point s a) <= dist(a,y)`, - REWRITE_TAC[closest_point] THEN CONV_TAC(ONCE_DEPTH_CONV SELECT_CONV) THEN + REWRITE_TAC[closest_point] THEN (CONV_TAC "(ONCE_DEPTH_CONV SELECT_CONV)") (ONCE_DEPTH_CONV SELECT_CONV) THEN REWRITE_TAC[DISTANCE_ATTAINS_INF]);; let CLOSEST_POINT_IN_SET = prove @@ -24778,7 +24776,7 @@ let SETDIST_TRIANGLE = prove X_GEN_TAC `y:real^N` THEN STRIP_TAC THEN REWRITE_TAC[REAL_LE_SUB_RADD] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `dist(x:real^N,y)` THEN - ASM_SIMP_TAC[SETDIST_LE_DIST] THEN CONV_TAC NORM_ARITH);; + ASM_SIMP_TAC[SETDIST_LE_DIST] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH);; let SETDIST_SINGS = prove (`!x y. setdist({x},{y}) = dist(x,y)`, @@ -24801,7 +24799,7 @@ let SETDIST_SCALING = prove REWRITE_TAC[FORALL_IN_IMAGE; DIST_MUL] THEN X_GEN_TAC `c:real` THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN ASM_SIMP_TAC[GSYM REAL_LE_LDIV_EQ; GSYM REAL_ABS_NZ] THEN - CONV_TAC SYM_CONV THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN W(MP_TAC o PART_MATCH (lhand o rand) REAL_LE_INF_EQ o lhand o snd) THEN REWRITE_TAC[FORALL_IN_GSPEC; RIGHT_IMP_FORALL_THM; IMP_IMP] THEN DISCH_THEN MATCH_MP_TAC THEN CONJ_TAC THENL [ASM SET_TAC[]; ALL_TAC] THEN @@ -25091,7 +25089,7 @@ let SETDIST_FRONTIERS = prove ASM_CASES_TAC `DISJOINT s (frontier t:real^N->bool)` THENL [ASM_MESON_TAC[SETDIST_FRONTIER]; ALL_TAC] THEN GEN_REWRITE_TAC LAND_CONV [GSYM(CONJUNCT1 SETDIST_CLOSURE)] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SETDIST_SUBSETS_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SETDIST_SUBSETS_EQ THEN REWRITE_TAC[frontier; SUBSET_DIFF; SUBSET_REFL; IN_DIFF] THEN MAP_EVERY X_GEN_TAC [`x:real^N`; `y:real^N`] THEN STRIP_TAC THEN ONCE_REWRITE_TAC[SWAP_EXISTS_THM] THEN EXISTS_TAC `y:real^N` THEN @@ -25205,7 +25203,7 @@ let SETDIST_BALLS = prove [ALL_TAC; MATCH_MP_TAC REAL_LE_SETDIST THEN ASM_REWRITE_TAC[CBALL_EQ_EMPTY; REAL_NOT_LT; IN_CBALL] THEN - CONV_TAC NORM_ARITH] THEN + (CONV_TAC "NORM_ARITH") NORM_ARITH] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `dist(a + r / dist(a,b) % (b - a):real^N, b - s / dist(a,b) % (b - a))` THEN @@ -25382,7 +25380,7 @@ let UNIFORMLY_CONTINUOUS_ON_SETDIST_EQ = prove ASSUME_TAC THENL [X_GEN_TAC `n:num` THEN REMOVE_THEN "*" (SUBST1_TAC o SPEC `n:num`) THEN - CONV_TAC SELECT_CONV THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN SUBGOAL_THEN `bounded (IMAGE ((f:real^M->real^N) o x o (r:num->num)) {k | k < n} UNION @@ -25979,7 +25977,7 @@ let HAUSDIST_SCALING = prove IMAGE (\x. c * x) ({f x t | x IN s} UNION {f x s | x IN t})`] THEN ABBREV_TAC `ds = {setdist({y:real^N},t) | y IN s} UNION {setdist ({y},s) | y IN t}` THEN - CONV_TAC(ONCE_DEPTH_CONV let_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV let_CONV)") (ONCE_DEPTH_CONV let_CONV) THEN ASM_CASES_TAC `ds:real->bool = {}` THEN ASM_REWRITE_TAC[IMAGE_EQ_EMPTY; REAL_MUL_RZERO; FORALL_IN_IMAGE] THEN GEN_REWRITE_TAC RAND_CONV [COND_RAND] THEN @@ -25996,7 +25994,7 @@ let HAUSDIST_SCALING = prove REWRITE_TAC[FORALL_IN_IMAGE] THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN ASM_SIMP_TAC[GSYM REAL_LE_RDIV_EQ; GSYM REAL_ABS_NZ] THEN - X_GEN_TAC `c:real` THEN CONV_TAC SYM_CONV THEN + X_GEN_TAC `c:real` THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_SUP_LE_EQ THEN ASM_REWRITE_TAC[]]);; let th = prove @@ -26494,7 +26492,7 @@ let HAUSDIST_SUMS_LE = prove (CONJ_TAC THENL [MATCH_MP_TAC SETDIST_LE_DIST THEN ASM SET_TAC[]; REPEAT(FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM REAL_NOT_LT])) THEN - CONV_TAC NORM_ARITH]));; + (CONV_TAC "NORM_ARITH") NORM_ARITH]));; let HAUSDIST_SUMS_LE_LCANCEL = prove (`!s t u:real^N->bool. @@ -26567,7 +26565,7 @@ let HAUSDIST_COMPACT_NONTRIVIAL = prove inf {e | &0 <= e /\ s SUBSET {x + y | x IN t /\ norm y <= e} /\ t SUBSET {x + y | x IN s /\ norm y <= e}}`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_INF_UNIQUE THEN REWRITE_TAC[FORALL_IN_GSPEC; EXISTS_IN_GSPEC] THEN REWRITE_TAC[SUBSET; IN_ELIM_THM] THEN @@ -26667,7 +26665,7 @@ let HAUSDIST_ALT = prove ASM_REWRITE_TAC[] THEN DISCH_TAC THEN TRANS_TAC REAL_LE_TRANS `dist(z:real^N,x)` THEN ASM_SIMP_TAC[SETDIST_LE_DIST; IN_SING] THEN - UNDISCH_TAC `dist(y:real^N,x) <= b` THEN CONV_TAC NORM_ARITH);; + UNDISCH_TAC `dist(y:real^N,x) <= b` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH);; let DIAMETERS_HAUSDIST_BOUND = prove (`!s t:real^N->bool. @@ -26911,7 +26909,7 @@ let COMPLETE_HAUSDIST_UNIV = prove X_GEN_TAC `e:real` THEN DISCH_TAC THEN MP_TAC(ISPECL [`inv(&2)`; `e:real`] REAL_ARCH_POW_INV) THEN ASM_REWRITE_TAC[REAL_POW_INV] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_TAC `M:num`) THEN EXISTS_TAC `(N:num->num) M` THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN @@ -27001,7 +26999,7 @@ let COMPLETE_HAUSDIST_UNIV = prove EXISTS_TAC `\n. inv(&2 pow n)` THEN ASM_SIMP_TAC[NORM_LIFT; REAL_ABS_DIST; REAL_LT_IMP_LE] THEN REWRITE_TAC[REAL_INV_POW; o_DEF] THEN - MATCH_MP_TAC SUMMABLE_REAL_GP THEN CONV_TAC REAL_RAT_REDUCE_CONV; + MATCH_MP_TAC SUMMABLE_REAL_GP THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; REWRITE_TAC[GSYM CONVERGENT_EQ_CAUCHY]] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `l:real^N` THEN DISCH_TAC THEN ONCE_REWRITE_TAC[CONJ_SYM] THEN @@ -27020,7 +27018,7 @@ let COMPLETE_HAUSDIST_UNIV = prove [REWRITE_TAC[VSUM_DIFFS_ALT] THEN FIRST_ASSUM(fun th -> REWRITE_TAC[MATCH_MP (ARITH_RULE `k + 1 <= m ==> m - 1 + 1 = m /\ k <= m - 1`) th]) THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; MATCH_MP_TAC VSUM_NORM_TRIANGLE THEN REWRITE_TAC[FINITE_NUMSEG]] THEN REWRITE_TAC[ONCE_REWRITE_RULE[DIST_SYM] (GSYM dist)] THEN TRANS_TAC REAL_LE_TRANS `sum (k..m-1) (\i. inv(&2 pow i))` THEN @@ -27029,7 +27027,7 @@ let COMPLETE_HAUSDIST_UNIV = prove ASM_SIMP_TAC[GSYM ADD1; REAL_LT_IMP_LE]; ALL_TAC] THEN REWRITE_TAC[REAL_INV_POW; SUM_GP] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN COND_CASES_TAC THENL [ASM_ARITH_TAC; ALL_TAC] THEN MATCH_MP_TAC(REAL_ARITH `x <= inv y ==> x / (&1 / &2) <= &2 / y`) THEN @@ -27070,7 +27068,7 @@ let COMPLETE_HAUSDIST_UNIV = prove ASM_SIMP_TAC[GSYM ADD1; REAL_LT_IMP_LE]; ALL_TAC] THEN REWRITE_TAC[REAL_INV_POW; SUM_GP] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN COND_CASES_TAC THENL [ASM_ARITH_TAC; ALL_TAC] THEN MATCH_MP_TAC(REAL_ARITH `x <= inv y ==> x / (&1 / &2) <= &2 / y`) THEN @@ -27089,7 +27087,7 @@ let COMPLETE_HAUSDIST_UNIV = prove X_GEN_TAC `e:real` THEN DISCH_TAC THEN MP_TAC(ISPECL [`inv(&2)`; `e / &2`] REAL_ARCH_POW_INV) THEN ASM_REWRITE_TAC[REAL_POW_INV; REAL_HALF] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC MONO_EXISTS THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN X_GEN_TAC `m:num` THEN DISCH_TAC THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REAL_ARITH `inv i < e / &2 ==> x <= &2 / i ==> x < e`)) THEN @@ -27098,7 +27096,7 @@ let COMPLETE_HAUSDIST_UNIV = prove REWRITE_TAC[REAL_ARITH `&2 / x <= &2 / y <=> inv x <= inv y`] THEN MATCH_MP_TAC REAL_LE_INV2 THEN REWRITE_TAC[REAL_LT_POW2] THEN MATCH_MP_TAC REAL_POW_MONO THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]);; let COMPLETE_HAUSDIST = prove (`!f:num->(real^N->bool) c. @@ -27209,7 +27207,7 @@ let TOTALLY_BOUNDED_HAUSDIST = prove REWRITE_TAC[UNWIND_THM1] THEN MAP_EVERY UNDISCH_TAC [`norm(y:real^N) < e / &4`; `dist(x:real^N,z) < e / &4`] THEN - CONV_TAC NORM_ARITH] THEN + (CONV_TAC "NORM_ARITH") NORM_ARITH] THEN FIRST_X_ASSUM(MP_TAC o SPEC `x:real^N` o MATCH_MP (SET_RULE `closure s SUBSET u ==> !x. x IN t /\ t SUBSET s /\ s SUBSET closure s ==> x IN u`)) THEN @@ -27238,7 +27236,7 @@ let COMPACT_HAUSDIST = prove [MATCH_MP_TAC DEPENDENT_CHOICE THEN CONJ_TAC THENL [MP_TAC(ISPECL [`c:real^N->bool`; `&1 / &2`] TOTALLY_BOUNDED_HAUSDIST) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[COMPACT_IMP_BOUNDED] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[COMPACT_IMP_BOUNDED] THEN DISCH_THEN(X_CHOOSE_THEN `k:(real^N->bool)->bool` STRIP_ASSUME_TAC) THEN SUBGOAL_THEN `UNIONS @@ -27312,7 +27310,7 @@ let COMPACT_HAUSDIST = prove X_GEN_TAC `e:real` THEN DISCH_TAC THEN MP_TAC(ISPECL [`inv(&2)`; `e:real`] REAL_ARCH_POW_INV) THEN ASM_REWRITE_TAC[REAL_POW_INV; GE] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_TAC `N:num`) THEN EXISTS_TAC `N + 1` THEN MATCH_MP_TAC WLOG_LT THEN ASM_REWRITE_TAC[HAUSDIST_REFL] THEN CONJ_TAC THENL [MESON_TAC[HAUSDIST_SYM]; ALL_TAC] THEN @@ -27339,7 +27337,7 @@ let COMPACT_HAUSDIST = prove ASM_SIMP_TAC[GSYM ADD1; REAL_LT_IMP_LE]; ALL_TAC] THEN REWRITE_TAC[REAL_INV_POW; SUM_GP] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN COND_CASES_TAC THENL [ASM_ARITH_TAC; ALL_TAC] THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REAL_ARITH `inv i < e ==> x <= inv(&2) * inv i ==> x / (&1 / &2) < e`)) THEN @@ -27593,7 +27591,7 @@ let CLOSURE_DYADIC_RATIONALS = prove MP_TAC(SPECL [`inv(&2)`; `e / &(dimindex(:N))`] REAL_ARCH_POW_INV) THEN ASM_SIMP_TAC[REAL_LT_DIV; REAL_OF_NUM_LT; LE_1; DIMINDEX_GE_1; REAL_POW_INV; REAL_LT_RDIV_EQ] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC MONO_EXISTS THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC MONO_EXISTS THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN EXISTS_TAC `(lambda i. floor(&2 pow n * (x:real^N)$i)):real^N` THEN ASM_SIMP_TAC[LAMBDA_BETA; FLOOR; dist; NORM_MUL] THEN @@ -28043,7 +28041,7 @@ let CARD_EQ_OPEN_SETS = prove REWRITE_TAC[le_c; IN_UNIV; IN_ELIM_THM] THEN EXISTS_TAC `\x. ball(x % basis 1:real^N,&1)` THEN REWRITE_TAC[OPEN_BALL; GSYM SUBSET_ANTISYM_EQ; SUBSET_BALLS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[NORM_ARITH `dist(p:real^N,q) + &1 <= &1 <=> p = q`] THEN REWRITE_TAC[VECTOR_MUL_RCANCEL; EQ_SYM_EQ] THEN SIMP_TAC[BASIS_NONZERO; DIMINDEX_GE_1; ARITH]]);; @@ -28054,7 +28052,7 @@ let CARD_EQ_CLOSED_SETS = prove `{s:real^N->bool | closed s} = IMAGE (\s. (:real^N) DIFF s) {s | open s}` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_ELIM_THM; GSYM OPEN_CLOSED] THEN MESON_TAC[COMPL_COMPL]; TRANS_TAC CARD_EQ_TRANS `{s:real^N->bool | open s}` THEN @@ -28319,7 +28317,7 @@ let CLOSED_LOCAL_HOMEOMORPHISM_IMP_PROPER_GEN = prove ASM_CASES_TAC `y:real^M = x` THEN ASM_REWRITE_TAC[] THEN ASM_CASES_TAC `(y:real^M) IN s` THEN ASM_REWRITE_TAC[] THEN ASM_CASES_TAC `(f:real^M->real^N) y = b` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; REWRITE_TAC[INJECTIVE_ALT] THEN DISCH_THEN(X_CHOOSE_THEN `a:num->real^M` STRIP_ASSUME_TAC)] THEN SUBGOAL_THEN `(!n:num. a n IN s) /\ (!n. (f:real^M->real^N) (a n) = b)` @@ -28371,7 +28369,7 @@ let CLOSED_LOCAL_HOMEOMORPHISM_IMP_PROPER_GEN = prove MP_TAC(ISPECL [`inv(&2)`; `e / dist((f:real^M->real^N)(x 0),b)`] REAL_ARCH_POW_INV) THEN ASM_SIMP_TAC[REAL_POW_INV; REAL_LT_DIV; DIST_POS_LT] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `N:num` THEN ASM_SIMP_TAC[REAL_LT_RDIV_EQ; DIST_POS_LT] THEN REWRITE_TAC[ONCE_REWRITE_RULE[REAL_MUL_SYM] (GSYM real_div)] THEN @@ -28384,7 +28382,7 @@ let CLOSED_LOCAL_HOMEOMORPHISM_IMP_PROPER_GEN = prove ASM_SIMP_TAC[REAL_LE_LMUL; DIST_POS_LE; REAL_POW_MONO; REAL_ARITH `&1 <= &2`] THEN SPEC_TAC(`n:num`,`m:num`) THEN INDUCT_TAC THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_LE_REFL; REAL_MUL_RID; real_pow] THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REWRITE_RULE[IMP_CONJ_ALT] REAL_LE_TRANS)) THEN @@ -28457,7 +28455,7 @@ let CLOSED_LOCAL_HOMEOMORPHISM_IMP_PROPER_GEN = prove MP_TAC(SPECL [`N':num`; `(a:num->real^M) N`] th)) THEN ASM_REWRITE_TAC[IN_BALL; IN_CBALL; DISJOINT; EXTENSION; IN_INTER; NOT_IN_EMPTY] THEN - CONV_TAC NORM_ARITH]]);; + (CONV_TAC "NORM_ARITH") NORM_ARITH]]);; let CLOSED_LOCAL_HOMEOMORPHISM_IMP_PROPER = prove (`!f:real^M->real^N s t. @@ -29102,7 +29100,7 @@ let LOCALLY_OPEN_BASIS = prove SUBGOAL_THEN `x IN ball(b:real^N,inv(&n + &1)) /\ a IN ball(b,inv(&n + &1))` MP_TAC THENL [ASM SET_TAC[]; REWRITE_TAC[IN_BALL]] THEN - UNDISCH_TAC `inv (&n + &1) < r / &2` THEN CONV_TAC NORM_ARITH]);; + UNDISCH_TAC `inv (&n + &1) < r / &2` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]);; let LOCALLY_AND_OPEN_IN_IDEMPOT = prove (`!P s:real^N->bool. @@ -30910,7 +30908,7 @@ let GDELTA_POINTS_OF_CONTINUITY_WITHIN = prove REWRITE_TAC[IN_BALL] THEN STRIP_TAC THEN FIRST_X_ASSUM(fun th -> MP_TAC(SPEC `y:real^M` th) THEN MP_TAC(SPEC `z:real^M` th)) THEN ONCE_REWRITE_TAC[DIST_SYM] THEN ASM_REWRITE_TAC[] THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; FIRST_X_ASSUM(MP_TAC o SPEC `e:real`) THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(X_CHOOSE_THEN `u:real^M->bool` STRIP_ASSUME_TAC) THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [OPEN_CONTAINS_BALL]) THEN @@ -31826,7 +31824,7 @@ let BAIRE_MONO = prove (`!f:real^M->real^N s m n. baire m s f /\ m <= n ==> baire n s f`, GEN_TAC THEN GEN_TAC THEN REWRITE_TAC[IMP_CONJ_ALT] THEN MATCH_MP_TAC TRANSITIVE_STEPWISE_LE THEN - REPEAT(CONJ_TAC THENL [CONV_TAC TAUT; ALL_TAC]) THEN + REPEAT(CONJ_TAC THENL [(CONV_TAC "TAUT") TAUT; ALL_TAC]) THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN REWRITE_TAC[baire] THEN EXISTS_TAC `(\k. f):num->real^M->real^N` THEN ASM_SIMP_TAC[LIM_CONST]);; @@ -32075,7 +32073,7 @@ let BAIRE_UNIFORM_LIMIT = prove REWRITE_TAC[REAL_POW_ADD; REAL_INV_MUL; GSYM REAL_MUL_ASSOC] THEN REWRITE_TAC[GSYM REAL_ADD_LDISTRIB] THEN GEN_REWRITE_TAC RAND_CONV [GSYM REAL_MUL_RID] THEN - MATCH_MP_TAC REAL_LE_LMUL THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_LE_LMUL THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SIMP_TAC[REAL_LE_INV_EQ; REAL_LT_IMP_LE; REAL_LT_POW2]; ALL_TAC] THEN SUBGOAL_THEN @@ -32137,13 +32135,13 @@ let BAIRE_UNIFORM_LIMIT = prove ASM_SIMP_TAC[o_DEF] THEN REWRITE_TAC[real_div; LIFT_CMUL; REAL_INV_POW] THEN MATCH_MP_TAC SUMMABLE_CMUL THEN MATCH_MP_TAC SUMMABLE_REAL_GP THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; REWRITE_TAC[summable; RIGHT_IMP_EXISTS_THM; SKOLEM_THM]] THEN DISCH_THEN(X_CHOOSE_THEN `t:num->real^M->real^N` STRIP_ASSUME_TAC) THEN SUBGOAL_THEN `g = \x. (f:num->real^M->real^N) (r 0) x + (g x - f (r 0) x)` SUBST1_TAC THENL - [REWRITE_TAC[FUN_EQ_THM] THEN CONV_TAC VECTOR_ARITH; + [REWRITE_TAC[FUN_EQ_THM] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; MATCH_MP_TAC BAIRE_ADD THEN ASM_REWRITE_TAC[ETA_AX]] THEN REWRITE_TAC[baire] THEN EXISTS_TAC `t:num->real^M->real^N` THEN SUBGOAL_THEN @@ -32163,7 +32161,7 @@ let BAIRE_UNIFORM_LIMIT = prove DIMINDEX_GE_1; EVENTUALLY_SEQUENTIALLY] THEN SIMP_TAC[REAL_POW_INV; REAL_LT_RDIV_EQ; REAL_OF_NUM_LT; LE_1; DIMINDEX_GE_1] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[ONCE_REWRITE_RULE[REAL_MUL_SYM] (GSYM real_div)] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `N:num` THEN DISCH_TAC THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN @@ -32187,20 +32185,20 @@ let BAIRE_UNIFORM_LIMIT = prove MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] REAL_LE_TRANS) THEN MATCH_MP_TAC VSUM_NORM_LE THEN ASM_SIMP_TAC[FINITE_NUMSEG]; REWRITE_TAC[real_div; SUM_LMUL; SUM_GP; REAL_INV_POW] THEN - REWRITE_TAC[GSYM real_div] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[GSYM real_div] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC ALWAYS_EVENTUALLY THEN X_GEN_TAC `m:num` THEN REWRITE_TAC[] THEN COND_CASES_TAC THEN ASM_SIMP_TAC[REAL_HALF; REAL_MUL_RZERO; REAL_LT_IMP_LE] THEN TRANS_TAC REAL_LE_TRANS `&(dimindex (:N)) / &2 pow N` THEN ASM_SIMP_TAC[REAL_LT_IMP_LE] THEN REWRITE_TAC[real_div] THEN MATCH_MP_TAC REAL_LE_LMUL THEN - REWRITE_TAC[REAL_POS] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[REAL_POS] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[GSYM ADD1; real_pow] THEN MATCH_MP_TAC(REAL_ARITH `x <= a /\ &0 <= y ==> (&1 / &2 * x - &1 / &2 * y) * &2 <= a`) THEN REWRITE_TAC[real_div; REAL_MUL_LID; REAL_INV_POW] THEN SIMP_TAC[REAL_LE_INV_EQ; REAL_POW_LE; REAL_POS] THEN MATCH_MP_TAC REAL_POW_MONO_INV THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV]]; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]]; ALL_TAC] THEN CONJ_TAC THENL [X_GEN_TAC `j:num` THEN FIRST_X_ASSUM MATCH_MP_TAC THEN EXISTS_TAC @@ -32258,7 +32256,7 @@ let BAIRE_UNIFORM_LIMIT = prove ASM_REWRITE_TAC[REAL_ARITH `&0 < e / &3 <=> &0 < e`]] THEN MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ] EVENTUALLY_MONO) THEN X_GEN_TAC `i:num` THEN REMOVE_THEN "+" (MP_TAC o SPEC `i:num`) THEN - REWRITE_TAC[] THEN CONV_TAC NORM_ARITH);; + REWRITE_TAC[] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH);; let BAIRE_UNIFORM_APPROXIMATION = prove (`!f:real^M->real^N s k. @@ -32514,7 +32512,7 @@ let BAIRE0_INDICATOR = prove [MATCH_MP_TAC FINITE_SUBSET THEN EXISTS_TAC `{vec 0:real^1,vec 1}` THEN REWRITE_TAC[FINITE_INSERT; FINITE_EMPTY] THEN SET_TAC[]; SUBGOAL_THEN `~(vec 0:real^1 = vec 1)` MP_TAC THENL - [REWRITE_TAC[VEC_EQ] THEN CONV_TAC NUM_REDUCE_CONV; SET_TAC[]]]; + [REWRITE_TAC[VEC_EQ] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; SET_TAC[]]]; STRIP_TAC THEN ASM_REWRITE_TAC[indicator; IN_UNIV; NOT_IN_EMPTY] THEN REWRITE_TAC[CONTINUOUS_ON_CONST]]);; @@ -32543,7 +32541,7 @@ let BAIRE1_INDICATOR = prove SUBST1_TAC THENL [REWRITE_TAC[EXTENSION; IN_ELIM_THM; indicator; IN_UNIV; IN_DELETE] THEN X_GEN_TAC `x:real^N` THEN ASM_CASES_TAC `(x:real^N) IN s` THEN - ASM_REWRITE_TAC[VEC_EQ] THEN CONV_TAC NUM_REDUCE_CONV; + ASM_REWRITE_TAC[VEC_EQ] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ALL_TAC]; SUBGOAL_THEN `(:real^N) DIFF s = {x | x IN (:real^N) /\ @@ -32552,7 +32550,7 @@ let BAIRE1_INDICATOR = prove [REWRITE_TAC[EXTENSION; IN_ELIM_THM; indicator; IN_UNIV; IN_DELETE] THEN X_GEN_TAC `x:real^N` THEN ASM_CASES_TAC `(x:real^N) IN s` THEN ASM_REWRITE_TAC[VEC_EQ; IN_DIFF; IN_UNIV] THEN - CONV_TAC NUM_REDUCE_CONV; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ALL_TAC]] THEN MATCH_MP_TAC FSIGMA_BAIRE1_PREIMAGE_OPEN THEN ASM_SIMP_TAC[ETA_AX; FSIGMA_UNIV; OPEN_DELETE; OPEN_UNIV]; @@ -32645,7 +32643,7 @@ let BAIRE_INDICATOR_TRANSLATION = prove SUBST1_TAC THENL [MATCH_MP_TAC(SET_RULE `(!x y. f x = f y ==> x = y) ==> s = {x | f x IN IMAGE f s}`) THEN - CONV_TAC VECTOR_ARITH; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; MATCH_MP_TAC BAIRE_INDICATOR_CONTINUOUS_PREIMAGE_UNIV THEN ASM_SIMP_TAC[CONTINUOUS_ON_ADD; CONTINUOUS_ON_ID; CONTINUOUS_ON_CONST]]; SUBGOAL_THEN `IMAGE (\x:real^N. a + x) s = {x | x - a IN s}` @@ -32846,7 +32844,7 @@ let BAIRE_INDICATOR_SUC,BAIRE_INDICATOR_DELTA,FGSIGMA_BAIRE_PREIMAGE_OPEN_ALT, REWRITE_TAC[GSYM ADD1] THEN ONCE_REWRITE_TAC[MESON[] `(!f u n. P f u n) <=> (!f n u. P f u n)`] THEN ONCE_REWRITE_TAC[SWAP_FORALL_THM] THEN REWRITE_TAC[AND_FORALL_THM] THEN - MATCH_MP_TAC num_INDUCTION THEN CONV_TAC NUM_REDUCE_CONV THEN + MATCH_MP_TAC num_INDUCTION THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN CONJ_TAC THENL [REWRITE_TAC[GSYM FSIGMA_BAIRE; GSYM GDELTA_BAIRE] THEN REWRITE_TAC[GSYM BAIRE1_INDICATOR]; @@ -33429,7 +33427,7 @@ let BOREL_BOREL_MEASURABLE_PREIMAGE = prove {x | drop x > e}} |n| N <= n} |N,e| N IN (:num) /\ e IN {r | rational r /\ &0 < r}}` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN GEN_REWRITE_TAC I [EXTENSION] THEN X_GEN_TAC `x:real^M` THEN REWRITE_TAC[UNIONS_GSPEC; INTERS_GSPEC; IN_ELIM_THM] THEN REWRITE_TAC[IN_UNIV; LIFT_DROP] THEN @@ -33492,7 +33490,7 @@ let BOREL_MEASURABLE_INDICATOR = prove SUBST1_TAC THENL [REWRITE_TAC[indicator; EXTENSION; IN_ELIM_THM; IN_SING; IN_UNIV] THEN REWRITE_TAC[COND_RAND; COND_RATOR; VEC_EQ] THEN - CONV_TAC NUM_REDUCE_CONV THEN MESON_TAC[]; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN MESON_TAC[]; MATCH_MP_TAC BOREL_BOREL_MEASURABLE_PREIMAGE THEN ASM_REWRITE_TAC[ETA_AX; BOREL_UNIV] THEN SIMP_TAC[CLOSED_IMP_BOREL; CLOSED_SING]]; @@ -33536,7 +33534,7 @@ let BOREL_MEASURABLE_ON_INDICATOR = prove SUBST1_TAC THENL [REWRITE_TAC[indicator; EXTENSION; IN_ELIM_THM; IN_INTER; IN_SING] THEN REWRITE_TAC[COND_RAND; COND_RATOR; VEC_EQ] THEN - CONV_TAC NUM_REDUCE_CONV THEN MESON_TAC[]; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN MESON_TAC[]; MATCH_MP_TAC BOREL_BOREL_MEASURABLE_PREIMAGE THEN ASM_SIMP_TAC[ETA_AX; CLOSED_IMP_BOREL; CLOSED_SING]]; MATCH_MP_TAC BOREL_MEASURABLE_EQ THEN @@ -33642,7 +33640,7 @@ let BOREL_MEASURABLE_PREIMAGE_BOREL = prove MATCH_MP_TAC REAL_LE_LMUL THEN SIMP_TAC[REAL_POW_LE; REAL_POS] THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP (REAL_ARITH `x < e ==> e <= d ==> x <= d`))] THEN - MATCH_MP_TAC REAL_POW_MONO THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC REAL_POW_MONO THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_ARITH_TAC]) in REPEAT GEN_TAC THEN EQ_TAC THEN SIMP_TAC[BOREL_BOREL_MEASURABLE_PREIMAGE] THEN DISCH_TAC THEN @@ -33872,7 +33870,7 @@ let BOREL_MEASURABLE_CASES = prove [REPEAT STRIP_TAC THEN REWRITE_TAC[indicator] THEN COND_CASES_TAC THEN ASM_SIMP_TAC[DROP_VEC; REAL_SUB_REFL; REAL_SUB_RZERO] THEN - CONV_TAC VECTOR_ARITH; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; MATCH_MP_TAC BOREL_MEASURABLE_ON_SUBSET THEN EXISTS_TAC `(:real^M)` THEN REWRITE_TAC[SUBSET_UNIV] THEN MATCH_MP_TAC BOREL_MEASURABLE_ADD THEN CONJ_TAC THEN @@ -34374,7 +34372,7 @@ let FSIGMA_PREIMAGE_CARD_GE = prove [ASM_SIMP_TAC[]; ALL_TAC] THEN FIRST_X_ASSUM(MP_TAC o SPECL [`x:real^M`; `y:real^M`]) THEN ASM_REWRITE_TAC[IN_BALL] THEN UNDISCH_TAC `q < r / &4` THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; REWRITE_TAC[PAIRWISE_IMAGE] THEN SIMP_TAC[pairwise] THEN DISCH_TAC THEN MATCH_MP_TAC HAS_SIZE_IMAGE_INJ THEN ASM_REWRITE_TAC[] THEN ASM_MESON_TAC[SET_RULE @@ -34622,14 +34620,14 @@ let SILVERMAN_STEINHAUSLIKE = prove REWRITE_TAC[SUBTOPOLOGY_UNIV; GSYM OPEN_IN] THEN ANTS_TAC THENL [REWRITE_TAC[FORALL_IN_UNION; FORALL_IN_IMAGE] THEN SUBGOAL_THEN `(\x:real^N. r - x) = (\x. r + x) o (--)` SUBST1_TAC THENL - [REWRITE_TAC[o_DEF] THEN ABS_TAC THEN CONV_TAC VECTOR_ARITH; ALL_TAC] THEN + [REWRITE_TAC[o_DEF] THEN ABS_TAC THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; ALL_TAC] THEN ASM_SIMP_TAC[IMAGE_o; OPEN_NEGATIONS; OPEN_TRANSLATION] THEN CONJ_TAC THEN X_GEN_TAC `u:real^N->bool` THEN DISCH_TAC THENL [TRANS_TAC SUBSET_TRANS `closure(s:real^N->bool)`; SUBGOAL_THEN `(:real^N) = IMAGE (\x. r + x) (IMAGE (--) (:real^N))` SUBST1_TAC THENL - [REWRITE_TAC[GSYM IMAGE_o] THEN CONV_TAC SYM_CONV THEN + [REWRITE_TAC[GSYM IMAGE_o] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_UNIV; o_DEF; EXISTS_REFL; VECTOR_ARITH `r + --x:real^N = y <=> x = r - y`]; @@ -35252,7 +35250,7 @@ let SUBORDINATE_PARTITION_OF_UNITY = prove `s INTER n:real^N->bool`] THEN ASM_SIMP_TAC[IN_INTER; OPEN_IN_OPEN_INTER] THEN CONJ_TAC THENL [X_GEN_TAC `y:real^N` THEN DISCH_TAC THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_EQ_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_EQ_SUPERSET THEN ASM_REWRITE_TAC[SUBSET_RESTRICT] THEN X_GEN_TAC `v:real^N->bool` THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN ASM_REWRITE_TAC[IN_ELIM_THM] THEN DISCH_TAC THEN diff --git a/Multivariate/transcendentals.ml b/Multivariate/transcendentals.ml index abdf5e71..8be1ab59 100644 --- a/Multivariate/transcendentals.ml +++ b/Multivariate/transcendentals.ml @@ -83,7 +83,7 @@ let CEXP_CONVERGES_UNIFORMLY_CAUCHY = prove REWRITE_TAC[SERIES_CAUCHY; LEFT_FORALL_IMP_THM] THEN MP_TAC(SPEC `&2 * norm(Cx(R))` REAL_ARCH_SIMPLE) THEN REWRITE_TAC[COMPLEX_NORM_CX; COMPLEX_NORM_DIV; COMPLEX_NORM_POW] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(TAUT `(a ==> b) /\ (c ==> d) ==> a ==> (b ==> c) ==> d`) THEN CONJ_TAC THENL [MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `N:num` THEN DISCH_TAC THEN @@ -150,7 +150,7 @@ let CEXP_CONVERGES_UNIFORMLY = prove FIRST_X_ASSUM(MP_TAC o SPECL [`n + 1`; `n + M + 1`; `z:complex`]) THEN ASM_SIMP_TAC[ARITH_RULE `(n >= N ==> n + 1 >= N) /\ M <= n + M + 1`] THEN ASM_SIMP_TAC[REAL_LT_IMP_LE; VSUM_ADD_SPLIT; LE_0] THEN - CONV_TAC(ONCE_DEPTH_CONV(ALPHA_CONV `i:num`)) THEN NORM_ARITH_TAC);; + (CONV_TAC "(ONCE_DEPTH_CONV(ALPHA_CONV `i:num`))") (ONCE_DEPTH_CONV(ALPHA_CONV `i:num`)) THEN NORM_ARITH_TAC);; let HAS_COMPLEX_DERIVATIVE_CEXP = prove (`!z. (cexp has_complex_derivative cexp(z)) (at z)`, @@ -172,7 +172,7 @@ let HAS_COMPLEX_DERIVATIVE_CEXP = prove REWRITE_TAC[NOT_SUC; SUC_SUB1; GSYM REAL_OF_NUM_SUC; FACT; CX_ADD; CX_MUL; GSYM REAL_OF_NUM_MUL; COMPLEX_INV_MUL] THEN REWRITE_TAC[REAL_ARITH `~(&n + &1 = &0)`] THEN - ABBREV_TAC `a = inv(Cx(&(FACT n)))` THEN CONV_TAC COMPLEX_FIELD; + ABBREV_TAC `a = inv(Cx(&(FACT n)))` THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; REPEAT STRIP_TAC THEN MP_TAC(SPECL [`norm(z:complex) + &1`; `e:real`] CEXP_CONVERGES_UNIFORMLY) THEN @@ -256,7 +256,7 @@ let CEXP_ADD_MUL = prove MATCH_MP_TAC HAS_COMPLEX_DERIVATIVE_ZERO_UNIQUE THEN EXISTS_TAC `Cx(&0)` THEN REWRITE_TAC[OPEN_UNIV; CONVEX_UNIV; IN_UNIV] THEN REWRITE_TAC[COMPLEX_ADD_RID; COMPLEX_NEG_0; CEXP_0; COMPLEX_MUL_RID] THEN - GEN_TAC THEN COMPLEX_DIFF_TAC THEN CONV_TAC COMPLEX_RING);; + GEN_TAC THEN COMPLEX_DIFF_TAC THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let CEXP_NEG_RMUL = prove (`!z. cexp(z) * cexp(--z) = Cx(&1)`, @@ -270,13 +270,13 @@ let CEXP_NEG_LMUL = prove let CEXP_NEG = prove (`!z. cexp(--z) = inv(cexp z)`, MP_TAC CEXP_NEG_LMUL THEN MATCH_MP_TAC MONO_FORALL THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CEXP_ADD = prove (`!w z. cexp(w + z) = cexp(w) * cexp(z)`, REPEAT GEN_TAC THEN MP_TAC(SPECL [`w:complex`; `z:complex`] CEXP_ADD_MUL) THEN - MP_TAC(SPEC `z:complex` CEXP_NEG_LMUL) THEN CONV_TAC COMPLEX_FIELD);; + MP_TAC(SPEC `z:complex` CEXP_NEG_LMUL) THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CEXP_SUB = prove (`!w z. cexp(w - z) = cexp(w) / cexp(z)`, @@ -286,7 +286,7 @@ let CEXP_SUB = prove let CEXP_NZ = prove (`!z. ~(cexp(z) = Cx(&0))`, MP_TAC CEXP_NEG_LMUL THEN MATCH_MP_TAC MONO_FORALL THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CEXP_N = prove (`!n x. cexp(Cx(&n) * x) = cexp(x) pow n`, @@ -321,7 +321,7 @@ let CEXP_BOUND_BLEMMA = prove HAS_COMPLEX_DERIVATIVE_AT_WITHIN; HAS_COMPLEX_DERIVATIVE_CEXP] THEN DISCH_THEN(MP_TAC o SPECL [`z:complex`; `Cx(&0)`]) THEN REWRITE_TAC[COMPLEX_NORM_0; CEXP_0; COMPLEX_SUB_RZERO] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC(NORM_ARITH `norm(y) = &1 /\ d <= e ==> norm(x - y) <= d ==> norm(x) <= &1 + e`) THEN REWRITE_TAC[COMPLEX_NORM_CX; real_div; REAL_ABS_NUM] THEN @@ -337,7 +337,7 @@ let CEXP_BOUND_HALF = prove SIMP_TAC[COMPACT_CONTINUOUS_IMAGE; COMPACT_CBALL; CONTINUOUS_ON_CEXP; IMAGE_EQ_EMPTY; CBALL_EQ_EMPTY; FORALL_IN_IMAGE; EXISTS_IN_IMAGE; IN_CBALL; dist; COMPLEX_SUB_LZERO; NORM_NEG] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_THEN `w:complex` STRIP_ASSUME_TAC) THEN FIRST_ASSUM(MP_TAC o SPEC `w:complex` o MATCH_MP CEXP_BOUND_BLEMMA) THEN FIRST_X_ASSUM(MP_TAC o SPEC `z:complex`) THEN @@ -353,7 +353,7 @@ let CEXP_BOUND_LEMMA = prove CEXP_BOUND_HALF] THEN DISCH_THEN(MP_TAC o SPECL [`z:complex`; `Cx(&0)`]) THEN REWRITE_TAC[COMPLEX_NORM_0; CEXP_0; COMPLEX_SUB_RZERO] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC(NORM_ARITH `norm(y) = &1 ==> norm(x - y) <= d ==> norm(x) <= &1 + d`) THEN REWRITE_TAC[COMPLEX_NORM_CX; REAL_ABS_NUM]);; @@ -371,51 +371,51 @@ let csin = new_definition let CSIN_0 = prove (`csin(Cx(&0)) = Cx(&0)`, REWRITE_TAC[csin; COMPLEX_MUL_RZERO; COMPLEX_SUB_REFL] THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CCOS_0 = prove (`ccos(Cx(&0)) = Cx(&1)`, REWRITE_TAC[ccos; COMPLEX_MUL_RZERO; CEXP_0] THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CSIN_CIRCLE = prove (`!z. csin(z) pow 2 + ccos(z) pow 2 = Cx(&1)`, GEN_TAC THEN REWRITE_TAC[csin; ccos] THEN MP_TAC(SPEC `ii * z` CEXP_NEG_LMUL) THEN REWRITE_TAC[COMPLEX_MUL_LNEG] THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CSIN_ADD = prove (`!w z. csin(w + z) = csin(w) * ccos(z) + ccos(w) * csin(z)`, REPEAT GEN_TAC THEN REWRITE_TAC[csin; ccos; COMPLEX_ADD_LDISTRIB; CEXP_ADD] THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CCOS_ADD = prove (`!w z. ccos(w + z) = ccos(w) * ccos(z) - csin(w) * csin(z)`, REPEAT GEN_TAC THEN REWRITE_TAC[csin; ccos; COMPLEX_ADD_LDISTRIB; CEXP_ADD] THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CSIN_NEG = prove (`!z. csin(--z) = --(csin(z))`, REWRITE_TAC[csin; COMPLEX_MUL_LNEG; COMPLEX_MUL_RNEG; COMPLEX_NEG_NEG] THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CCOS_NEG = prove (`!z. ccos(--z) = ccos(z)`, REWRITE_TAC[ccos; COMPLEX_MUL_LNEG; COMPLEX_MUL_RNEG; COMPLEX_NEG_NEG] THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CSIN_DOUBLE = prove (`!z. csin(Cx(&2) * z) = Cx(&2) * csin(z) * ccos(z)`, REWRITE_TAC[COMPLEX_RING `Cx(&2) * x = x + x`; CSIN_ADD] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let CCOS_DOUBLE = prove (`!z. ccos(Cx(&2) * z) = (ccos(z) pow 2) - (csin(z) pow 2)`, REWRITE_TAC[COMPLEX_RING `Cx(&2) * x = x + x`; CCOS_ADD] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let CSIN_SUB = prove (`!w z. csin(w - z) = csin(w) * ccos(z) - ccos(w) * csin(z)`, @@ -428,55 +428,55 @@ let CCOS_SUB = prove let COMPLEX_MUL_CSIN_CSIN = prove (`!w z. csin(w) * csin(z) = (ccos(w - z) - ccos(w + z)) / Cx(&2)`, - REWRITE_TAC[CCOS_ADD; CCOS_SUB] THEN CONV_TAC COMPLEX_RING);; + REWRITE_TAC[CCOS_ADD; CCOS_SUB] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let COMPLEX_MUL_CSIN_CCOS = prove (`!w z. csin(w) * ccos(z) = (csin(w + z) + csin(w - z)) / Cx(&2)`, - REWRITE_TAC[CSIN_ADD; CSIN_SUB] THEN CONV_TAC COMPLEX_RING);; + REWRITE_TAC[CSIN_ADD; CSIN_SUB] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let COMPLEX_MUL_CCOS_CSIN = prove (`!w z. ccos(w) * csin(z) = (csin(w + z) - csin(w - z)) / Cx(&2)`, - REWRITE_TAC[CSIN_ADD; CSIN_SUB] THEN CONV_TAC COMPLEX_RING);; + REWRITE_TAC[CSIN_ADD; CSIN_SUB] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let COMPLEX_MUL_CCOS_CCOS = prove (`!w z. ccos(w) * ccos(z) = (ccos(w - z) + ccos(w + z)) / Cx(&2)`, - REWRITE_TAC[CCOS_ADD; CCOS_SUB] THEN CONV_TAC COMPLEX_RING);; + REWRITE_TAC[CCOS_ADD; CCOS_SUB] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let COMPLEX_ADD_CSIN = prove (`!w z. csin(w) + csin(z) = Cx(&2) * csin((w + z) / Cx(&2)) * ccos((w - z) / Cx(&2))`, SIMP_TAC[COMPLEX_MUL_CSIN_CCOS; COMPLEX_RING `Cx(&2) * x / Cx(&2) = x`] THEN - REPEAT GEN_TAC THEN BINOP_TAC THEN AP_TERM_TAC THEN CONV_TAC COMPLEX_RING);; + REPEAT GEN_TAC THEN BINOP_TAC THEN AP_TERM_TAC THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let COMPLEX_SUB_CSIN = prove (`!w z. csin(w) - csin(z) = Cx(&2) * csin((w - z) / Cx(&2)) * ccos((w + z) / Cx(&2))`, SIMP_TAC[COMPLEX_MUL_CSIN_CCOS; COMPLEX_RING `Cx(&2) * x / Cx(&2) = x`] THEN REPEAT GEN_TAC THEN REWRITE_TAC[complex_sub; GSYM CSIN_NEG] THEN - BINOP_TAC THEN AP_TERM_TAC THEN CONV_TAC COMPLEX_RING);; + BINOP_TAC THEN AP_TERM_TAC THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let COMPLEX_ADD_CCOS = prove (`!w z. ccos(w) + ccos(z) = Cx(&2) * ccos((w + z) / Cx(&2)) * ccos((w - z) / Cx(&2))`, SIMP_TAC[COMPLEX_MUL_CCOS_CCOS; COMPLEX_RING `Cx(&2) * x / Cx(&2) = x`] THEN REPEAT GEN_TAC THEN GEN_REWRITE_TAC LAND_CONV [COMPLEX_ADD_SYM] THEN - BINOP_TAC THEN AP_TERM_TAC THEN CONV_TAC COMPLEX_RING);; + BINOP_TAC THEN AP_TERM_TAC THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let COMPLEX_SUB_CCOS = prove (`!w z. ccos(w) - ccos(z) = Cx(&2) * csin((w + z) / Cx(&2)) * csin((z - w) / Cx(&2))`, SIMP_TAC[COMPLEX_MUL_CSIN_CSIN; COMPLEX_RING `Cx(&2) * x / Cx(&2) = x`] THEN - REPEAT GEN_TAC THEN BINOP_TAC THEN AP_TERM_TAC THEN CONV_TAC COMPLEX_RING);; + REPEAT GEN_TAC THEN BINOP_TAC THEN AP_TERM_TAC THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let CCOS_DOUBLE_CCOS = prove (`!z. ccos(Cx(&2) * z) = Cx(&2) * ccos z pow 2 - Cx(&1)`, GEN_TAC THEN REWRITE_TAC[COMPLEX_RING `Cx(&2) * x = x + x`; CCOS_ADD] THEN - MP_TAC(SPEC `z:complex` CSIN_CIRCLE) THEN CONV_TAC COMPLEX_RING);; + MP_TAC(SPEC `z:complex` CSIN_CIRCLE) THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let CCOS_DOUBLE_CSIN = prove (`!z. ccos(Cx(&2) * z) = Cx(&1) - Cx(&2) * csin z pow 2`, GEN_TAC THEN REWRITE_TAC[COMPLEX_RING `Cx(&2) * x = x + x`; CCOS_ADD] THEN - MP_TAC(SPEC `z:complex` CSIN_CIRCLE) THEN CONV_TAC COMPLEX_RING);; + MP_TAC(SPEC `z:complex` CSIN_CIRCLE) THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; (* ------------------------------------------------------------------------- *) (* Euler and de Moivre formulas. *) @@ -484,7 +484,7 @@ let CCOS_DOUBLE_CSIN = prove let CEXP_EULER = prove (`!z. cexp(ii * z) = ccos(z) + ii * csin(z)`, - REWRITE_TAC[ccos; csin] THEN CONV_TAC COMPLEX_FIELD);; + REWRITE_TAC[ccos; csin] THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let DEMOIVRE = prove (`!z n. (ccos z + ii * csin z) pow n = @@ -574,7 +574,7 @@ let REAL_EXP_LE_X = prove VSUM_COMPONENT; EVENTUALLY_SEQUENTIALLY; FROM_0; INTER_UNIV] THEN REWRITE_TAC[GSYM CX_DIV; GSYM RE_DEF; RE_CX; GSYM CX_POW] THEN EXISTS_TAC `1` THEN SIMP_TAC[SUM_CLAUSES_LEFT; LE_0; ADD_CLAUSES] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN SIMP_TAC[real_pow; REAL_POW_1; REAL_DIV_1; REAL_LE_ADDR; REAL_ADD_ASSOC] THEN SUBGOAL_THEN `!n. &0 <= sum(2*1..2*n+1) (\k. x pow k / &(FACT k))` @@ -660,7 +660,7 @@ let CNJ_CSIN = prove (`!z. cnj(csin z) = csin(cnj z)`, REWRITE_TAC[csin; CNJ_DIV; CNJ_SUB; CNJ_MUL; CNJ_CX; CNJ_CEXP; CNJ_NEG; CNJ_II; COMPLEX_NEG_NEG] THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CNJ_CCOS = prove (`!z. cnj(ccos z) = ccos(cnj z)`, @@ -687,7 +687,7 @@ let HAS_COMPLEX_DERIVATIVE_CSIN = prove (`!z. (csin has_complex_derivative ccos z) (at z)`, GEN_TAC THEN GEN_REWRITE_TAC (RATOR_CONV o LAND_CONV) [GSYM ETA_AX] THEN REWRITE_TAC[csin; ccos] THEN COMPLEX_DIFF_TAC THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COMPLEX_DIFFERENTIABLE_AT_CSIN = prove (`!z. csin complex_differentiable at z`, @@ -708,7 +708,7 @@ let HAS_COMPLEX_DERIVATIVE_CCOS = prove (`!z. (ccos has_complex_derivative --csin z) (at z)`, GEN_TAC THEN GEN_REWRITE_TAC (RATOR_CONV o LAND_CONV) [GSYM ETA_AX] THEN REWRITE_TAC[csin; ccos] THEN COMPLEX_DIFF_TAC THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COMPLEX_DIFFERENTIABLE_AT_CCOS = prove (`!z. ccos complex_differentiable at z`, @@ -877,7 +877,7 @@ let REAL_SUB_COS = prove let COS_DOUBLE_SIN = prove (`!x. cos(&2 * x) = &1 - &2 * sin x pow 2`, GEN_TAC THEN REWRITE_TAC[REAL_RING `&2 * x = x + x`; COS_ADD] THEN - MP_TAC(SPEC `x:real` SIN_CIRCLE) THEN CONV_TAC REAL_RING);; + MP_TAC(SPEC `x:real` SIN_CIRCLE) THEN (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* Get a nice real/imaginary separation in Euler's formula. *) @@ -904,7 +904,7 @@ let RE_CSIN = prove SIMP_TAC[COMPLEX_FIELD `x / (Cx(&2) * ii) = ii * --(x / Cx(&2))`] THEN REWRITE_TAC[IM_MUL_II; IM_DIV_CX; RE_NEG; IM_SUB; IM_CEXP; RE_MUL_II; COMPLEX_MUL_LNEG; IM_NEG] THEN - REWRITE_TAC[REAL_NEG_NEG; SIN_NEG] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[REAL_NEG_NEG; SIN_NEG] THEN (CONV_TAC "REAL_RING") REAL_RING);; let IM_CSIN = prove (`!z. Im(csin z) = (exp(Im z) - exp(--(Im z))) / &2 * cos(Re z)`, @@ -912,21 +912,21 @@ let IM_CSIN = prove SIMP_TAC[COMPLEX_FIELD `x / (Cx(&2) * ii) = ii * --(x / Cx(&2))`] THEN REWRITE_TAC[IM_MUL_II; RE_DIV_CX; RE_NEG; RE_SUB; RE_CEXP; RE_MUL_II; COMPLEX_MUL_LNEG; IM_NEG] THEN - REWRITE_TAC[REAL_NEG_NEG; COS_NEG] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[REAL_NEG_NEG; COS_NEG] THEN (CONV_TAC "REAL_RING") REAL_RING);; let RE_CCOS = prove (`!z. Re(ccos z) = (exp(Im z) + exp(--(Im z))) / &2 * cos(Re z)`, GEN_TAC THEN REWRITE_TAC[ccos] THEN REWRITE_TAC[RE_DIV_CX; RE_ADD; RE_CEXP; COMPLEX_MUL_LNEG; RE_MUL_II; IM_MUL_II; RE_NEG; IM_NEG; COS_NEG] THEN - REWRITE_TAC[REAL_NEG_NEG] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[REAL_NEG_NEG] THEN (CONV_TAC "REAL_RING") REAL_RING);; let IM_CCOS = prove (`!z. Im(ccos z) = (exp(--(Im z)) - exp(Im z)) / &2 * sin(Re z)`, GEN_TAC THEN REWRITE_TAC[ccos] THEN REWRITE_TAC[IM_DIV_CX; IM_ADD; IM_CEXP; COMPLEX_MUL_LNEG; RE_MUL_II; IM_MUL_II; RE_NEG; IM_NEG; SIN_NEG] THEN - REWRITE_TAC[REAL_NEG_NEG] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[REAL_NEG_NEG] THEN (CONV_TAC "REAL_RING") REAL_RING);; (* ------------------------------------------------------------------------- *) (* Some special intermediate value theorems over the reals. *) @@ -991,7 +991,7 @@ let log_def = new_definition let EXP_LOG = prove (`!x. &0 < x ==> exp(log x) = x`, - REPEAT STRIP_TAC THEN REWRITE_TAC[log_def] THEN CONV_TAC SELECT_CONV THEN + REPEAT STRIP_TAC THEN REWRITE_TAC[log_def] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN SUBGOAL_THEN `?y. --inv(x) <= y /\ y <= x /\ Re(cexp(Cx y)) = x` MP_TAC THENL [ALL_TAC; MESON_TAC[CX_EXP; RE_CX]] THEN MATCH_MP_TAC IVT_INCREASING_RE THEN @@ -1112,7 +1112,7 @@ let SIN_NEARZERO = prove MP_TAC(SPEC `&1 / &2` (CONJUNCT2 (REWRITE_RULE[has_complex_derivative; HAS_DERIVATIVE_AT_ALT] (ISPEC `Cx(&0)` HAS_COMPLEX_DERIVATIVE_CSIN)))) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[CSIN_0; COMPLEX_SUB_RZERO; CCOS_0; COMPLEX_MUL_LZERO; COMPLEX_MUL_LID] THEN DISCH_THEN(X_CHOOSE_THEN `d:real` STRIP_ASSUME_TAC) THEN @@ -1130,7 +1130,7 @@ let COS_NONTRIVIAL = prove (`?x. &0 < x /\ ~(cos x = &1)`, MP_TAC SIN_NONTRIVIAL THEN MATCH_MP_TAC MONO_EXISTS THEN MP_TAC SIN_CIRCLE THEN MATCH_MP_TAC MONO_FORALL THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let COS_DOUBLE_BOUND = prove (`!x. &0 <= cos x ==> &2 * (&1 - cos x) <= &1 - cos(&2 * x)`, @@ -1217,7 +1217,7 @@ let pi = new_definition let PI_WORKS = prove (`&0 < pi /\ sin(pi) = &0 /\ !x. &0 < x /\ x < pi ==> ~(sin x = &0)`, - REWRITE_TAC[pi] THEN CONV_TAC SELECT_CONV THEN + REWRITE_TAC[pi] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN REWRITE_TAC[SIN_HASZERO_MINIMAL]);; (* ------------------------------------------------------------------------- *) @@ -1415,7 +1415,7 @@ let COS_ONE_2PI = prove DISCH_THEN(DISJ_CASES_THEN(X_CHOOSE_THEN `n:num` SUBST_ALL_TAC)) THEN POP_ASSUM MP_TAC THEN REWRITE_TAC[COS_NEG; COS_NPI; REAL_POW_NEG] THEN COND_CASES_TAC THEN REWRITE_TAC[REAL_POW_ONE] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN FIRST_X_ASSUM(MP_TAC o REWRITE_RULE[EVEN_EXISTS]) THEN REWRITE_TAC[OR_EXISTS_THM] THEN MATCH_MP_TAC MONO_EXISTS THEN SIMP_TAC[GSYM REAL_OF_NUM_MUL] THEN REAL_ARITH_TAC; @@ -1425,7 +1425,7 @@ let COS_ONE_2PI = prove let SIN_COS_SQRT = prove (`!x. &0 <= sin(x) ==> (sin(x) = sqrt(&1 - (cos(x) pow 2)))`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC SQRT_UNIQUE THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SQRT_UNIQUE THEN ASM_REWRITE_TAC[SIN_CIRCLE; REAL_EQ_SUB_LADD]);; let SIN_EQ_0_PI = prove @@ -1443,7 +1443,7 @@ let COS_TREBLE_COS = prove (`!x. cos(&3 * x) = &4 * cos(x) pow 3 - &3 * cos x`, GEN_TAC THEN REWRITE_TAC[COS_ADD; REAL_ARITH `&3 * x = &2 * x + x`] THEN REWRITE_TAC[SIN_DOUBLE; COS_DOUBLE_COS] THEN - MP_TAC(SPEC `x:real` SIN_CIRCLE) THEN CONV_TAC REAL_RING);; + MP_TAC(SPEC `x:real` SIN_CIRCLE) THEN (CONV_TAC "REAL_RING") REAL_RING);; let COS_PI6 = prove (`cos(pi / &6) = sqrt(&3) / &2`, @@ -1525,7 +1525,7 @@ let SINCOS_TOTAL_PI2 = prove SUBGOAL_THEN `x = cos t \/ x = --(cos t)` MP_TAC THENL [MP_TAC(SPEC `t:real` SIN_CIRCLE); MP_TAC(SPEC `t:real` COS_POS_PI_LE)] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD]);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]);; let SINCOS_TOTAL_PI = prove (`!x y. &0 <= y /\ x pow 2 + y pow 2 = &1 @@ -1610,7 +1610,7 @@ let SINCOS_PRINCIPAL_VALUE = prove SIMP_TAC[REAL_DIV_LMUL; REAL_ENTIRE; REAL_OF_NUM_EQ; ARITH; REAL_LT_IMP_NZ; PI_POS; REAL_ARITH `a - (a - b - c):real = b + c`; SIN_ADD; COS_ADD] THEN SIMP_TAC[FLOOR_FRAC; SIN_INTEGER_2PI; COS_INTEGER_2PI] THEN - CONV_TAC REAL_RING]);; + (CONV_TAC "REAL_RING") REAL_RING]);; let CEXP_COMPLEX = prove (`!r t. cexp(complex(r,t)) = Cx(exp r) * complex(cos t,sin t)`, @@ -1659,7 +1659,7 @@ let CEXP_EQ_1 = prove DISCH_THEN(X_CHOOSE_THEN `n:num` SUBST_ALL_TAC) THEN SIMP_TAC[real_abs; PI_POS; REAL_LT_IMP_LE; COS_NPI] THEN REWRITE_TAC[REAL_POW_NEG; REAL_POW_ONE] THEN - COND_CASES_TAC THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + COND_CASES_TAC THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN FIRST_X_ASSUM(CHOOSE_THEN SUBST1_TAC o REWRITE_RULE[EVEN_EXISTS]) THEN REWRITE_TAC[GSYM REAL_OF_NUM_MUL; REAL_ARITH `(&2 * x) / &2 = x`] THEN REWRITE_TAC[INTEGER_CLOSED]; @@ -1758,7 +1758,7 @@ let CCOS_EQ_1 = prove `a - Cx(&2) * s pow 2 = a <=> s = Cx(&0)`] THEN REWRITE_TAC[CSIN_EQ_0; CX_MUL] THEN EQ_TAC THEN MATCH_MP_TAC MONO_EXISTS THEN SIMP_TAC[] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let CSIN_EQ_1 = prove (`!z. csin z = Cx(&1) <=> ?n. integer n /\ z = Cx((&2 * n + &1 / &2) * pi)`, @@ -1816,19 +1816,19 @@ let DIST_CEXP_II_1 = prove REWRITE_TAC[RE_CX; IM_CX; REAL_POW2_ABS; REAL_POW_MUL] THEN MP_TAC(ISPEC `t / &2` COS_DOUBLE_SIN) THEN REWRITE_TAC[REAL_ARITH `&2 * t / &2 = t`] THEN - MP_TAC(SPEC `t:real` SIN_CIRCLE) THEN CONV_TAC REAL_RING);; + MP_TAC(SPEC `t:real` SIN_CIRCLE) THEN (CONV_TAC "REAL_RING") REAL_RING);; let CX_SINH = prove (`Cx((exp x - inv(exp x)) / &2) = --ii * csin(ii * Cx x)`, REWRITE_TAC[csin; COMPLEX_RING `--ii * ii * z = z /\ ii * ii * z = --z`] THEN REWRITE_TAC[CEXP_NEG; GSYM CX_EXP; GSYM CX_INV; CX_SUB; CX_DIV] THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CX_COSH = prove (`Cx((exp x + inv(exp x)) / &2) = ccos(ii * Cx x)`, REWRITE_TAC[ccos; COMPLEX_RING `--ii * ii * z = z /\ ii * ii * z = --z`] THEN REWRITE_TAC[CEXP_NEG; GSYM CX_EXP; GSYM CX_INV; CX_ADD; CX_DIV] THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let NORM_CCOS_POW_2 = prove (`!z. norm(ccos z) pow 2 = @@ -1844,7 +1844,7 @@ let NORM_CCOS_POW_2 = prove REWRITE_TAC[GSYM CX_EXP; GSYM CX_INV; IM_CX; RE_CX] THEN MAP_EVERY X_GEN_TAC [`x:real`; `y:real`] THEN MP_TAC(SPEC `x:real` SIN_CIRCLE) THEN MP_TAC(SPEC `y:real` REAL_EXP_NZ) THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let NORM_CSIN_POW_2 = prove (`!z. norm(csin z) pow 2 = @@ -1862,7 +1862,7 @@ let NORM_CSIN_POW_2 = prove REWRITE_TAC[REAL_EXP_N; COS_DOUBLE] THEN MAP_EVERY X_GEN_TAC [`x:real`; `y:real`] THEN MP_TAC(SPEC `x:real` SIN_CIRCLE) THEN MP_TAC(SPEC `y:real` REAL_EXP_NZ) THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let CSIN_EQ = prove (`!w z. csin w = csin z <=> @@ -1876,19 +1876,19 @@ let CSIN_EQ = prove ASM_REWRITE_TAC[COMPLEX_FIELD `a / Cx(&2) = b <=> a = Cx(&2) * b`] THEN REWRITE_TAC[GSYM CX_MUL; REAL_ARITH `&2 * (n + &1 / &2) * pi = (&2 * n + &1) * pi`] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let CCOS_EQ = prove (`!w z. ccos(w) = ccos(z) <=> ?n. integer n /\ (w = z + Cx(&2 * n * pi) \/ w = --z + Cx(&2 * n * pi))`, - REPEAT GEN_TAC THEN CONV_TAC(LAND_CONV SYM_CONV) THEN + REPEAT GEN_TAC THEN (CONV_TAC "(LAND_CONV SYM_CONV)") (LAND_CONV SYM_CONV) THEN GEN_REWRITE_TAC LAND_CONV [GSYM COMPLEX_SUB_0] THEN REWRITE_TAC[COMPLEX_SUB_CCOS; COMPLEX_ENTIRE; CSIN_EQ_0] THEN REWRITE_TAC[CX_INJ; REAL_OF_NUM_EQ; ARITH_EQ; OR_EXISTS_THM] THEN AP_TERM_TAC THEN REWRITE_TAC[FUN_EQ_THM] THEN X_GEN_TAC `n:real` THEN ASM_CASES_TAC `integer(n)` THEN ASM_REWRITE_TAC[CX_MUL] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let SIN_EQ = prove (`!x y. sin x = sin y <=> @@ -1971,9 +1971,9 @@ let E_APPROX_32 = prove MP_TAC(ISPECL [`14`; `Cx(&1)`] TAYLOR_CEXP) THEN SIMP_TAC[RE_CX; REAL_ABS_NUM; GSYM CX_EXP; GSYM CX_DIV; GSYM CX_SUB; COMPLEX_POW_ONE; COMPLEX_NORM_CX] THEN - CONV_TAC(ONCE_DEPTH_CONV EXPAND_VSUM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV EXPAND_VSUM_CONV)") (ONCE_DEPTH_CONV EXPAND_VSUM_CONV) THEN REWRITE_TAC[GSYM CX_ADD; GSYM CX_SUB; COMPLEX_NORM_CX] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN REAL_ARITH_TAC);; (* ------------------------------------------------------------------------- *) @@ -2023,7 +2023,7 @@ let TAYLOR_CSIN = prove REWRITE_TAC[COMPLEX_POW_MUL; complex_div; COMPLEX_MUL_ASSOC] THEN AP_THM_TAC THEN AP_TERM_TAC THEN AP_THM_TAC THEN AP_TERM_TAC THEN REWRITE_TAC[COMPLEX_POW_ADD; GSYM COMPLEX_POW_POW] THEN - REWRITE_TAC[COMPLEX_POW_II_2] THEN CONV_TAC COMPLEX_RING);; + REWRITE_TAC[COMPLEX_POW_II_2] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let CSIN_CONVERGES = prove (`!z. ((\n. --Cx(&1) pow n * z pow (2 * n + 1) / Cx(&(FACT(2 * n + 1)))) @@ -2133,7 +2133,7 @@ let ARG = prove GEN_TAC THEN REWRITE_TAC[Arg_DEF] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[COMPLEX_NORM_0; COMPLEX_MUL_LZERO] THEN SIMP_TAC[REAL_LE_REFL; REAL_LT_MUL; PI_POS; REAL_ARITH `&0 < &2`] THEN - CONV_TAC SELECT_CONV THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN MP_TAC(SPECL [`Re(z) / norm z`; `Im(z) / norm z`] SINCOS_TOTAL_2PI) THEN ASM_SIMP_TAC[COMPLEX_SQNORM; COMPLEX_NORM_ZERO; REAL_FIELD @@ -2225,7 +2225,7 @@ let ARG_EQ_0 = prove (`!z. Arg z = &0 <=> real z /\ &0 <= Re z`, GEN_TAC THEN ASM_CASES_TAC `z = Cx(&0)` THENL [ASM_REWRITE_TAC[REAL_CX; RE_CX; Arg_DEF; REAL_LE_REFL]; ALL_TAC] THEN - CONV_TAC(RAND_CONV(SUBS_CONV[last(CONJUNCTS(SPEC `z:complex` ARG))])) THEN + (CONV_TAC "(RAND_CONV(SUBS_CONV[last(CONJUNCTS(SPEC `z:complex` ARG))]))") (RAND_CONV(SUBS_CONV[last(CONJUNCTS(SPEC `z:complex` ARG))])) THEN ASM_SIMP_TAC[RE_MUL_CX; REAL_MUL_CX; REAL_LE_MUL_EQ; COMPLEX_NORM_NZ] THEN ASM_REWRITE_TAC[COMPLEX_NORM_ZERO; CEXP_EULER] THEN REWRITE_TAC[real; RE_ADD; IM_ADD; RE_MUL_II; IM_MUL_II; @@ -2271,7 +2271,7 @@ let ARG_INV = prove SUBST1_TAC(SPEC `Cx(&2) * Cx pi` CEXP_EULER) THEN REWRITE_TAC[GSYM CX_MUL; GSYM CX_SIN; GSYM CX_COS] THEN REWRITE_TAC[SIN_NPI; COS_NPI; COMPLEX_MUL_RZERO; COMPLEX_ADD_RID] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[complex_div; COMPLEX_MUL_LID; CX_INV; GSYM COMPLEX_INV_MUL] THEN REWRITE_TAC[GSYM ARG] THEN MP_TAC(SPEC `z:complex` ARG_EQ_0) THEN ASM_REWRITE_TAC[real] THEN @@ -2286,7 +2286,7 @@ let ARG_EQ = prove MAP_EVERY (MP_TAC o CONJUNCT2 o CONJUNCT2 o C SPEC ARG) [`z:complex`; `w:complex`] THEN ASM_REWRITE_TAC[IMP_IMP] THEN - DISCH_THEN(fun th -> CONV_TAC(SUBS_CONV(CONJUNCTS th))) THEN + DISCH_THEN(fun th -> (CONV_TAC "(SUBS_CONV(CONJUNCTS th))") (SUBS_CONV(CONJUNCTS th))) THEN EXISTS_TAC `norm(w:complex) / norm(z:complex)` THEN ASM_SIMP_TAC[REAL_LT_DIV; COMPLEX_NORM_NZ; CX_DIV] THEN REWRITE_TAC[COMPLEX_MUL_ASSOC] THEN AP_THM_TAC THEN AP_TERM_TAC THEN @@ -2297,7 +2297,7 @@ let ARG_INV_EQ_0 = prove GEN_TAC THEN REWRITE_TAC[ARG_EQ_0; REAL_INV_EQ] THEN MATCH_MP_TAC(TAUT `(a ==> (b <=> c)) ==> (a /\ b <=> a /\ c)`) THEN REWRITE_TAC[real] THEN DISCH_TAC THEN ASM_REWRITE_TAC[complex_inv; RE] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ADD_RID] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ADD_RID] THEN ASM_CASES_TAC `Re z = &0` THEN ASM_REWRITE_TAC[real_div; REAL_MUL_LZERO] THEN ASM_SIMP_TAC[REAL_FIELD `~(x = &0) ==> x * inv(x pow 2) = inv x`] THEN REWRITE_TAC[REAL_LE_INV_EQ]);; @@ -2416,7 +2416,7 @@ let NORM_ROTATE2D = prove (`!t z. norm(rotate2d t z) = norm z`, REWRITE_TAC[NORM_EQ; rotate2d; DIMINDEX_2; DOT_2; VECTOR_2] THEN REPEAT GEN_TAC THEN MP_TAC(ISPEC `t:real` SIN_CIRCLE) THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let ROTATE2D_0 = prove (`!t. rotate2d t (Cx(&0)) = Cx(&0)`, @@ -2466,7 +2466,7 @@ let ROTATION_ROTATE2D = prove (matrix f)$1$2 = --((matrix f)$2$1) /\ (matrix f:real^2^2)$2$2 = (matrix f)$1$1` STRIP_ASSUME_TAC THENL - [REPEAT(FIRST_X_ASSUM(MP_TAC o SYM)) THEN CONV_TAC REAL_RING; + [REPEAT(FIRST_X_ASSUM(MP_TAC o SYM)) THEN (CONV_TAC "REAL_RING") REAL_RING; FIRST_X_ASSUM(MP_TAC o MATCH_MP SINCOS_TOTAL_2PI) THEN MATCH_MP_TAC MONO_EXISTS THEN REPEAT STRIP_TAC THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC LINEAR_EQ_MATRIX THEN @@ -2492,23 +2492,23 @@ let ROTATE2D_PI2 = prove (`!z. rotate2d (pi / &2) z = ii * z`, REWRITE_TAC[ROTATE2D_COMPLEX; CEXP_EULER; SIN_PI2; COS_PI2; GSYM CX_SIN; GSYM CX_COS] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let ROTATE2D_PI = prove (`!z. rotate2d pi z = --z`, REWRITE_TAC[ROTATE2D_COMPLEX; CEXP_EULER; SIN_PI; COS_PI; GSYM CX_SIN; GSYM CX_COS] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let ROTATE2D_NPI = prove (`!n z. rotate2d (&n * pi) z = --Cx(&1) pow n * z`, REWRITE_TAC[ROTATE2D_COMPLEX; CEXP_EULER; SIN_NPI; COS_NPI; GSYM CX_SIN; GSYM CX_COS; CX_NEG; CX_POW] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let ROTATE2D_2PI = prove (`!z. rotate2d (&2 * pi) z = z`, - REWRITE_TAC[ROTATE2D_NPI] THEN CONV_TAC COMPLEX_RING);; + REWRITE_TAC[ROTATE2D_NPI] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let ARG_ROTATE2D = prove (`!t z. ~(z = Cx(&0)) /\ &0 <= t + Arg z /\ t + Arg z < &2 * pi @@ -2608,7 +2608,7 @@ let ROTATION_ROTATE2D_EXISTS_ORTHOGONAL = prove SIMP_TAC[DOT_2; CART_EQ; FORALL_2; DIMINDEX_2; rotate2d; VECTOR_2] THEN REWRITE_TAC[COS_PI2; SIN_PI2; REAL_MUL_RZERO; REAL_ADD_RID; REAL_SUB_LZERO; REAL_SUB_RZERO; REAL_MUL_RID] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let ROTATION_ROTATE2D_EXISTS_ORTHOGONAL_ORIENTED = prove (`!e1 e2. norm(e1) = &1 /\ norm(e2) = &1 /\ orthogonal e1 e2 /\ @@ -2642,7 +2642,7 @@ let ROTATE2D_SUB_ARG = prove REWRITE_TAC[EULER; RE_MUL_II; IM_MUL_II; RE_CX; IM_CX; COS_NEG; SIN_NEG] THEN REWRITE_TAC[SIN_NPI; COS_NPI; REAL_EXP_NEG; REAL_EXP_0; CX_NEG] THEN REWRITE_TAC[COMPLEX_NEG_0; COMPLEX_MUL_RZERO; COMPLEX_ADD_RID] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[COMPLEX_MUL_LID]);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[COMPLEX_MUL_LID]);; let ROTATION_MATRIX_ROTATE2D = prove (`!t. rotation_matrix(matrix(rotate2d t))`, @@ -2678,7 +2678,7 @@ let NULLHOMOTOPIC_ORTHOGONAL_TRANSFORMATION = prove VECTOR_MUL_COMPONENT; DIMINDEX_2; FORALL_2; VECTOR_2; ARITH] THEN CONJ_TAC THEN AP_TERM_TAC THEN AP_THM_TAC THEN AP_TERM_TAC THEN AP_TERM_TAC THEN BINOP_TAC THEN REWRITE_TAC[dot] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_EQ_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_EQ_SUPERSET THEN ASM_SIMP_TAC[FINITE_NUMSEG; IN_NUMSEG; FORALL_2; DIMINDEX_2; LAMBDA_BETA; ARITH; VECTOR_2; SUBSET_NUMSEG] THEN REWRITE_TAC[ARITH_RULE @@ -2708,7 +2708,7 @@ let NULLHOMOTOPIC_ORTHOGONAL_TRANSFORMATION = prove ORTHOGONAL_TRANSFORMATION_REFLECT_ALONG; ORTHOGONAL_TRANSFORMATION_COMPOSE; MATRIX_COMPOSE; LINEAR_REFLECT_ALONG; DET_MUL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; DISCH_THEN(X_CHOOSE_THEN `t:real` STRIP_ASSUME_TAC) THEN ONCE_REWRITE_TAC[HOMOTOPIC_WITH_SYM] THEN ASM_REWRITE_TAC[homotopic_with] THEN @@ -3050,7 +3050,7 @@ let HOMOTOPIC_SPECIAL_ORTHOGONAL_TRANSFORMATIONS, DISCH_THEN(CONJUNCTS_THEN (STRIP_ASSUME_TAC o MATCH_MP DET_ORTHOGONAL_MATRIX o MATCH_MP ORTHOGONAL_MATRIX_MATRIX)) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV]; + ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV]; REWRITE_TAC[o_DEF; LEFT_IMP_EXISTS_THM] THEN X_GEN_TAC `a:real^1` THEN DISCH_TAC THEN REPEAT(FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM FUN_EQ_THM])) THEN @@ -3363,7 +3363,7 @@ let HOMOTOPIC_INVERTIBLE_LINEAR_MAPS_ALT = prove MP_TAC(ISPEC `det(matrix(f:real^N->real^N))` REAL_SGN_CASES) THEN MP_TAC(ISPEC `det(matrix(g:real^N->real^N))` REAL_SGN_CASES) THEN STRIP_TAC THEN STRIP_TAC THEN ASM_REWRITE_TAC[] THEN - CONV_TAC REAL_RAT_REDUCE_CONV] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN REWRITE_TAC[homotopic_with] THEN GEN_REWRITE_TAC (LAND_CONV o ONCE_DEPTH_CONV) [GSYM(CONJUNCT1 REAL_SGN_EQ)] THEN @@ -3471,7 +3471,7 @@ let HOMOTOPIC_ANTIPODAL_IDENTITY_MAP = prove ORTHOGONAL_TRANSFORMATION_ID] THEN SIMP_TAC[MATRIX_NEG; LINEAR_ID; DET_NEG; MATRIX_ID; DET_I] THEN REWRITE_TAC[REAL_POW_NEG; REAL_POW_ONE] THEN - COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV);; + COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; (* ------------------------------------------------------------------------- *) (* Complex tangent function. *) @@ -3494,7 +3494,7 @@ let CTAN_ADD = prove ~(ccos(w + z) = Cx(&0)) ==> ctan(w + z) = (ctan w + ctan z) / (Cx(&1) - ctan(w) * ctan(z))`, REPEAT GEN_TAC THEN REWRITE_TAC[ctan; CSIN_ADD; CCOS_ADD] THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CTAN_DOUBLE = prove (`!z. ~(ccos(z) = Cx(&0)) /\ ~(ccos(Cx(&2) * z) = Cx(&0)) @@ -3514,13 +3514,13 @@ let COMPLEX_ADD_CTAN = prove (`!w z. ~(ccos(w) = Cx(&0)) /\ ~(ccos(z) = Cx(&0)) ==> ctan(w) + ctan(z) = csin(w + z) / (ccos(w) * ccos(z))`, - REWRITE_TAC[ctan; CSIN_ADD] THEN CONV_TAC COMPLEX_FIELD);; + REWRITE_TAC[ctan; CSIN_ADD] THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COMPLEX_SUB_CTAN = prove (`!w z. ~(ccos(w) = Cx(&0)) /\ ~(ccos(z) = Cx(&0)) ==> ctan(w) - ctan(z) = csin(w - z) / (ccos(w) * ccos(z))`, - REWRITE_TAC[ctan; CSIN_SUB] THEN CONV_TAC COMPLEX_FIELD);; + REWRITE_TAC[ctan; CSIN_SUB] THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; (* ------------------------------------------------------------------------- *) (* Analytic properties of tangent function. *) @@ -3533,7 +3533,7 @@ let HAS_COMPLEX_DERIVATIVE_CTAN = prove GEN_REWRITE_TAC (RATOR_CONV o LAND_CONV) [GSYM ETA_AX] THEN REWRITE_TAC[ctan] THEN COMPLEX_DIFF_TAC THEN MP_TAC(SPEC `z:complex` CSIN_CIRCLE) THEN - POP_ASSUM MP_TAC THEN CONV_TAC COMPLEX_FIELD);; + POP_ASSUM MP_TAC THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let COMPLEX_DIFFERENTIABLE_AT_CTAN = prove (`!z. ~(ccos z = Cx(&0)) ==> ctan complex_differentiable at z`, @@ -3814,7 +3814,7 @@ let REAL_ABS_SIN_BOUND_LT = prove REWRITE_TAC[SIN_BOUND] THEN DISCH_TAC THEN MP_TAC(SPECL [`1`; `Cx x`] TAYLOR_CSIN) THEN REWRITE_TAC[num_CONV `1`; VSUM_CLAUSES_NUMSEG; IM_CX] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[REAL_ABS_NUM; REAL_EXP_0; COMPLEX_POW_1; complex_pow; COMPLEX_DIV_1] THEN REWRITE_TAC[GSYM CX_SIN; GSYM CX_MUL; GSYM CX_NEG; GSYM CX_POW; GSYM CX_DIV; @@ -3825,7 +3825,7 @@ let REAL_ABS_SIN_BOUND_LT = prove [MATCH_MP_TAC(REAL_ARITH `&0 < y /\ x <= y pow 1 ==> x / &6 < y`); MATCH_MP_TAC(REAL_ARITH `&0 < x /\ x <= y ==> x / &24 < y / &6`)] THEN ASM_SIMP_TAC[REAL_POW_LT] THEN MATCH_MP_TAC REAL_POW_MONO_INV THEN - CONV_TAC NUM_REDUCE_CONV THEN ASM_REAL_ARITH_TAC);; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN ASM_REAL_ARITH_TAC);; let REAL_ABS_SIN_BOUND_LE = prove (`!x. abs(sin x) <= abs x`, @@ -3847,7 +3847,7 @@ let SIN_PI6_STRADDLE = prove SUBGOAL_THEN `!x. &0 < x /\ x < &7 / &5 ==> &0 < sin x` MP_TAC THENL [REPEAT STRIP_TAC THEN MP_TAC(ISPECL [`0`; `Cx(x)`] TAYLOR_CSIN) THEN - REWRITE_TAC[VSUM_SING_NUMSEG] THEN CONV_TAC NUM_REDUCE_CONV THEN + REWRITE_TAC[VSUM_SING_NUMSEG] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[COMPLEX_DIV_1; COMPLEX_POW_1; complex_pow] THEN REWRITE_TAC[COMPLEX_MUL_LID; GSYM CX_SIN; GSYM CX_SUB] THEN REWRITE_TAC[IM_CX; COMPLEX_NORM_CX; REAL_ABS_NUM; REAL_EXP_0] THEN @@ -3858,7 +3858,7 @@ let SIN_PI6_STRADDLE = prove ASM_SIMP_TAC[REAL_LT_LMUL_EQ] THEN MATCH_MP_TAC REAL_LT_TRANS THEN EXISTS_TAC `(&7 / &5) pow 2` THEN ASM_SIMP_TAC[REAL_POW_LT2; ARITH_EQ; REAL_LT_IMP_LE] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; DISCH_THEN(MP_TAC o SPEC `pi`) THEN SIMP_TAC[SIN_PI; REAL_LT_REFL; PI_POS; REAL_NOT_LT] THEN ASM_REAL_ARITH_TAC]);; @@ -3866,19 +3866,19 @@ let SIN_PI6_STRADDLE = prove let PI_APPROX_32 = prove (`abs(pi - &13493037705 / &4294967296) <= inv(&2 pow 32)`, REWRITE_TAC[REAL_ARITH `abs(x - a) <= e <=> a - e <= x /\ x <= a + e`] THEN - MATCH_MP_TAC SIN_PI6_STRADDLE THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + MATCH_MP_TAC SIN_PI6_STRADDLE THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN CONJ_TAC THENL [MP_TAC(SPECL [`5`; `Cx(&1686629713 / &3221225472)`] TAYLOR_CSIN); MP_TAC(SPECL [`5`; `Cx(&6746518853 / &12884901888)`] TAYLOR_CSIN)] THEN SIMP_TAC[COMPLEX_NORM_CX; GSYM CX_POW; GSYM CX_DIV; GSYM CX_MUL; GSYM CX_NEG; VSUM_CX; FINITE_NUMSEG; GSYM CX_SIN; GSYM CX_SUB] THEN REWRITE_TAC[IM_CX; REAL_ABS_NUM; REAL_EXP_0] THEN - CONV_TAC NUM_REDUCE_CONV THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_POW_ADD; REAL_POW_1; GSYM REAL_POW_POW] THEN REWRITE_TAC[REAL_MUL_ASSOC; GSYM REAL_POW_MUL; real_div] THEN - REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN - CONV_TAC(ONCE_DEPTH_CONV HORNER_SUM_CONV) THEN REAL_ARITH_TAC);; + (CONV_TAC "(ONCE_DEPTH_CONV HORNER_SUM_CONV)") (ONCE_DEPTH_CONV HORNER_SUM_CONV) THEN REAL_ARITH_TAC);; let PI2_BOUNDS = prove (`&0 < pi / &2 /\ pi / &2 < &2`, @@ -3898,7 +3898,7 @@ let EXISTS_COMPLEX' = prove let CLOG_WORKS = prove (`!z. ~(z = Cx(&0)) ==> cexp(clog z) = z /\ --pi < Im(clog z) /\ Im(clog z) <= pi`, - GEN_TAC THEN DISCH_TAC THEN REWRITE_TAC[clog] THEN CONV_TAC SELECT_CONV THEN + GEN_TAC THEN DISCH_TAC THEN REWRITE_TAC[clog] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN MP_TAC(SPEC `z / Cx(norm z)` COMPLEX_UNIMODULAR_POLAR) THEN ANTS_TAC THENL [ASM_SIMP_TAC[COMPLEX_NORM_DIV; COMPLEX_NORM_CX] THEN ASM_SIMP_TAC[REAL_ABS_NORM; REAL_DIV_REFL; COMPLEX_NORM_ZERO]; @@ -4029,7 +4029,7 @@ let CX_LOG = prove REPEAT STRIP_TAC THEN FIRST_ASSUM(fun th -> GEN_REWRITE_TAC (RAND_CONV o ONCE_DEPTH_CONV) [SYM(MATCH_MP EXP_LOG th)]) THEN - REWRITE_TAC[CX_EXP] THEN CONV_TAC SYM_CONV THEN + REWRITE_TAC[CX_EXP] THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CLOG_CEXP THEN REWRITE_TAC[IM_CX] THEN MP_TAC PI_POS THEN REAL_ARITH_TAC);; @@ -4238,12 +4238,12 @@ let HAS_COMPLEX_DERIVATIVE_CSQRT = prove MATCH_MP_TAC HAS_COMPLEX_DERIVATIVE_TRANSFORM_AT THEN MAP_EVERY EXISTS_TAC [`\z. cexp(clog(z) / Cx(&2))`; `norm(z:complex)`] THEN ASM_REWRITE_TAC[COMPLEX_NORM_NZ] THEN CONJ_TAC THENL - [REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + [REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CSQRT_CEXP_CLOG THEN REWRITE_TAC[GSYM COMPLEX_VEC_0] THEN REPEAT(POP_ASSUM MP_TAC) THEN NORM_ARITH_TAC; COMPLEX_DIFF_TAC THEN ASM_SIMP_TAC[GSYM CSQRT_CEXP_CLOG] THEN UNDISCH_TAC `~(z = Cx(&0))` THEN MP_TAC(SPEC `z:complex` CSQRT) THEN - CONV_TAC COMPLEX_FIELD]);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]);; let COMPLEX_DIFFERENTIABLE_AT_CSQRT = prove (`!z. (Im z = &0 ==> &0 < Re(z)) ==> csqrt complex_differentiable at z`, @@ -4411,7 +4411,7 @@ let HAS_COMPLEX_DERIVATIVE_CPOW = prove REWRITE_TAC[COMPLEX_SUB_LZERO; NORM_NEG; REAL_LT_REFL]; COMPLEX_DIFF_TAC THEN ASM_REWRITE_TAC[CEXP_SUB; COMPLEX_SUB_RDISTRIB] THEN ASM_SIMP_TAC[CEXP_CLOG; COMPLEX_MUL_LID] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC COMPLEX_FIELD]);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]);; add_complex_differentiation_theorems (CONJUNCTS(REWRITE_RULE[FORALL_AND_THM] @@ -4476,8 +4476,8 @@ let CLOG_MUL = prove MATCH_MP_TAC CLOG_UNIQUE THEN ASM_SIMP_TAC[CEXP_ADD; CEXP_SUB; CEXP_EULER; CEXP_CLOG; CONJ_ASSOC; GSYM CX_SIN; GSYM CX_COS; COS_NPI; SIN_NPI] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN - TRY(CONJ_TAC THENL [ALL_TAC; CONV_TAC COMPLEX_FIELD]) THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + TRY(CONJ_TAC THENL [ALL_TAC; (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]) THEN REPEAT(FIRST_X_ASSUM(MP_TAC o MATCH_MP CLOG_WORKS)) THEN REPEAT(POP_ASSUM MP_TAC) THEN REWRITE_TAC[IM_ADD; IM_SUB; IM_MUL_II; RE_CX] THEN @@ -4532,7 +4532,7 @@ let CLOG_NEG = prove REWRITE_TAC[TAUT `~(a /\ ~b) /\ ~b <=> ~a /\ ~b`] THEN ASM_CASES_TAC `Im(clog z) = pi` THEN ASM_REWRITE_TAC[PI_POS] THEN ASM_CASES_TAC `&0 < Im(clog z)` THEN ASM_REWRITE_TAC[] THEN - REWRITE_TAC[CX_MUL] THEN CONV_TAC COMPLEX_RING);; + REWRITE_TAC[CX_MUL] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let CLOG_MUL_II = prove (`!z. ~(z = Cx(&0)) @@ -4551,7 +4551,7 @@ let CLOG_MUL_II = prove ==> ((if p then x else y) = (if q then b else a))`) THEN CONJ_TAC THENL [MP_TAC PI_POS THEN REAL_ARITH_TAC; - REWRITE_TAC[CX_MUL; CX_DIV] THEN CONV_TAC COMPLEX_RING]);; + REWRITE_TAC[CX_MUL; CX_DIV] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING]);; (* ------------------------------------------------------------------------- *) (* Unwinding number gives another version of log-product formula. *) @@ -4625,7 +4625,7 @@ let CTAN_CATN = prove COMPLEX_FIELD `ii pow 2 = --Cx(&1) /\ ~(z pow 2 = --Cx(&1)) ==> ~(Cx(&1) - ii * z = Cx(&0)) /\ ~(Cx(&1) + ii * z = Cx(&0))`] THEN - POP_ASSUM MP_TAC THEN CONV_TAC COMPLEX_FIELD; + POP_ASSUM MP_TAC THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; ALL_TAC] THEN REWRITE_TAC[COMPLEX_RING `-- --Cx (&1) / Cx (&2) = Cx(&1) / Cx(&2)`] THEN ASM_SIMP_TAC[CEXP_NZ; COMPLEX_FIELD @@ -4637,7 +4637,7 @@ let CTAN_CATN = prove ASM_SIMP_TAC[CEXP_CLOG; COMPLEX_FIELD `~(z pow 2 = --Cx(&1)) ==> ~((Cx(&1) - ii * z) / (Cx(&1) + ii * z) = Cx(&0))`] THEN - UNDISCH_TAC `~(z pow 2 = --Cx(&1))` THEN CONV_TAC COMPLEX_FIELD);; + UNDISCH_TAC `~(z pow 2 = --Cx(&1))` THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CATN_CTAN = prove (`!z. abs(Re z) < pi / &2 ==> catn(ctan z) = z`, @@ -4649,7 +4649,7 @@ let CATN_CTAN = prove SUBGOAL_THEN `~(cexp(ii * z) pow 2 = --Cx(&1))` ASSUME_TAC THENL [SUBGOAL_THEN `--Cx(&1) = cexp(ii * Cx pi)` SUBST1_TAC THENL [REWRITE_TAC[CEXP_EULER; GSYM CX_SIN; GSYM CX_COS; SIN_PI; COS_PI] THEN - CONV_TAC COMPLEX_RING; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING; ALL_TAC] THEN REWRITE_TAC[GSYM CEXP_N; CEXP_EQ] THEN DISCH_THEN(X_CHOOSE_THEN `n:real` STRIP_ASSUME_TAC) THEN @@ -4686,7 +4686,7 @@ let RE_CATN_BOUNDS = prove REWRITE_TAC[GSYM complex_div] THEN CONJ_TAC THENL [SUBGOAL_THEN `~((Cx(&1) - ii * z) / (Cx(&1) + ii * z) = Cx(&0))` (fun th -> MESON_TAC[th; CLOG_WORKS]) THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC COMPLEX_FIELD; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD; ALL_TAC] THEN DISCH_TAC THEN MP_TAC(ISPEC `clog((Cx(&1) - ii * z) / (Cx(&1) + ii * z))` EULER) THEN @@ -4728,9 +4728,9 @@ let HAS_COMPLEX_DERIVATIVE_CATN = prove RE_CX; RE_MUL_II; IM_CX; IM_MUL_II] THEN REWRITE_TAC[GSYM CONJ_ASSOC] THEN CONJ_TAC THENL [ASM_REWRITE_TAC[IM_COMPLEX_DIV_LEMMA; RE_COMPLEX_DIV_LEMMA] THEN - SIMP_TAC[complex_norm] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + SIMP_TAC[complex_norm] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_REWRITE_TAC[REAL_ADD_LID; POW_2_SQRT_ABS]; - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC COMPLEX_FIELD]);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD]);; let COMPLEX_DIFFERENTIABLE_AT_CATN = prove (`!z. (Re z = &0 ==> abs(Im z) < &1) ==> catn complex_differentiable at z`, @@ -4784,7 +4784,7 @@ let CX_ATN = prove STRIP_ASSUME_TAC THENL [CONJ_TAC THEN DISCH_THEN(MP_TAC o AP_TERM `Re`) THEN REWRITE_TAC[RE_ADD; RE_SUB; RE_MUL_II; IM_CX; RE_CX] THEN - CONV_TAC REAL_RAT_REDUCE_CONV; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV; ALL_TAC] THEN ASM_SIMP_TAC[CEXP_SUB; CEXP_CLOG; COMPLEX_FIELD `~(a = Cx(&0)) /\ ~(b = Cx(&0)) ==> ~(a * inv b = Cx(&0))`] THEN @@ -4793,7 +4793,7 @@ let CX_ATN = prove ASM_REWRITE_TAC[COMPLEX_NORM_ZERO] THEN MATCH_MP_TAC(MESON[COMPLEX_NORM_CNJ] `cnj a = b ==> norm a = norm b`) THEN REWRITE_TAC[CNJ_SUB; CNJ_MUL; CNJ_MUL; CNJ_II; CNJ_CX] THEN - CONV_TAC COMPLEX_RING);; + (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let ATN_TAN = prove (`!y. tan(atn y) = y`, @@ -4809,7 +4809,7 @@ let ATN_TAN = prove let ATN_BOUND = prove (`!y. abs(atn y) < pi / &2`, GEN_TAC THEN REWRITE_TAC[atn] THEN MATCH_MP_TAC RE_CATN_BOUNDS THEN - REWRITE_TAC[IM_CX] THEN CONV_TAC REAL_RAT_REDUCE_CONV);; + REWRITE_TAC[IM_CX] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let ATN_BOUNDS = prove (`!y. --(pi / &2) < atn(y) /\ atn(y) < (pi / &2)`, @@ -4907,7 +4907,7 @@ let COS_ATN_NZ = prove let TAN_SEC = prove (`!x. ~(cos(x) = &0) ==> (&1 + (tan(x) pow 2) = inv(cos x) pow 2)`, MP_TAC SIN_CIRCLE THEN MATCH_MP_TAC MONO_FORALL THEN REWRITE_TAC[tan] THEN - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let COS_ATN = prove (`!x. cos(atn x) = &1 / sqrt(&1 + x pow 2)`, @@ -4933,7 +4933,7 @@ let ATN_ADD = prove ANTS_TAC THENL [REWRITE_TAC[COS_ATN_NZ] THEN MATCH_MP_TAC REAL_LT_IMP_NZ THEN MATCH_MP_TAC COS_POS_PI THEN ASM_REAL_ARITH_TAC; - DISCH_THEN(SUBST1_TAC o SYM) THEN CONV_TAC SYM_CONV THEN + DISCH_THEN(SUBST1_TAC o SYM) THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC TAN_ATN THEN ASM_REAL_ARITH_TAC]);; let ATN_INV = prove @@ -4967,17 +4967,11 @@ let [MACHIN; MACHIN_EULER; MACHIN_GAUSS] = (CONJUNCTS o prove) (`(&4 * atn(&1 / &5) - atn(&1 / &239) = pi / &4) /\ (&5 * atn(&1 / &7) + &2 * atn(&3 / &79) = pi / &4) /\ (&12 * atn(&1 / &18) + &8 * atn(&1 / &57) - &5 * atn(&1 / &239) = pi / &4)`, - REPEAT CONJ_TAC THEN CONV_TAC(ONCE_DEPTH_CONV(fun tm -> - if is_binop `( * ):real->real->real` tm - then LAND_CONV(RAND_CONV(TOP_DEPTH_CONV num_CONV)) tm - else failwith "")) THEN + REPEAT CONJ_TAC THEN (CONV_TAC "(ONCE_DEPTH_CONV(fun tm -> if is_binop `( * ):real->real->real` tm then LAND_CONV(RAND_CONV(TOP_DEPTH_CONV num_CONV)) tm else failwith \"\"))") (ONCE_DEPTH_CONV(fun tm -> if is_binop `( * ):real->real->real` tm then LAND_CONV(RAND_CONV(TOP_DEPTH_CONV num_CONV)) tm else failwith "")) THEN REWRITE_TAC[real_sub; GSYM REAL_MUL_RNEG; GSYM ATN_NEG] THEN REWRITE_TAC[GSYM REAL_OF_NUM_SUC; REAL_ADD_RDISTRIB] THEN REWRITE_TAC[REAL_MUL_LZERO; REAL_MUL_LID; REAL_ADD_LID] THEN - CONV_TAC(DEPTH_CONV (fun tm -> - let th1 = PART_MATCH (lhand o rand) ATN_ADD_SMALL tm in - let th2 = MP th1 (EQT_ELIM(REAL_RAT_REDUCE_CONV(lhand(concl th1)))) in - CONV_RULE(RAND_CONV(RAND_CONV REAL_RAT_REDUCE_CONV)) th2)) THEN + (CONV_TAC "(DEPTH_CONV (fun tm -> let th1 = PART_MATCH (lhand o rand) ATN_ADD_SMALL tm in let th2 = MP th1 (EQT_ELIM(REAL_RAT_REDUCE_CONV(lhand(concl th1)))) in CONV_RULE(RAND_CONV(RAND_CONV REAL_RAT_REDUCE_CONV)) th2))") (DEPTH_CONV (fun tm -> let th1 = PART_MATCH (lhand o rand) ATN_ADD_SMALL tm in let th2 = MP th1 (EQT_ELIM(REAL_RAT_REDUCE_CONV(lhand(concl th1)))) in CONV_RULE(RAND_CONV(RAND_CONV REAL_RAT_REDUCE_CONV)) th2)) THEN REWRITE_TAC[ATN_1]);; (* ------------------------------------------------------------------------- *) @@ -5013,7 +5007,7 @@ let TAN_ABS_GE_X = prove REPEAT STRIP_TAC THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `abs(atn(tan x))` THEN REWRITE_TAC[ATN_ABS_LE_X] THEN MATCH_MP_TAC REAL_EQ_IMP_LE THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC TAN_ATN THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC TAN_ATN THEN POP_ASSUM MP_TAC THEN REAL_ARITH_TAC);; (* ------------------------------------------------------------------------- *) @@ -5071,7 +5065,7 @@ let casn = new_definition let CASN_BODY_LEMMA = prove (`!z. ~(ii * z + csqrt(Cx(&1) - z pow 2) = Cx(&0))`, GEN_TAC THEN MP_TAC(SPEC `Cx(&1) - z pow 2` CSQRT) THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CSIN_CASN = prove (`!z. csin(casn z) = z`, @@ -5084,7 +5078,7 @@ let CSIN_CASN = prove `~(z = Cx(&0)) ==> ((z - inv z) / (Cx(&2) * ii) = c <=> z pow 2 - Cx(&1) = Cx(&2) * ii * c * z)`] THEN - MP_TAC(SPEC `Cx(&1) - z pow 2` CSQRT) THEN CONV_TAC COMPLEX_FIELD);; + MP_TAC(SPEC `Cx(&1) - z pow 2` CSQRT) THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CASN_CSIN = prove (`!z. abs(Re z) < pi / &2 \/ (abs(Re z) = pi / &2 /\ Im z = &0) @@ -5140,17 +5134,17 @@ let CASN_0 = prove let CASN_1 = prove (`casn(Cx(&1)) = Cx(pi / &2)`, REWRITE_TAC[casn; GSYM CX_POW; GSYM CX_SUB] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[CSQRT_0; COMPLEX_MUL_RID; COMPLEX_ADD_RID] THEN - REWRITE_TAC[CLOG_II] THEN CONV_TAC COMPLEX_RING);; + REWRITE_TAC[CLOG_II] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let CASN_NEG_1 = prove (`casn(--Cx(&1)) = --Cx(pi / &2)`, REWRITE_TAC[casn; GSYM CX_NEG; GSYM CX_POW; GSYM CX_SUB] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[CSQRT_0; COMPLEX_MUL_RID; COMPLEX_ADD_RID] THEN REWRITE_TAC[CX_NEG; COMPLEX_MUL_RID; COMPLEX_MUL_RNEG] THEN - REWRITE_TAC[CLOG_NEG_II] THEN CONV_TAC COMPLEX_RING);; + REWRITE_TAC[CLOG_NEG_II] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let HAS_COMPLEX_DERIVATIVE_CASN = prove (`!z. (Im z = &0 ==> abs(Re z) < &1) @@ -5197,7 +5191,7 @@ let HAS_COMPLEX_DERIVATIVE_CASN = prove [DISCH_THEN(K ALL_TAC) THEN ASM_REWRITE_TAC[csqrt] THEN ASM_REWRITE_TAC[IM_SUB; RE_SUB; IM_CX; RE_CX; IM_POW_2; RE_POW_2; REAL_MUL_RZERO; REAL_SUB_REFL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `&0 <= &1 - (z pow 2 - &0) <=> z pow 2 <= &1 pow 2`; GSYM REAL_LE_SQUARE_ABS] THEN ASM_SIMP_TAC[REAL_LT_IMP_LE; REAL_ABS_NUM; RE; REAL_ADD_LID] THEN @@ -5209,7 +5203,7 @@ let HAS_COMPLEX_DERIVATIVE_CASN = prove REWRITE_TAC[csqrt; IM_SUB; RE_SUB; IM_CX; RE_CX; IM_POW_2; RE_POW_2] THEN REWRITE_TAC[REAL_RING `&0 - &2 * x * y = &0 <=> x = &0 \/ y = &0`] THEN ASM_CASES_TAC `Re z = &0` THEN ASM_REWRITE_TAC[RE; IM] THENL - [CONV_TAC REAL_RAT_REDUCE_CONV THEN + [(CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `&1 - (&0 - x) = &1 + x`] THEN SIMP_TAC[REAL_POW_2; REAL_LE_ADD; REAL_LE_SQUARE; REAL_POS] THEN REWRITE_TAC[RE; IM; REAL_ADD_LID; REAL_ARITH `&0 < --x + y <=> x < y`] THEN @@ -5269,7 +5263,7 @@ let cacs = new_definition let CACS_BODY_LEMMA = prove (`!z. ~(z + ii * csqrt(Cx(&1) - z pow 2) = Cx(&0))`, GEN_TAC THEN MP_TAC(SPEC `Cx(&1) - z pow 2` CSQRT) THEN - CONV_TAC COMPLEX_FIELD);; + (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CCOS_CACS = prove (`!z. ccos(cacs z) = z`, @@ -5282,7 +5276,7 @@ let CCOS_CACS = prove `~(z = Cx(&0)) ==> ((z + inv z) / Cx(&2) = c <=> z pow 2 + Cx(&1) = Cx(&2) * c * z)`] THEN - MP_TAC(SPEC `Cx(&1) - z pow 2` CSQRT) THEN CONV_TAC COMPLEX_FIELD);; + MP_TAC(SPEC `Cx(&1) - z pow 2` CSQRT) THEN (CONV_TAC "COMPLEX_FIELD") COMPLEX_FIELD);; let CACS_CCOS = prove (`!z. &0 < Re z /\ Re z < pi \/ @@ -5396,7 +5390,7 @@ let HAS_COMPLEX_DERIVATIVE_CACS = prove [ASM_REWRITE_TAC[csqrt] THEN ASM_REWRITE_TAC[IM_SUB; RE_SUB; IM_CX; RE_CX; IM_POW_2; RE_POW_2; REAL_MUL_RZERO; REAL_SUB_REFL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `&0 <= &1 - (z pow 2 - &0) <=> z pow 2 <= &1 pow 2`; GSYM REAL_LE_SQUARE_ABS] THEN ASM_SIMP_TAC[REAL_LT_IMP_LE; REAL_ABS_NUM; RE; REAL_ADD_LID] THEN @@ -5408,10 +5402,10 @@ let HAS_COMPLEX_DERIVATIVE_CACS = prove REWRITE_TAC[csqrt; IM_SUB; RE_SUB; IM_CX; RE_CX; IM_POW_2; RE_POW_2] THEN REWRITE_TAC[REAL_RING `&0 - &2 * x * y = &0 <=> x = &0 \/ y = &0`] THEN ASM_CASES_TAC `Re z = &0` THEN ASM_REWRITE_TAC[RE; IM] THENL - [CONV_TAC REAL_RAT_REDUCE_CONV THEN + [(CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[REAL_ARITH `&1 - (&0 - x) = &1 + x`] THEN SIMP_TAC[REAL_POW_2; REAL_LE_ADD; REAL_LE_SQUARE; REAL_POS] THEN - REWRITE_TAC[RE; IM; REAL_ADD_LID] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[RE; IM; REAL_ADD_LID] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(MP_TAC o MATCH_MP (REAL_ARITH `a + b = &0 ==> a = --b`)) THEN DISCH_THEN(MP_TAC o AP_TERM `\x:real. x pow 2`) THEN SIMP_TAC[SQRT_POW_2; REAL_POW_NEG; ARITH; REAL_LE_SQUARE; REAL_LE_ADD; @@ -5492,8 +5486,8 @@ let CASN_RANGE_LEMMA = prove REWRITE_TAC[REAL_NEG_SUB; REAL_ENTIRE; REAL_OF_NUM_EQ; ARITH] THEN MAP_EVERY ASM_CASES_TAC [`Re z = &0`; `Im z = &0`] THEN ASM_REWRITE_TAC[REAL_SUB_LZERO; REAL_SUB_RZERO] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN - REWRITE_TAC[RE; SQRT_1] THEN CONV_TAC REAL_RAT_REDUCE_CONV THENL + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN + REWRITE_TAC[RE; SQRT_1] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THENL [REWRITE_TAC[REAL_ARITH `&1 - (&0 - z) = &1 + z`] THEN SIMP_TAC[REAL_LE_ADD; REAL_POS; REAL_LE_SQUARE; RE] THEN MATCH_MP_TAC REAL_LT_RSQRT THEN REAL_ARITH_TAC; @@ -5574,7 +5568,7 @@ let CCOS_CASN_NZ = prove MATCH_MP_TAC(COMPLEX_RING `~(x pow 2 + y pow 2 = Cx(&0)) ==> ~(ii * x = y)`) THEN REPEAT(POP_ASSUM MP_TAC) THEN - MP_TAC(SPEC `Cx(&1) - z pow 2` CSQRT) THEN CONV_TAC COMPLEX_RING);; + MP_TAC(SPEC `Cx(&1) - z pow 2` CSQRT) THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let CSIN_CACS_NZ = prove (`!z. ~(z pow 2 = Cx(&1)) ==> ~(csin(cacs z) = Cx(&0))`, @@ -5592,12 +5586,12 @@ let CSIN_CACS_NZ = prove MATCH_MP_TAC(COMPLEX_RING `~(x pow 2 + y pow 2 = Cx(&0)) ==> ~(ii * x = y)`) THEN REPEAT(POP_ASSUM MP_TAC) THEN - MP_TAC(SPEC `Cx(&1) - z pow 2` CSQRT) THEN CONV_TAC COMPLEX_RING);; + MP_TAC(SPEC `Cx(&1) - z pow 2` CSQRT) THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let CCOS_CSIN_CSQRT = prove (`!z. &0 < cos(Re z) \/ cos(Re z) = &0 /\ Im(z) * sin(Re z) <= &0 ==> ccos(z) = csqrt(Cx(&1) - csin(z) pow 2)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC CSQRT_UNIQUE THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CSQRT_UNIQUE THEN REWRITE_TAC[COMPLEX_EQ_SUB_LADD] THEN ONCE_REWRITE_TAC[COMPLEX_ADD_SYM] THEN REWRITE_TAC[CSIN_CIRCLE] THEN REWRITE_TAC[RE_CCOS; IM_CCOS] THEN ASM_SIMP_TAC[REAL_LT_MUL_EQ; REAL_HALF; REAL_LT_ADD; REAL_EXP_POS_LT] THEN @@ -5613,7 +5607,7 @@ let CCOS_CSIN_CSQRT = prove let CSIN_CCOS_CSQRT = prove (`!z. &0 < sin(Re z) \/ sin(Re z) = &0 /\ &0 <= Im(z) * cos(Re z) ==> csin(z) = csqrt(Cx(&1) - ccos(z) pow 2)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC CSQRT_UNIQUE THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CSQRT_UNIQUE THEN REWRITE_TAC[COMPLEX_EQ_SUB_LADD] THEN ONCE_REWRITE_TAC[COMPLEX_ADD_SYM] THEN REWRITE_TAC[ONCE_REWRITE_RULE[COMPLEX_ADD_SYM] CSIN_CIRCLE] THEN REWRITE_TAC[RE_CSIN; IM_CSIN] THEN @@ -5634,7 +5628,7 @@ let CASN_CACS_SQRT_POS = prove AP_TERM_TAC THEN AP_TERM_TAC THEN MATCH_MP_TAC(COMPLEX_RING `w = z ==> ii * z + s = s + ii * w`) THEN MATCH_MP_TAC CSQRT_UNIQUE THEN - ASM_REWRITE_TAC[CSQRT] THEN CONV_TAC COMPLEX_RING);; + ASM_REWRITE_TAC[CSQRT] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let CACS_CASN_SQRT_POS = prove (`!z. (&0 < Re z \/ Re z = &0 /\ &0 <= Im z) @@ -5643,7 +5637,7 @@ let CACS_CASN_SQRT_POS = prove AP_TERM_TAC THEN AP_TERM_TAC THEN MATCH_MP_TAC(COMPLEX_RING `w = z ==> z + ii * s = ii * s + w`) THEN MATCH_MP_TAC CSQRT_UNIQUE THEN - ASM_REWRITE_TAC[CSQRT] THEN CONV_TAC COMPLEX_RING);; + ASM_REWRITE_TAC[CSQRT] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let CSIN_CACS = prove (`!z. &0 < Re z \/ Re(z) = &0 /\ &0 <= Im z @@ -5754,7 +5748,7 @@ let ASN_MONO_LT_EQ = prove (`!x y. abs(x) <= &1 /\ abs(y) <= &1 ==> (asn(x) < asn(y) <=> x < y)`, REPEAT STRIP_TAC THEN MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `sin(asn(x)) < sin(asn(y))` THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SIN_MONO_LT_EQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SIN_MONO_LT_EQ THEN ONCE_REWRITE_TAC[CONJ_ASSOC] THEN CONJ_TAC THEN MATCH_MP_TAC ASN_BOUNDS; BINOP_TAC THEN MATCH_MP_TAC SIN_ASN] THEN ASM_REAL_ARITH_TAC);; @@ -5865,7 +5859,7 @@ let ACS_MONO_LT_EQ = prove (`!x y. abs(x) <= &1 /\ abs(y) <= &1 ==> (acs(x) < acs(y) <=> y < x)`, REPEAT STRIP_TAC THEN MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `cos(acs(y)) < cos(acs(x))` THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC COS_MONO_LT_EQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC COS_MONO_LT_EQ THEN ONCE_REWRITE_TAC[CONJ_ASSOC] THEN CONJ_TAC THEN MATCH_MP_TAC ACS_BOUNDS; BINOP_TAC THEN MATCH_MP_TAC COS_ACS] THEN ASM_REAL_ARITH_TAC);; @@ -6370,14 +6364,14 @@ let LIM_CSIN_OVER_X = prove REWRITE_TAC[GSYM CX_EXP; COMPLEX_NORM_MUL; COMPLEX_NORM_CX] THEN REWRITE_TAC[real_abs; REAL_EXP_POS_LE] THEN REWRITE_TAC[GSYM real_abs] THEN MP_TAC(ISPECL [`0`; `z:complex`] TAYLOR_CSIN) THEN - REWRITE_TAC[VSUM_SING_NUMSEG] THEN CONV_TAC NUM_REDUCE_CONV THEN + REWRITE_TAC[VSUM_SING_NUMSEG] THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN REWRITE_TAC[complex_pow; COMPLEX_POW_1; COMPLEX_DIV_1] THEN REWRITE_TAC[COMPLEX_MUL_LID] THEN MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ_ALT] REAL_LE_TRANS) THEN MATCH_MP_TAC REAL_EQ_IMP_LE THEN REWRITE_TAC[COMPLEX_NORM_DIV; COMPLEX_NORM_CX; REAL_ABS_NUM] THEN REWRITE_TAC[COMPLEX_NORM_POW] THEN REAL_ARITH_TAC; - LIM_TAC THEN TRY(CONV_TAC COMPLEX_RING) THEN + LIM_TAC THEN TRY((CONV_TAC "COMPLEX_RING") COMPLEX_RING) THEN GEN_REWRITE_TAC LAND_CONV [GSYM o_DEF] THEN MATCH_MP_TAC CONTINUOUS_AT_COMPOSE THEN REWRITE_TAC[CONTINUOUS_AT_CEXP] THEN @@ -6401,7 +6395,7 @@ let COMPLEX_ROOT_POLYFUN = prove ==> ~(i = n)`] THEN REWRITE_TAC[COMPLEX_MUL_LZERO; complex_pow; COMPLEX_MUL_RID] THEN REWRITE_TAC[GSYM COMPLEX_VEC_0; VSUM_0; VECTOR_ADD_RID] THEN - REWRITE_TAC[COMPLEX_VEC_0] THEN CONV_TAC COMPLEX_RING);; + REWRITE_TAC[COMPLEX_VEC_0] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let COMPLEX_ROOT_UNITY = prove (`!n j. ~(n = 0) @@ -6441,7 +6435,7 @@ let COMPLEX_ROOT_UNITY_EQ_1 = prove ONCE_REWRITE_TAC[COMPLEX_RING `t * p * ii = ii * t * p`] THEN REWRITE_TAC[CEXP_EULER; GSYM CX_MUL; GSYM CX_SIN; GSYM CX_COS] THEN REWRITE_TAC[COS_NPI; SIN_NPI] THEN SIMPLE_COMPLEX_ARITH_TAC; - ASM_SIMP_TAC[COMPLEX_ROOT_UNITY_EQ] THEN CONV_TAC NUMBER_RULE]);; + ASM_SIMP_TAC[COMPLEX_ROOT_UNITY_EQ] THEN (CONV_TAC "NUMBER_RULE") NUMBER_RULE]);; let FINITE_CARD_COMPLEX_ROOTS_UNITY = prove (`!n. 1 <= n @@ -6449,7 +6443,7 @@ let FINITE_CARD_COMPLEX_ROOTS_UNITY = prove REPEAT GEN_TAC THEN DISCH_TAC THEN ASM_SIMP_TAC[COMPLEX_ROOT_POLYFUN] THEN MATCH_MP_TAC COMPLEX_POLYFUN_ROOTBOUND THEN DISCH_THEN(MP_TAC o SPEC `n:num`) THEN - ASM_SIMP_TAC[IN_NUMSEG; LE_1; LE_0; LE_REFL] THEN CONV_TAC COMPLEX_RING);; + ASM_SIMP_TAC[IN_NUMSEG; LE_1; LE_0; LE_REFL] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; let FINITE_COMPLEX_ROOTS_UNITY = prove (`!n. ~(n = 0) ==> FINITE {z | z pow n = Cx(&1)}`, @@ -6482,7 +6476,7 @@ let COMPLEX_ROOTS_UNITY = prove (`!n. 1 <= n ==> {z | z pow n = Cx(&1)} = {cexp(Cx(&2) * Cx pi * ii * Cx(&j / &n)) | j | j < n}`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC CARD_SUBSET_LE THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CARD_SUBSET_LE THEN ASM_SIMP_TAC[FINITE_CARD_COMPLEX_ROOTS_UNITY; FINITE_CARD_COMPLEX_ROOTS_UNITY_EXPLICIT] THEN GEN_REWRITE_TAC LAND_CONV [SIMPLE_IMAGE_GEN] THEN @@ -6509,7 +6503,7 @@ let COMPLEX_NOT_ROOT_UNITY = prove ASM_SIMP_TAC[CX_DIV; LE_1; CX_INJ; REAL_OF_NUM_EQ; COMPLEX_FIELD `~(n = Cx(&0)) ==> n * p * i * Cx(&1) / n = i * p`] THEN REWRITE_TAC[CEXP_EULER; RE_CX; IM_CX; GSYM CX_COS; GSYM CX_SIN] THEN - REWRITE_TAC[COS_PI; SIN_PI] THEN CONV_TAC COMPLEX_RING);; + REWRITE_TAC[COS_PI; SIN_PI] THEN (CONV_TAC "COMPLEX_RING") COMPLEX_RING);; (* ------------------------------------------------------------------------- *) (* Relation between clog and Arg, and hence continuity of Arg. *) @@ -6735,12 +6729,12 @@ let ARG_ATAN_UPPERHALF = prove [MATCH_MP_TAC SQRT_UNIQUE THEN ASM_SIMP_TAC[REAL_LE_DIV; NORM_POS_LE; REAL_LT_IMP_LE] THEN REWRITE_TAC[REAL_POW_DIV; COMPLEX_SQNORM] THEN - UNDISCH_TAC `&0 < Im z` THEN CONV_TAC REAL_FIELD; + UNDISCH_TAC `&0 < Im z` THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; REWRITE_TAC[REAL_ADD_LID; REAL_SUB_RZERO; real_div] THEN REWRITE_TAC[COMPLEX_EQ; RE_MUL_CX; IM_MUL_CX; RE_MUL_II; IM_MUL_II; RE_ADD; IM_ADD; RE_CX; IM_CX] THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM COMPLEX_NORM_NZ]) THEN - POP_ASSUM MP_TAC THEN CONV_TAC REAL_FIELD]);; + POP_ASSUM MP_TAC THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]);; (* ------------------------------------------------------------------------- *) (* Real n'th roots. Regardless of whether n is odd or even, we totalize by *) @@ -6761,7 +6755,7 @@ let ROOT_1 = prove let ROOT_2 = prove (`!x. root 2 x = sqrt x`, - GEN_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC SQRT_UNIQUE_GEN THEN + GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SQRT_UNIQUE_GEN THEN REWRITE_TAC[root; REAL_SGN_MUL; REAL_POW_MUL; REAL_SGN_REAL_SGN] THEN REWRITE_TAC[REAL_SGN_POW_2; GSYM REAL_SGN_POW] THEN SIMP_TAC[real_sgn; REAL_EXP_POS_LT; REAL_MUL_RID] THEN @@ -7157,7 +7151,7 @@ let RPOW_SQRT = prove CONJ_TAC THENL [ASM_SIMP_TAC[SQRT_POW_2] THEN ASM_SIMP_TAC[GSYM RPOW_POW; RPOW_RPOW] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[RPOW_POW; REAL_POW_1]; MATCH_MP_TAC(REAL_ARITH `&0 <= x /\ &0 <= y ==> x + y = &0 ==> x = &0 /\ y = &0`) THEN @@ -7793,13 +7787,13 @@ let FUBINI_POLAR = prove [MP_TAC(ISPECL [`g:complex->real^N`; `(:real^(1,1)finite_sum)`; `\n:num. n`] ABSOLUTELY_INTEGRABLE_TWIZZLE_EQ) THEN REWRITE_TAC[PERMUTES_ID; DIMINDEX_FINITE_SUM; DIMINDEX_1; DIMINDEX_2] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN GEN_REWRITE_TAC (LAND_CONV o RAND_CONV o LAND_CONV) [GSYM o_DEF] THEN ASM_REWRITE_TAC[]; MP_TAC(ISPECL [`g:complex->real^N`; `(:real^(1,1)finite_sum)`; `\n:num. n`] INTEGRAL_TWIZZLE_EQ) THEN REWRITE_TAC[PERMUTES_ID; DIMINDEX_FINITE_SUM; DIMINDEX_1; DIMINDEX_2] THEN - CONV_TAC NUM_REDUCE_CONV THEN + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THEN GEN_REWRITE_TAC (LAND_CONV o RAND_CONV o RAND_CONV) [GSYM o_DEF] THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(SUBST1_TAC o SYM)] THEN SUBGOAL_THEN @@ -7933,10 +7927,10 @@ let FUBINI_TONELLI_POLAR = prove ASM_REWRITE_TAC[IN_ELIM_THM] THEN FIRST_X_ASSUM(fun th -> GEN_REWRITE_TAC (RAND_CONV o RAND_CONV) [GSYM th]) THEN - CONV_TAC SYM_CONV THEN EXPAND_TAC "h" THEN REWRITE_TAC[o_DEF] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN EXPAND_TAC "h" THEN REWRITE_TAC[o_DEF] THEN MATCH_MP_TAC ABSOLUTELY_INTEGRABLE_TWIZZLE_EQ THEN REWRITE_TAC[PERMUTES_ID; DIMINDEX_2; DIMINDEX_1; DIMINDEX_FINITE_SUM] THEN - CONV_TAC NUM_REDUCE_CONV; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; SUBGOAL_THEN `!x y. ((g:complex->real^N) o h) (pastecart x y) = g(complex(drop x,drop y))` diff --git a/Multivariate/vectors.ml b/Multivariate/vectors.ml index 98740757..a8024ec9 100644 --- a/Multivariate/vectors.ml +++ b/Multivariate/vectors.ml @@ -393,7 +393,7 @@ let TRANSLATION_SUBSET_GALOIS_RIGHT = prove REPEAT GEN_TAC THEN MATCH_MP_TAC(SET_RULE `(!x. f(g x) = x) /\ (!y. g(f y) = y) ==> (s SUBSET IMAGE f t <=> IMAGE g s SUBSET t)`) THEN - REWRITE_TAC[] THEN CONV_TAC VECTOR_ARITH);; + REWRITE_TAC[] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH);; let TRANSLATION_SUBSET_GALOIS_LEFT = prove (`!s t a:real^N. @@ -544,7 +544,7 @@ let SQUARE_CONTINUOUS = prove let SQRT_WORKS_GEN = prove (`!x. real_sgn(sqrt x) = real_sgn x /\ sqrt(x) pow 2 = abs x`, - GEN_TAC THEN REWRITE_TAC[sqrt] THEN CONV_TAC SELECT_CONV THEN + GEN_TAC THEN REWRITE_TAC[sqrt] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN SUBGOAL_THEN `!x. &0 < x ==> ?y. &0 < y /\ y pow 2 = x` ASSUME_TAC THENL [REPEAT STRIP_TAC THEN MP_TAC(ISPECL [`(\u. lambda i. u):real->real^1`; `&0`; `&1 + x`; @@ -560,7 +560,7 @@ let SQRT_WORKS_GEN = prove REAL_ARITH `abs(z2 - x2) < x2 - y ==> y < z2`]; ASM_CASES_TAC `x = &0` THEN ASM_REWRITE_TAC[REAL_SGN_0; REAL_SGN_EQ; UNWIND_THM2] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN FIRST_X_ASSUM(MP_TAC o SPEC `abs x`) THEN ANTS_TAC THENL [ASM_REAL_ARITH_TAC; ALL_TAC] THEN DISCH_THEN(X_CHOOSE_THEN `y:real` STRIP_ASSUME_TAC) THEN @@ -918,9 +918,9 @@ let L1_LE_NORM = prove let lemma = prove (`!x n. &n * sum(1..n) (\i. x i pow 2) - (sum(1..n) x) pow 2 = sum(1..n) (\i. sum(i+1..n) (\j. (x i - x j) pow 2))`, - GEN_TAC THEN CONV_TAC(BINDER_CONV SYM_CONV) THEN INDUCT_TAC THEN + GEN_TAC THEN (CONV_TAC "(BINDER_CONV SYM_CONV)") (BINDER_CONV SYM_CONV) THEN INDUCT_TAC THEN REWRITE_TAC[SUM_CLAUSES_NUMSEG; ARITH; ARITH_RULE `1 <= SUC n`] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN SIMP_TAC[ARITH_RULE `i <= n ==> i + 1 <= SUC n`; SUM_TRIV_NUMSEG; ARITH_RULE `~(n + 1 <= n)`; ARITH_RULE `n < SUC n + 1`] THEN ASM_REWRITE_TAC[SUM_ADD_NUMSEG; REAL_ADD_RID] THEN @@ -990,7 +990,7 @@ let NORM_LT_SQUARE_ALT = prove (`!x:real^N. norm(x) < a <=> &0 <= a /\ x dot x < a pow 2`, REWRITE_TAC[REAL_ARITH `x < a <=> ~(x >= a)`; NORM_GE_SQUARE] THEN REPEAT GEN_TAC THEN ASM_CASES_TAC `a = &0` THENL - [ASM_REWRITE_TAC[real_ge] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [ASM_REWRITE_TAC[real_ge] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[DOT_POS_LE]; ASM_REAL_ARITH_TAC]);; @@ -1286,7 +1286,7 @@ let NORM_ARITH = and pure = GEN_REAL_ARITH REAL_VECTOR_PROVER in fun tm -> let th = init tm in EQ_MP (SYM th) (pure(rand(concl th)));; -let NORM_ARITH_TAC = CONV_TAC NORM_ARITH;; +let NORM_ARITH_TAC = (CONV_TAC "NORM_ARITH") NORM_ARITH;; let ASM_NORM_ARITH_TAC = REPEAT(FIRST_X_ASSUM(MP_TAC o check (not o is_forall o concl))) THEN @@ -1471,7 +1471,7 @@ let DIST_RESCALE = prove (`!a x y:real^N. norm(x) = norm(y) ==> dist(a % x,y) = dist(x,a % y)`, SIMP_TAC[dist; NORM_EQ_SQUARE; NORM_POS_LE; NORM_POW_2] THEN REWRITE_TAC[DOT_LSUB; DOT_RSUB; DOT_LMUL; DOT_RMUL] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let DIST_DESCALE = prove (`!a b x y:real^N. @@ -1614,7 +1614,7 @@ let VSUM_SUPERSET = prove let VSUM_SUPPORT = prove (`!f:A->real^N s. vsum {x | x IN s /\ ~(f x = vec 0)} f = vsum s f`, - REPEAT GEN_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN + REPEAT GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN SET_TAC[]);; let VSUM_UNIV = prove @@ -1939,7 +1939,7 @@ let VSUM_BIJECTION = prove (!x. x IN s ==> p(x) IN s) /\ (!y. y IN s ==> ?!x. x IN s /\ p(x) = y) ==> vsum s f = vsum s (f o p)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_EQ_GENERAL THEN EXISTS_TAC `p:A->A` THEN ASM_REWRITE_TAC[o_THM]);; @@ -2336,7 +2336,7 @@ let NORM_VSUM_PYTHAGOREAN = prove ONCE_REWRITE_TAC[SWAP_FORALL_THM] THEN GEN_TAC THEN SIMP_TAC[IMP_CONJ] THEN MATCH_MP_TAC FINITE_INDUCT_STRONG THEN SIMP_TAC[VSUM_CLAUSES; SUM_CLAUSES; NORM_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[PAIRWISE_INSERT] THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[PAIRWISE_INSERT] THEN REWRITE_TAC[pairwise] THEN REPEAT GEN_TAC THEN DISCH_THEN(fun th -> STRIP_TAC THEN MP_TAC th) THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(STRIP_ASSUME_TAC o GSYM) THEN ASM_REWRITE_TAC[] THEN @@ -2771,7 +2771,7 @@ let adjoint = new_definition let ADJOINT_WORKS = prove (`!f:real^M->real^N. linear f ==> !x y. f(x) dot y = x dot (adjoint f)(y)`, - GEN_TAC THEN DISCH_TAC THEN SIMP_TAC[adjoint] THEN CONV_TAC SELECT_CONV THEN + GEN_TAC THEN DISCH_TAC THEN SIMP_TAC[adjoint] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ONCE_REWRITE_TAC[SWAP_FORALL_THM] THEN ONCE_REWRITE_TAC[GSYM SKOLEM_THM] THEN X_GEN_TAC `y:real^N` THEN EXISTS_TAC `(lambda i. (f:real^M->real^N) (basis i) dot y):real^M` THEN @@ -2805,7 +2805,7 @@ let ADJOINT_UNIQUE = prove let ADJOINT_COMPOSE = prove (`!f g:real^N->real^N. linear f /\ linear g ==> adjoint(f o g) = adjoint g o adjoint f`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC ADJOINT_UNIQUE THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC ADJOINT_UNIQUE THEN ASM_SIMP_TAC[LINEAR_COMPOSE; o_THM; ADJOINT_CLAUSES]);; let SELF_ADJOINT_COMPOSE = prove @@ -2840,7 +2840,7 @@ let ORTHOGONAL_PROJECTION_EQ_SELF_ADJOINT_IDEMPOTENT = prove REPEAT STRIP_TAC THEN ASM_SIMP_TAC[ORTHOGONAL_PROJECTION_ALT] THEN EQ_TAC THENL [REPEAT STRIP_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC ADJOINT_UNIQUE THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC ADJOINT_UNIQUE THEN ASM_REWRITE_TAC[] THEN MAP_EVERY X_GEN_TAC [`x:real^N`; `y:real^N`] THEN FIRST_X_ASSUM(fun th -> MP_TAC(ISPECL [`x:real^N`; `y:real^N`] th) THEN @@ -3481,12 +3481,12 @@ let MATRIX_VECTOR_LMUL = prove let MATRIX_VECTOR_MUL_LNEG = prove (`!A:real^M^N x:real^M. --A ** x = --(A ** x)`, REWRITE_TAC[MATRIX_NEG_MINUS1; MATRIX_VECTOR_LMUL] THEN - CONV_TAC VECTOR_ARITH);; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH);; let MATRIX_VECTOR_MUL_RNEG = prove (`!A:real^M^N x:real^M. A ** --x = --(A ** x)`, REWRITE_TAC[VECTOR_NEG_MINUS1; MATRIX_VECTOR_MUL_RMUL] THEN - CONV_TAC VECTOR_ARITH);; + (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH);; let COLUMN_MATRIX_MUL = prove (`!A:real^N^M B:real^P^N. @@ -3574,7 +3574,7 @@ let INVERTIBLE_CMUL = prove (`!A:real^N^M c. invertible(c %% A) <=> ~(c = &0) /\ invertible(A)`, REPEAT GEN_TAC THEN ASM_CASES_TAC `c = &0` THEN ASM_REWRITE_TAC[] THENL [REWRITE_TAC[invertible; MATRIX_MUL_LZERO; MATRIX_CMUL_LZERO; MAT_EQ] THEN - CONV_TAC NUM_REDUCE_CONV; + (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV; ALL_TAC] THEN REWRITE_TAC[invertible; MATRIX_MUL_LMUL; MATRIX_MUL_RMUL] THEN EQ_TAC THEN DISCH_THEN(X_CHOOSE_THEN `B:real^M^N` STRIP_ASSUME_TAC) THENL @@ -3671,7 +3671,7 @@ let MATRIX_MUL_COMPONENT = prove let ADJOINT_MATRIX = prove (`!A:real^N^M. adjoint(\x. A ** x) = (\x. transp A ** x)`, - GEN_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC ADJOINT_UNIQUE THEN + GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC ADJOINT_UNIQUE THEN REWRITE_TAC[MATRIX_VECTOR_MUL_LINEAR] THEN REPEAT GEN_TAC THEN SIMP_TAC[transp; dot; LAMBDA_BETA; matrix_vector_mul; GSYM SUM_LMUL; GSYM SUM_RMUL] THEN @@ -5055,7 +5055,7 @@ let DEPENDENT_EXPLICIT = prove `\y. if y = a then -- &1 else (u:real^N->real) y`; `a:real^N`] THEN ASM_REWRITE_TAC[IN_INSERT; INSERT_SUBSET; FINITE_INSERT] THEN - CONJ_TAC THENL [ASM SET_TAC[]; CONV_TAC REAL_RAT_REDUCE_CONV] THEN + CONJ_TAC THENL [ASM SET_TAC[]; (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV] THEN ASM_SIMP_TAC[VSUM_CLAUSES] THEN COND_CASES_TAC THENL [ASM SET_TAC[]; ALL_TAC] THEN REWRITE_TAC[VECTOR_ARITH `-- &1 % a + s = vec 0 <=> a = s`] THEN @@ -5464,7 +5464,7 @@ let dim = new_definition let BASIS_EXISTS = prove (`!v. ?b. b SUBSET v /\ independent b /\ v SUBSET (span b) /\ b HAS_SIZE (dim v)`, - GEN_TAC THEN REWRITE_TAC[dim] THEN CONV_TAC SELECT_CONV THEN + GEN_TAC THEN REWRITE_TAC[dim] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN MESON_TAC[MAXIMAL_INDEPENDENT_SUBSET; HAS_SIZE; INDEPENDENT_BOUND]);; let BASIS_EXISTS_FINITE = prove @@ -5780,7 +5780,7 @@ let INDEPENDENT_INJECTIVE_IMAGE_GEN = prove REWRITE_TAC[SPAN_0]; ASM_SIMP_TAC[LINEAR_VSUM] THEN FIRST_ASSUM(SUBST1_TAC o MATCH_MP LINEAR_0) THEN - FIRST_X_ASSUM(SUBST1_TAC o SYM) THEN CONV_TAC SYM_CONV THEN + FIRST_X_ASSUM(SUBST1_TAC o SYM) THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN W(MP_TAC o PART_MATCH (lhs o rand) VSUM_IMAGE o lhand o snd) THEN ASM_SIMP_TAC[o_DEF; LINEAR_CMUL] THEN DISCH_THEN MATCH_MP_TAC THEN ASM_MESON_TAC[SPAN_SUPERSET; SUBSET]]);; @@ -5977,7 +5977,7 @@ let LINEAR_INDEPENDENT_EXTEND_LEMMA = prove MP_TAC THENL [GEN_TAC THEN DISCH_TAC THEN MATCH_MP_TAC(TAUT `a /\ (a ==> b) ==> a /\ b`) THEN CONJ_TAC THENL - [EXPAND_TAC "h" THEN CONV_TAC SELECT_CONV THEN + [EXPAND_TAC "h" THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_MESON_TAC[SPAN_BREAKDOWN_EQ]; ALL_TAC] THEN REWRITE_TAC[RIGHT_IMP_FORALL_THM; IMP_IMP] THEN GEN_TAC THEN @@ -5996,7 +5996,7 @@ let LINEAR_INDEPENDENT_EXTEND_LEMMA = prove REPEAT CONJ_TAC THENL [MAP_EVERY X_GEN_TAC [`x:real^M`; `y:real^M`] THEN STRIP_TAC THEN SUBGOAL_THEN `(h:real^M->real)(x + y) = h(x) + h(y)` ASSUME_TAC THENL - [CONV_TAC SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[VECTOR_ARITH `(x + y) - (k + l) % a = (x - k % a) + (y - l % a)`] THEN CONJ_TAC THEN MATCH_MP_TAC SPAN_ADD THEN ASM_REWRITE_TAC[] THEN @@ -6007,7 +6007,7 @@ let LINEAR_INDEPENDENT_EXTEND_LEMMA = prove ASM_SIMP_TAC[] THEN VECTOR_ARITH_TAC; MAP_EVERY X_GEN_TAC [`x:real^M`; `c:real`] THEN STRIP_TAC THEN SUBGOAL_THEN `(h:real^M->real)(c % x) = c * h(x)` ASSUME_TAC THENL - [CONV_TAC SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[VECTOR_ARITH `c % x - (c * k) % a = c % (x - k % a)`] THEN CONJ_TAC THEN MATCH_MP_TAC SPAN_MUL THEN ASM_REWRITE_TAC[] THEN @@ -7836,7 +7836,7 @@ let INDEPENDENT_SUBSPACES = prove EQ_TAC THEN DISCH_TAC THEN REPEAT GEN_TAC THEN STRIP_TAC THENL [ONCE_REWRITE_TAC[GSYM VECTOR_SUB_EQ] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_SIMP_TAC[SUBSPACE_SUB] THEN - FIRST_X_ASSUM(MP_TAC o SYM) THEN CONV_TAC VECTOR_ARITH; + FIRST_X_ASSUM(MP_TAC o SYM) THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_SIMP_TAC[SUBSPACE_0; VECTOR_ADD_RID]]);; @@ -8091,7 +8091,7 @@ let SPECIAL_HYPERPLANE_SPAN = prove (`!k. 1 <= k /\ k <= dimindex(:N) ==> {x:real^N | x$k = &0} = span(IMAGE basis ((1..dimindex(:N)) DELETE k))`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC SPAN_SUBSPACE THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SPAN_SUBSPACE THEN ASM_SIMP_TAC[SUBSPACE_SPECIAL_HYPERPLANE] THEN CONJ_TAC THENL [REWRITE_TAC[SUBSET; FORALL_IN_IMAGE; IN_ELIM_THM] THEN ASM_SIMP_TAC[BASIS_COMPONENT; IN_DELETE]; @@ -8267,7 +8267,7 @@ let DIM_IMAGE_KERNEL_GEN = prove REWRITE_TAC[EXTENSION] THEN DISCH_THEN(MP_TAC o SPEC `x:real^M`) THEN ASM_REWRITE_TAC[] THEN REMOVE_THEN "*" (MP_TAC o SPEC `x:real^M`) THEN - (CONV_TAC o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) + ((CONV_TAC "o") o GEN_SIMPLIFY_CONV TOP_DEPTH_SQCONV (basic_ss []) 4) [IN_UNIV; SPAN_FINITE; INDEPENDENT_IMP_FINITE; IN_ELIM_THM; FINITE_IMAGE; FINITE_DIFF; ASSUME `independent(w:real^M->bool)`] THEN REWRITE_TAC[IMP_CONJ; LEFT_IMP_EXISTS_THM] THEN DISCH_TAC THEN @@ -8279,7 +8279,7 @@ let DIM_IMAGE_KERNEL_GEN = prove ASM_REWRITE_TAC[] THEN ASM_SIMP_TAC[FINITE_DIFF; INDEPENDENT_IMP_FINITE; LINEAR_VSUM] THEN DISCH_THEN SUBST1_TAC THEN ASM_REWRITE_TAC[o_DEF] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_EQ_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_EQ_SUPERSET THEN SIMP_TAC[SUBSET_DIFF; FINITE_DIFF; INDEPENDENT_IMP_FINITE; LINEAR_CMUL; IN_DIFF; TAUT `a /\ ~(a /\ ~b) <=> a /\ b`; ASSUME `independent(w:real^M->bool)`; @@ -8413,7 +8413,7 @@ let DIM_SUMS_INTER = prove SET_RULE `c INTER d = b ==> DISJOINT b (d DIFF c)`] THEN SUBGOAL_THEN `vsum b (\x:real^N. a x % x) = vsum c (\x. a x % x)` (fun th -> ASM_REWRITE_TAC[th]) THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN ASM_SIMP_TAC[VECTOR_MUL_EQ_0] THEN ASM_MESON_TAC[]);; let DIM_UNION_INTER = prove @@ -8604,7 +8604,7 @@ let LINEAR_SURJECTIVE_ON_IFF_DIM = prove (`!f:real^M->real^N s t. linear f /\ subspace s /\ subspace t /\ IMAGE f s SUBSET t ==> (IMAGE f s = t <=> dim(IMAGE f s) = dim t)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC DIM_EQ_SUBSPACE THEN ASM_SIMP_TAC[SUBSPACE_LINEAR_IMAGE]);; let LINEAR_INJECTIVE_IMP_SURJECTIVE_ON = prove @@ -8963,7 +8963,7 @@ let MOORE_PENROSE_PSEUDOINVERSE,MOORE_PENROSE_PSEUDOINVERSE_UNIQUE = (SUBGOAL_THEN `(A:real^M^N) ** (u - v:real^M) = (y - A ** v) - (y - A ** u)` MP_TAC THENL - [SIMP_TAC[MATRIX_VECTOR_MUL_SUB_LDISTRIB] THEN CONV_TAC VECTOR_ARITH; + [SIMP_TAC[MATRIX_VECTOR_MUL_SUB_LDISTRIB] THEN (CONV_TAC "VECTOR_ARITH") VECTOR_ARITH; DISCH_THEN(fun th -> GEN_REWRITE_TAC LAND_CONV [th])]) THEN ASM_MESON_TAC[ORTHOGONAL_CLAUSES]) in let MOORE_PENROSE_PSEUDOINVERSE = prove @@ -9000,7 +9000,7 @@ let MOORE_PENROSE_PSEUDOINVERSE,MOORE_PENROSE_PSEUDOINVERSE_UNIQUE = let MATRIX_INV_MUL_INNER = prove (`!A:real^M^N. A ** matrix_inv A ** A = A`, SIMP_TAC[MATRIX_EQ; MATRIX_MUL_ASSOC; GSYM MATRIX_VECTOR_MUL_ASSOC] THEN - REPEAT GEN_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ONCE_REWRITE_TAC[GSYM VECTOR_SUB_EQ] THEN REWRITE_TAC[GSYM ORTHOGONAL_REFL] THEN GEN_REWRITE_TAC RAND_CONV [GSYM MATRIX_VECTOR_MUL_SUB_LDISTRIB] THEN @@ -9058,7 +9058,7 @@ let MATRIX_INV_UNIQUE_STRONG = prove [MATRIX_INV_MUL_OUTER; SYMMETRIC_MATRIX_INV_RMUL; MATRIX_INV_MUL_INNER; SYMMETRIC_MATRIX_INV_LMUL] THEN ABBREV_TAC `Y = matrix_inv(A:real^M^N)` THEN - POP_ASSUM(K ALL_TAC) THEN CONV_TAC SYM_CONV THEN + POP_ASSUM(K ALL_TAC) THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN SUBGOAL_THEN `(X:real^N^M) ** (A:real^M^N) ** X = Y ** A ** Y` MP_TAC THENL [ALL_TAC; ASM_MESON_TAC[]] THEN @@ -9181,7 +9181,7 @@ let RANK_CMUL = prove let RANK_NEG = prove (`!A:real^N^M. rank(--A) = rank A`, REWRITE_TAC[MATRIX_NEG_MINUS1; RANK_CMUL] THEN - CONV_TAC REAL_RAT_REDUCE_CONV);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV);; let MATRIX_INV_UNIQUE = prove (`!A:real^N^M B. A ** B = mat 1 /\ B ** A = mat 1 ==> matrix_inv A = B`, @@ -9644,7 +9644,7 @@ let COLLINEAR_SMALL = prove (`!s. FINITE s /\ CARD s <= 2 ==> collinear s`, REWRITE_TAC[ARITH_RULE `s <= 2 <=> s = 0 \/ s = 1 \/ s = 2`] THEN REWRITE_TAC[LEFT_OR_DISTRIB; GSYM HAS_SIZE] THEN - CONV_TAC(ONCE_DEPTH_CONV HAS_SIZE_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV HAS_SIZE_CONV)") (ONCE_DEPTH_CONV HAS_SIZE_CONV) THEN REPEAT STRIP_TAC THEN ASM_REWRITE_TAC[COLLINEAR_EMPTY; COLLINEAR_SING; COLLINEAR_2]);; @@ -9786,14 +9786,14 @@ let ORTHOGONAL_TO_ORTHOGONAL_2D = prove ~(x = vec 0) /\ orthogonal x y /\ orthogonal x z ==> collinear {vec 0,y,z}`, REWRITE_TAC[orthogonal; GSYM DOT_CAUCHY_SCHWARZ_EQUAL; GSYM DOT_EQ_0] THEN - REWRITE_TAC[DOT_2] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[DOT_2] THEN (CONV_TAC "REAL_RING") REAL_RING);; let COLLINEAR_3_2D = prove (`!x y z:real^2. collinear{x,y,z} <=> (z$1 - x$1) * (y$2 - x$2) = (y$1 - x$1) * (z$2 - x$2)`, ONCE_REWRITE_TAC[COLLINEAR_3] THEN REWRITE_TAC[GSYM DOT_CAUCHY_SCHWARZ_EQUAL] THEN - REWRITE_TAC[DOT_2; VECTOR_SUB_COMPONENT] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[DOT_2; VECTOR_SUB_COMPONENT] THEN (CONV_TAC "REAL_RING") REAL_RING);; let COLLINEAR_3_DOT_MULTIPLES = prove (`!a b c:real^N. @@ -9807,7 +9807,7 @@ let COLLINEAR_3_DOT_MULTIPLES = prove POP_ASSUM MP_TAC THEN ONCE_REWRITE_TAC[GSYM VECTOR_SUB_EQ] THEN REWRITE_TAC[GSYM DOT_CAUCHY_SCHWARZ_EQUAL; GSYM DOT_EQ_0] THEN REWRITE_TAC[GSYM DOT_EQ_0; DOT_RSUB; DOT_LSUB; DOT_RMUL; DOT_LMUL] THEN - REWRITE_TAC[DOT_SYM] THEN CONV_TAC REAL_RING]);; + REWRITE_TAC[DOT_SYM] THEN (CONV_TAC "REAL_RING") REAL_RING]);; let ORTHOGONAL_AND_COLLINEAR = prove (`!x y:real^N. @@ -9897,7 +9897,7 @@ let BETWEEN_CMUL_LIFT = prove v = vec 0 \/ between (lift c) (lift a,lift b)`, REWRITE_TAC[between; dist; GSYM VECTOR_SUB_RDISTRIB; GSYM LIFT_SUB; NORM_MUL; GSYM REAL_ADD_RDISTRIB; NORM_LIFT] THEN - REWRITE_TAC[GSYM NORM_EQ_0] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[GSYM NORM_EQ_0] THEN (CONV_TAC "REAL_RING") REAL_RING);; let BETWEEN_1 = prove (`!a b x. between x (a,b) <=> @@ -10508,7 +10508,7 @@ add_scaling_theorems [DIST_SCALING];; let ORTHOGONAL_SCALING = prove (`!c. &0 < c ==> !x y. orthogonal (c % x) (c % y) <=> orthogonal x y`, - REWRITE_TAC[orthogonal; DOT_LMUL; DOT_RMUL] THEN CONV_TAC REAL_FIELD) in + REWRITE_TAC[orthogonal; DOT_LMUL; DOT_RMUL] THEN (CONV_TAC "REAL_FIELD") REAL_FIELD) in add_scaling_theorems [ORTHOGONAL_SCALING];; let NORM_SCALING = prove @@ -10580,7 +10580,7 @@ let QUANTIFY_SURJECTION_HIGHER_THM = prove ((!P. {x | P x} = IMAGE f {x | P(f x)}) /\ (!Q. {s | Q s} = IMAGE (IMAGE f) {s | Q(IMAGE f s)}) /\ (!R. {l | R l} = IMAGE (MAP f) {l | R(MAP f l)}))`, - GEN_TAC THEN DISCH_TAC THEN CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + GEN_TAC THEN DISCH_TAC THEN (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN ASM_REWRITE_TAC[GSYM SURJECTIVE_FORALL_THM; GSYM SURJECTIVE_EXISTS_THM; GSYM SURJECTIVE_IMAGE_THM; SURJECTIVE_IMAGE; SURJECTIVE_MAP] THEN REWRITE_TAC[FUN_EQ_THM; o_THM; GSYM SKOLEM_THM] THEN ASM_MESON_TAC[]);; diff --git a/Multivariate/wlog.ml b/Multivariate/wlog.ml index 14c6104b..796e4253 100644 --- a/Multivariate/wlog.ml +++ b/Multivariate/wlog.ml @@ -291,7 +291,7 @@ let PAD2D3D_TAC = let lasttac = GEN_REWRITE_TAC REDEPTH_CONV [LINEAR_INVARIANTS pad2d3d_tm pths] in fun gl -> (GEN_REWRITE_TAC ONCE_DEPTH_CONV [cth] THEN - CONV_TAC(DEPTH_CONV PAD2D3D_QUANTIFY_CONV) THEN + (CONV_TAC "(DEPTH_CONV PAD2D3D_QUANTIFY_CONV)") (DEPTH_CONV PAD2D3D_QUANTIFY_CONV) THEN lasttac) gl;; (* ------------------------------------------------------------------------- *) diff --git a/Multivariate/wlog_examples.ml b/Multivariate/wlog_examples.ml index 2b3deebf..57ddfaa3 100644 --- a/Multivariate/wlog_examples.ml +++ b/Multivariate/wlog_examples.ml @@ -320,7 +320,7 @@ let AFFSIGN_INJECTIVE_LINEAR_IMAGE = prove SUBGOAL_THEN `{y | y IN IMAGE (f:real^M->real^N) s /\ ~(u y = &0)} = IMAGE f {x | x IN s /\ ~(u(f x) = &0)}` - SUBST1_TAC THENL [ASM SET_TAC[]; CONV_TAC SYM_CONV] THEN + SUBST1_TAC THENL [ASM SET_TAC[]; (CONV_TAC "SYM_CONV") SYM_CONV] THEN SUBGOAL_THEN `FINITE {x | x IN s /\ ~(u((f:real^M->real^N) x) = &0)}` ASSUME_TAC THENL [FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE @@ -410,7 +410,7 @@ let IN_AFFSIGN_TRANSLATION = prove (\v. f(v - a) % v)` THEN CONJ_TAC THENL [ALL_TAC; - CONV_TAC SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC VSUM_SUPERSET THEN CONJ_TAC THENL [SET_TAC[]; ALL_TAC] THEN ASM_REWRITE_TAC[IMP_CONJ; FORALL_IN_IMAGE; VECTOR_MUL_EQ_0] THEN REWRITE_TAC[VECTOR_ADD_SUB] THEN SET_TAC[]] THEN @@ -623,7 +623,7 @@ let LEMMA = prove GSYM VECTOR_ADD_ASSOC] THEN REPLICATE_TAC 4 AP_TERM_TAC THEN GEN_REWRITE_TAC LAND_CONV [GSYM BASIS_EXPANSION] THEN - REWRITE_TAC[DIMINDEX_3] THEN CONV_TAC(ONCE_DEPTH_CONV NUMSEG_CONV) THEN + REWRITE_TAC[DIMINDEX_3] THEN (CONV_TAC "(ONCE_DEPTH_CONV NUMSEG_CONV)") (ONCE_DEPTH_CONV NUMSEG_CONV) THEN SIMP_TAC[VSUM_CLAUSES; FINITE_INSERT; CONJUNCT1 FINITE_RULES] THEN REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY; ARITH_EQ; VECTOR_ADD_RID]; @@ -659,7 +659,7 @@ let LEMMA = prove ASM_REWRITE_TAC[VECTOR_MUL_RZERO; VECTOR_ADD_LID] THEN REWRITE_TAC[VECTOR_ARITH `(x + a) + y:real^3 = a + z <=> x + y = z`] THEN GEN_REWRITE_TAC (RAND_CONV o RAND_CONV) [GSYM BASIS_EXPANSION] THEN - REWRITE_TAC[DIMINDEX_3] THEN CONV_TAC(ONCE_DEPTH_CONV NUMSEG_CONV) THEN + REWRITE_TAC[DIMINDEX_3] THEN (CONV_TAC "(ONCE_DEPTH_CONV NUMSEG_CONV)") (ONCE_DEPTH_CONV NUMSEG_CONV) THEN SIMP_TAC[VSUM_CLAUSES; FINITE_INSERT; CONJUNCT1 FINITE_RULES] THEN REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY; ARITH_EQ; VECTOR_ADD_RID] THEN REWRITE_TAC[VECTOR_ADD_LDISTRIB; GSYM VECTOR_ADD_ASSOC] THEN @@ -678,7 +678,7 @@ let LEMMA = prove GSYM VECTOR_ADD_ASSOC] THEN REPLICATE_TAC 4 AP_TERM_TAC THEN GEN_REWRITE_TAC LAND_CONV [GSYM BASIS_EXPANSION] THEN - REWRITE_TAC[DIMINDEX_3] THEN CONV_TAC(ONCE_DEPTH_CONV NUMSEG_CONV) THEN + REWRITE_TAC[DIMINDEX_3] THEN (CONV_TAC "(ONCE_DEPTH_CONV NUMSEG_CONV)") (ONCE_DEPTH_CONV NUMSEG_CONV) THEN SIMP_TAC[VSUM_CLAUSES; FINITE_INSERT; CONJUNCT1 FINITE_RULES] THEN REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY; ARITH_EQ; VECTOR_ADD_RID]; @@ -715,7 +715,7 @@ let LEMMA = prove ASM_REWRITE_TAC[VECTOR_MUL_RZERO; VECTOR_ADD_LID] THEN REWRITE_TAC[VECTOR_ARITH `(x + a) + y:real^3 = a + z <=> x + y = z`] THEN GEN_REWRITE_TAC (RAND_CONV o RAND_CONV) [GSYM BASIS_EXPANSION] THEN - REWRITE_TAC[DIMINDEX_3] THEN CONV_TAC(ONCE_DEPTH_CONV NUMSEG_CONV) THEN + REWRITE_TAC[DIMINDEX_3] THEN (CONV_TAC "(ONCE_DEPTH_CONV NUMSEG_CONV)") (ONCE_DEPTH_CONV NUMSEG_CONV) THEN SIMP_TAC[VSUM_CLAUSES; FINITE_INSERT; CONJUNCT1 FINITE_RULES] THEN REWRITE_TAC[IN_INSERT; NOT_IN_EMPTY; ARITH_EQ; VECTOR_ADD_RID] THEN REWRITE_TAC[VECTOR_ADD_LDISTRIB; GSYM VECTOR_ADD_ASSOC] THEN diff --git a/Ntrie/ntrie.ml b/Ntrie/ntrie.ml index 6a705e32..4292ed1b 100644 --- a/Ntrie/ntrie.ml +++ b/Ntrie/ntrie.ml @@ -362,7 +362,7 @@ let NTRIE_RED_CONV : conv = let NTRIE_REDUCE_CONV = DEPTH_CONV NTRIE_RED_CONV;; -let NTRIE_REDUCE_TAC = CONV_TAC NTRIE_REDUCE_CONV;; +let NTRIE_REDUCE_TAC = (CONV_TAC "NTRIE_REDUCE_CONV") NTRIE_REDUCE_CONV;; let NTRIE_COMPUTE (cnv : conv) : conv = ONCE_DEPTH_CONV NTRIE_ENCODE_CONV THENC diff --git a/RichterHilbertAxiomGeometry/from_topology.ml b/RichterHilbertAxiomGeometry/from_topology.ml index 1418bf64..35a13b5a 100644 --- a/RichterHilbertAxiomGeometry/from_topology.ml +++ b/RichterHilbertAxiomGeometry/from_topology.ml @@ -110,7 +110,7 @@ add_linear_invariants let BALL_SCALING = prove (`!c. &0 < c ==> !x r. ball(c % x,c * r) = IMAGE (\x. c % x) (ball(x,r))`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[] THEN CONJ_TAC THENL [ASM_MESON_TAC[SURJECTIVE_SCALING; REAL_LT_IMP_NZ]; ALL_TAC] THEN REWRITE_TAC[IN_BALL; DIST_MUL] THEN @@ -118,7 +118,7 @@ let BALL_SCALING = prove let CBALL_SCALING = prove (`!c. &0 < c ==> !x r. cball(c % x,c * r) = IMAGE (\x. c % x) (cball(x,r))`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[] THEN CONJ_TAC THENL [ASM_MESON_TAC[SURJECTIVE_SCALING; REAL_LT_IMP_NZ]; ALL_TAC] THEN REWRITE_TAC[IN_CBALL; DIST_MUL] THEN @@ -178,7 +178,7 @@ let OPEN_CONTAINS_CBALL_EQ = prove let SPHERE_EQ_EMPTY = prove (`!a:real^N r. sphere(a,r) = {} <=> r < &0`, REWRITE_TAC[sphere; EXTENSION; IN_ELIM_THM; NOT_IN_EMPTY] THEN - REPEAT GEN_TAC THEN EQ_TAC THENL [ALL_TAC; CONV_TAC NORM_ARITH] THEN + REPEAT GEN_TAC THEN EQ_TAC THENL [ALL_TAC; (CONV_TAC "NORM_ARITH") NORM_ARITH] THEN MESON_TAC[VECTOR_CHOOSE_DIST; REAL_NOT_LE]);; let SPHERE_EMPTY = prove @@ -360,7 +360,7 @@ let LIMPT_OF_UNIV = prove X_GEN_TAC `e:real` THEN DISCH_TAC THEN MP_TAC(ISPECL [`x:real^N`; `e / &2`] VECTOR_CHOOSE_DIST) THEN ANTS_TAC THENL [ASM_REAL_ARITH_TAC; MATCH_MP_TAC MONO_EXISTS] THEN - POP_ASSUM MP_TAC THEN CONV_TAC NORM_ARITH);; + POP_ASSUM MP_TAC THEN (CONV_TAC "NORM_ARITH") NORM_ARITH);; let LIMPT_OF_OPEN_IN = prove (`!s t x:real^N. @@ -403,7 +403,7 @@ let INTERIOR_LIMIT_POINT = prove MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `y:real^N` THEN STRIP_TAC THEN REPEAT CONJ_TAC THENL [FIRST_X_ASSUM MATCH_MP_TAC; - CONV_TAC (RAND_CONV SYM_CONV) THEN REWRITE_TAC[GSYM DIST_EQ_0]; + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN REWRITE_TAC[GSYM DIST_EQ_0]; ONCE_REWRITE_TAC[DIST_SYM]] THEN ASM_REAL_ARITH_TAC);; @@ -878,7 +878,7 @@ let LIMPT_SEQUENTIAL_INJ = prove SUBGOAL_THEN `!n. z(n) IN s /\ ~(z n:real^N = x) /\ dist(z n,x) < inv(&2 pow n)` ASSUME_TAC THENL - [INDUCT_TAC THEN ASM_REWRITE_TAC[] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + [INDUCT_TAC THEN ASM_REWRITE_TAC[] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN ASM_SIMP_TAC[REAL_LT_01] THEN FIRST_X_ASSUM(MP_TAC o SPEC `min (inv(&2 pow (SUC n))) (dist(z n:real^N,x))`) THEN ASM_SIMP_TAC[REAL_LT_MIN; REAL_LT_INV_EQ; REAL_LT_POW2; DIST_POS_LT]; @@ -1333,7 +1333,7 @@ let UNIFORM_LIM_ADD = prove GEN_TAC THEN REWRITE_TAC[AND_FORALL_THM] THEN MATCH_MP_TAC MONO_FORALL THEN X_GEN_TAC `n:B` THEN ASM_CASES_TAC `(P:B->bool) n` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC NORM_ARITH);; + (CONV_TAC "NORM_ARITH") NORM_ARITH);; let UNIFORM_LIM_SUB = prove (`!net:(A)net P f g l m. @@ -1354,7 +1354,7 @@ let UNIFORM_LIM_SUB = prove GEN_TAC THEN REWRITE_TAC[AND_FORALL_THM] THEN MATCH_MP_TAC MONO_FORALL THEN X_GEN_TAC `n:B` THEN ASM_CASES_TAC `(P:B->bool) n` THEN ASM_REWRITE_TAC[] THEN - CONV_TAC NORM_ARITH);; + (CONV_TAC "NORM_ARITH") NORM_ARITH);; (* ------------------------------------------------------------------------- *) (* Limit under bilinear function, uniform version first. *) @@ -1875,7 +1875,7 @@ let SPHERE_EQ_SING = prove MATCH_MP_TAC(SET_RULE `!y. (x IN s ==> y IN s /\ ~(y = x)) ==> ~(s = {x})`) THEN EXISTS_TAC `a - (x - a):real^N` THEN REWRITE_TAC[IN_SPHERE] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC NORM_ARITH);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "NORM_ARITH") NORM_ARITH);; (* ------------------------------------------------------------------------- *) (* For points in the interior, localization of limits makes no difference. *) @@ -2296,7 +2296,7 @@ let INTER_BALLS_EQ_EMPTY = prove REWRITE_TAC[EXTENSION; NOT_IN_EMPTY; IN_INTER; IN_CBALL; IN_BALL] THEN (EQ_TAC THENL [ALL_TAC; - SPEC_TAC(`b % basis 1:real^N`,`v:real^N`) THEN CONV_TAC NORM_ARITH]) THEN + SPEC_TAC(`b % basis 1:real^N`,`v:real^N`) THEN (CONV_TAC "NORM_ARITH") NORM_ARITH]) THEN DISCH_THEN(MP_TAC o GEN `c:real` o SPEC `c % basis 1:real^N`) THEN SIMP_TAC[NORM_MUL; NORM_BASIS; LE_REFL; DIMINDEX_GE_1; dist; NORM_NEG; VECTOR_SUB_LZERO; GSYM VECTOR_SUB_RDISTRIB; REAL_MUL_RID] THEN @@ -2623,7 +2623,7 @@ let COMPACT_IMP_TOTALLY_BOUNDED = prove MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `x:num->real^N` THEN DISCH_TAC THEN MATCH_MP_TAC num_WF THEN X_GEN_TAC `n:num` THEN FIRST_X_ASSUM(SUBST1_TAC o SPEC `n:num`) THEN STRIP_TAC THEN - CONV_TAC SELECT_CONV THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN FIRST_X_ASSUM(MP_TAC o SPEC `IMAGE (x:num->real^N) {m | m < n}`) THEN SIMP_TAC[FINITE_IMAGE; FINITE_NUMSEG_LT; NOT_FORALL_THM; NOT_IMP] THEN REWRITE_TAC[IN_UNIONS; IN_IMAGE; IN_ELIM_THM] THEN ASM_MESON_TAC[IN_BALL]; @@ -2771,7 +2771,7 @@ let BOLZANO_WEIERSTRASS_IMP_BOUNDED = prove REWRITE_TAC[IN_IMAGE; IN_UNIV; LEFT_AND_EXISTS_THM] THEN ONCE_REWRITE_TAC[SWAP_EXISTS_THM] THEN REWRITE_TAC[UNWIND_THM2] THEN STRIP_TAC THEN FIRST_ASSUM(MP_TAC o SPEC `&1 / &2`) THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(X_CHOOSE_THEN `k:num` STRIP_ASSUME_TAC) THEN FIRST_X_ASSUM(MP_TAC o SPEC `dist((x:num->real^N) k,l)`) THEN ASM_SIMP_TAC[DIST_POS_LT] THEN @@ -6512,7 +6512,7 @@ let CAUCHY_CONTINUOUS_UNIQUENESS_LEMMA = prove REPEAT(ANTS_TAC THENL [ASM_ARITH_TAC; DISCH_TAC]) THEN REPEAT(COND_CASES_TAC THEN ASM_REWRITE_TAC[]) THEN REPEAT(FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM REAL_NOT_LE])) THEN - CONV_TAC NORM_ARITH; + (CONV_TAC "NORM_ARITH") NORM_ARITH; MATCH_MP_TAC MONO_FORALL THEN X_GEN_TAC `e:real` THEN ASM_CASES_TAC `&0 < e` THEN ASM_REWRITE_TAC[] THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `N:num` THEN DISCH_TAC THEN @@ -7501,8 +7501,7 @@ let CONTINUOUS_ON_COMPONENTS_GEN = prove `{x | x IN s /\ (f:real^M->real^N) x IN t} = UNIONS {{x | x IN c /\ f x IN t} | c IN components s}` SUBST1_TAC THENL - [CONV_TAC(LAND_CONV(SUBS_CONV - [ISPEC `s:real^M->bool` UNIONS_COMPONENTS])) THEN + [(CONV_TAC "(LAND_CONV(SUBS_CONV [ISPEC `s:real^M->bool` UNIONS_COMPONENTS]))") (LAND_CONV(SUBS_CONV [ISPEC `s:real^M->bool` UNIONS_COMPONENTS])) THEN REWRITE_TAC[UNIONS_GSPEC; IN_UNIONS] THEN SET_TAC[]; MATCH_MP_TAC OPEN_IN_UNIONS THEN REWRITE_TAC[FORALL_IN_GSPEC] THEN ASM_MESON_TAC[OPEN_IN_TRANS]]);; @@ -7518,8 +7517,7 @@ let CONTINUOUS_ON_COMPONENTS_FINITE = prove `{x | x IN s /\ (f:real^M->real^N) x IN t} = UNIONS {{x | x IN c /\ f x IN t} | c IN components s}` SUBST1_TAC THENL - [CONV_TAC(LAND_CONV(SUBS_CONV - [ISPEC `s:real^M->bool` UNIONS_COMPONENTS])) THEN + [(CONV_TAC "(LAND_CONV(SUBS_CONV [ISPEC `s:real^M->bool` UNIONS_COMPONENTS]))") (LAND_CONV(SUBS_CONV [ISPEC `s:real^M->bool` UNIONS_COMPONENTS])) THEN REWRITE_TAC[UNIONS_GSPEC; IN_UNIONS] THEN SET_TAC[]; MATCH_MP_TAC CLOSED_IN_UNIONS THEN ASM_SIMP_TAC[SIMPLE_IMAGE; FINITE_IMAGE; FORALL_IN_IMAGE] THEN @@ -7629,7 +7627,7 @@ let COMPONENTS_UNIQUE = prove ASM_REWRITE_TAC[] THEN STRIP_TAC THEN FIRST_X_ASSUM(MP_TAC o GEN_REWRITE_RULE I [GSYM MEMBER_NOT_EMPTY]) THEN MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `x:real^N` THEN STRIP_TAC THEN - CONJ_TAC THENL [ASM SET_TAC[]; CONV_TAC SYM_CONV] THEN + CONJ_TAC THENL [ASM SET_TAC[]; (CONV_TAC "SYM_CONV") SYM_CONV] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN REWRITE_TAC[CONNECTED_CONNECTED_COMPONENT; CONNECTED_COMPONENT_SUBSET] THEN MATCH_MP_TAC CONNECTED_COMPONENT_MAXIMAL THEN @@ -7785,7 +7783,7 @@ let COMPACT_UNIFORMLY_EQUICONTINUOUS = prove DISCH_THEN(MP_TAC o SPEC `f:real^M->real^N` o CONJUNCT2) THEN DISCH_THEN(fun th -> MP_TAC(SPEC `u:real^M` th) THEN MP_TAC(SPEC `v:real^M` th)) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NORM_ARITH);; + ASM_REWRITE_TAC[] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH);; let COMPACT_UNIFORMLY_CONTINUOUS = prove (`!f:real^M->real^N s. @@ -8808,7 +8806,7 @@ add_translation_invariants [COMPLETE_TRANSLATION_EQ];; let TRANSLATION_UNIV = prove (`!a. IMAGE (\x. a + x) (:real^N) = (:real^N)`, - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN GEOM_TRANSLATE_TAC[]);; + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN GEOM_TRANSLATE_TAC[]);; let TRANSLATION_DIFF = prove (`!s t:real^N->bool. @@ -9819,7 +9817,7 @@ let FINITE_INTERVAL_1 = prove REWRITE_TAC[FINITE_DELETE] THEN REPEAT GEN_TAC THEN SUBGOAL_THEN `interval[a,b] = IMAGE lift {x | drop a <= x /\ x <= drop b}` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN CONJ_TAC THENL [MESON_TAC[LIFT_DROP]; ALL_TAC] THEN REWRITE_TAC[IN_INTERVAL_1; IN_ELIM_THM; LIFT_DROP]; SIMP_TAC[FINITE_IMAGE_INJ_EQ; LIFT_EQ; FINITE_REAL_INTERVAL]]);; @@ -10339,7 +10337,7 @@ let MIDPOINT_IN_SEGMENT = prove REWRITE_TAC[IN_SEGMENT] THEN REPEAT STRIP_TAC THENL [ALL_TAC; ASM_CASES_TAC `a:real^N = b` THEN ASM_REWRITE_TAC[]] THEN EXISTS_TAC `&1 / &2` THEN REWRITE_TAC[midpoint] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN VECTOR_ARITH_TAC);; + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN VECTOR_ARITH_TAC);; let BETWEEN_IN_SEGMENT = prove (`!x a b:real^N. between x (a,b) <=> x IN segment[a,b]`, @@ -10362,7 +10360,7 @@ let BETWEEN_IN_SEGMENT = prove REWRITE_TAC[VECTOR_ARITH `a - ((&1 - u) % a + u % b) = u % (a - b)`; VECTOR_ARITH `((&1 - u) % a + u % b) - b = (&1 - u) % (a - b)`; NORM_MUL; GSYM REAL_ADD_LDISTRIB] THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD]);; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD]);; let IN_SEGMENT_COMPONENT = prove (`!a b x:real^N i. @@ -10983,7 +10981,7 @@ let MAPPING_CONNECTED_ONTO_SEGMENT = prove REWRITE_TAC[GSYM SUBSET_ANTISYM_EQ; SUBSET; FORALL_IN_IMAGE] THEN ASM_SIMP_TAC[IN_ELIM_THM; REAL_LE_RDIV_EQ; REAL_LE_LDIV_EQ; NORM_ARITH `~(u:real^N = v) ==> &0 < dist(u,x) + dist(v,x)`] THEN - CONJ_TAC THENL [CONV_TAC NORM_ARITH; REWRITE_TAC[IN_IMAGE]] THEN + CONJ_TAC THENL [(CONV_TAC "NORM_ARITH") NORM_ARITH; REWRITE_TAC[IN_IMAGE]] THEN X_GEN_TAC `t:real` THEN STRIP_TAC THEN MP_TAC(ISPECL [`IMAGE (\x:real^M. lift(dist(u,x) / (dist(u,x) + dist(v,x)))) s`; @@ -11175,7 +11173,7 @@ let HOMEOMORPHIC_SYM = prove (`!s t. s homeomorphic t <=> t homeomorphic s`, REPEAT GEN_TAC THEN REWRITE_TAC[homeomorphic; homeomorphism] THEN GEN_REWRITE_TAC RAND_CONV [SWAP_EXISTS_THM] THEN - REPEAT(AP_TERM_TAC THEN ABS_TAC) THEN CONV_TAC TAUT);; + REPEAT(AP_TERM_TAC THEN ABS_TAC) THEN (CONV_TAC "TAUT") TAUT);; let HOMEOMORPHISM_COMPOSE = prove (`!f:real^M->real^N g h:real^N->real^P k s t u. @@ -11536,7 +11534,7 @@ let INJECTIVE_MAP_OPEN_IFF_CLOSED = prove REPEAT STRIP_TAC THEN MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `?g:real^N->real^M. homeomorphism (s,t) (f,g)` THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC HOMEOMORPHISM_INJECTIVE_OPEN_MAP_EQ; + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC HOMEOMORPHISM_INJECTIVE_OPEN_MAP_EQ; MATCH_MP_TAC HOMEOMORPHISM_INJECTIVE_CLOSED_MAP_EQ] THEN ASM_REWRITE_TAC[]);; @@ -11834,7 +11832,7 @@ let HOMEOMORPHIC_OPEN_INTERVAL_UNIV_1 = prove REPEAT STRIP_TAC THEN MP_TAC(SPECL [`a:real^1`; `b:real^1`; `--vec 1:real^1`; `vec 1:real^1`] HOMEOMORPHIC_OPEN_INTERVALS_1) THEN - ASM_REWRITE_TAC[DROP_VEC; DROP_NEG] THEN CONV_TAC REAL_RAT_REDUCE_CONV THEN + ASM_REWRITE_TAC[DROP_VEC; DROP_NEG] THEN (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC(REWRITE_RULE[IMP_CONJ_ALT] HOMEOMORPHIC_TRANS) THEN POP_ASSUM_LIST(K ALL_TAC) THEN REWRITE_TAC[HOMEOMORPHIC_MINIMAL; IN_UNIV] THEN @@ -11850,7 +11848,7 @@ let HOMEOMORPHIC_OPEN_INTERVAL_UNIV_1 = prove COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN STRIP_TAC THEN GEN_REWRITE_TAC RAND_CONV [GSYM VECTOR_MUL_LID] THEN AP_THM_TAC THEN AP_TERM_TAC THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; X_GEN_TAC `y:real^1` THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[IN_INTERVAL_1; DROP_NEG; DROP_VEC; REAL_BOUNDS_LT] THEN REWRITE_TAC[DROP_CMUL; REAL_ABS_MUL; REAL_ABS_INV] THEN @@ -11865,7 +11863,7 @@ let HOMEOMORPHIC_OPEN_INTERVAL_UNIV_1 = prove REAL_ARITH `~(&0 <= x) ==> &0 <= &1 - x`] THEN GEN_REWRITE_TAC RAND_CONV [GSYM VECTOR_MUL_LID] THEN AP_THM_TAC THEN AP_TERM_TAC THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC REAL_FIELD; + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; MATCH_MP_TAC CONTINUOUS_AT_IMP_CONTINUOUS_ON THEN X_GEN_TAC `x:real^1` THEN REWRITE_TAC[IN_INTERVAL_1; DROP_NEG; DROP_VEC] THEN @@ -11986,7 +11984,7 @@ let HOMEOMORPHIC_BALL_UNIV = prove REWRITE_TAC[GSYM REAL_INV_MUL; REAL_SUB_0; REAL_INV_EQ_1] THEN REWRITE_TAC[NORM_MUL; REAL_ABS_INV] THEN ASM_SIMP_TAC[REAL_ARITH `x < &1 ==> abs(&1 - x) = &1 - x`] THEN - POP_ASSUM MP_TAC THEN CONV_TAC REAL_FIELD; + POP_ASSUM MP_TAC THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; X_GEN_TAC `y:real^N` THEN REWRITE_TAC[NORM_MUL; REAL_ABS_INV] THEN ASM_SIMP_TAC[NORM_POS_LE; REAL_ARITH `&0 <= y ==> inv(abs(&1 + y)) * z = z / (&1 + y)`] THEN @@ -11994,7 +11992,7 @@ let HOMEOMORPHIC_BALL_UNIV = prove `&0 <= y ==> &0 < &1 + y`] THEN CONJ_TAC THENL [REAL_ARITH_TAC; DISJ1_TAC] THEN REWRITE_TAC[GSYM REAL_INV_MUL; REAL_SUB_0; REAL_INV_EQ_1] THEN - MP_TAC(ISPEC `y:real^N` NORM_POS_LE) THEN CONV_TAC REAL_FIELD; + MP_TAC(ISPEC `y:real^N` NORM_POS_LE) THEN (CONV_TAC "REAL_FIELD") REAL_FIELD; MATCH_MP_TAC CONTINUOUS_ON_MUL THEN REWRITE_TAC[CONTINUOUS_ON_ID] THEN GEN_REWRITE_TAC (LAND_CONV o RAND_CONV) [GSYM o_DEF] THEN MATCH_MP_TAC CONTINUOUS_ON_INV THEN @@ -12231,11 +12229,11 @@ let [CONTINUOUS_DISCONNECTED_RANGE_CONSTANT_EQ; ==> (!x. x IN connected_component s y ==> P x)`) THEN REWRITE_TAC[FORALL_IN_IMAGE] THEN X_GEN_TAC `z:real^M` THEN DISCH_TAC THEN FIRST_X_ASSUM(MP_TAC o SPEC `z:real^M`) THEN - ASM_REWRITE_TAC[] THEN CONV_TAC NORM_ARITH; + ASM_REWRITE_TAC[] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; MATCH_MP_TAC(SET_RULE `(!x. x IN s /\ x IN t ==> F) ==> s INTER t INTER u = {}`) THEN REWRITE_TAC[IN_BALL; IN_CBALL; IN_DIFF; IN_UNIV] THEN - UNDISCH_TAC `&0 < e` THEN CONV_TAC NORM_ARITH; + UNDISCH_TAC `&0 < e` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH; EXISTS_TAC `(f:real^M->real^N) x` THEN ASM_SIMP_TAC[CENTRE_IN_CBALL; REAL_HALF; REAL_LT_IMP_LE; IN_INTER] THEN REWRITE_TAC[IN] THEN @@ -12274,7 +12272,7 @@ let [CONTINUOUS_DISCONNECTED_RANGE_CONSTANT_EQ; DISCH_THEN(fun th -> MP_TAC(SPEC `a:real^M` th) THEN MP_TAC(SPEC `b:real^M` th)) THEN ASM_REWRITE_TAC[] THEN DISCH_THEN(SUBST1_TAC o SYM) THEN - CONV_TAC(RAND_CONV SYM_CONV) THEN + (CONV_TAC "(RAND_CONV SYM_CONV)") (RAND_CONV SYM_CONV) THEN SIMP_TAC[BASIS_NONZERO; LE_REFL; DIMINDEX_GE_1; REAL_LE_REFL]]]);; let CONTINUOUS_DISCONNECTED_RANGE_CONSTANT = prove @@ -13124,11 +13122,11 @@ let REAL_LT_AFFINITY = prove let REAL_AFFINITY_EQ = prove (`!m c x y. ~(m = &0) ==> (m * x + c = y <=> x = inv(m) * y + --(c / m))`, - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let REAL_EQ_AFFINITY = prove (`!m c x y. ~(m = &0) ==> (y = m * x + c <=> inv(m) * y + --(c / m) = x)`, - CONV_TAC REAL_FIELD);; + (CONV_TAC "REAL_FIELD") REAL_FIELD);; let VECTOR_AFFINITY_EQ = prove (`!m c x y. ~(m = &0) @@ -13239,7 +13237,7 @@ let SELF_ADJOINT_HAS_EIGENVECTOR_IN_SUBSPACE = prove ASM_REWRITE_TAC[GSYM NORM_POW_2] THEN REWRITE_TAC[NORM_POW_2] THEN MATCH_MP_TAC(REAL_ARITH `&4 * (z - y) = x ==> &0 <= x ==> y <= z`) THEN - REWRITE_TAC[DOT_SYM] THEN CONV_TAC REAL_RING; + REWRITE_TAC[DOT_SYM] THEN (CONV_TAC "REAL_RING") REAL_RING; DISCH_THEN(MP_TAC o GEN `y:real^N` o DISCH `(y:real^N) IN s` o MATCH_MP lemma o C MP (ASSUME `(y:real^N) IN s`) o SPEC `y:real^N`) THEN ASM_SIMP_TAC[] THEN EXPAND_TAC "p" THEN @@ -13290,7 +13288,7 @@ let SELF_ADJOINT_HAS_EIGENVECTOR_BASIS_OF_SUBSPACE = prove ASM_REWRITE_TAC[RIGHT_EXISTS_AND_THM] THEN DISCH_THEN(X_CHOOSE_THEN `v:real^N` MP_TAC) THEN ASM_CASES_TAC `v:real^N = vec 0` THEN ASM_REWRITE_TAC[NORM_0] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN DISCH_THEN(REPEAT_TCL CONJUNCTS_THEN ASSUME_TAC) THEN FIRST_X_ASSUM(MP_TAC o SPEC `{y:real^N | y IN s /\ orthogonal v y}`) THEN REWRITE_TAC[SUBSPACE_ORTHOGONAL_TO_VECTOR; IN_ELIM_THM] THEN @@ -13499,7 +13497,7 @@ let MATRIX_WLOG_INVERTIBLE = prove FIRST_ASSUM(MP_TAC o SPEC `vec 0:real^1` o GEN_REWRITE_RULE I [CLOSED_LIMPT]) THEN ASM_SIMP_TAC[IN_ELIM_THM; DROP_VEC; MATRIX_CMUL_LZERO; MATRIX_ADD_RID] THEN - ANTS_TAC THENL [ALL_TAC; CONV_TAC TAUT] THEN + ANTS_TAC THENL [ALL_TAC; (CONV_TAC "TAUT") TAUT] THEN MP_TAC(ISPEC `A:real^N^N` NEARBY_INVERTIBLE_MATRIX) THEN DISCH_THEN(X_CHOOSE_THEN `e:real` STRIP_ASSUME_TAC) THEN REWRITE_TAC[LIMPT_APPROACHABLE] THEN X_GEN_TAC `k:real` THEN @@ -13525,7 +13523,7 @@ let SYLVESTER_DETERMINANT_IDENTITY = prove REWRITE_TAC[MATRIX_MUL_LID; MATRIX_MUL_RID; MATRIX_MUL_ASSOC]; REWRITE_TAC[DET_MUL] THEN FIRST_ASSUM(MP_TAC o GEN_REWRITE_RULE I [INVERTIBLE_DET_NZ]) THEN - CONV_TAC REAL_RING]; + (CONV_TAC "REAL_RING") REAL_RING]; X_GEN_TAC `A:real^N^N` THEN EXISTS_TAC `&1` THEN REWRITE_TAC[REAL_LT_01; SET_RULE `{x | x IN s /\ P x} = s INTER {x | P x}`] THEN @@ -13579,7 +13577,7 @@ let SYLVESTER_DETERMINANT_IDENTITY = prove (\i. (mat 1 + (A':real^N^N) ** (B':real^N^N))$i$p i))` THEN CONJ_TAC THENL [ALL_TAC; - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_SUPERSET THEN CONJ_TAC THENL [SET_TAC[]; SIMP_TAC[IN_ELIM_THM; IMP_CONJ]] THEN X_GEN_TAC `p:num->num` THEN REPEAT STRIP_TAC THEN REWRITE_TAC[REAL_ENTIRE; PRODUCT_EQ_0_NUMSEG] THEN DISJ2_TAC THEN @@ -13598,7 +13596,7 @@ let SYLVESTER_DETERMINANT_IDENTITY = prove MATCH_MP_TAC SUM_EQ_0_NUMSEG THEN REPEAT STRIP_TAC THEN REWRITE_TAC[REAL_ENTIRE] THEN DISJ1_TAC THEN EXPAND_TAC "A'" THEN ASM_SIMP_TAC[LAMBDA_BETA; GSYM NOT_LT]] THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_EQ_GENERAL THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_EQ_GENERAL THEN EXISTS_TAC `\f:num->num. f` THEN REWRITE_TAC[IN_ELIM_THM] THEN CONJ_TAC THEN X_GEN_TAC `p:num->num` THEN STRIP_TAC THENL [REWRITE_TAC[MESON[] `(?!x. P x /\ x = y) <=> P y`] THEN CONJ_TAC THENL @@ -13648,7 +13646,7 @@ let SYLVESTER_DETERMINANT_IDENTITY = prove ASM_SIMP_TAC[LAMBDA_BETA; ARITH_RULE `m + 1 <= i ==> ~(i <= m)`]]]) in REPEAT GEN_TAC THEN DISJ_CASES_TAC (ARITH_RULE `dimindex(:M) <= dimindex(:N) \/ dimindex(:N) <= dimindex(:M)`) - THENL [ALL_TAC; CONV_TAC SYM_CONV] THEN + THENL [ALL_TAC; (CONV_TAC "SYM_CONV") SYM_CONV] THEN MATCH_MP_TAC lemma2 THEN ASM_REWRITE_TAC[]);; let COFACTOR_MATRIX_MUL = prove @@ -13811,7 +13809,7 @@ let RANK_COFACTOR_EQ_FULL = prove dimindex(:N) = 1 \/ rank A = dimindex(:N)`, REWRITE_TAC[RANK_EQ_FULL_DET; DET_COFACTOR; REAL_POW_EQ_0] THEN SIMP_TAC[DIMINDEX_GE_1; ARITH_RULE `1 <= n ==> (n - 1 = 0 <=> n = 1)`] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; let COFACTOR_EQ_0 = prove (`!A:real^N^N. cofactor A = mat 0 <=> rank(A) < dimindex(:N) - 1`, @@ -14751,7 +14749,7 @@ let SUMMABLE_IFF_EVENTUALLY = prove (ANTS_TAC THENL [ASM_ARITH_TAC; ALL_TAC]) THEN MATCH_MP_TAC EQ_IMP THEN AP_THM_TAC THEN AP_TERM_TAC THEN AP_TERM_TAC THEN MATCH_MP_TAC VSUM_EQ THEN ASM_SIMP_TAC[IN_INTER; IN_NUMSEG] THEN - REPEAT STRIP_TAC THENL [ALL_TAC; CONV_TAC SYM_CONV] THEN + REPEAT STRIP_TAC THENL [ALL_TAC; (CONV_TAC "SYM_CONV") SYM_CONV] THEN FIRST_X_ASSUM MATCH_MP_TAC THEN ASM_REWRITE_TAC[] THEN ASM_ARITH_TAC);; @@ -14854,7 +14852,7 @@ let SUMMABLE_IMP_TOZERO = prove [ASM_ARITH_TAC; ALL_TAC] THEN REWRITE_TAC[VSUM_CLAUSES_NUMSEG; LE_0] THEN REWRITE_TAC[NORM_ARITH `dist(x,vec 0) = norm x`] THEN - COND_CASES_TAC THEN ASM_REWRITE_TAC[NORM_0] THEN CONV_TAC NORM_ARITH);; + COND_CASES_TAC THEN ASM_REWRITE_TAC[NORM_0] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH);; let SUMMABLE_IMP_BOUNDED = prove (`!f:num->real^N k. summable k f ==> bounded (IMAGE f k)`, @@ -15284,7 +15282,7 @@ let SERIES_INJECTIVE_IMAGE = prove summable (IMAGE f s) (\n. lift(norm(x n))) /\ (!m n. m IN s /\ n IN s /\ f m = f n ==> m = n) ==> (((x o f) sums l) s <=> (x sums l) (IMAGE f s))`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN REWRITE_TAC[sums] THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[sums] THEN MATCH_MP_TAC LIM_TRANSFORM_EQ THEN REWRITE_TAC[] THEN MATCH_MP_TAC SERIES_INJECTIVE_IMAGE_STRONG THEN ASM_REWRITE_TAC[]);; @@ -15611,7 +15609,7 @@ let CLOSEST_POINT_EXISTS = prove (`!s a. closed s /\ ~(s = {}) ==> (closest_point s a) IN s /\ !y. y IN s ==> dist(a,closest_point s a) <= dist(a,y)`, - REWRITE_TAC[closest_point] THEN CONV_TAC(ONCE_DEPTH_CONV SELECT_CONV) THEN + REWRITE_TAC[closest_point] THEN (CONV_TAC "(ONCE_DEPTH_CONV SELECT_CONV)") (ONCE_DEPTH_CONV SELECT_CONV) THEN REWRITE_TAC[DISTANCE_ATTAINS_INF]);; let CLOSEST_POINT_IN_SET = prove @@ -15816,7 +15814,7 @@ let SETDIST_TRIANGLE = prove X_GEN_TAC `y:real^N` THEN STRIP_TAC THEN REWRITE_TAC[REAL_LE_SUB_RADD] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `dist(x:real^N,y)` THEN - ASM_SIMP_TAC[SETDIST_LE_DIST] THEN CONV_TAC NORM_ARITH);; + ASM_SIMP_TAC[SETDIST_LE_DIST] THEN (CONV_TAC "NORM_ARITH") NORM_ARITH);; let SETDIST_SINGS = prove (`!x y. setdist({x},{y}) = dist(x,y)`, @@ -16079,7 +16077,7 @@ let SETDIST_BALLS = prove [ALL_TAC; MATCH_MP_TAC REAL_LE_SETDIST THEN ASM_REWRITE_TAC[CBALL_EQ_EMPTY; REAL_NOT_LT; IN_CBALL] THEN - CONV_TAC NORM_ARITH] THEN + (CONV_TAC "NORM_ARITH") NORM_ARITH] THEN MATCH_MP_TAC REAL_LE_TRANS THEN EXISTS_TAC `dist(a + r / dist(a,b) % (b - a):real^N, b - s / dist(a,b) % (b - a))` THEN @@ -16635,7 +16633,7 @@ let HAUSDIST_COMPACT_NONTRIVIAL = prove inf {e | &0 <= e /\ s SUBSET {x + y | x IN t /\ norm y <= e} /\ t SUBSET {x + y | x IN s /\ norm y <= e}}`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_INF_UNIQUE THEN REWRITE_TAC[FORALL_IN_GSPEC; EXISTS_IN_GSPEC] THEN REWRITE_TAC[SUBSET; IN_ELIM_THM] THEN @@ -16735,7 +16733,7 @@ let HAUSDIST_ALT = prove ASM_REWRITE_TAC[] THEN DISCH_TAC THEN TRANS_TAC REAL_LE_TRANS `dist(z:real^N,x)` THEN ASM_SIMP_TAC[SETDIST_LE_DIST; IN_SING] THEN - UNDISCH_TAC `dist(y:real^N,x) <= b` THEN CONV_TAC NORM_ARITH);; + UNDISCH_TAC `dist(y:real^N,x) <= b` THEN (CONV_TAC "NORM_ARITH") NORM_ARITH);; let CONTINUOUS_DIAMETER = prove (`!s:real^N->bool e. @@ -17054,7 +17052,7 @@ let CLOSURE_DYADIC_RATIONALS = prove MP_TAC(SPECL [`inv(&2)`; `e / &(dimindex(:N))`] REAL_ARCH_POW_INV) THEN ASM_SIMP_TAC[REAL_LT_DIV; REAL_OF_NUM_LT; LE_1; DIMINDEX_GE_1; REAL_POW_INV; REAL_LT_RDIV_EQ] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC MONO_EXISTS THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN MATCH_MP_TAC MONO_EXISTS THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN X_GEN_TAC `n:num` THEN DISCH_TAC THEN EXISTS_TAC `(lambda i. floor(&2 pow n * (x:real^N)$i)):real^N` THEN ASM_SIMP_TAC[LAMBDA_BETA; FLOOR; dist; NORM_MUL] THEN @@ -17434,7 +17432,7 @@ let CARD_EQ_OPEN_SETS = prove REWRITE_TAC[le_c; IN_UNIV; IN_ELIM_THM] THEN EXISTS_TAC `\x. ball(x % basis 1:real^N,&1)` THEN REWRITE_TAC[OPEN_BALL; GSYM SUBSET_ANTISYM_EQ; SUBSET_BALLS] THEN - CONV_TAC REAL_RAT_REDUCE_CONV THEN + (CONV_TAC "REAL_RAT_REDUCE_CONV") REAL_RAT_REDUCE_CONV THEN REWRITE_TAC[NORM_ARITH `dist(p:real^N,q) + &1 <= &1 <=> p = q`] THEN REWRITE_TAC[VECTOR_MUL_RCANCEL; EQ_SYM_EQ] THEN SIMP_TAC[BASIS_NONZERO; DIMINDEX_GE_1; ARITH]]);; @@ -17445,7 +17443,7 @@ let CARD_EQ_CLOSED_SETS = prove `{s:real^N->bool | closed s} = IMAGE (\s. (:real^N) DIFF s) {s | open s}` SUBST1_TAC THENL - [CONV_TAC SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN + [(CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SURJECTIVE_IMAGE_EQ THEN REWRITE_TAC[IN_ELIM_THM; GSYM OPEN_CLOSED] THEN MESON_TAC[SET_RULE `UNIV DIFF (UNIV DIFF s) = s`]; TRANS_TAC CARD_EQ_TRANS `{s:real^N->bool | open s}` THEN @@ -18327,7 +18325,7 @@ let SUBORDINATE_PARTITION_OF_UNITY = prove `s INTER n:real^N->bool`] THEN ASM_SIMP_TAC[IN_INTER; OPEN_IN_OPEN_INTER] THEN CONJ_TAC THENL [X_GEN_TAC `y:real^N` THEN DISCH_TAC THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC SUM_EQ_SUPERSET THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC SUM_EQ_SUPERSET THEN ASM_REWRITE_TAC[SUBSET_RESTRICT] THEN X_GEN_TAC `v:real^N->bool` THEN DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC MP_TAC) THEN ASM_REWRITE_TAC[IN_ELIM_THM] THEN DISCH_TAC THEN diff --git a/RichterHilbertAxiomGeometry/inverse_bug_puzzle_read.ml b/RichterHilbertAxiomGeometry/inverse_bug_puzzle_read.ml index fd2e5d24..f8f2dc84 100644 --- a/RichterHilbertAxiomGeometry/inverse_bug_puzzle_read.ml +++ b/RichterHilbertAxiomGeometry/inverse_bug_puzzle_read.ml @@ -25,7 +25,7 @@ let VEC2_TAC = SIMP_TAC[CART_EQ; LAMBDA_BETA; FORALL_2; SUM_2; DIMINDEX_2; VECTOR_2; vector_add; vec; dot; orthogonal; basis; vector_neg; vector_sub; vector_mul; ARITH] THEN - CONV_TAC REAL_RING;; + (CONV_TAC "REAL_RING") REAL_RING;; let oriented_area = new_definition `oriented_area (a:real^2,b:real^2,c:real^2) = diff --git a/RichterHilbertAxiomGeometry/readable.ml b/RichterHilbertAxiomGeometry/readable.ml index e036221d..bf850ef2 100644 --- a/RichterHilbertAxiomGeometry/readable.ml +++ b/RichterHilbertAxiomGeometry/readable.ml @@ -239,7 +239,7 @@ let assume statement lab tac (asl, w as gl) = [ALL_TAC; FIRST_ASSUM MP_TAC THEN tac] THEN HYP SIMP_TAC lab []) gl;; let eq_tac string tac = - if string = "Right" then CONV_TAC SYM_CONV THEN EQ_TAC THENL [tac; ALL_TAC] + if string = "Right" then (CONV_TAC "SYM_CONV") SYM_CONV THEN EQ_TAC THENL [tac; ALL_TAC] else if string = "Left" then EQ_TAC THENL [tac; ALL_TAC] else raise (Readable_fail ("eq_tac requires " ^ string ^" to be either Left or Right"));; @@ -275,8 +275,8 @@ let rewriteRLDepth = GEN_REWRITE_TAC (RAND_CONV o LAND_CONV o DEPTH_CONV);; let TACtoThmTactic tac = fun ths -> MAP_EVERY MP_TAC ths THEN tac;; let arithmetic = TACtoThmTactic ARITH_TAC;; let real_arithmetic = TACtoThmTactic REAL_ARITH_TAC;; -let num_ring = TACtoThmTactic (CONV_TAC NUM_RING);; -let real_ring = TACtoThmTactic (CONV_TAC REAL_RING);; +let num_ring = TACtoThmTactic ((CONV_TAC "NUM_RING") NUM_RING);; +let real_ring = TACtoThmTactic ((CONV_TAC "REAL_RING") REAL_RING);; let ws = "[ \t\n]+";; let ws0 = "[ \t\n]*";; diff --git a/Rqe/asym.ml b/Rqe/asym.ml index 44d8c2d6..2fbe0489 100644 --- a/Rqe/asym.ml +++ b/Rqe/asym.ml @@ -50,7 +50,7 @@ let LIM_INV_CONST = prove_by_refinement( [ ONCE_REWRITE_TAC[REAL_ARITH `c / &n = c * &1 / &n`]; STRIP_TAC; - CONV_TAC (RAND_CONV (ONCE_REWRITE_CONV[REAL_ARITH `&0 = c * &0`])); + (CONV_TAC "(RAND_CONV (ONCE_REWRITE_CONV[REAL_ARITH `&0 = c * &0`]))") (RAND_CONV (ONCE_REWRITE_CONV[REAL_ARITH `&0 = c * &0`])); MATCH_MP_TAC SEQ_MUL; CONJ_TAC THENL [MATCH_ACCEPT_TAC SEQ_CONST;MATCH_ACCEPT_TAC LIM_INV_1N]; ]);; @@ -212,7 +212,7 @@ let LIM_POLY = prove_by_refinement( CLAIM `~(h = &0)`; ASM_MESON_TAC[LAST]; STRIP_TAC; - CONV_TAC (RAND_CONV (ONCE_REWRITE_CONV[REAL_ARITH `&1 = &1 * &1`])); + (CONV_TAC "(RAND_CONV (ONCE_REWRITE_CONV[REAL_ARITH `&1 = &1 * &1`]))") (RAND_CONV (ONCE_REWRITE_CONV[REAL_ARITH `&1 = &1 * &1`])); MATCH_MP_TAC SEQ_MUL; CONJ_TAC; ASM_SIMP_TAC[DIV_ID]; @@ -679,7 +679,7 @@ let POW_UNB = prove_by_refinement( EXISTS_TAC `&n'`; STRIP_TAC; ASM_MESON_TAC[REAL_LE]; - CONV_TAC (LAND_CONV (ONCE_REWRITE_CONV[REAL_ARITH `x = x pow 1`])); + (CONV_TAC "(LAND_CONV (ONCE_REWRITE_CONV[REAL_ARITH `x = x pow 1`]))") (LAND_CONV (ONCE_REWRITE_CONV[REAL_ARITH `x = x pow 1`])); MATCH_MP_TAC REAL_POW_MONO; STRIP_TAC; MATCH_MP_TAC REAL_LE_TRANS; @@ -1673,7 +1673,7 @@ let MUA_MUA = prove_by_refinement( MATCH_MP_TAC REAL_LET_TRANS; EXISTS_TAC `max c (&1) * max c (&1)`; REPEAT STRIP_TAC; - CONV_TAC (LAND_CONV (ONCE_REWRITE_CONV [GSYM REAL_MUL_RID])); + (CONV_TAC "(LAND_CONV (ONCE_REWRITE_CONV [GSYM REAL_MUL_RID]))") (LAND_CONV (ONCE_REWRITE_CONV [GSYM REAL_MUL_RID])); MATCH_MP_TAC REAL_LE_MUL2; REPEAT STRIP_TAC; REAL_SOLVE_TAC; @@ -1870,7 +1870,7 @@ let POLY_PNEG_NEG = prove_by_refinement( REAL_SIMP_TAC; AP_TERM_TAC; REWRITE_TAC[GSYM poly_neg]; - CONV_TAC (RAND_CONV (ONCE_REWRITE_CONV[GSYM POLY_NEG_NEG])); + (CONV_TAC "(RAND_CONV (ONCE_REWRITE_CONV[GSYM POLY_NEG_NEG]))") (RAND_CONV (ONCE_REWRITE_CONV[GSYM POLY_NEG_NEG])); POP_ASSUM (ONCE_REWRITE_TAC o list); REWRITE_TAC[]; ]);; @@ -1897,7 +1897,7 @@ let POLY_PNEG_AUX = prove_by_refinement( DISCH_THEN SUBST1_TAC; REAL_SIMP_TAC; AP_TERM_TAC; - CONV_TAC (LAND_CONV (ONCE_REWRITE_CONV[GSYM POLY_PNEG_NEG])); + (CONV_TAC "(LAND_CONV (ONCE_REWRITE_CONV[GSYM POLY_PNEG_NEG]))") (LAND_CONV (ONCE_REWRITE_CONV[GSYM POLY_PNEG_NEG])); REWRITE_TAC[POLY_NEG]; REAL_SIMP_TAC; ]);; diff --git a/Rqe/examples.ml b/Rqe/examples.ml index d03de1ce..3c474eae 100644 --- a/Rqe/examples.ml +++ b/Rqe/examples.ml @@ -1391,7 +1391,7 @@ let th = prove ==> v * (v * (h * h * c' + c) - h * c') - (v * h * c' - c') < c'))`, W(fun (asl,w) -> MAP_EVERY (fun v -> SPEC_TAC(v,v)) (frees w)) THEN - CONV_TAC REAL_QELIM_CONV);; + (CONV_TAC "REAL_QELIM_CONV") REAL_QELIM_CONV);; (* ------------------------------------------------------------------------- *) (* Two notions of parallelism. *) diff --git a/Rqe/num_calc_simp.ml b/Rqe/num_calc_simp.ml index 46289598..04779d34 100644 --- a/Rqe/num_calc_simp.ml +++ b/Rqe/num_calc_simp.ml @@ -47,4 +47,4 @@ let arith_net() = itlist (uncurry net_of_conv) let ARITH_REWRITE_CONV thl = GENERAL_REWRITE_CONV true TOP_DEPTH_CONV (arith_net()) thl;; -let ARITH_SIMP_TAC thl = CONV_TAC (ARITH_SIMP_CONV thl);; +let ARITH_SIMP_TAC thl = (CONV_TAC "(ARITH_SIMP_CONV thl)") (ARITH_SIMP_CONV thl);; diff --git a/Rqe/rqe_real.ml b/Rqe/rqe_real.ml index 31c335e9..59a23762 100644 --- a/Rqe/rqe_real.ml +++ b/Rqe/rqe_real.ml @@ -67,7 +67,7 @@ let REAL_DENSE = prove( EXISTS_TAC `e + x` THEN STRIP_TAC THENL [ONCE_REWRITE_TAC[REAL_ADD_SYM] THEN - CONV_TAC (LAND_CONV (ONCE_REWRITE_CONV[GSYM REAL_ADD_RID])) THEN + (CONV_TAC "(LAND_CONV (ONCE_REWRITE_CONV[GSYM REAL_ADD_RID]))") (LAND_CONV (ONCE_REWRITE_CONV[GSYM REAL_ADD_RID])) THEN MATCH_MP_TAC REAL_LET_ADD2 THEN STRIP_TAC THENL [MATCH_ACCEPT_TAC REAL_LE_REFL; diff --git a/Rqe/work_thms.ml b/Rqe/work_thms.ml index 26520886..68ce92ab 100644 --- a/Rqe/work_thms.ml +++ b/Rqe/work_thms.ml @@ -896,14 +896,14 @@ let PARTITION_LINE_APPEND = prove_by_refinement( REWRITE_TAC[HD;APPEND;partition_line;BUTLAST;LAST;TL;NOT_CONS_NIL;]; POP_ASSUM (fun x -> REWRITE_ASSUMS [x] THEN ASSUME_TAC x); REWRITE_TAC[APPEND]; - CONV_TAC (LAND_CONV (REWRITE_CONV[partition_line])); + (CONV_TAC "(LAND_CONV (REWRITE_CONV[partition_line]))") (LAND_CONV (REWRITE_CONV[partition_line])); COND_CASES_TAC; ASM_MESON_TAC[NOT_CONS_NIL;APPEND_EQ_NIL]; POP_ASSUM (fun x -> ALL_TAC); ASM_REWRITE_TAC[]; ASM_REWRITE_TAC[LAST]; ASM_SIMP_TAC[APPEND_HD]; - CONV_TAC (RAND_CONV (LAND_CONV (RAND_CONV (REWRITE_CONV[partition_line])))); + (CONV_TAC "(RAND_CONV (LAND_CONV (RAND_CONV (REWRITE_CONV[partition_line]))))") (RAND_CONV (LAND_CONV (RAND_CONV (REWRITE_CONV[partition_line])))); ASM_REWRITE_TAC[]; REWRITE_TAC[APPEND;BUTLAST;NOT_CONS_NIL;]; REPEAT AP_TERM_TAC; diff --git a/Tutorial/Changing_proof_style.ml b/Tutorial/Changing_proof_style.ml index f972ac1a..d0a254b3 100644 --- a/Tutorial/Changing_proof_style.ml +++ b/Tutorial/Changing_proof_style.ml @@ -23,7 +23,7 @@ let consider (x,lab,t) tac = SUBGOAL_THEN tm (X_CHOOSE_THEN x (LABEL_TAC lab)) THENL [tac; ALL_TAC];; let trivial = MESON_TAC[];; -let algebra = CONV_TAC NUM_RING;; +let algebra = (CONV_TAC "NUM_RING") NUM_RING;; let arithmetic = ARITH_TAC;; let by labs tac = MAP_EVERY (fun l -> USE_THEN l MP_TAC) labs THEN tac;; diff --git a/Tutorial/Custom_tactics.ml b/Tutorial/Custom_tactics.ml index 96088120..2a5c5e72 100644 --- a/Tutorial/Custom_tactics.ml +++ b/Tutorial/Custom_tactics.ml @@ -48,14 +48,14 @@ let PROVE_NONTRIVIAL = let ptm = `~(x :real^3 = vec 0)` and xtm = `x:real^3` in fun x -> prove(vsubst [hol_of_point x,xtm] ptm, GEN_REWRITE_TAC RAND_CONV [VECTOR_ZERO] THEN - MP_TAC SQRT_2_POW THEN CONV_TAC REAL_RING);; + MP_TAC SQRT_2_POW THEN (CONV_TAC "REAL_RING") REAL_RING);; let PROVE_ORTHOGONAL = let ptm = `orthogonal:real^3->real^3->bool` in fun (x,y) -> prove(list_mk_comb(ptm,[hol_of_point x;hol_of_point y]), ONCE_REWRITE_TAC[ORTHOGONAL_VECTOR] THEN - MP_TAC SQRT_2_POW THEN CONV_TAC REAL_RING);; + MP_TAC SQRT_2_POW THEN (CONV_TAC "REAL_RING") REAL_RING);; let ppoint = let p = `P:real^3->bool` in fun v -> mk_comb(p,hol_of_point v);; diff --git a/Tutorial/HOL_as_a_functional_programming_language.ml b/Tutorial/HOL_as_a_functional_programming_language.ml index 01e2dc06..31f00200 100644 --- a/Tutorial/HOL_as_a_functional_programming_language.ml +++ b/Tutorial/HOL_as_a_functional_programming_language.ml @@ -97,7 +97,7 @@ let holds = define let HOLDS_NORM = prove (`!e v. holds v (norm e) <=> holds v e`, MATCH_MP_TAC ITE_INDUCT THEN SIMP_TAC[holds; norm] THEN - REPEAT STRIP_TAC THEN CONV_TAC TAUT);; + REPEAT STRIP_TAC THEN (CONV_TAC "TAUT") TAUT);; let taut = define `(taut (t,f) False <=> F) /\ @@ -142,7 +142,7 @@ let HOLDS_BACK = prove (!p q. (holds v p <=> holds v q) <=> holds v (Ite p q (Ite q False True))) /\ (!p q. holds v p ==> holds v q <=> holds v (Ite p q True))`, - REWRITE_TAC[holds] THEN CONV_TAC TAUT);; + REWRITE_TAC[holds] THEN (CONV_TAC "TAUT") TAUT);; let COND_CONV = GEN_REWRITE_CONV I [COND_CLAUSES];; let AND_CONV = GEN_REWRITE_CONV I [TAUT `(F /\ a <=> F) /\ (T /\ a <=> a)`];; diff --git a/Tutorial/Inductive_definitions.ml b/Tutorial/Inductive_definitions.ml index cde94ae1..c908da96 100644 --- a/Tutorial/Inductive_definitions.ml +++ b/Tutorial/Inductive_definitions.ml @@ -24,7 +24,7 @@ let oriented_area = new_definition let MOVE_INVARIANT = prove (`!p p'. move p p' ==> oriented_area p = oriented_area p'`, - REWRITE_TAC[FORALL_PAIR_THM; move; oriented_area] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[FORALL_PAIR_THM; move; oriented_area] THEN (CONV_TAC "REAL_RING") REAL_RING);; let REACHABLE_INVARIANT = prove (`!p p'. reachable p p' ==> oriented_area p = oriented_area p'`, diff --git a/Tutorial/Linking_external_tools.ml b/Tutorial/Linking_external_tools.ml index 0ba0f470..af921b54 100644 --- a/Tutorial/Linking_external_tools.ml +++ b/Tutorial/Linking_external_tools.ml @@ -121,12 +121,12 @@ let SIN_N_CLAUSES = prove REWRITE_TAC[NUMERAL; BIT0; BIT1] THEN REWRITE_TAC[ADD1; GSYM REAL_OF_NUM_ADD] THEN REWRITE_TAC[REAL_ADD_RDISTRIB; SIN_ADD; COS_ADD; REAL_MUL_LID] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let TRIG_IDENT_TAC x = REWRITE_TAC[SIN_N_CLAUSES; SIN_ADD; COS_ADD] THEN REWRITE_TAC[REAL_MUL_LZERO; SIN_0; COS_0; REAL_MUL_RZERO] THEN - MP_TAC(SPEC x SIN_CIRCLE) THEN CONV_TAC REAL_RING;; + MP_TAC(SPEC x SIN_CIRCLE) THEN (CONV_TAC "REAL_RING") REAL_RING;; let ANTIDERIV_CONV tm = let x,bod = dest_abs tm in diff --git a/Tutorial/Real_analysis.ml b/Tutorial/Real_analysis.ml index dd7d2900..14f383b4 100644 --- a/Tutorial/Real_analysis.ml +++ b/Tutorial/Real_analysis.ml @@ -20,7 +20,7 @@ let CHEB_COS = prove REPEAT STRIP_TAC THEN ASM_REWRITE_TAC[GSYM REAL_OF_NUM_ADD; REAL_MUL_LID; REAL_ADD_RDISTRIB] THEN REWRITE_TAC[COS_ADD; COS_DOUBLE; SIN_DOUBLE] THEN - MP_TAC(SPEC `x:real` SIN_CIRCLE) THEN CONV_TAC REAL_RING);; + MP_TAC(SPEC `x:real` SIN_CIRCLE) THEN (CONV_TAC "REAL_RING") REAL_RING);; let CHEB_RIPPLE = prove (`!x. abs(x) <= &1 ==> abs(cheb n x) <= &1`, @@ -64,7 +64,7 @@ let CHEB_2N1 = prove ARITH_RULE `n + 3 = (n + 1) + 2`; cheb])) THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let IVT_LEMMA1 = prove (`!f. (!x. f contl x) diff --git a/Tutorial/Recursive_definitions.ml b/Tutorial/Recursive_definitions.ml index c0176086..8b2f9bc4 100644 --- a/Tutorial/Recursive_definitions.ml +++ b/Tutorial/Recursive_definitions.ml @@ -46,7 +46,7 @@ let BINOM_FACT = prove INDUCT_TAC THEN REWRITE_TAC[FACT; ADD_CLAUSES; MULT_CLAUSES; BINOM_REFL] THEN INDUCT_TAC THEN REWRITE_TAC[ADD_CLAUSES; FACT; MULT_CLAUSES; binom] THEN FIRST_X_ASSUM(MP_TAC o SPEC `SUC k`) THEN POP_ASSUM MP_TAC THEN - REWRITE_TAC[ADD_CLAUSES; FACT; binom] THEN CONV_TAC NUM_RING);; + REWRITE_TAC[ADD_CLAUSES; FACT; binom] THEN (CONV_TAC "NUM_RING") NUM_RING);; let BINOMIAL_THEOREM = prove (`!n. (x + y) EXP n = nsum(0..n) (\k. binom(n,k) * x EXP k * y EXP (n - k))`, diff --git a/Tutorial/Semantics_of_programming_languages_shallow.ml b/Tutorial/Semantics_of_programming_languages_shallow.ml index 75c68c28..1ec24408 100644 --- a/Tutorial/Semantics_of_programming_languages_shallow.ml +++ b/Tutorial/Semantics_of_programming_languages_shallow.ml @@ -199,7 +199,7 @@ b();; e(REPEAT VC_TAC THEN REWRITE_TAC[SUBSET; FORALL_PAIR_THM] THEN MAP_EVERY X_GEN_TAC [`m:num`; `n:num`; `x:num`; `y:num`] THEN REWRITE_TAC[IN; INTER; UNIV; DIFF; o_DEF; IN_ELIM_THM; PAIR_EQ] THEN - CONV_TAC(TOP_DEPTH_CONV GEN_BETA_CONV) THEN SIMP_TAC[]);; + (CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV) THEN SIMP_TAC[]);; e(SIMP_TAC[GCD_SUB; LT_IMP_LE]);; e ARITH_TAC;; diff --git a/Tutorial/Sets_and_functions.ml b/Tutorial/Sets_and_functions.ml index 5f2f7a61..4aed29eb 100644 --- a/Tutorial/Sets_and_functions.ml +++ b/Tutorial/Sets_and_functions.ml @@ -17,7 +17,7 @@ needs "Examples/sos.ml";; let CANTOR_LEMMA = prove (`cantor(x,y) = cantor(x',y') ==> x + y = x' + y'`, - REWRITE_TAC[cantor] THEN CONV_TAC SOS_RULE);; + REWRITE_TAC[cantor] THEN (CONV_TAC "SOS_RULE") SOS_RULE);; ****) diff --git a/Tutorial/Tactics_and_tacticals.ml b/Tutorial/Tactics_and_tacticals.ml index e2eac42f..b4b52522 100644 --- a/Tutorial/Tactics_and_tacticals.ml +++ b/Tutorial/Tactics_and_tacticals.ml @@ -1,34 +1,34 @@ g `2 <= n /\ n <= 2 ==> f(2,2) + n < f(n,n) + 7`;; e DISCH_TAC;; b();; -e(CONV_TAC(REWRITE_CONV[LE_ANTISYM]));; +e((CONV_TAC "(REWRITE_CONV[LE_ANTISYM])") (REWRITE_CONV[LE_ANTISYM]));; e(SIMP_TAC[]);; e(ONCE_REWRITE_TAC[EQ_SYM_EQ]);; e DISCH_TAC;; e(ASM_REWRITE_TAC[]);; -e(CONV_TAC ARITH_RULE);; +e((CONV_TAC "ARITH_RULE") ARITH_RULE);; let trivial = top_thm();; g `2 <= n /\ n <= 2 ==> f(2,2) + n < f(n,n) + 7`;; -e(CONV_TAC(REWRITE_CONV[LE_ANTISYM]));; +e((CONV_TAC "(REWRITE_CONV[LE_ANTISYM])") (REWRITE_CONV[LE_ANTISYM]));; e(SIMP_TAC[]);; e(ONCE_REWRITE_TAC[EQ_SYM_EQ]);; e DISCH_TAC;; e(ASM_REWRITE_TAC[]);; -e(CONV_TAC ARITH_RULE);; +e((CONV_TAC "ARITH_RULE") ARITH_RULE);; let trivial = top_thm();; g `2 <= n /\ n <= 2 ==> f(2,2) + n < f(n,n) + 7`;; -e(CONV_TAC(REWRITE_CONV[LE_ANTISYM]) THEN +e((CONV_TAC "(REWRITE_CONV[LE_ANTISYM])") (REWRITE_CONV[LE_ANTISYM]) THEN SIMP_TAC[] THEN ONCE_REWRITE_TAC[EQ_SYM_EQ] THEN - DISCH_TAC THEN ASM_REWRITE_TAC[] THEN CONV_TAC ARITH_RULE);; + DISCH_TAC THEN ASM_REWRITE_TAC[] THEN (CONV_TAC "ARITH_RULE") ARITH_RULE);; let trivial = top_thm();; let trivial = prove (`2 <= n /\ n <= 2 ==> f(2,2) + n < f(n,n) + 7`, - CONV_TAC(REWRITE_CONV[LE_ANTISYM]) THEN + (CONV_TAC "(REWRITE_CONV[LE_ANTISYM])") (REWRITE_CONV[LE_ANTISYM]) THEN SIMP_TAC[] THEN ONCE_REWRITE_TAC[EQ_SYM_EQ] THEN - DISCH_TAC THEN ASM_REWRITE_TAC[] THEN CONV_TAC ARITH_RULE);; + DISCH_TAC THEN ASM_REWRITE_TAC[] THEN (CONV_TAC "ARITH_RULE") ARITH_RULE);; let trivial = prove (`!x y:real. &0 < x * y ==> (&0 < x <=> &0 < y)`, diff --git a/Tutorial/Vectors.ml b/Tutorial/Vectors.ml index eea62eff..629d8c05 100644 --- a/Tutorial/Vectors.ml +++ b/Tutorial/Vectors.ml @@ -6,7 +6,7 @@ g `orthogonal (A - B) (C - B) ==> norm(C - A) pow 2 = norm(B - A) pow 2 + norm(C - B) pow 2`;; e SOLOVAY_VECTOR_TAC;; -e(CONV_TAC REAL_RING);; +e((CONV_TAC "REAL_RING") REAL_RING);; g`!x y:real^N. x dot y <= norm x * norm y`;; e SOLOVAY_VECTOR_TAC;; @@ -14,11 +14,11 @@ e SOLOVAY_VECTOR_TAC;; (**** Needs external SDP solver needs "Examples/sos.ml";; -e(CONV_TAC REAL_SOS);; +e((CONV_TAC "REAL_SOS") REAL_SOS);; let EXAMPLE_0 = prove (`!a x y:real^N. (y - x) dot (a - y) >= &0 ==> norm(y - a) <= norm(x - a)`, - SOLOVAY_VECTOR_TAC THEN CONV_TAC REAL_SOS);; + SOLOVAY_VECTOR_TAC THEN (CONV_TAC "REAL_SOS") REAL_SOS);; ****) (*** Needs Rqe loaded @@ -31,7 +31,7 @@ let EXAMPLE_10 = prove !v. &0 < v /\ v <= u ==> norm(v % y - x) < norm x`, SOLOVAY_VECTOR_TAC THEN W(fun (asl,w) -> MAP_EVERY (fun v -> SPEC_TAC(v,v)) (frees w)) THEN - CONV_TAC REAL_QELIM_CONV);; + (CONV_TAC "REAL_QELIM_CONV") REAL_QELIM_CONV);; ****) @@ -76,7 +76,7 @@ let cross = new_definition let VEC3_TAC = SIMP_TAC[CART_EQ; LAMBDA_BETA; FORALL_3; SUM_3; DIMINDEX_3; VECTOR_3; vector_add; vec; dot; cross; orthogonal; basis; ARITH] THEN - CONV_TAC REAL_RING;; + (CONV_TAC "REAL_RING") REAL_RING;; let VEC3_RULE tm = prove(tm,VEC3_TAC);; diff --git a/Tutorial/all.ml b/Tutorial/all.ml index db914b51..0290b13e 100644 --- a/Tutorial/all.ml +++ b/Tutorial/all.ml @@ -88,34 +88,34 @@ MESON [ADD_ASSOC; ADD_SYM] `m + (n + p) = n + (m + p)`;; g `2 <= n /\ n <= 2 ==> f(2,2) + n < f(n,n) + 7`;; e DISCH_TAC;; b();; -e(CONV_TAC(REWRITE_CONV[LE_ANTISYM]));; +e((CONV_TAC "(REWRITE_CONV[LE_ANTISYM])") (REWRITE_CONV[LE_ANTISYM]));; e(SIMP_TAC[]);; e(ONCE_REWRITE_TAC[EQ_SYM_EQ]);; e DISCH_TAC;; e(ASM_REWRITE_TAC[]);; -e(CONV_TAC ARITH_RULE);; +e((CONV_TAC "ARITH_RULE") ARITH_RULE);; let trivial = top_thm();; g `2 <= n /\ n <= 2 ==> f(2,2) + n < f(n,n) + 7`;; -e(CONV_TAC(REWRITE_CONV[LE_ANTISYM]));; +e((CONV_TAC "(REWRITE_CONV[LE_ANTISYM])") (REWRITE_CONV[LE_ANTISYM]));; e(SIMP_TAC[]);; e(ONCE_REWRITE_TAC[EQ_SYM_EQ]);; e DISCH_TAC;; e(ASM_REWRITE_TAC[]);; -e(CONV_TAC ARITH_RULE);; +e((CONV_TAC "ARITH_RULE") ARITH_RULE);; let trivial = top_thm();; g `2 <= n /\ n <= 2 ==> f(2,2) + n < f(n,n) + 7`;; -e(CONV_TAC(REWRITE_CONV[LE_ANTISYM]) THEN +e((CONV_TAC "(REWRITE_CONV[LE_ANTISYM])") (REWRITE_CONV[LE_ANTISYM]) THEN SIMP_TAC[] THEN ONCE_REWRITE_TAC[EQ_SYM_EQ] THEN - DISCH_TAC THEN ASM_REWRITE_TAC[] THEN CONV_TAC ARITH_RULE);; + DISCH_TAC THEN ASM_REWRITE_TAC[] THEN (CONV_TAC "ARITH_RULE") ARITH_RULE);; let trivial = top_thm();; let trivial = prove (`2 <= n /\ n <= 2 ==> f(2,2) + n < f(n,n) + 7`, - CONV_TAC(REWRITE_CONV[LE_ANTISYM]) THEN + (CONV_TAC "(REWRITE_CONV[LE_ANTISYM])") (REWRITE_CONV[LE_ANTISYM]) THEN SIMP_TAC[] THEN ONCE_REWRITE_TAC[EQ_SYM_EQ] THEN - DISCH_TAC THEN ASM_REWRITE_TAC[] THEN CONV_TAC ARITH_RULE);; + DISCH_TAC THEN ASM_REWRITE_TAC[] THEN (CONV_TAC "ARITH_RULE") ARITH_RULE);; let trivial = prove (`!x y:real. &0 < x * y ==> (&0 < x <=> &0 < y)`, @@ -300,7 +300,7 @@ let oriented_area = new_definition let MOVE_INVARIANT = prove (`!p p'. move p p' ==> oriented_area p = oriented_area p'`, - REWRITE_TAC[FORALL_PAIR_THM; move; oriented_area] THEN CONV_TAC REAL_RING);; + REWRITE_TAC[FORALL_PAIR_THM; move; oriented_area] THEN (CONV_TAC "REAL_RING") REAL_RING);; let REACHABLE_INVARIANT = prove (`!p p'. reachable p p' ==> oriented_area p = oriented_area p'`, @@ -410,7 +410,7 @@ let consider (x,lab,t) tac = SUBGOAL_THEN tm (X_CHOOSE_THEN x (LABEL_TAC lab)) THENL [tac; ALL_TAC];; let trivial = MESON_TAC[];; -let algebra = CONV_TAC NUM_RING;; +let algebra = (CONV_TAC "NUM_RING") NUM_RING;; let arithmetic = ARITH_TAC;; let by labs tac = MAP_EVERY (fun l -> USE_THEN l MP_TAC) labs THEN tac;; @@ -492,7 +492,7 @@ let BINOM_FACT = prove INDUCT_TAC THEN REWRITE_TAC[FACT; ADD_CLAUSES; MULT_CLAUSES; BINOM_REFL] THEN INDUCT_TAC THEN REWRITE_TAC[ADD_CLAUSES; FACT; MULT_CLAUSES; binom] THEN FIRST_X_ASSUM(MP_TAC o SPEC `SUC k`) THEN POP_ASSUM MP_TAC THEN - REWRITE_TAC[ADD_CLAUSES; FACT; binom] THEN CONV_TAC NUM_RING);; + REWRITE_TAC[ADD_CLAUSES; FACT; binom] THEN (CONV_TAC "NUM_RING") NUM_RING);; let BINOMIAL_THEOREM = prove (`!n. (x + y) EXP n = nsum(0..n) (\k. binom(n,k) * x EXP k * y EXP (n - k))`, @@ -533,7 +533,7 @@ needs "Examples/sos.ml";; let CANTOR_LEMMA = prove (`cantor(x,y) = cantor(x',y') ==> x + y = x' + y'`, - REWRITE_TAC[cantor] THEN CONV_TAC SOS_RULE);; + REWRITE_TAC[cantor] THEN (CONV_TAC "SOS_RULE") SOS_RULE);; ****) @@ -953,7 +953,7 @@ b();; e(REPEAT VC_TAC THEN REWRITE_TAC[SUBSET; FORALL_PAIR_THM] THEN MAP_EVERY X_GEN_TAC [`m:num`; `n:num`; `x:num`; `y:num`] THEN REWRITE_TAC[IN; INTER; UNIV; DIFF; o_DEF; IN_ELIM_THM; PAIR_EQ] THEN - CONV_TAC(TOP_DEPTH_CONV GEN_BETA_CONV) THEN SIMP_TAC[]);; + (CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV) THEN SIMP_TAC[]);; e(SIMP_TAC[GCD_SUB; LT_IMP_LE]);; e ARITH_TAC;; @@ -1129,7 +1129,7 @@ let CHEB_COS = prove REPEAT STRIP_TAC THEN ASM_REWRITE_TAC[GSYM REAL_OF_NUM_ADD; REAL_MUL_LID; REAL_ADD_RDISTRIB] THEN REWRITE_TAC[COS_ADD; COS_DOUBLE; SIN_DOUBLE] THEN - MP_TAC(SPEC `x:real` SIN_CIRCLE) THEN CONV_TAC REAL_RING);; + MP_TAC(SPEC `x:real` SIN_CIRCLE) THEN (CONV_TAC "REAL_RING") REAL_RING);; let CHEB_RIPPLE = prove (`!x. abs(x) <= &1 ==> abs(cheb n x) <= &1`, @@ -1172,7 +1172,7 @@ let CHEB_2N1 = prove ARITH_RULE `n + 3 = (n + 1) + 2`; cheb])) THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let IVT_LEMMA1 = prove (`!f. (!x. f contl x) @@ -1446,7 +1446,7 @@ let holds = define let HOLDS_NORM = prove (`!e v. holds v (norm e) <=> holds v e`, MATCH_MP_TAC ITE_INDUCT THEN SIMP_TAC[holds; norm] THEN - REPEAT STRIP_TAC THEN CONV_TAC TAUT);; + REPEAT STRIP_TAC THEN (CONV_TAC "TAUT") TAUT);; let taut = define `(taut (t,f) False <=> F) /\ @@ -1491,7 +1491,7 @@ let HOLDS_BACK = prove (!p q. (holds v p <=> holds v q) <=> holds v (Ite p q (Ite q False True))) /\ (!p q. holds v p ==> holds v q <=> holds v (Ite p q True))`, - REWRITE_TAC[holds] THEN CONV_TAC TAUT);; + REWRITE_TAC[holds] THEN (CONV_TAC "TAUT") TAUT);; let COND_CONV = GEN_REWRITE_CONV I [COND_CLAUSES];; let AND_CONV = GEN_REWRITE_CONV I [TAUT `(F /\ a <=> F) /\ (T /\ a <=> a)`];; @@ -1538,7 +1538,7 @@ g `orthogonal (A - B) (C - B) ==> norm(C - A) pow 2 = norm(B - A) pow 2 + norm(C - B) pow 2`;; e SOLOVAY_VECTOR_TAC;; -e(CONV_TAC REAL_RING);; +e((CONV_TAC "REAL_RING") REAL_RING);; g`!x y:real^N. x dot y <= norm x * norm y`;; e SOLOVAY_VECTOR_TAC;; @@ -1546,11 +1546,11 @@ e SOLOVAY_VECTOR_TAC;; (**** Needs external SDP solver needs "Examples/sos.ml";; -e(CONV_TAC REAL_SOS);; +e((CONV_TAC "REAL_SOS") REAL_SOS);; let EXAMPLE_0 = prove (`!a x y:real^N. (y - x) dot (a - y) >= &0 ==> norm(y - a) <= norm(x - a)`, - SOLOVAY_VECTOR_TAC THEN CONV_TAC REAL_SOS);; + SOLOVAY_VECTOR_TAC THEN (CONV_TAC "REAL_SOS") REAL_SOS);; ****) needs "Rqe/make.ml";; @@ -1561,7 +1561,7 @@ let EXAMPLE_10 = prove !v. &0 < v /\ v <= u ==> norm(v % y - x) < norm x`, SOLOVAY_VECTOR_TAC THEN W(fun (asl,w) -> MAP_EVERY (fun v -> SPEC_TAC(v,v)) (frees w)) THEN - CONV_TAC REAL_QELIM_CONV);; + (CONV_TAC "REAL_QELIM_CONV") REAL_QELIM_CONV);; let FORALL_3 = prove (`(!i. 1 <= i /\ i <= 3 ==> P i) <=> P 1 /\ P 2 /\ P 3`, @@ -1604,7 +1604,7 @@ let cross = new_definition let VEC3_TAC = SIMP_TAC[CART_EQ; LAMBDA_BETA; FORALL_3; SUM_3; DIMINDEX_3; VECTOR_3; vector_add; vec; dot; cross; orthogonal; basis; ARITH] THEN - CONV_TAC REAL_RING;; + (CONV_TAC "REAL_RING") REAL_RING;; let VEC3_RULE tm = prove(tm,VEC3_TAC);; @@ -1696,14 +1696,14 @@ let PROVE_NONTRIVIAL = let ptm = `~(x :real^3 = vec 0)` and xtm = `x:real^3` in fun x -> prove(vsubst [hol_of_point x,xtm] ptm, GEN_REWRITE_TAC RAND_CONV [VECTOR_ZERO] THEN - MP_TAC SQRT_2_POW THEN CONV_TAC REAL_RING);; + MP_TAC SQRT_2_POW THEN (CONV_TAC "REAL_RING") REAL_RING);; let PROVE_ORTHOGONAL = let ptm = `orthogonal:real^3->real^3->bool` in fun (x,y) -> prove(list_mk_comb(ptm,[hol_of_point x;hol_of_point y]), ONCE_REWRITE_TAC[ORTHOGONAL_VECTOR] THEN - MP_TAC SQRT_2_POW THEN CONV_TAC REAL_RING);; + MP_TAC SQRT_2_POW THEN (CONV_TAC "REAL_RING") REAL_RING);; let ppoint = let p = `P:real^3->bool` in fun v -> mk_comb(p,hol_of_point v);; @@ -2204,12 +2204,12 @@ let SIN_N_CLAUSES = prove REWRITE_TAC[NUMERAL; BIT0; BIT1] THEN REWRITE_TAC[ADD1; GSYM REAL_OF_NUM_ADD] THEN REWRITE_TAC[REAL_ADD_RDISTRIB; SIN_ADD; COS_ADD; REAL_MUL_LID] THEN - CONV_TAC REAL_RING);; + (CONV_TAC "REAL_RING") REAL_RING);; let TRIG_IDENT_TAC x = REWRITE_TAC[SIN_N_CLAUSES; SIN_ADD; COS_ADD] THEN REWRITE_TAC[REAL_MUL_LZERO; SIN_0; COS_0; REAL_MUL_RZERO] THEN - MP_TAC(SPEC x SIN_CIRCLE) THEN CONV_TAC REAL_RING;; + MP_TAC(SPEC x SIN_CIRCLE) THEN (CONV_TAC "REAL_RING") REAL_RING;; let ANTIDERIV_CONV tm = let x,bod = dest_abs tm in diff --git a/Unity/mk_comp_unity.ml b/Unity/mk_comp_unity.ml index 526d4be7..83b7c130 100644 --- a/Unity/mk_comp_unity.ml +++ b/Unity/mk_comp_unity.ml @@ -265,7 +265,7 @@ let COMP_UNITY_cor2 = prove_thm REWRITE_TAC [UNLESS] ; REWRITE_TAC [UNLESS;UNLESS_STMT] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REPEAT STRIP_TAC THENL [ RES_TAC THEN diff --git a/Unity/mk_ensures.ml b/Unity/mk_ensures.ml index 8be7e2c2..3617fb93 100644 --- a/Unity/mk_ensures.ml +++ b/Unity/mk_ensures.ml @@ -79,7 +79,7 @@ let ENSURES_lemma1 = TAC_PROOF (!s. (p /\* p') s /\ ~((p /\* q' \/* p' /\* q) \/* q /\* q') s ==> ((p /\* q' \/* p' /\* q) \/* q /\* q') (h s))`), REWRITE_TAC [UNLESS_STMT; AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN MESON_TAC []);; let ENSURES_lemma2 = TAC_PROOF @@ -157,11 +157,11 @@ let EXIST_TRANSITION_thm2 = prove_thm UNDISCH_TAC (`!s:'a. ((p:'a->bool) s) /\ ~(False s) ==> (False ((h:'a->'a) s))`) THEN REWRITE_TAC [FALSE_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) ; UNDISCH_TAC (`!s:'a. (Not (p:'a->bool)) s`) THEN REWRITE_TAC [NOT_def1] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) ]);; (* @@ -463,7 +463,7 @@ let ENSURES_thm3 = prove_thm [ UNDISCH_TAC `!s:'a. (p:'a->bool) s /\ ~(False s) ==> False ((h:'a->'a) s)` THEN REWRITE_TAC [FALSE_def; NOT_def1] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) ; IMP_RES_TAC EXIST_TRANSITION_thm2 ]);; diff --git a/Unity/mk_leadsto.ml b/Unity/mk_leadsto.ml index b9cd9436..1482ab6a 100644 --- a/Unity/mk_leadsto.ml +++ b/Unity/mk_leadsto.ml @@ -592,7 +592,7 @@ let LEADSTO_thm10 = prove_thm (`!(p:'a->bool) q. (p LEADSTO q) [] = F`), REPEAT GEN_TAC THEN REWRITE_TAC [LEADSTO;LeadstoRel] THEN - CONV_TAC NOT_FORALL_CONV THEN + (CONV_TAC "NOT_FORALL_CONV") NOT_FORALL_CONV THEN EXISTS_TAC (`\(p:'a->bool) (q:'a->bool) (Pr:('a->'a)list). F`) THEN BETA_TAC THEN REWRITE_TAC [ENSURES_thm0] THEN @@ -601,7 +601,7 @@ let LEADSTO_thm10 = prove_thm REWRITE_TAC [GEN_ALL (SYM (SPEC_ALL IMP_DISJ_THM))] THEN REWRITE_TAC [In,LUB] THEN STRIP_TAC THEN - CONV_TAC NOT_FORALL_CONV THEN + (CONV_TAC "NOT_FORALL_CONV") NOT_FORALL_CONV THEN REWRITE_TAC [] THEN ... diff --git a/Unity/mk_state_logic.ml b/Unity/mk_state_logic.ml index 8bc65651..484b21b8 100644 --- a/Unity/mk_state_logic.ml +++ b/Unity/mk_state_logic.ml @@ -120,7 +120,7 @@ let IMPLY_WEAK_lemma1 = prove_thm ( (((p /\* q') \/* (p' /\* q)) \/* (q /\* q')) s ) ==> ((q \/* q') s)`), REPEAT(GEN_TAC) THEN REWRITE_TAC [AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [(SYM (SPEC_ALL DISJ_ASSOC))] THEN REPEAT STRIP_TAC THENL [ASM_REWRITE_TAC []; @@ -153,7 +153,7 @@ let IMPLY_WEAK_lemma3 = prove_thm r s`, REPEAT GEN_TAC THEN REWRITE_TAC [NOT_def1; AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [(SYM (SPEC_ALL DISJ_ASSOC))] THEN REPEAT STRIP_TAC THEN RES_TAC);; @@ -168,7 +168,7 @@ let IMPLY_WEAK_lemma4 = prove_thm ((p /\* q) \/* r \/* r')s`, REPEAT GEN_TAC THEN REWRITE_TAC [NOT_def1; AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [SYM (SPEC_ALL DISJ_ASSOC); GEN_ALL (SYM (SPEC_ALL CONJ_ASSOC)); NOT_CLAUSES; @@ -184,7 +184,7 @@ let IMPLY_WEAK_lemma5 = prove_thm (q \/* r) s`, REPEAT GEN_TAC THEN REWRITE_TAC [AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REPEAT STRIP_TAC THEN RES_TAC THEN ASM_REWRITE_TAC []);; @@ -196,7 +196,7 @@ let IMPLY_WEAK_lemma6 = prove_thm ((q /\* r) \/* b) s`, REPEAT GEN_TAC THEN REWRITE_TAC [AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REPEAT STRIP_TAC THEN ASM_REWRITE_TAC []);; let IMPLY_WEAK_lemma7 = prove_thm @@ -207,7 +207,7 @@ let IMPLY_WEAK_lemma7 = prove_thm ((q /\* r) \/* b) s`, REPEAT GEN_TAC THEN REWRITE_TAC [AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REPEAT STRIP_TAC THEN ASM_REWRITE_TAC []);; let CONJ_COMM_DISJ_lemma_a = TAC_PROOF @@ -243,7 +243,7 @@ let AND_COMM_OR_lemma = prove_thm `!(p:'a->bool) q r. ((r /\* q) \/* p) = ((q /\* r) \/* p)`, REPEAT GEN_TAC THEN REWRITE_TAC [AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN STRIP_ASSUME_TAC (MK_ABS (SPECL [p;q;r] CONJ_COMM_DISJ_lemma)));; let CONJ_DISJ_COMM_lemma_a = TAC_PROOF @@ -283,7 +283,7 @@ let AND_OR_COMM_lemma = prove_thm = p /\* (q \/* r)`, REPEAT GEN_TAC THEN REWRITE_TAC [AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN STRIP_ASSUME_TAC (MK_ABS (SPECL [p;q;r] CONJ_DISJ_COMM_lemma)));; let DISJ_COMM_CONJ_lemma_a = TAC_PROOF @@ -323,7 +323,7 @@ let OR_COMM_AND_lemma = prove_thm = (q \/* r) /\* p`, REPEAT GEN_TAC THEN REWRITE_TAC [AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN STRIP_ASSUME_TAC (MK_ABS (SPECL [p;q;r] DISJ_COMM_CONJ_lemma)));; let DISJ_COMM_DISJ_lemma_a = TAC_PROOF @@ -357,7 +357,7 @@ let OR_COMM_OR_lemma = prove_thm `!(p:'a->bool) q r. (r \/* q) \/* p = (q \/* r) \/* p`, REPEAT GEN_TAC THEN REWRITE_TAC [OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN STRIP_ASSUME_TAC (MK_ABS (SPECL [p;q;r] DISJ_COMM_DISJ_lemma)));; let DISJ_DISJ_COMM_lemma_a = TAC_PROOF @@ -382,7 +382,7 @@ let OR_OR_COMM_lemma = prove_thm (`!(p:'a->bool) q r. p \/* (r \/* q) = p \/* (q \/* r)`), REPEAT GEN_TAC THEN REWRITE_TAC [OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN STRIP_ASSUME_TAC (MK_ABS (SPECL [p;q;r] DISJ_DISJ_COMM_lemma)));; let CONJ_COMM_CONJ_lemma_a = TAC_PROOF @@ -405,7 +405,7 @@ let AND_COMM_AND_lemma = prove_thm `!(p:'a->bool) q r. (r /\* q) /\* p = (q /\* r) /\* p`, REPEAT GEN_TAC THEN REWRITE_TAC [AND_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN STRIP_ASSUME_TAC (MK_ABS (SPECL [p;q;r] CONJ_COMM_CONJ_lemma)));; let CONJ_CONJ_COMM_lemma_a = TAC_PROOF @@ -428,7 +428,7 @@ let AND_AND_COMM_lemma = prove_thm `!(p:'a->bool) q r. p /\* (r /\* q) = p /\* (q /\* r)`, REPEAT GEN_TAC THEN REWRITE_TAC [AND_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN STRIP_ASSUME_TAC (MK_ABS (SPECL [p;q;r] CONJ_CONJ_COMM_lemma)));; let DISJ_CONJ_COMM_lemma_a = TAC_PROOF @@ -453,14 +453,14 @@ let OR_AND_COMM_lemma = prove_thm `!(p:'a->bool) q r. p \/* (r /\* q) = p \/* (q /\* r)`, REPEAT GEN_TAC THEN REWRITE_TAC [AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN STRIP_ASSUME_TAC (MK_ABS (SPECL [p;q;r] DISJ_CONJ_COMM_lemma)));; let NOT_NOT_lemma = prove_thm ("NOT_NOT_lemma", `!(p:'a->bool). (Not (Not p)) = p`, REWRITE_TAC [NOT_def1] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [NOT_CLAUSES; ETA_AX]);; let DISJ_COMM_lemma = TAC_PROOF @@ -492,7 +492,7 @@ let OR_ASSOC_lemma = prove_thm ("OR_ASSOC_lemma", (`!(p:'a->bool) q r. (p \/* q) \/* r = p \/* (q \/* r)`), REPEAT STRIP_TAC THEN REWRITE_TAC [OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN ASSUME_TAC DISJ_ASSOC_lemma THEN STRIP_ASSUME_TAC (MK_ABS (SPECL [p;q;r] @@ -507,7 +507,7 @@ let AND_IMPLY_WEAK_lemma = prove_thm ("AND_IMPLY_WEAK_lemma", `!p q (s:'a). (p /\* q) s ==> q s`, REWRITE_TAC [AND_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [CONJ_WEAK_lemma]);; let SYM_CONJ_WEAK_lemma = TAC_PROOF @@ -518,14 +518,14 @@ let SYM_AND_IMPLY_WEAK_lemma = prove_thm ("SYM_AND_IMPLY_WEAK_lemma", `!p q (s:'a). (p /\* q) s ==> p s`, REWRITE_TAC [AND_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [SYM_CONJ_WEAK_lemma]);; let OR_IMPLY_WEAK_lemma = prove_thm ("OR_IMPLY_WEAK_lemma", `!p q (s:'a). p s ==> (p \/* q) s`, REWRITE_TAC [OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REPEAT STRIP_TAC THEN ASM_REWRITE_TAC []);; @@ -533,7 +533,7 @@ let SYM_OR_IMPLY_WEAK_lemma = prove_thm ("SYM_OR_IMPLY_WEAK_lemma", `!p q (s:'a). p s ==> (q \/* p) s`, REWRITE_TAC [OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REPEAT STRIP_TAC THEN ASM_REWRITE_TAC []);; @@ -544,7 +544,7 @@ let IMPLY_WEAK_AND_lemma = prove_thm ==> (!s. (p /\* r) s ==> (q /\* r) s)`, REWRITE_TAC [AND_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REPEAT STRIP_TAC THENL [RES_TAC; RES_TAC THEN @@ -557,7 +557,7 @@ let IMPLY_WEAK_OR_lemma = prove_thm ==> (!s. (p \/* r) s ==> (q \/* r) s)`, REWRITE_TAC [OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REPEAT STRIP_TAC THENL [RES_TAC THEN ASM_REWRITE_TAC []; @@ -593,7 +593,7 @@ let AND_ASSOC_lemma = prove_thm ("AND_ASSOC_lemma", `!(p:'a->bool) q r. (p /\* q) /\* r = p /\* (q /\* r)`, REPEAT GEN_TAC THEN REWRITE_TAC [AND_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN ASSUME_TAC CONJ_ASSOC_lemma THEN STRIP_ASSUME_TAC (MK_ABS (SPECL [p;q;r] @@ -634,14 +634,14 @@ let P_OR_NOT_P_lemma = prove_thm ("P_OR_NOT_P_lemma", `!p:'a->bool. p \/* (Not p) = True`, REWRITE_TAC [OR_def; NOT_def1; TRUE_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [EXCLUDED_MIDDLE; OR_CLAUSES; NOT_CLAUSES; ETA_AX]);; let P_AND_NOT_P_lemma = prove_thm ("P_AND_NOT_P_lemma", `!p:'a->bool. p /\* (Not p) = False`, REWRITE_TAC [AND_def; NOT_def1; FALSE_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [NOT_AND; AND_CLAUSES; NOT_CLAUSES; ETA_AX]);; let CONJ_COMPL_DISJ_lemma1 = TAC_PROOF @@ -668,7 +668,7 @@ let AND_COMPL_OR_lemma = prove_thm ("AND_COMPL_OR_lemma", `!(p:'a->bool) q. ((p /\* (Not q)) \/* (p /\* q)) = p`, REWRITE_TAC [NOT_def1; AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [CONJ_COMPL_DISJ_lemma; ETA_AX]);; let DISJ_NOT_CONJ_lemma1 = TAC_PROOF @@ -692,7 +692,7 @@ let OR_NOT_AND_lemma = prove_thm `!(p:'a->bool) q. ((p \/* q) /\* (Not q)) = p /\* (Not q)`, REPEAT GEN_TAC THEN REWRITE_TAC [NOT_def1; AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [DISJ_NOT_CONJ_lemma]);; let P_CONJ_Q_DISJ_Q_lemma1 = TAC_PROOF @@ -714,7 +714,7 @@ let P_AND_Q_OR_Q_lemma = prove_thm `!(p:'a->bool) q. (p /\* q) \/* q = q`, REPEAT GEN_TAC THEN REWRITE_TAC [AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [GEN_ALL (MK_ABS (SPECL [p;q] P_CONJ_Q_DISJ_Q_lemma)); ETA_AX]);; let P_DISJ_Q_CONJ_Q_lemma1 = TAC_PROOF @@ -736,7 +736,7 @@ let P_OR_Q_AND_Q_lemma = prove_thm `!(p:'a->bool) q. (p \/* q) /\* q = q`, REPEAT GEN_TAC THEN REWRITE_TAC [AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [GEN_ALL (MK_ABS (SPECL [p;q] P_DISJ_Q_CONJ_Q_lemma)); ETA_AX]);; let NOT_OR_AND_NOT_lemma = prove_thm @@ -744,7 +744,7 @@ let NOT_OR_AND_NOT_lemma = prove_thm `!(p:'a->bool) q. Not (p \/* q) = (Not p) /\* (Not q)`, REPEAT GEN_TAC THEN REWRITE_TAC [NOT_def1; AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [NOT_CLAUSES; DE_MORGAN_THM]);; @@ -753,7 +753,7 @@ let NOT_AND_OR_NOT_lemma = prove_thm `!(p:'a->bool) q. Not (p /\* q) = (Not p) \/* (Not q)`, REPEAT GEN_TAC THEN REWRITE_TAC [NOT_def1; AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [NOT_CLAUSES; DE_MORGAN_THM]);; @@ -764,7 +764,7 @@ let NOT_IMPLY_OR_lemma = prove_thm = (!s. (p \/* q)s)`, REPEAT GEN_TAC THEN REWRITE_TAC [NOT_def1; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [IMP_DISJ_THM]);; let IMPLY_OR_lemma = prove_thm @@ -772,7 +772,7 @@ let IMPLY_OR_lemma = prove_thm `!(p:'a->bool) q. (!s. p s ==> q s) = (!s. ((Not p) \/* q)s)`, REPEAT GEN_TAC THEN REWRITE_TAC [NOT_def1; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [IMP_DISJ_THM]);; let OR_IMPLY_lemma = prove_thm @@ -780,7 +780,7 @@ let OR_IMPLY_lemma = prove_thm `!(p:'a->bool) q. (!s. (p \/* q)s) = (!s. (Not p)s ==> q s)`, REPEAT GEN_TAC THEN REWRITE_TAC [NOT_def1; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [IMP_DISJ_THM; NOT_CLAUSES]);; let NOT_OR_IMPLY_lemma = prove_thm @@ -788,7 +788,7 @@ let NOT_OR_IMPLY_lemma = prove_thm `!(p:'a->bool) q. (!s. ((Not p) \/* q)s) = (!s. p s ==> q s)`, REPEAT GEN_TAC THEN REWRITE_TAC [NOT_def1; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [IMP_DISJ_THM; NOT_CLAUSES]);; let DISJ_CONJ_lemma1 = TAC_PROOF @@ -820,7 +820,7 @@ let OR_AND_DISTR_lemma = prove_thm `!(p:'a->bool) q r. p \/* (q /\* r) = (p \/* q) /\* (p \/* r)`, REPEAT GEN_TAC THEN REWRITE_TAC [AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN STRIP_ASSUME_TAC (MK_ABS (SPECL [p;q;r] DISJ_CONJ_lemma)));; let CONJ_DISJ_lemma1 = TAC_PROOF @@ -848,14 +848,14 @@ let AND_OR_DISTR_lemma = prove_thm `!(p:'a->bool) q r. p /\* (q \/* r) = (p /\* q) \/* (p /\* r)`, REPEAT GEN_TAC THEN REWRITE_TAC [AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN STRIP_ASSUME_TAC (MK_ABS (SPECL [p;q;r] CONJ_DISJ_lemma)));; let NOT_IMPLIES_False_lemma = prove_thm ("NOT_IMPLIES_False_lemma", `!(p:'a->bool). (!s. (Not p)s) ==> (!s. p s = False s)`, REWRITE_TAC [FALSE_def; NOT_def1] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC []);; let NOT_P_IMPLIES_P_EQ_False_lemma = prove_thm @@ -870,7 +870,7 @@ let NOT_AND_IMPLIES_lemma = prove_thm ("NOT_AND_IMPLIES_lemma", `!(p:'a->bool) q. (!s. (Not (p /\* q))s) <=> (!s. p s ==> Not q s)`, REWRITE_TAC [NOT_def1; AND_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [DE_MORGAN_THM; NOT_CLAUSES; IMP_DISJ_THM]);; let NOT_AND_IMPLIES_lemma1 = prove_thm @@ -882,7 +882,7 @@ let NOT_AND_IMPLIES_lemma2 = prove_thm ("NOT_AND_IMPLIES_lemma2", `!(p:'a->bool) q. (!s. (Not (p /\* q))s) ==> (!s. q s ==> Not p s)`, REWRITE_TAC [NOT_AND_IMPLIES_lemma; NOT_def1] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REPEAT STRIP_TAC THEN RES_TAC);; @@ -911,7 +911,7 @@ let AND_OR_EQ_lemma = prove_thm `!(p:'a->bool) q. p /\* (p \/* q) = p`, REPEAT GEN_TAC THEN REWRITE_TAC [AND_def; OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [CONJ_DISJ_ABS_IMPLY_lemma]);; let AND_OR_EQ_AND_COMM_OR_lemma = prove_thm @@ -927,7 +927,7 @@ let IMPLY_WEAK_lemma = prove_thm `!(p:'a->bool) q. (!s. p s) ==> (!s. (p \/* q) s)`, REPEAT STRIP_TAC THEN REWRITE_TAC [OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN ASM_REWRITE_TAC []);; let IMPLY_WEAK_lemma_b = prove_thm @@ -935,7 +935,7 @@ let IMPLY_WEAK_lemma_b = prove_thm `!(p:'a->bool) q s. p s ==> (p \/* q) s`, REPEAT STRIP_TAC THEN REWRITE_TAC [OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN ASM_REWRITE_TAC []);; let ALL_AND_lemma1 = TAC_PROOF diff --git a/Unity/mk_unless.ml b/Unity/mk_unless.ml index c14e4e43..3d92fcb4 100644 --- a/Unity/mk_unless.ml +++ b/Unity/mk_unless.ml @@ -166,7 +166,7 @@ let UNLESS_STMT_thm2 = prove_thm ((!s. (p UNLESS_STMT q) st s) /\ (!s. (p' UNLESS_STMT q') st s)) ==> (!s. ((p \/* p') UNLESS_STMT (q \/* q')) st s)`, REWRITE_TAC [UNLESS_STMT;OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [GEN_ALL (SYM (SPEC_ALL CONJ_ASSOC)); (SYM (SPEC_ALL DISJ_ASSOC)); NOT_CLAUSES; DE_MORGAN_THM] THEN (REPEAT STRIP_TAC THEN RES_TAC THEN ASM_REWRITE_TAC []));; @@ -184,7 +184,7 @@ let UNLESS_STMT_thm3 = prove_thm (!s. ((p /\* p') UNLESS_STMT (((p /\* q') \/* (p' /\* q)) \/* (q /\* q'))) st s)`, PURE_REWRITE_TAC [UNLESS_STMT;AND_def;OR_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [GEN_ALL (SYM (SPEC_ALL CONJ_ASSOC)); (SYM (SPEC_ALL DISJ_ASSOC)); NOT_CLAUSES; DE_MORGAN_THM] THEN STRIP_TAC THEN STRIP_TAC THEN STRIP_TAC THEN STRIP_TAC THEN STRIP_TAC THEN @@ -290,7 +290,7 @@ let UNLESS_thm1 = prove_thm PURE_REWRITE_TAC [UNLESS] THEN ASM_REWRITE_TAC [] THEN PURE_REWRITE_TAC [UNLESS_STMT] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REPEAT STRIP_TAC THEN RES_TAC);; @@ -307,7 +307,7 @@ let UNLESS_thm2 = prove_thm PURE_REWRITE_TAC [UNLESS] THEN ASM_REWRITE_TAC [] THEN PURE_REWRITE_TAC [UNLESS_STMT;NOT_def1] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REPEAT STRIP_TAC THEN REWRITE_TAC [EXCLUDED_MIDDLE]);; @@ -693,7 +693,7 @@ let UNLESS_cor8 = prove_thm ((p' /\* (Not q)) UNLESS q) Pr)`), REPEAT STRIP_TAC THEN REWRITE_TAC [AND_def;OR_def;NOT_def1] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REWRITE_TAC [HeJiFeng_lemma_f]);; (* @@ -908,7 +908,7 @@ let UNLESS_STMT_cor15 = prove_thm (!s. ((!*) P UNLESS_STMT (!*) P /\* (?*) Q) st s)`, REPEAT GEN_TAC THEN REWRITE_TAC [FORALL_def; EXISTS_def; UNLESS_STMT; AND_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN MESON_TAC []);; let UNLESS_cor15 = prove_thm @@ -985,7 +985,7 @@ let UNLESS_STMT_cor18 = prove_thm (!s. (((?*) P) UNLESS_STMT q) st s)`, REPEAT GEN_TAC THEN REWRITE_TAC [FORALL_def; EXISTS_def; UNLESS_STMT; AND_def] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN MESON_TAC []);; let UNLESS_cor18 = prove_thm diff --git a/arith.ml b/arith.ml index 000c8304..e9fa9c76 100644 --- a/arith.ml +++ b/arith.ml @@ -224,7 +224,7 @@ let MULT_EQ_1 = prove INDUCT_TAC THEN INDUCT_TAC THEN REWRITE_TAC [MULT_CLAUSES; ADD_CLAUSES; BIT0_THM; BIT1_THM; GSYM NOT_SUC] THEN REWRITE_TAC[SUC_INJ; ADD_EQ_0; MULT_EQ_0] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; (* ------------------------------------------------------------------------- *) (* Exponentiation. *) @@ -242,7 +242,7 @@ let EXP_EQ_0 = prove let EXP_EQ_1 = prove (`!x n. x EXP n = 1 <=> x = 1 \/ n = 0`, GEN_TAC THEN INDUCT_TAC THEN ASM_REWRITE_TAC[EXP; MULT_EQ_1; NOT_SUC] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; let EXP_ZERO = prove (`!n. 0 EXP n = if n = 0 then 1 else 0`, @@ -273,7 +273,7 @@ let EXP_MULT = prove (`!m n p. m EXP (n * p) = (m EXP n) EXP p`, GEN_TAC THEN INDUCT_TAC THEN ASM_REWRITE_TAC[EXP_ADD; EXP; MULT_CLAUSES] THENL - [CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + [(CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN INDUCT_TAC THEN ASM_REWRITE_TAC[EXP; MULT_CLAUSES]; REWRITE_TAC[MULT_EXP] THEN MATCH_ACCEPT_TAC MULT_SYM]);; @@ -466,7 +466,7 @@ let EQ_IMP_LE = prove let LT_NZ = prove (`!n. 0 < n <=> ~(n = 0)`, INDUCT_TAC THEN ASM_REWRITE_TAC[NOT_SUC; LT; EQ_SYM_EQ] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; let LE_1 = prove (`(!n. ~(n = 0) ==> 0 < n) /\ @@ -625,7 +625,7 @@ let LT_MULT2 = prove REPEAT STRIP_TAC THEN MATCH_MP_TAC LET_TRANS THEN EXISTS_TAC `n * p` THEN ASM_SIMP_TAC[LE_MULT_RCANCEL; LT_IMP_LE; LT_MULT_LCANCEL] THEN - UNDISCH_TAC `m < n` THEN CONV_TAC CONTRAPOS_CONV THEN SIMP_TAC[LT]);; + UNDISCH_TAC `m < n` THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN SIMP_TAC[LT]);; let LE_SQUARE_REFL = prove (`!n. n <= n * n`, @@ -663,7 +663,7 @@ let num_WF = prove let num_WOP = prove (`!P. (?n. P n) <=> (?n. P(n) /\ !m. m < n ==> ~P(m))`, GEN_TAC THEN EQ_TAC THENL [ALL_TAC; MESON_TAC[]] THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[NOT_EXISTS_THM] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[NOT_EXISTS_THM] THEN DISCH_TAC THEN MATCH_MP_TAC num_WF THEN ASM_MESON_TAC[]);; let num_MAX = prove @@ -678,7 +678,7 @@ let num_MAX = prove [REWRITE_TAC[LE; LT] THEN DISCH_THEN(IMP_RES_THEN SUBST_ALL_TAC) THEN POP_ASSUM ACCEPT_TAC; DISCH_THEN(CONJUNCTS_THEN2 ASSUME_TAC (MP_TAC o SPEC `m:num`)) THEN - REWRITE_TAC[LT] THEN CONV_TAC CONTRAPOS_CONV THEN + REWRITE_TAC[LT] THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_TAC THEN REWRITE_TAC[] THEN X_GEN_TAC `p:num` THEN FIRST_ASSUM(MP_TAC o SPEC `p:num`) THEN REWRITE_TAC[LE] THEN ASM_CASES_TAC `p = SUC m` THEN ASM_REWRITE_TAC[]]; @@ -748,23 +748,23 @@ let EVEN_EXP = prove (`!m n. EVEN(m EXP n) <=> EVEN(m) /\ ~(n = 0)`, GEN_TAC THEN INDUCT_TAC THEN ASM_REWRITE_TAC[EVEN; EXP; ONE; EVEN_MULT; NOT_SUC] THEN - CONV_TAC ITAUT);; + (CONV_TAC "ITAUT") ITAUT);; let ODD_ADD = prove (`!m n. ODD(m + n) <=> ~(ODD m <=> ODD n)`, REPEAT GEN_TAC THEN REWRITE_TAC[GSYM NOT_EVEN; EVEN_ADD] THEN - CONV_TAC ITAUT);; + (CONV_TAC "ITAUT") ITAUT);; let ODD_MULT = prove (`!m n. ODD(m * n) <=> ODD(m) /\ ODD(n)`, REPEAT GEN_TAC THEN REWRITE_TAC[GSYM NOT_EVEN; EVEN_MULT] THEN - CONV_TAC ITAUT);; + (CONV_TAC "ITAUT") ITAUT);; let ODD_EXP = prove (`!m n. ODD(m EXP n) <=> ODD(m) \/ (n = 0)`, GEN_TAC THEN INDUCT_TAC THEN ASM_REWRITE_TAC[ODD; EXP; ONE; ODD_MULT; NOT_SUC] THEN - CONV_TAC ITAUT);; + (CONV_TAC "ITAUT") ITAUT);; let EVEN_DOUBLE = prove (`!n. EVEN(2 * n)`, @@ -809,7 +809,7 @@ let EVEN_ODD_DECOMPOSITION = prove FIRST_X_ASSUM(MP_TAC o SPEC `m:num`) THEN ASM_CASES_TAC `m = 0` THEN ASM_REWRITE_TAC[MULT_EQ_0] THENL [REWRITE_TAC[MULT_CLAUSES; LT] THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN REWRITE_TAC[EXP_EQ_0; MULT_EQ_0; TWO; NOT_SUC] THEN MESON_TAC[ODD]; ALL_TAC] THEN ANTS_TAC THENL @@ -883,7 +883,7 @@ let SUB_ADD_RCANCEL = prove let LEFT_SUB_DISTRIB = prove (`!m n p. m * (n - p) = m * n - m * p`, - REPEAT GEN_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN DISJ_CASES_TAC(SPECL [`n:num`; `p:num`] LE_CASES) THENL [FIRST_ASSUM(fun th -> REWRITE_TAC[REWRITE_RULE[GSYM SUB_EQ_0] th]) THEN ASM_REWRITE_TAC[MULT_CLAUSES; SUB_EQ_0; LE_MULT_LCANCEL]; @@ -910,7 +910,7 @@ let EVEN_SUB = prove let ODD_SUB = prove (`!m n. ODD(m - n) <=> n < m /\ ~(ODD m <=> ODD n)`, REWRITE_TAC[GSYM NOT_EVEN; EVEN_SUB; DE_MORGAN_THM; NOT_LE] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; (* ------------------------------------------------------------------------- *) (* The factorial function. *) @@ -966,7 +966,7 @@ let LT_EXP = prove REWRITE_TAC[EXP; MULT_CLAUSES; NOT_SUC; LT_REFL; LT] THEN REWRITE_TAC[ONE; LT_0]; ALL_TAC] THEN EQ_TAC THENL - [CONV_TAC CONTRAPOS_CONV THEN + [(CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[NOT_LT; DE_MORGAN_THM; NOT_LE] THEN REWRITE_TAC[TWO; ONE; LT] THEN ASM_REWRITE_TAC[SYM ONE] THEN @@ -980,7 +980,7 @@ let LT_EXP = prove [ASM_REWRITE_TAC[MULT_CLAUSES]; REWRITE_TAC[LE_MULT_RCANCEL] THEN DISJ1_TAC THEN UNDISCH_TAC `~(x = 0)` THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[NOT_LE] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[NOT_LE] THEN REWRITE_TAC[ONE; LT]]; STRIP_TAC THEN FIRST_ASSUM(X_CHOOSE_THEN `d:num` SUBST1_TAC o @@ -999,7 +999,7 @@ let LT_EXP = prove [REWRITE_TAC[MULT_CLAUSES; LE_REFL]; REWRITE_TAC[LE_MULT_LCANCEL] THEN DISJ2_TAC THEN UNDISCH_TAC `~(x = 0)` THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[NOT_LE] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[NOT_LE] THEN REWRITE_TAC[ONE; LT]]]]);; let LE_EXP = prove @@ -1008,7 +1008,7 @@ let LE_EXP = prove else (x = 1) \/ m <= n`, REPEAT GEN_TAC THEN REWRITE_TAC[GSYM NOT_LT; LT_EXP; DE_MORGAN_THM] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[TWO; LT; ONE] THEN - CONV_TAC(EQT_INTRO o TAUT));; + (CONV_TAC "(EQT_INTRO o TAUT)") (EQT_INTRO o TAUT));; let EQ_EXP = prove (`!x m n. x EXP m = x EXP n <=> @@ -1016,7 +1016,7 @@ let EQ_EXP = prove else (x = 1) \/ m = n`, REPEAT GEN_TAC THEN GEN_REWRITE_TAC LAND_CONV [GSYM LE_ANTISYM; LE_EXP] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[LE_EXP] THEN - REWRITE_TAC[GSYM LE_ANTISYM] THEN CONV_TAC TAUT);; + REWRITE_TAC[GSYM LE_ANTISYM] THEN (CONV_TAC "TAUT") TAUT);; let EXP_MONO_LE_IMP = prove (`!x y n. x <= y ==> x EXP n <= y EXP n`, @@ -1044,7 +1044,7 @@ let EXP_MONO_LT = prove let EXP_MONO_EQ = prove (`!x y n. x EXP n = y EXP n <=> x = y \/ n = 0`, - REWRITE_TAC[GSYM LE_ANTISYM; EXP_MONO_LE] THEN CONV_TAC TAUT);; + REWRITE_TAC[GSYM LE_ANTISYM; EXP_MONO_LE] THEN (CONV_TAC "TAUT") TAUT);; (* ------------------------------------------------------------------------- *) (* Division and modulus, via existence proof of their basic property. *) @@ -1061,7 +1061,7 @@ let DIVMOD_EXIST = prove DISCH_THEN(CONJUNCTS_THEN2 (X_CHOOSE_TAC `q:num`) MP_TAC) THEN DISCH_THEN(fun th -> MAP_EVERY EXISTS_TAC [`q:num`; `r:num`] THEN MP_TAC th) THEN - CONV_TAC CONTRAPOS_CONV THEN ASM_REWRITE_TAC[NOT_LT] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN ASM_REWRITE_TAC[NOT_LT] THEN DISCH_THEN(X_CHOOSE_THEN `d:num` SUBST_ALL_TAC o REWRITE_RULE[LE_EXISTS]) THEN REWRITE_TAC[NOT_FORALL_THM] THEN EXISTS_TAC `d:num` THEN @@ -1106,7 +1106,7 @@ let DIVMOD_UNIQ_LEMMA = prove REWRITE_TAC[ADD_CLAUSES; MULT_CLAUSES; GSYM NOT_LE; LE_ADD; GSYM ADD_ASSOC]; DISCH_THEN SUBST_ALL_TAC THEN REWRITE_TAC[] THEN - CONV_TAC SYM_CONV THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN UNDISCH_TAC `m = q1 * n + r2` THEN ASM_REWRITE_TAC[EQ_ADD_RCANCEL; EQ_MULT_RCANCEL] THEN REPEAT (UNDISCH_TAC `r2 < n`) THEN @@ -1191,7 +1191,7 @@ let DIV_LT = prove let MOD_MOD = prove (`!m n p. ~(n * p = 0) ==> ((m MOD (n * p)) MOD n = m MOD n)`, REPEAT GEN_TAC THEN REWRITE_TAC[MULT_EQ_0; DE_MORGAN_THM] THEN STRIP_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC MOD_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MOD_EQ THEN EXISTS_TAC `m DIV (n * p) * p` THEN MP_TAC(SPECL [`m:num`; `n * p:num`] DIVISION) THEN ASM_REWRITE_TAC[MULT_EQ_0; MULT_AC; ADD_AC] THEN @@ -1310,7 +1310,7 @@ let ODD_MOD = prove let MOD_MULT_RMOD = prove (`!m n p. ~(n = 0) ==> ((m * (p MOD n)) MOD n = (m * p) MOD n)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC MOD_EQ THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MOD_EQ THEN EXISTS_TAC `m * p DIV n` THEN REWRITE_TAC[GSYM MULT_ASSOC; GSYM LEFT_ADD_DISTRIB] THEN REWRITE_TAC[EQ_MULT_LCANCEL] THEN DISJ2_TAC THEN @@ -1349,7 +1349,7 @@ let DIV_MULT_ADD = prove let MOD_ADD_MOD = prove (`!a b n. ~(n = 0) ==> ((a MOD n + b MOD n) MOD n = (a + b) MOD n)`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC MOD_EQ THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC MOD_EQ THEN EXISTS_TAC `a DIV n + b DIV n` THEN REWRITE_TAC[RIGHT_ADD_DISTRIB] THEN ONCE_REWRITE_TAC[AC ADD_AC `(a + b) + (c + d) = (c + a) + (d + b)`] THEN BINOP_TAC THEN ASM_SIMP_TAC[DIVISION]);; @@ -1535,7 +1535,7 @@ let minimal = new_definition let MINIMAL = prove (`!P. (?n. P n) <=> P((minimal) P) /\ (!m. m < (minimal) P ==> ~(P m))`, - GEN_TAC THEN REWRITE_TAC[minimal] THEN CONV_TAC(RAND_CONV SELECT_CONV) THEN + GEN_TAC THEN REWRITE_TAC[minimal] THEN (CONV_TAC "(RAND_CONV SELECT_CONV)") (RAND_CONV SELECT_CONV) THEN REWRITE_TAC[GSYM num_WOP]);; (* ------------------------------------------------------------------------- *) diff --git a/calc_int.ml b/calc_int.ml index 6f33a0ce..372a3f22 100644 --- a/calc_int.ml +++ b/calc_int.ml @@ -221,7 +221,7 @@ let REAL_INT_LE_CONV,REAL_INT_LT_CONV, (--(&m) < &n <=> ~((m = 0) /\ (n = 0)))`, REWRITE_TAC[pth_le1; pth_le2a; pth_le2b; pth_le3; GSYM NOT_LE; real_lt] THEN - CONV_TAC TAUT) in + (CONV_TAC "TAUT") TAUT) in let REAL_INT_LT_CONV = FIRST_CONV [GEN_REWRITE_CONV I [pth_lt1]; GEN_REWRITE_CONV I [pth_lt2a; pth_lt2b] THENC NUM_LT_CONV; @@ -232,7 +232,7 @@ let REAL_INT_LE_CONV,REAL_INT_LT_CONV, (--(&m) >= --(&n) <=> m <= n) /\ (--(&m) >= &n <=> (m = 0) /\ (n = 0))`, REWRITE_TAC[pth_le1; pth_le2a; pth_le2b; pth_le3; real_ge] THEN - CONV_TAC TAUT) in + (CONV_TAC "TAUT") TAUT) in let REAL_INT_GE_CONV = FIRST_CONV [GEN_REWRITE_CONV I [pth_ge1]; GEN_REWRITE_CONV I [pth_ge2a; pth_ge2b] THENC NUM_LE_CONV; @@ -243,7 +243,7 @@ let REAL_INT_LE_CONV,REAL_INT_LT_CONV, (--(&m) > --(&n) <=> m < n) /\ (&m > --(&n) <=> ~((m = 0) /\ (n = 0)))`, REWRITE_TAC[pth_lt1; pth_lt2a; pth_lt2b; pth_lt3; real_gt] THEN - CONV_TAC TAUT) in + (CONV_TAC "TAUT") TAUT) in let REAL_INT_GT_CONV = FIRST_CONV [GEN_REWRITE_CONV I [pth_gt1]; GEN_REWRITE_CONV I [pth_gt2a; pth_gt2b] THENC NUM_LT_CONV; @@ -255,7 +255,7 @@ let REAL_INT_LE_CONV,REAL_INT_LT_CONV, ((&m = --(&n)) <=> (m = 0) /\ (n = 0))`, REWRITE_TAC[GSYM REAL_LE_ANTISYM; GSYM LE_ANTISYM] THEN REWRITE_TAC[pth_le1; pth_le2a; pth_le2b; pth_le3; LE; LE_0] THEN - CONV_TAC TAUT) in + (CONV_TAC "TAUT") TAUT) in let REAL_INT_EQ_CONV = FIRST_CONV [GEN_REWRITE_CONV I [pth_eq1a; pth_eq1b] THENC NUM_EQ_CONV; GEN_REWRITE_CONV I [pth_eq2a; pth_eq2b] THENC NUM2_EQ_CONV] in diff --git a/calc_num.ml b/calc_num.ml index 14596b9b..2bf7ed7b 100644 --- a/calc_num.ml +++ b/calc_num.ml @@ -448,7 +448,7 @@ let NUM_SUC_CONV,NUM_ADD_CONV,NUM_MULT_CONV,NUM_EXP_CONV, MESON_TAC[ADD_CLAUSES; MULT_CLAUSES; NUMERAL]) and pth_triv = (STANDARDIZE o prove) (`_0 = a + p * b <=> _0 = a + BIT0 p * b`, - CONV_TAC(BINOP_CONV SYM_CONV) THEN + (CONV_TAC "(BINOP_CONV SYM_CONV)") (BINOP_CONV SYM_CONV) THEN SUBST1_TAC(SYM(SPEC `_0` NUMERAL)) THEN REWRITE_TAC[ADD_EQ_0; MULT_EQ_0; BIT0]) and pths_1 = (Array.of_list o CONJUNCTS o STANDARDIZE o prove) @@ -805,7 +805,7 @@ let NUM_SUC_CONV,NUM_ADD_CONV,NUM_MULT_CONV,NUM_EXP_CONV, DISCH_THEN SUBST1_TAC THEN REPLICATE_TAC 5 (DISCH_THEN(SUBST1_TAC o SYM)) THEN REWRITE_TAC[EXP_2; LEFT_ADD_DISTRIB; RIGHT_ADD_DISTRIB] THEN - REWRITE_TAC[MULT_AC] THEN CONV_TAC(BINOP_CONV NUM_CANCEL_CONV) THEN + REWRITE_TAC[MULT_AC] THEN (CONV_TAC "(BINOP_CONV NUM_CANCEL_CONV)") (BINOP_CONV NUM_CANCEL_CONV) THEN DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[RIGHT_ADD_DISTRIB] THEN REWRITE_TAC[MULT_AC] THEN REWRITE_TAC[ADD_AC]) and pth_toom3 = (STANDARDIZE o prove) @@ -861,7 +861,7 @@ let NUM_SUC_CONV,NUM_ADD_CONV,NUM_MULT_CONV,NUM_EXP_CONV, (mk_comb(suc_tm,mk_small_numeral(k - 1))))) (1--5)) THEN REWRITE_TAC[MULT_CLAUSES; ADD_CLAUSES] THEN - CONV_TAC(LAND_CONV NUM_CANCEL_CONV) THEN DISCH_THEN SUBST_ALL_TAC THEN + (CONV_TAC "(LAND_CONV NUM_CANCEL_CONV)") (LAND_CONV NUM_CANCEL_CONV) THEN DISCH_THEN SUBST_ALL_TAC THEN FIRST_ASSUM(MP_TAC o MATCH_MP (MESON[] `b = b' /\ c = c' /\ d = d' ==> b + d':num = b' + d /\ 4 * b + d' = 4 * b' + d`)) THEN @@ -871,7 +871,7 @@ let NUM_SUC_CONV,NUM_ADD_CONV,NUM_MULT_CONV,NUM_EXP_CONV, (mk_comb(suc_tm,mk_small_numeral(k - 1))))) (1--4)) THEN REWRITE_TAC[MULT_CLAUSES; ADD_CLAUSES] THEN - CONV_TAC(LAND_CONV(BINOP_CONV NUM_CANCEL_CONV)) THEN + (CONV_TAC "(LAND_CONV(BINOP_CONV NUM_CANCEL_CONV))") (LAND_CONV(BINOP_CONV NUM_CANCEL_CONV)) THEN REWRITE_TAC[GSYM MULT_2] THEN ONCE_REWRITE_TAC[ADD_SYM] THEN REWRITE_TAC[GSYM(el 4 (CONJUNCTS MULT_CLAUSES))] THEN SIMP_TAC[EQ_MULT_LCANCEL; NOT_SUC]) @@ -1473,7 +1473,7 @@ let NUM_RED_CONV = let NUM_REDUCE_CONV = DEPTH_CONV NUM_RED_CONV;; -let NUM_REDUCE_TAC = CONV_TAC NUM_REDUCE_CONV;; +let NUM_REDUCE_TAC = (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV;; (* ------------------------------------------------------------------------- *) (* I do like this after all... *) diff --git a/calc_rat.ml b/calc_rat.ml index fdbec5a6..6d96413f 100644 --- a/calc_rat.ml +++ b/calc_rat.ml @@ -54,7 +54,7 @@ let RAT_LEMMA1 = prove REWRITE_TAC[REAL_MUL_ASSOC] THEN AP_THM_TAC THEN AP_TERM_TAC] THEN GEN_REWRITE_TAC LAND_CONV [GSYM REAL_MUL_RID] THEN REWRITE_TAC[GSYM REAL_MUL_ASSOC] THEN REWRITE_TAC[REAL_EQ_MUL_LCANCEL] THEN - DISJ2_TAC THEN CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_MUL_RINV THEN + DISJ2_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_MUL_RINV THEN ASM_REWRITE_TAC[]);; let RAT_LEMMA2 = prove @@ -547,7 +547,7 @@ let REAL_ARITH = and pure = GEN_REAL_ARITH REAL_LINEAR_PROVER in fun tm -> let th = init tm in EQ_MP (SYM th) (pure(rand(concl th)));; -let REAL_ARITH_TAC = CONV_TAC REAL_ARITH;; +let REAL_ARITH_TAC = (CONV_TAC "REAL_ARITH") REAL_ARITH;; let ASM_REAL_ARITH_TAC = REPEAT(FIRST_X_ASSUM(MP_TAC o check (not o is_forall o concl))) THEN diff --git a/canon.ml b/canon.ml index 063534f2..a48ea7e5 100644 --- a/canon.ml +++ b/canon.ml @@ -559,7 +559,7 @@ let SELECT_ELIM_TAC = IMP_TRANS (SELECT_ELIMS_ICONV tm') th with Failure _ -> DISCH tm (ASSUME tm) in SELECT_ELIMS_ICONV in - CONV_TAC SELECT_ELIM_CONV THEN W(MATCH_MP_TAC o SELECT_ELIM_ICONV o snd);; + (CONV_TAC "SELECT_ELIM_CONV") SELECT_ELIM_CONV THEN W(MATCH_MP_TAC o SELECT_ELIM_ICONV o snd);; (* ------------------------------------------------------------------------- *) (* Eliminate all lambda-terms except those part of quantifiers. *) diff --git a/cart.ml b/cart.ml index 881c3105..da33c004 100644 --- a/cart.ml +++ b/cart.ml @@ -135,7 +135,7 @@ let lambda = new_definition let LAMBDA_BETA = prove (`!i. 1 <= i /\ i <= dimindex(:B) ==> (((lambda) g:A^B) $i = g i)`, - REWRITE_TAC[lambda] THEN CONV_TAC SELECT_CONV THEN + REWRITE_TAC[lambda] THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN EXISTS_TAC `mk_cart(\k. g(@i. 1 <= i /\ i <= dimindex(:B) /\ (finite_index i = k))):A^B` THEN REWRITE_TAC[finite_index; REWRITE_RULE[] cart_tybij] THEN @@ -551,25 +551,25 @@ let PCROSS_INTER = prove (`(!s t u. s PCROSS (t INTER u) = (s PCROSS t) INTER (s PCROSS u)) /\ (!s t u. (s INTER t) PCROSS u = (s PCROSS u) INTER (t PCROSS u))`, REWRITE_TAC[EXTENSION; FORALL_PASTECART; IN_INTER; PASTECART_IN_PCROSS] THEN - REPEAT STRIP_TAC THEN CONV_TAC TAUT);; + REPEAT STRIP_TAC THEN (CONV_TAC "TAUT") TAUT);; let PCROSS_UNION = prove (`(!s t u. s PCROSS (t UNION u) = (s PCROSS t) UNION (s PCROSS u)) /\ (!s t u. (s UNION t) PCROSS u = (s PCROSS u) UNION (t PCROSS u))`, REWRITE_TAC[EXTENSION; FORALL_PASTECART; IN_UNION; PASTECART_IN_PCROSS] THEN - REPEAT STRIP_TAC THEN CONV_TAC TAUT);; + REPEAT STRIP_TAC THEN (CONV_TAC "TAUT") TAUT);; let PCROSS_DIFF = prove (`(!s t u. s PCROSS (t DIFF u) = (s PCROSS t) DIFF (s PCROSS u)) /\ (!s t u. (s DIFF t) PCROSS u = (s PCROSS u) DIFF (t PCROSS u))`, REWRITE_TAC[EXTENSION; FORALL_PASTECART; IN_DIFF; PASTECART_IN_PCROSS] THEN - REPEAT STRIP_TAC THEN CONV_TAC TAUT);; + REPEAT STRIP_TAC THEN (CONV_TAC "TAUT") TAUT);; let INTER_PCROSS = prove (`!s s' t t'. (s PCROSS t) INTER (s' PCROSS t') = (s INTER s') PCROSS (t INTER t')`, REWRITE_TAC[EXTENSION; IN_INTER; FORALL_PASTECART; PASTECART_IN_PCROSS] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; let PCROSS_UNIONS_UNIONS,PCROSS_UNIONS = (CONJ_PAIR o prove) (`(!f g. (UNIONS f) PCROSS (UNIONS g) = diff --git a/class.ml b/class.ml index 10017a8f..2138adc7 100644 --- a/class.ml +++ b/class.ml @@ -115,7 +115,7 @@ let SELECT_CONV = let SELECT_REFL = prove (`!x:A. (@y. y = x) = x`, - GEN_TAC THEN CONV_TAC SELECT_CONV THEN + GEN_TAC THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN EXISTS_TAC `x:A` THEN REFL_TAC);; let SELECT_UNIQUE = prove @@ -156,7 +156,7 @@ let EXCLUDED_MIDDLE = prove GEN_TAC THEN SUBGOAL_THEN `(((@x. (x <=> F) \/ t) <=> F) \/ t) /\ (((@x. (x <=> T) \/ t) <=> T) \/ t)` MP_TAC THENL - [CONJ_TAC THEN CONV_TAC SELECT_CONV THENL + [CONJ_TAC THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THENL [EXISTS_TAC `F`; EXISTS_TAC `T`] THEN DISJ1_TAC THEN REFL_TAC; DISCH_THEN(STRIP_ASSUME_TAC o GSYM) THEN @@ -238,7 +238,7 @@ let REFUTE_THEN = fun ttac (asl,w as gl) -> if w = f_tm then ALL_TAC gl else if is_neg w then DISCH_THEN ttac gl - else (CONV_TAC conv THEN DISCH_THEN ttac) gl;; + else ((CONV_TAC "conv") conv THEN DISCH_THEN ttac) gl;; (* ------------------------------------------------------------------------- *) (* Infinite de Morgan laws. *) @@ -415,7 +415,7 @@ let COND_ELIM_CONV = HIGHER_REWRITE_CONV[COND_ELIM_THM] true;; let (COND_CASES_TAC :tactic) = let DENEG_RULE = GEN_REWRITE_RULE I [TAUT `~ ~ p <=> p`] in - CONV_TAC COND_ELIM_CONV THEN CONJ_TAC THENL + (CONV_TAC "COND_ELIM_CONV") COND_ELIM_CONV THEN CONJ_TAC THENL [DISCH_THEN(fun th -> ASSUME_TAC th THEN SUBST1_TAC(EQT_INTRO th)); DISCH_THEN(fun th -> try let th' = DENEG_RULE th in ASSUME_TAC th' THEN SUBST1_TAC(EQT_INTRO th') @@ -430,7 +430,7 @@ let SKOLEM_THM = prove (`!P. (!x:A. ?y:B. P x y) <=> (?y. !x. P x (y x))`, REPEAT(STRIP_TAC ORELSE EQ_TAC) THENL [EXISTS_TAC `\x:A. @y:B. P x y` THEN GEN_TAC THEN - BETA_TAC THEN CONV_TAC SELECT_CONV; + BETA_TAC THEN (CONV_TAC "SELECT_CONV") SELECT_CONV; EXISTS_TAC `(y:A->B) x`] THEN POP_ASSUM MATCH_ACCEPT_TAC);; diff --git a/conv_tac_params.rb b/conv_tac_params.rb new file mode 100644 index 00000000..4401ffe5 --- /dev/null +++ b/conv_tac_params.rb @@ -0,0 +1,52 @@ +def next_nonspace(s, i) + while i < s.size and s[i] =~ /\s/ do + i += 1 + end + return i +end + +def find_closing_paren (s, i) + count = 0 + while i < s.size + if s[i] == "(" + count += 1 + elsif s[i] == ")" + count -= 1 + end + if count <= 0 then + return i + end + i += 1 + end +end + +def match_nonalnum(s, i) + while i < s.size + if s[i] =~ /\w/ then + i += 1 + else + return i + end + end +end + +counts = {} + +ARGV.each do |fname| + s = IO.read(fname) + s.to_enum(:scan,/CONV_TAC/).map do |m,| + index = $`.size + start = index + m.size + p = next_nonspace(s, start) + # puts "#{index} #{start} #{s[p]} #{p}" + c = start + if s[p] == "(" then + # puts "A" + c = find_closing_paren(s, p) + puts(s[p+1...c].gsub(/\s+/, " ") + " " + fname) + elsif s[0] =~ /\w/ then + c = match_nonalnum(s, p) + puts(s[p...c] + " " + fname) + end + end +end diff --git a/define.ml b/define.ml index b085cec1..882c10f1 100644 --- a/define.ml +++ b/define.ml @@ -640,7 +640,7 @@ let instantiate_casewise_recursion, ==> (a /\ x = k /\ b /\ y = k /\ c ==> d)` in REPEAT GEN_TAC THEN (MATCH_MP_TAC pth1 ORELSE MATCH_MP_TAC pth0) THEN - CONV_TAC(RAND_CONV SIMPLIFY_WELLDEFINEDNESS_CONV) THEN + (CONV_TAC "(RAND_CONV SIMPLIFY_WELLDEFINEDNESS_CONV)") (RAND_CONV SIMPLIFY_WELLDEFINEDNESS_CONV) THEN PURE_REWRITE_TAC [AND_CLAUSES; IMP_CLAUSES; OR_CLAUSES; EQ_CLAUSES; NOT_CLAUSES] in @@ -662,7 +662,7 @@ let instantiate_casewise_recursion, | "superadmissible","_MATCH" when name_of(repeat rator (last args)) = "_SEQPATTERN" -> (APPLY_PROFORMA_TAC SUPERADMISSIBLE_MATCH_SEQPATTERN THEN - CONV_TAC(ONCE_DEPTH_CONV EXISTS_PAT_CONV)) gl + (CONV_TAC "(ONCE_DEPTH_CONV EXISTS_PAT_CONV)") (ONCE_DEPTH_CONV EXISTS_PAT_CONV)) gl | "superadmissible","_MATCH" when is_pattern "_UNGUARDED_PATTERN" 2 (last args) -> let n = length(fst(strip_exists(body(body(last args))))) in @@ -686,7 +686,7 @@ let instantiate_casewise_recursion, | "admissible","_MATCH" when name_of(repeat rator (last args)) = "_SEQPATTERN" -> (APPLY_PROFORMA_TAC ADMISSIBLE_MATCH_SEQPATTERN THEN - CONV_TAC(ONCE_DEPTH_CONV EXISTS_PAT_CONV)) gl + (CONV_TAC "(ONCE_DEPTH_CONV EXISTS_PAT_CONV)") (ONCE_DEPTH_CONV EXISTS_PAT_CONV)) gl | "admissible","_MATCH" -> APPLY_PROFORMA_TAC ADMISSIBLE_MATCH gl | "admissible","_UNGUARDED_PATTERN" @@ -856,7 +856,7 @@ let instantiate_casewise_recursion, (fun v -> TRY(GEN_REWRITE_TAC I [FORALL_PAIR_THM]) THEN X_GEN_TAC v) parms THEN - CONV_TAC(TOP_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(TOP_DEPTH_CONV GEN_BETA_CONV)") (TOP_DEPTH_CONV GEN_BETA_CONV) THEN MAP_EVERY (fun v -> SPEC_TAC(v,v)) (rev parms @ [v]))) THEN PURE_REWRITE_TAC[FORALL_SIMP] THEN W(fun (asl,w) -> MAP_EVERY (fun t -> SPEC_TAC(t,t)) @@ -950,9 +950,7 @@ let instantiate_casewise_recursion, REWRITE_TAC[FORALL_PAIR_THM] THEN GUESS_MEASURE_THEN tac)) (asl,w) in let PRE_GUESS_TAC = - CONV_TAC(BINDER_CONV(DEPTH_BINOP_CONV `(/\)` - (TRY_CONV SIMPLIFY_WELLDEFINEDNESS_CONV THENC - TRY_CONV FORALL_UNWIND_CONV))) in + (CONV_TAC "(BINDER_CONV(DEPTH_BINOP_CONV `(/\)` (TRY_CONV SIMPLIFY_WELLDEFINEDNESS_CONV THENC TRY_CONV FORALL_UNWIND_CONV)))") (BINDER_CONV(DEPTH_BINOP_CONV `(/\)` (TRY_CONV SIMPLIFY_WELLDEFINEDNESS_CONV THENC TRY_CONV FORALL_UNWIND_CONV))) in let GUESS_ORDERING_TAC = let false_tm = `\x:A y:A. F` in W(fun (asl,w) -> diff --git a/impconv.ml b/impconv.ml index ea91edc7..93e184ad 100644 --- a/impconv.ml +++ b/impconv.ml @@ -1853,9 +1853,7 @@ let TARGET_REWRITE_IMPCONV : thm list -> term list -> imp_conv = let TARGET_REWRITE_TAC sths th = let sths' = flat (map preprocess sths) in let ths = preprocess th and (+) = THEN_IMPCONV in - IMPCONV_TAC - (TARGET_REWRITE_IMPCONV sths' (map patterns_of_thm ths) - + imp_conv_of_ctx_imp_conv (REWRITE_CTXIMPCONV ths)) + IMPCONV_TAC (TARGET_REWRITE_IMPCONV sths' (map patterns_of_thm ths) + imp_conv_of_ctx_imp_conv (REWRITE_CTXIMPCONV ths)) let HINT_EXISTS_TAC = CTXIMPCONV_TAC (TOP_DEPTH_CTXIMPCONV EXISTS_CTXIMPCONV) diff --git a/ind_defs.ml b/ind_defs.ml index b7b0f691..0c23b4d1 100644 --- a/ind_defs.ml +++ b/ind_defs.ml @@ -284,7 +284,7 @@ let MONO_TAC = let th1 = rev_itlist (C AP_THM) args1 (BETA_CONV hd1) and th2 = rev_itlist (C AP_THM) args1 (BETA_CONV hd2) in let th3 = MK_COMB(AP_TERM imp th1,th2) in - CONV_TAC(REWR_CONV th3) (asl,w) + (CONV_TAC "(REWR_CONV th3)") (REWR_CONV th3) (asl,w) and APPLY_MONOTAC tacs (asl,w) = let a,c = dest_imp w in if aconv a c then ACCEPT_TAC (SPEC a IMP_REFL) (asl,w) else diff --git a/ints.ml b/ints.ml index 24275694..4b9c0d19 100644 --- a/ints.ml +++ b/ints.ml @@ -668,7 +668,7 @@ let INT_ARITH = let th2 = REAL_ARITH(mk_neg(rand(concl th1))) in EQ_MP th0 (EQ_MP (AP_TERM not_tm (SYM th1)) th2);; -let INT_ARITH_TAC = CONV_TAC(EQT_INTRO o INT_ARITH);; +let INT_ARITH_TAC = (CONV_TAC "(EQT_INTRO o INT_ARITH)") (EQT_INTRO o INT_ARITH);; let ASM_INT_ARITH_TAC = REPEAT(FIRST_X_ASSUM(MP_TAC o check (not o is_forall o concl))) THEN @@ -798,7 +798,7 @@ let INT_LE_CONV,INT_LT_CONV,INT_GE_CONV,INT_GT_CONV,INT_EQ_CONV = (--(&m) < &n <=> ~((m = 0) /\ (n = 0)))`, REWRITE_TAC[pth_le1; pth_le2a; pth_le2b; pth_le3; GSYM NOT_LE; INT_LT] THEN - CONV_TAC TAUT) in + (CONV_TAC "TAUT") TAUT) in let INT_LT_CONV = FIRST_CONV [GEN_REWRITE_CONV I [pth_lt1]; GEN_REWRITE_CONV I [pth_lt2a; pth_lt2b] THENC NUM_LT_CONV; @@ -809,7 +809,7 @@ let INT_LE_CONV,INT_LT_CONV,INT_GE_CONV,INT_GT_CONV,INT_EQ_CONV = (--(&m) >= --(&n) <=> m <= n) /\ (--(&m) >= &n <=> (m = 0) /\ (n = 0))`, REWRITE_TAC[pth_le1; pth_le2a; pth_le2b; pth_le3; INT_GE] THEN - CONV_TAC TAUT) in + (CONV_TAC "TAUT") TAUT) in let INT_GE_CONV = FIRST_CONV [GEN_REWRITE_CONV I [pth_ge1]; GEN_REWRITE_CONV I [pth_ge2a; pth_ge2b] THENC NUM_LE_CONV; @@ -820,7 +820,7 @@ let INT_LE_CONV,INT_LT_CONV,INT_GE_CONV,INT_GT_CONV,INT_EQ_CONV = (--(&m) > --(&n) <=> m < n) /\ (&m > --(&n) <=> ~((m = 0) /\ (n = 0)))`, REWRITE_TAC[pth_lt1; pth_lt2a; pth_lt2b; pth_lt3; INT_GT] THEN - CONV_TAC TAUT) in + (CONV_TAC "TAUT") TAUT) in let INT_GT_CONV = FIRST_CONV [GEN_REWRITE_CONV I [pth_gt1]; GEN_REWRITE_CONV I [pth_gt2a; pth_gt2b] THENC NUM_LT_CONV; @@ -832,7 +832,7 @@ let INT_LE_CONV,INT_LT_CONV,INT_GE_CONV,INT_GT_CONV,INT_EQ_CONV = ((&m = --(&n)) <=> (m = 0) /\ (n = 0))`, REWRITE_TAC[GSYM INT_LE_ANTISYM; GSYM LE_ANTISYM] THEN REWRITE_TAC[pth_le1; pth_le2a; pth_le2b; pth_le3; LE; LE_0] THEN - CONV_TAC TAUT) in + (CONV_TAC "TAUT") TAUT) in let INT_EQ_CONV = FIRST_CONV [GEN_REWRITE_CONV I [pth_eq1a; pth_eq1b] THENC NUM_EQ_CONV; GEN_REWRITE_CONV I [pth_eq2a; pth_eq2b] THENC NUM2_EQ_CONV] in @@ -1047,7 +1047,7 @@ let INT_DIVMOD_UNIQ = prove SUBGOAL_THEN `~(n = &0)` MP_TAC THENL [ASM_INT_ARITH_TAC; ALL_TAC] THEN DISCH_THEN(STRIP_ASSUME_TAC o SPEC `m:int` o MATCH_MP INT_DIVISION) THEN ASM_CASES_TAC `m div n = q` THENL - [REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC INT_RING; ALL_TAC] THEN + [REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "INT_RING") INT_RING; ALL_TAC] THEN SUBGOAL_THEN `abs(m rem n - r) < abs n` MP_TAC THENL [ASM_INT_ARITH_TAC; MATCH_MP_TAC(TAUT `~p ==> p ==> q`)] THEN MATCH_MP_TAC(INT_ARITH @@ -1056,7 +1056,7 @@ let INT_DIVMOD_UNIQ = prove ==> ~(abs(m rem n - r) < abs n)`) THEN CONJ_TAC THENL [MATCH_MP_TAC INT_LE_RMUL THEN ASM_INT_ARITH_TAC; - AP_TERM_TAC THEN REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC INT_RING]);; + AP_TERM_TAC THEN REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "INT_RING") INT_RING]);; let INT_DIV_CONV,INT_REM_CONV = let pth = prove @@ -1254,24 +1254,24 @@ let INTEGER_TAC = lhs o concl o snd) asl in let cfs = solve_idealism evs ps (map lhs (conjuncts bod)) in (MAP_EVERY EXISTS_TAC(map (fun v -> rev_assocd v cfs zero_tm) evs) THEN - REPEAT(POP_ASSUM MP_TAC) THEN CONV_TAC INT_RING) gl in + REPEAT(POP_ASSUM MP_TAC) THEN (CONV_TAC "INT_RING") INT_RING) gl in let SCRUB_NEQ_TAC = MATCH_MP_TAC o MATCH_MP (MESON[] `~(x = y) ==> x = y \/ p ==> p`) in REWRITE_TAC[int_coprime; int_congruent; int_divides] THEN REPEAT(STRIP_TAC ORELSE EQ_TAC) THEN REWRITE_TAC[LEFT_AND_EXISTS_THM; RIGHT_AND_EXISTS_THM; LEFT_OR_EXISTS_THM; RIGHT_OR_EXISTS_THM] THEN - CONV_TAC(REPEATC UNWIND_POLYS_CONV) THEN + (CONV_TAC "(REPEATC UNWIND_POLYS_CONV)") (REPEATC UNWIND_POLYS_CONV) THEN REPEAT(FIRST_X_ASSUM SCRUB_NEQ_TAC) THEN REWRITE_TAC[LEFT_AND_EXISTS_THM; RIGHT_AND_EXISTS_THM; LEFT_OR_EXISTS_THM; RIGHT_OR_EXISTS_THM] THEN REPEAT(FIRST_X_ASSUM(MP_TAC o SYM)) THEN - CONV_TAC(ONCE_DEPTH_CONV INT_POLYEQ_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV INT_POLYEQ_CONV)") (ONCE_DEPTH_CONV INT_POLYEQ_CONV) THEN REWRITE_TAC[GSYM INT_ENTIRE; TAUT `a \/ (b /\ c) <=> (a \/ b) /\ (a \/ c)`] THEN POP_ASSUM_LIST(K ALL_TAC) THEN - REPEAT DISCH_TAC THEN CONV_TAC GENVAR_EXISTS_CONV THEN - CONV_TAC(ONCE_DEPTH_CONV INT_POLYEQ_CONV) THEN EXISTS_POLY_TAC;; + REPEAT DISCH_TAC THEN (CONV_TAC "GENVAR_EXISTS_CONV") GENVAR_EXISTS_CONV THEN + (CONV_TAC "(ONCE_DEPTH_CONV INT_POLYEQ_CONV)") (ONCE_DEPTH_CONV INT_POLYEQ_CONV) THEN EXISTS_POLY_TAC;; let INTEGER_RULE tm = prove(tm,INTEGER_TAC);; @@ -1355,7 +1355,7 @@ let NUM_OF_INT_OF_NUM = prove let INT_OF_NUM_OF_INT = prove (`!x. &0 <= x ==> &(num_of_int x) = x`, REWRITE_TAC[GSYM INT_FORALL_POS; num_of_int] THEN - GEN_TAC THEN CONV_TAC SELECT_CONV THEN MESON_TAC[]);; + GEN_TAC THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN MESON_TAC[]);; let NUM_OF_INT = prove (`!x. &0 <= x <=> (&(num_of_int x) = x)`, @@ -1433,7 +1433,7 @@ let ARITH_RULE = let th3 = GENL avs (rev_itlist (C MP) pths th2) in EQ_MP (SYM th1) th3;; -let ARITH_TAC = CONV_TAC(EQT_INTRO o ARITH_RULE);; +let ARITH_TAC = (CONV_TAC "(EQT_INTRO o ARITH_RULE)") (EQT_INTRO o ARITH_RULE);; let ASM_ARITH_TAC = REPEAT(FIRST_X_ASSUM(MP_TAC o check (not o is_forall o concl))) THEN @@ -1460,7 +1460,7 @@ let NUMBER_TAC = INT_OF_NUM_SUC; INT_OF_NUM_ADD; INT_OF_NUM_MUL; INT_OF_NUM_POW])) and quantifier_conv = GEN_REWRITE_CONV DEPTH_CONV [pth_relativize] in W(fun (_,w) -> MAP_EVERY (fun v -> SPEC_TAC(v,v)) (frees w)) THEN - CONV_TAC(relation_conv THENC quantifier_conv) THEN + (CONV_TAC "(relation_conv THENC quantifier_conv)") (relation_conv THENC quantifier_conv) THEN REWRITE_TAC[RIGHT_IMP_FORALL_THM] THEN REPEAT GEN_TAC THEN INTEGER_TAC;; diff --git a/itab.ml b/itab.ml index 737f19e4..a56fe01b 100644 --- a/itab.ml +++ b/itab.ml @@ -42,7 +42,7 @@ let (ITAUT_TAC : tactic) = [CONJ_TAC; (* and *) GEN_TAC; (* forall *) DISCH_TAC; (* implies *) - (fun gl -> CONV_TAC(K(IMPLICATE(snd gl))) gl); (* not *) + (fun gl -> (CONV_TAC "(K(IMPLICATE(snd gl)))") (K(IMPLICATE(snd gl))) gl); (* not *) EQ_TAC] (* iff *) and LEFT_REVERSIBLE_TAC th gl = tryfind (fun ttac -> ttac th gl) [CONJUNCTS_THEN' ASSUME_TAC; (* and *) diff --git a/iterate.ml b/iterate.ml index 96cfe522..52c07ad5 100644 --- a/iterate.ml +++ b/iterate.ml @@ -610,10 +610,10 @@ let ITERATE_ITERATE_PRODUCT = prove W(MP_TAC o PART_MATCH (lhand o rand) (MATCH_MP ITERATE_IMAGE th) o rand o snd)) THEN ANTS_TAC THENL - [SIMP_TAC[FORALL_PAIR_THM] THEN CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + [SIMP_TAC[FORALL_PAIR_THM] THEN (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN ASM_SIMP_TAC[PAIR_EQ]; DISCH_THEN SUBST1_TAC THEN REWRITE_TAC[o_DEF] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[ETA_AX]]);; + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[ETA_AX]]);; let ITERATE_EQ = prove (`!op. monoidal op @@ -643,7 +643,7 @@ let ITERATE_EQ_GENERAL = prove MATCH_MP_TAC EQ_TRANS THEN EXISTS_TAC `iterate op s ((g:B->C) o (h:A->B))` THEN CONJ_TAC THENL [ASM_MESON_TAC[ITERATE_EQ; o_THM]; - CONV_TAC SYM_CONV THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP ITERATE_IMAGE) THEN ASM_MESON_TAC[]]);; @@ -664,7 +664,7 @@ let ITERATE_INJECTION = prove (!x. x IN s ==> p x IN s) /\ (!x y. x IN s /\ y IN s /\ p x = p y ==> x = y) ==> iterate op s (f o p) = iterate op s f`, - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP ITERATE_BIJECTION) THEN MP_TAC(ISPECL [`s:A->bool`; `p:A->A`] SURJECTIVE_IFF_INJECTIVE) THEN ASM_REWRITE_TAC[SUBSET; IN_IMAGE] THEN ASM_MESON_TAC[]);; @@ -706,7 +706,7 @@ let ITERATE_UNIV = prove ==> !f:A->B s. support op f UNIV SUBSET s ==> iterate op s f = iterate op UNIV f`, REWRITE_TAC[support; SUBSET; IN_ELIM_THM] THEN - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP ITERATE_SUPERSET) THEN ASM SET_TAC[]);; @@ -759,7 +759,7 @@ let ITERATE_OP_GEN = prove EXISTS_TAC `iterate op (support op f s UNION support op g s) (\x. op ((f:A->B) x) (g x))` THEN CONJ_TAC THENL - [CONV_TAC SYM_CONV; + [(CONV_TAC "SYM_CONV") SYM_CONV; ASM_SIMP_TAC[ITERATE_OP; FINITE_UNION] THEN BINOP_TAC] THEN FIRST_ASSUM(MATCH_MP_TAC o MATCH_MP ITERATE_SUPERSET) THEN REWRITE_TAC[support; IN_ELIM_THM; SUBSET; IN_UNION] THEN @@ -782,7 +782,7 @@ let ITERATE_PAIR = prove ==> !f m n. iterate op (2*m..2*n+1) f = iterate op (m..n) (\i. op (f(2*i)) (f(2*i+1)))`, GEN_TAC THEN DISCH_TAC THEN GEN_TAC THEN GEN_TAC THEN - INDUCT_TAC THEN CONV_TAC NUM_REDUCE_CONV THENL + INDUCT_TAC THEN (CONV_TAC "NUM_REDUCE_CONV") NUM_REDUCE_CONV THENL [ASM_SIMP_TAC[num_CONV `1`; ITERATE_CLAUSES_NUMSEG] THEN REWRITE_TAC[ARITH_RULE `2 * m <= SUC 0 <=> m = 0`] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[MULT_EQ_0; ARITH]; @@ -1022,7 +1022,7 @@ let ITERATE_UNIV = prove ==> !f s. support op f UNIV SUBSET s ==> iterate op s f = iterate op UNIV f`, REWRITE_TAC[support; SUBSET; IN_ELIM_THM] THEN - REPEAT STRIP_TAC THEN CONV_TAC SYM_CONV THEN + REPEAT STRIP_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN FIRST_X_ASSUM(MATCH_MP_TAC o MATCH_MP ITERATE_SUPERSET) THEN ASM SET_TAC[]);; @@ -1439,7 +1439,7 @@ let CARD_UNIONS = prove DISCH_THEN(fun th -> STRIP_TAC THEN MP_TAC th) THEN ASM_SIMP_TAC[NSUM_CLAUSES] THEN DISCH_THEN(CONJUNCTS_THEN2 (SUBST1_TAC o SYM) STRIP_ASSUME_TAC) THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC CARD_UNION_EQ THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC CARD_UNION_EQ THEN ASM_SIMP_TAC[FINITE_UNIONS; FINITE_UNION; INTER_UNIONS] THEN REWRITE_TAC[EMPTY_UNIONS; IN_ELIM_THM] THEN ASM MESON_TAC[]);; diff --git a/lists.ml b/lists.ml index 71089271..a107ccd3 100644 --- a/lists.ml +++ b/lists.ml @@ -300,7 +300,7 @@ let ALL_MP = prove let AND_ALL = prove (`!l. ALL P l /\ ALL Q l <=> ALL (\x. P x /\ Q x) l`, - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN LIST_INDUCT_TAC THEN ASM_REWRITE_TAC[ALL; CONJ_ACI]);; let EX_IMP = prove @@ -411,7 +411,7 @@ let ALL2_MAP2 = prove let AND_ALL2 = prove (`!P Q l m. ALL2 P l m /\ ALL2 Q l m <=> ALL2 (\x y. P x y /\ Q x y) l m`, - GEN_TAC THEN GEN_TAC THEN CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + GEN_TAC THEN GEN_TAC THEN (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN LIST_INDUCT_TAC THEN LIST_INDUCT_TAC THEN ASM_REWRITE_TAC[ALL2] THEN REWRITE_TAC[CONJ_ACI]);; diff --git a/log.ml b/log.ml index a635914e..a1892d7b 100644 --- a/log.ml +++ b/log.ml @@ -25,7 +25,7 @@ and tactic_log = | Fake_log (* see VALID *) | Label_tac_log of string * thm | Accept_tac_log of thm - | Conv_tac_log of conv (* TODO will need to expand since conv:term->thm *) + | Conv_tac_log of string * conv (* TODO will need to expand since conv:term->thm *) | Abs_tac_log | Mk_comb_tac_log | Disch_tac_log @@ -124,7 +124,7 @@ let tactic_name taclog = Fake_log -> "Fake_log" | Label_tac_log (st, th) -> "Label_tac_log" | Accept_tac_log th -> "Accept_tac_log" - | Conv_tac_log c -> "Conv_tac_log" + | Conv_tac_log (_, c) -> "Conv_tac_log" | Abs_tac_log -> "Abs_tac_log" | Mk_comb_tac_log -> "Mk_comb_tac_log" | Disch_tac_log -> "Disch_tac_log" @@ -159,7 +159,7 @@ let sexp_tactic_log taclog = Fake_log -> simple "Fake_log" | Label_tac_log (st, th) -> Snode [Sleaf "Label_tac_log"; Sleaf st; sexp_thm th] | Accept_tac_log th -> thm "Accept_tac_log" th - | Conv_tac_log c -> Snode [Sleaf "Conv_tac_log"; sexp_conv c] + | Conv_tac_log (s, c) -> Snode [Sleaf "Conv_tac_log"; Sleaf s; sexp_conv c] | Abs_tac_log -> simple "Abs_tac_log" | Mk_comb_tac_log -> simple "Mk_comb_tac_log" | Disch_tac_log -> simple "Disch_tac_log" @@ -189,7 +189,7 @@ let sexp_tactic_log taclog = | Backchain_tac_log th -> thm "Backchain_tac_log" th | Imp_subst_tac_log th -> thm "Imp_subst_tac_log" th | Unknown_log -> simple "Unknown_log";; - + let rec sexp_proof_log plog = let Proof_log ((gl:goal), (taclog:tactic_log), (logl:proof_log list)) = plog in Snode [Sleaf "p"; sexp_goal gl; sexp_tactic_log taclog; Snode (map sexp_proof_log logl)] diff --git a/match_paren.rb b/match_paren.rb new file mode 100644 index 00000000..4401ffe5 --- /dev/null +++ b/match_paren.rb @@ -0,0 +1,52 @@ +def next_nonspace(s, i) + while i < s.size and s[i] =~ /\s/ do + i += 1 + end + return i +end + +def find_closing_paren (s, i) + count = 0 + while i < s.size + if s[i] == "(" + count += 1 + elsif s[i] == ")" + count -= 1 + end + if count <= 0 then + return i + end + i += 1 + end +end + +def match_nonalnum(s, i) + while i < s.size + if s[i] =~ /\w/ then + i += 1 + else + return i + end + end +end + +counts = {} + +ARGV.each do |fname| + s = IO.read(fname) + s.to_enum(:scan,/CONV_TAC/).map do |m,| + index = $`.size + start = index + m.size + p = next_nonspace(s, start) + # puts "#{index} #{start} #{s[p]} #{p}" + c = start + if s[p] == "(" then + # puts "A" + c = find_closing_paren(s, p) + puts(s[p+1...c].gsub(/\s+/, " ") + " " + fname) + elsif s[0] =~ /\w/ then + c = match_nonalnum(s, p) + puts(s[p...c] + " " + fname) + end + end +end diff --git a/meson.ml b/meson.ml index bcb0df00..e78e89d6 100644 --- a/meson.ml +++ b/meson.ml @@ -596,7 +596,7 @@ module Meson = struct (`(x:A = x) /\ (~(x:A = y) \/ ~(x = z) \/ (y = z))`, REWRITE_TAC[] THEN ASM_CASES_TAC `x:A = y` THEN - ASM_REWRITE_TAC[] THEN CONV_TAC TAUT) in + ASM_REWRITE_TAC[] THEN (CONV_TAC "TAUT") TAUT) in let imp_elim_CONV = REWR_CONV (TAUT `(a ==> b) <=> ~a \/ b`) in let eq_elim_RULE = @@ -825,11 +825,7 @@ let GEN_MESON_TAC min max step ths = W(MAP_EVERY(UNDISCH_TAC o concl o snd) o fst) THEN SELECT_ELIM_TAC THEN W(fun (asl,w) -> MAP_EVERY (fun v -> SPEC_TAC(v,v)) (frees w)) THEN - CONV_TAC(PRESIMP_CONV THENC - TOP_DEPTH_CONV BETA_CONV THENC - LAMBDA_ELIM_CONV THENC - CONDS_CELIM_CONV THENC - Meson.QUANT_BOOL_CONV) THEN + (CONV_TAC "(PRESIMP_CONV THENC TOP_DEPTH_CONV BETA_CONV THENC LAMBDA_ELIM_CONV THENC CONDS_CELIM_CONV THENC Meson.QUANT_BOOL_CONV)") (PRESIMP_CONV THENC TOP_DEPTH_CONV BETA_CONV THENC LAMBDA_ELIM_CONV THENC CONDS_CELIM_CONV THENC Meson.QUANT_BOOL_CONV) THEN REPEAT(GEN_TAC ORELSE DISCH_TAC) THEN REFUTE_THEN ASSUME_TAC THEN RULE_ASSUM_TAC(CONV_RULE(NNF_CONV THENC SKOLEM_CONV)) THEN diff --git a/metis.ml b/metis.ml index eefcd618..135dfb83 100644 --- a/metis.ml +++ b/metis.ml @@ -10098,11 +10098,7 @@ let FOL_PREPARE_TAC ths = (* MAP_EVERY is mapM for tactics I believe that this all-quantifies all free variables in the goal *) - CONV_TAC(PRESIMP_CONV THENC - TOP_DEPTH_CONV BETA_CONV THENC - LAMBDA_ELIM_CONV THENC - CONDS_CELIM_CONV THENC - Meson.QUANT_BOOL_CONV) THEN + (CONV_TAC "(PRESIMP_CONV THENC TOP_DEPTH_CONV BETA_CONV THENC LAMBDA_ELIM_CONV THENC CONDS_CELIM_CONV THENC Meson.QUANT_BOOL_CONV)") (PRESIMP_CONV THENC TOP_DEPTH_CONV BETA_CONV THENC LAMBDA_ELIM_CONV THENC CONDS_CELIM_CONV THENC Meson.QUANT_BOOL_CONV) THEN (*PRINT_ID_TAC "converted" THEN*) REPEAT(GEN_TAC ORELSE DISCH_TAC) THEN diff --git a/miz3/miz3.ml b/miz3/miz3.ml index 43baf0d1..98e3e417 100644 --- a/miz3/miz3.ml +++ b/miz3/miz3.ml @@ -2,7 +2,7 @@ needs "Examples/holby.ml";; let horizon = ref 1;; let timeout = ref 1;; -let default_prover = ref ("HOL_BY", CONV_TAC o HOL_BY);; +let default_prover = ref ("HOL_BY", (CONV_TAC "o") o HOL_BY);; let renumber_labels = ref true;; let extra_labels = ref 0;; let start_label = ref 1;; @@ -298,7 +298,7 @@ let rec by_item_of_toks toks = try Tactic (s, exec_thmlist_tactic s) with _ -> try Tactic (s, (exec_thmtactic s) o hd) with _ -> try Tactic (s, use_thms (exec_tactic s)) with _ -> - try Tactic (s, use_thms (CONV_TAC (exec_conv s))) with _ -> + try Tactic (s, use_thms ((CONV_TAC "(exec_conv s)") (exec_conv s))) with _ -> match toks with | [_,Ident s,_] -> Label s | _ -> failwith "by_item_of_toks" in @@ -1243,7 +1243,7 @@ let PURE_EXACTLY_ONCE_REWRITE_TAC = let PURE_EXACTLY_ONCE_REWRITE_CONV thl = GENERAL_REWRITE_CONV false EXACTLY_ONCE_DEPTH_QCONV empty_net thl in fun thl -> - CONV_TAC(PURE_EXACTLY_ONCE_REWRITE_CONV thl);; + (CONV_TAC "(PURE_EXACTLY_ONCE_REWRITE_CONV thl)") (PURE_EXACTLY_ONCE_REWRITE_CONV thl);; let EQTF_INTRO = let lemma = TAUT `(~t <=> T) <=> (t <=> F)` in @@ -1276,7 +1276,7 @@ let rec tactic_of_step fake step (asl,w as g) = let SUBGOAL_THEN' tm tac = let th = fix_dots' asl tm in let lhs,_ = dest_eq (concl th) in - SUBGOAL_THEN lhs tac THENL [MIZAR_NEXT' (CONV_TAC (K th)); ALL_TAC] in + SUBGOAL_THEN lhs tac THENL [MIZAR_NEXT' ((CONV_TAC "(K th)") (K th)); ALL_TAC] in let fix_thesis tm = vsubst [w,thesis_var] tm in let e,src,substep = step in match substep with @@ -1882,7 +1882,7 @@ at_exit (fun _ -> !exit_proc ());; let reset_miz3 h = horizon := h; timeout := 1; - default_prover := ("HOL_BY", CONV_TAC o HOL_BY); + default_prover := ("HOL_BY", (CONV_TAC "o") o HOL_BY); sketch_mode := false; just_cache := undefined; by_item_cache := undefined; diff --git a/nums.ml b/nums.ml index b5422b85..3cf84fcb 100644 --- a/nums.ml +++ b/nums.ml @@ -117,7 +117,7 @@ let num_INDUCTION = prove [MATCH_MP_TAC(CONJUNCT2 NUM_REP_RULES) THEN ASM_REWRITE_TAC[]; SUBGOAL_THEN `mk_num(IND_SUC i) = SUC(mk_num i)` SUBST1_TAC THENL [REWRITE_TAC[SUC_DEF] THEN REPEAT AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN REWRITE_TAC[GSYM(snd num_tydef)] THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN REWRITE_TAC[GSYM(snd num_tydef)] THEN FIRST_ASSUM MATCH_ACCEPT_TAC; FIRST_ASSUM MATCH_MP_TAC THEN FIRST_ASSUM MATCH_ACCEPT_TAC]]; DISCH_THEN(MP_TAC o SPEC `dest_num n`) THEN diff --git a/pair.ml b/pair.ml index 193f80a5..7777c95e 100644 --- a/pair.ml +++ b/pair.ml @@ -464,4 +464,4 @@ let (LET_TAC:tactic) = SUBST_ALL_TAC th' THEN ASSUME_TAC th')) deprths THEN W(fun (asl',w') -> let tm' = follow_path path w' in - CONV_TAC(PATH_CONV path (K(let_CONV tm'))))) gl;; + (CONV_TAC "(PATH_CONV path (K(let_CONV tm')))") (PATH_CONV path (K(let_CONV tm'))))) gl;; diff --git a/quot.ml b/quot.ml index 039716cc..7a54e90d 100644 --- a/quot.ml +++ b/quot.ml @@ -164,7 +164,7 @@ let lift_theorem = SUBST1_TAC THENL [ASM_MESON_TAC[]; ALL_TAC] THEN GEN_REWRITE_TAC (LAND_CONV o RAND_CONV) [GSYM ETA_AX] THEN FIRST_ASSUM(fun th -> GEN_REWRITE_TAC I [th]) THEN - CONV_TAC SELECT_CONV THEN ASM_MESON_TAC[]) in + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_MESON_TAC[]) in fun tybij (refl_th,sym_th,trans_th) -> let tybij1 = GEN_ALL (fst tybij) and tybij2 = GEN_ALL (snd tybij) in diff --git a/realarith.ml b/realarith.ml index 85795485..f01b2903 100644 --- a/realarith.ml +++ b/realarith.ml @@ -35,11 +35,11 @@ open Calc_int;; let REAL_LTE_TOTAL = prove (`!x y. x < y \/ y <= x`, - REWRITE_TAC[real_lt] THEN CONV_TAC TAUT);; + REWRITE_TAC[real_lt] THEN (CONV_TAC "TAUT") TAUT);; let REAL_LET_TOTAL = prove (`!x y. x <= y \/ y < x`, - REWRITE_TAC[real_lt] THEN CONV_TAC TAUT);; + REWRITE_TAC[real_lt] THEN (CONV_TAC "TAUT") TAUT);; let REAL_LT_IMP_LE = prove (`!x y. x < y ==> x <= y`, diff --git a/realax.ml b/realax.ml index 1d013c01..44b1000c 100644 --- a/realax.ml +++ b/realax.ml @@ -147,7 +147,7 @@ let DIST_LE_CASES,DIST_ADDBOUND,DIST_TRIANGLE,DIST_ADD2,DIST_ADD2_REV = let DIST_ELIM_TAC = let conv = HIGHER_REWRITE_CONV[SUB_ELIM_THM; COND_ELIM_THM; DIST_ELIM_THM] false in - CONV_TAC conv THEN TRY GEN_TAC THEN CONJ_TAC THEN + (CONV_TAC "conv") conv THEN TRY GEN_TAC THEN CONJ_TAC THEN DISCH_THEN(fun th -> SUBST_ALL_TAC th THEN (let l,r = dest_eq (concl th) in if is_var l && not (vfree_in l r) then ALL_TAC @@ -156,7 +156,7 @@ let DIST_LE_CASES,DIST_ADDBOUND,DIST_TRIANGLE,DIST_ADD2,DIST_ADD2_REV = REPEAT STRIP_TAC THEN REPEAT DIST_ELIM_TAC THEN REWRITE_TAC[GSYM NOT_LT; LT_EXISTS] THEN DISCH_THEN(CHOOSE_THEN SUBST_ALL_TAC) THEN POP_ASSUM MP_TAC THEN - CONV_TAC(LAND_CONV NUM_CANCEL_CONV) THEN + (CONV_TAC "(LAND_CONV NUM_CANCEL_CONV)") (LAND_CONV NUM_CANCEL_CONV) THEN REWRITE_TAC[ADD_CLAUSES; NOT_SUC] in let DIST_LE_CASES = prove (`!m n p. dist(m,n) <= p <=> (m <= n + p) /\ (n <= m + p)`, @@ -197,7 +197,7 @@ let DIST_TRIANGLES_LE = prove let BOUNDS_LINEAR = prove (`!A B C. (!n. A * n <= B * n + C) <=> A <= B`, REPEAT GEN_TAC THEN EQ_TAC THENL - [CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[NOT_LE] THEN + [(CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[NOT_LE] THEN DISCH_THEN(CHOOSE_THEN SUBST1_TAC o REWRITE_RULE[LT_EXISTS]) THEN REWRITE_TAC[RIGHT_ADD_DISTRIB; LE_ADD_LCANCEL] THEN DISCH_THEN(MP_TAC o SPEC `SUC C`) THEN @@ -307,7 +307,7 @@ let NADD_MULTIPLICATIVE = prove ASM_CASES_TAC `n = 0` THENL [MATCH_MP_TAC (LE_IMP DIST_ADDBOUND) THEN ASM_REWRITE_TAC[MULT_CLAUSES; RIGHT_ADD_DISTRIB; MULT_AC] THEN - REWRITE_TAC[LE_EXISTS] THEN CONV_TAC(ONCE_DEPTH_CONV NUM_CANCEL_CONV) THEN + REWRITE_TAC[LE_EXISTS] THEN (CONV_TAC "(ONCE_DEPTH_CONV NUM_CANCEL_CONV)") (ONCE_DEPTH_CONV NUM_CANCEL_CONV) THEN REWRITE_TAC[GSYM EXISTS_REFL]; UNDISCH_TAC `~(n = 0)`] THEN REWRITE_TAC[TAUT `(~a ==> b) <=> a \/ b`; GSYM LE_MULT_LCANCEL; DIST_LMUL] THEN @@ -315,7 +315,7 @@ let NADD_MULTIPLICATIVE = prove (LAND_CONV o RAND_CONV o RAND_CONV o LAND_CONV) [MULT_SYM] THEN POP_ASSUM(MATCH_MP_TAC o LE_IMP) THEN REWRITE_TAC[LE_EXISTS; RIGHT_ADD_DISTRIB; LEFT_ADD_DISTRIB; MULT_AC] THEN - CONV_TAC(ONCE_DEPTH_CONV NUM_CANCEL_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV NUM_CANCEL_CONV)") (ONCE_DEPTH_CONV NUM_CANCEL_CONV) THEN REWRITE_TAC[GSYM EXISTS_REFL]);; let NADD_ADDITIVE = prove @@ -335,7 +335,7 @@ let NADD_ADDITIVE = prove SUBST1_TAC THENL [REWRITE_TAC[SYM(REWRITE_CONV [ARITH] `1 + 1 + 1`)] THEN REWRITE_TAC[RIGHT_ADD_DISTRIB; LEFT_ADD_DISTRIB; MULT_CLAUSES] THEN - REWRITE_TAC[MULT_AC] THEN CONV_TAC NUM_CANCEL_CONV THEN REFL_TAC; + REWRITE_TAC[MULT_AC] THEN (CONV_TAC "NUM_CANCEL_CONV") NUM_CANCEL_CONV THEN REFL_TAC; MATCH_MP_TAC LE_ADD2 THEN ASM_REWRITE_TAC[]]);; let NADD_SUC = prove @@ -493,7 +493,7 @@ let NADD_LE_TOTAL_LEMMA = prove POP_ASSUM(X_CHOOSE_TAC `n:num` o SPEC `B + fn x 0`) THEN EXISTS_TAC `n:num` THEN POP_ASSUM MP_TAC THEN ASM_CASES_TAC `n = 0` THEN ASM_REWRITE_TAC[NOT_LT; ADD_ASSOC; LE_ADDR] THEN - CONV_TAC CONTRAPOS_CONV THEN REWRITE_TAC[NOT_LT] THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[NOT_LT] THEN DISCH_THEN(MATCH_MP_TAC o LE_IMP) THEN REWRITE_TAC[ADD_ASSOC; LE_ADD]);; let NADD_LE_TOTAL = prove @@ -795,7 +795,7 @@ let NADD_ARCH_MULT = prove let NADD_ARCH_ZERO = prove (`!x k. (!n. &n ** x <<= k) ==> (x === &0)`, - REPEAT GEN_TAC THEN CONV_TAC CONTRAPOS_CONV THEN DISCH_TAC THEN + REPEAT GEN_TAC THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_TAC THEN REWRITE_TAC[NOT_FORALL_THM] THEN X_CHOOSE_TAC `p:num` (SPEC `k:nadd` NADD_ARCH) THEN FIRST_ASSUM(MP_TAC o MATCH_MP NADD_ARCH_MULT) THEN @@ -1127,7 +1127,7 @@ let NADD_MUL_LINV_LEMMA7 = prove ONCE_REWRITE_TAC[AC MULT_AC `a * b * c = b * a * c`] THEN REWRITE_TAC[LE_MULT_LCANCEL] THEN DISCH_THEN(DISJ_CASES_THEN2 MP_TAC ACCEPT_TAC) THEN - CONV_TAC CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN + (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN DISCH_THEN(K ALL_TAC) THEN ONCE_REWRITE_TAC[GSYM(CONJUNCT1 LE)] THEN REWRITE_TAC[NOT_LE; GSYM LE_SUC_LT] THEN REWRITE_TAC[EQT_ELIM(REWRITE_CONV[ARITH] `SUC 0 = 1 * 1`)] THEN diff --git a/reals.ml b/reals.ml index fca9744b..d5d36510 100644 --- a/reals.ml +++ b/reals.ml @@ -87,7 +87,7 @@ let REAL_ADD_RDISTRIB = prove let REAL_LT_LADD_IMP = prove (`!x y z. y < z ==> x + y < x + z`, - REPEAT GEN_TAC THEN CONV_TAC CONTRAPOS_CONV THEN + REPEAT GEN_TAC THEN (CONV_TAC "CONTRAPOS_CONV") CONTRAPOS_CONV THEN REWRITE_TAC[real_lt] THEN DISCH_THEN(MP_TAC o MATCH_MP REAL_LE_LADD_IMP) THEN DISCH_THEN(MP_TAC o SPEC `--x`) THEN @@ -96,7 +96,7 @@ let REAL_LT_LADD_IMP = prove let REAL_LT_MUL = prove (`!x y. &0 < x /\ &0 < y ==> &0 < x * y`, REPEAT GEN_TAC THEN REWRITE_TAC[REAL_LT_LE] THEN - CONV_TAC(ONCE_DEPTH_CONV SYM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV SYM_CONV)") (ONCE_DEPTH_CONV SYM_CONV) THEN STRIP_TAC THEN ASM_REWRITE_TAC[REAL_ENTIRE] THEN MATCH_MP_TAC REAL_LE_MUL THEN ASM_REWRITE_TAC[]);; @@ -104,7 +104,7 @@ let REAL_LT_MUL = prove (* Tactic version of REAL_ARITH. *) (* ------------------------------------------------------------------------- *) -let REAL_ARITH_TAC = CONV_TAC REAL_ARITH;; +let REAL_ARITH_TAC = (CONV_TAC "REAL_ARITH") REAL_ARITH;; (* ------------------------------------------------------------------------- *) (* Prove all the linear theorems we can blow away automatically. *) @@ -784,7 +784,7 @@ let REAL_DIV_LMUL = prove let REAL_ABS_INV = prove (`!x. abs(inv x) = inv(abs x)`, - GEN_TAC THEN CONV_TAC SYM_CONV THEN + GEN_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN ASM_CASES_TAC `x = &0` THEN ASM_REWRITE_TAC[REAL_INV_0; REAL_ABS_0] THEN MATCH_MP_TAC REAL_MUL_RINV_UNIQ THEN REWRITE_TAC[GSYM REAL_ABS_MUL] THEN @@ -853,7 +853,7 @@ let REAL_POW_SUB = prove REWRITE_TAC[real_div] THEN ONCE_REWRITE_TAC[REAL_MUL_SYM] THEN GEN_REWRITE_TAC LAND_CONV [GSYM REAL_MUL_LID] THEN REWRITE_TAC[REAL_MUL_ASSOC] THEN AP_THM_TAC THEN AP_TERM_TAC THEN - CONV_TAC SYM_CONV THEN MATCH_MP_TAC REAL_MUL_LINV THEN + (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC REAL_MUL_LINV THEN MATCH_MP_TAC REAL_POW_NZ THEN ASM_REWRITE_TAC[]);; let REAL_LT_IMP_NZ = prove @@ -977,7 +977,7 @@ let REAL_POW_EQ_0 = prove GEN_TAC THEN INDUCT_TAC THEN ASM_REWRITE_TAC[NOT_SUC; real_pow; REAL_ENTIRE] THENL [REAL_ARITH_TAC; - CONV_TAC TAUT]);; + (CONV_TAC "TAUT") TAUT]);; let REAL_LE_MUL2 = prove (`!w x y z. &0 <= w /\ w <= x /\ &0 <= y /\ y <= z @@ -1191,7 +1191,7 @@ let REAL_EQ_RCANCEL_IMP = prove (`!x y z. ~(z = &0) /\ (x * z = y * z) ==> (x = y)`, REPEAT GEN_TAC THEN ONCE_REWRITE_TAC[GSYM REAL_SUB_0] THEN REWRITE_TAC[REAL_SUB_RZERO; GSYM REAL_SUB_RDISTRIB; REAL_ENTIRE] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; let REAL_EQ_LCANCEL_IMP = prove (`!x y z. ~(z = &0) /\ (z * x = z * y) ==> (x = y)`, diff --git a/sets.ml b/sets.ml index 39f17dcf..838a7e31 100644 --- a/sets.ml +++ b/sets.ml @@ -1749,7 +1749,7 @@ let FINREC_FUN_LEMMA = prove REPEAT STRIP_TAC THEN EXISTS_TAC `\s:A. @a:B. ?n:C. R s a n` THEN REPEAT STRIP_TAC THEN BETA_TAC THEN EQ_TAC THENL [STRIP_TAC THEN MATCH_MP_TAC SELECT_UNIQUE THEN ASM_MESON_TAC[]; - DISCH_THEN(SUBST1_TAC o SYM) THEN CONV_TAC SELECT_CONV THEN + DISCH_THEN(SUBST1_TAC o SYM) THEN (CONV_TAC "SELECT_CONV") SELECT_CONV THEN ASM_MESON_TAC[]]);; let FINREC_FUN = prove @@ -1824,7 +1824,7 @@ let FINITE_RECURSION = prove if x IN s then ITSET f s b else f x (ITSET f s b))`, REPEAT GEN_TAC THEN DISCH_TAC THEN REWRITE_TAC[ITSET] THEN - CONV_TAC SELECT_CONV THEN MATCH_MP_TAC SET_RECURSION_LEMMA THEN + (CONV_TAC "SELECT_CONV") SELECT_CONV THEN MATCH_MP_TAC SET_RECURSION_LEMMA THEN ASM_REWRITE_TAC[]);; let FINITE_RECURSION_DELETE = prove @@ -2543,25 +2543,25 @@ let CROSS_INTER = prove (`(!s t u. s CROSS (t INTER u) = (s CROSS t) INTER (s CROSS u)) /\ (!s t u. (s INTER t) CROSS u = (s CROSS u) INTER (t CROSS u))`, REWRITE_TAC[EXTENSION; FORALL_PAIR_THM; IN_INTER; IN_CROSS] THEN - REPEAT STRIP_TAC THEN CONV_TAC TAUT);; + REPEAT STRIP_TAC THEN (CONV_TAC "TAUT") TAUT);; let CROSS_UNION = prove (`(!s t u. s CROSS (t UNION u) = (s CROSS t) UNION (s CROSS u)) /\ (!s t u. (s UNION t) CROSS u = (s CROSS u) UNION (t CROSS u))`, REWRITE_TAC[EXTENSION; FORALL_PAIR_THM; IN_UNION; IN_CROSS] THEN - REPEAT STRIP_TAC THEN CONV_TAC TAUT);; + REPEAT STRIP_TAC THEN (CONV_TAC "TAUT") TAUT);; let CROSS_DIFF = prove (`(!s t u. s CROSS (t DIFF u) = (s CROSS t) DIFF (s CROSS u)) /\ (!s t u. (s DIFF t) CROSS u = (s CROSS u) DIFF (t CROSS u))`, REWRITE_TAC[EXTENSION; FORALL_PAIR_THM; IN_DIFF; IN_CROSS] THEN - REPEAT STRIP_TAC THEN CONV_TAC TAUT);; + REPEAT STRIP_TAC THEN (CONV_TAC "TAUT") TAUT);; let INTER_CROSS = prove (`!s s' t t'. (s CROSS t) INTER (s' CROSS t') = (s INTER s') CROSS (t INTER t')`, REWRITE_TAC[EXTENSION; IN_INTER; FORALL_PAIR_THM; IN_CROSS] THEN - CONV_TAC TAUT);; + (CONV_TAC "TAUT") TAUT);; let CROSS_UNIONS_UNIONS,CROSS_UNIONS = (CONJ_PAIR o prove) (`(!f g. (UNIONS f) CROSS (UNIONS g) = @@ -2598,7 +2598,7 @@ let HAS_SIZE_FUNSPACE = prove GEN_TAC THEN GEN_TAC THEN GEN_TAC THEN INDUCT_TAC THEN REWRITE_TAC[HAS_SIZE_CLAUSES] THENL [REPEAT STRIP_TAC THEN ASM_REWRITE_TAC[NOT_IN_EMPTY; EXP] THEN - CONV_TAC HAS_SIZE_CONV THEN EXISTS_TAC `(\x. d):A->B` THEN + (CONV_TAC "HAS_SIZE_CONV") HAS_SIZE_CONV THEN EXISTS_TAC `(\x. d):A->B` THEN REWRITE_TAC[EXTENSION; IN_ELIM_THM; IN_SING] THEN REWRITE_TAC[FUN_EQ_THM]; REWRITE_TAC[LEFT_IMP_EXISTS_THM; LEFT_AND_EXISTS_THM]] THEN MAP_EVERY X_GEN_TAC [`s0:A->bool`; `a:A`; `s:A->bool`] THEN @@ -2627,7 +2627,7 @@ let HAS_SIZE_FUNSPACE = prove MATCH_MP_TAC HAS_SIZE_IMAGE_INJ THEN ASM_SIMP_TAC[EXP; HAS_SIZE_PRODUCT] THEN REWRITE_TAC[FORALL_PAIR_THM; IN_ELIM_THM; PAIR_EQ; CONJ_ASSOC] THEN REWRITE_TAC[ONCE_REWRITE_RULE[CONJ_SYM] UNWIND_THM1] THEN - CONV_TAC(ONCE_DEPTH_CONV GEN_BETA_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV GEN_BETA_CONV)") (ONCE_DEPTH_CONV GEN_BETA_CONV) THEN REWRITE_TAC[FUN_EQ_THM] THEN REPEAT GEN_TAC THEN STRIP_TAC THEN CONJ_TAC THENL [FIRST_X_ASSUM(MP_TAC o SPEC `a:A`) THEN REWRITE_TAC[]; @@ -2668,7 +2668,7 @@ let FINITE_FUNSPACE_UNIV = prove let HAS_SIZE_BOOL = prove (`(:bool) HAS_SIZE 2`, SUBGOAL_THEN `(:bool) = {F,T}` SUBST1_TAC THENL - [REWRITE_TAC[EXTENSION; IN_UNIV; IN_INSERT] THEN CONV_TAC TAUT; + [REWRITE_TAC[EXTENSION; IN_UNIV; IN_INSERT] THEN (CONV_TAC "TAUT") TAUT; SIMP_TAC[HAS_SIZE; CARD_CLAUSES; FINITE_INSERT; FINITE_EMPTY; ARITH; IN_SING; NOT_IN_EMPTY]]);; @@ -2692,9 +2692,9 @@ let HAS_SIZE_POWERSET = prove SUBST1_TAC THENL [REWRITE_TAC[EXTENSION; IN_ELIM_THM; IN_UNIV; SUBSET; IN; CONTRAPOS_THM]; MATCH_MP_TAC HAS_SIZE_FUNSPACE THEN ASM_REWRITE_TAC[] THEN - CONV_TAC HAS_SIZE_CONV THEN MAP_EVERY EXISTS_TAC [`T`; `F`] THEN + (CONV_TAC "HAS_SIZE_CONV") HAS_SIZE_CONV THEN MAP_EVERY EXISTS_TAC [`T`; `F`] THEN REWRITE_TAC[EXTENSION; IN_UNIV; IN_INSERT; NOT_IN_EMPTY] THEN - CONV_TAC TAUT]);; + (CONV_TAC "TAUT") TAUT]);; let CARD_POWERSET = prove (`!s:A->bool. FINITE s ==> (CARD {t | t SUBSET s} = 2 EXP (CARD s))`, @@ -2828,7 +2828,7 @@ let FINITE_REAL_INTERVAL = prove REWRITE_TAC[REAL_ARITH `x:real < x * (n + &2) <=> &0 < x * (n + &1)`] THEN ASM_SIMP_TAC[REAL_SUB_LT; REAL_LT_MUL; REAL_ARITH `&0:real < &n + &1`] THEN MP_TAC num_INFINITE THEN REWRITE_TAC[INFINITE] THEN - MATCH_MP_TAC EQ_IMP THEN AP_TERM_TAC THEN CONV_TAC SYM_CONV THEN + MATCH_MP_TAC EQ_IMP THEN AP_TERM_TAC THEN (CONV_TAC "SYM_CONV") SYM_CONV THEN MATCH_MP_TAC FINITE_IMAGE_INJ_EQ THEN ASM_SIMP_TAC[REAL_OF_NUM_EQ; REAL_FIELD `a < b ==> (a + (b - a) / (&n + &2) = a + (b - a) / (&m + &2) <=> @@ -2891,7 +2891,7 @@ let HAS_SIZE_INDEX = prove X_GEN_TAC `x:A` THEN DISCH_TAC THEN ASM_REWRITE_TAC[] THEN FIRST_X_ASSUM(MP_TAC o SPEC `x:A`) THEN ASM_REWRITE_TAC[IN_DELETE] THEN - CONV_TAC(ONCE_DEPTH_CONV COND_ELIM_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV COND_ELIM_CONV)") (ONCE_DEPTH_CONV COND_ELIM_CONV) THEN ASM_CASES_TAC `a:A = x` THEN ASM_SIMP_TAC[] THEN ASM_MESON_TAC[LT_REFL; IN_DELETE]);; @@ -2956,7 +2956,7 @@ let LIST_OF_SET_PROPERTIES = prove ==> (set_of_list(list_of_set s) = s) /\ (LENGTH(list_of_set s) = CARD s)`, REWRITE_TAC[list_of_set] THEN - CONV_TAC(BINDER_CONV(RAND_CONV SELECT_CONV)) THEN + (CONV_TAC "(BINDER_CONV(RAND_CONV SELECT_CONV))") (BINDER_CONV(RAND_CONV SELECT_CONV)) THEN MATCH_MP_TAC FINITE_INDUCT_STRONG THEN REPEAT STRIP_TAC THENL [EXISTS_TAC `[]:A list` THEN REWRITE_TAC[CARD_CLAUSES; LENGTH; set_of_list]; EXISTS_TAC `CONS (x:A) l` THEN ASM_REWRITE_TAC[LENGTH] THEN @@ -3493,7 +3493,7 @@ let SUP = prove (`!s. ~(s = {}) /\ (?b. !x. x IN s ==> x <= b) ==> (!x. x IN s ==> x <= sup s) /\ !b. (!x. x IN s ==> x <= b) ==> sup s <= b`, - REWRITE_TAC[sup] THEN CONV_TAC(ONCE_DEPTH_CONV SELECT_CONV) THEN + REWRITE_TAC[sup] THEN (CONV_TAC "(ONCE_DEPTH_CONV SELECT_CONV)") (ONCE_DEPTH_CONV SELECT_CONV) THEN REPEAT STRIP_TAC THEN MATCH_MP_TAC REAL_COMPLETE THEN ASM_MESON_TAC[MEMBER_NOT_EMPTY]);; @@ -3631,7 +3631,7 @@ let INF = prove ==> (!x. x IN s ==> inf s <= x) /\ !b. (!x. x IN s ==> b <= x) ==> b <= inf s`, GEN_TAC THEN STRIP_TAC THEN REWRITE_TAC[inf] THEN - CONV_TAC(ONCE_DEPTH_CONV SELECT_CONV) THEN + (CONV_TAC "(ONCE_DEPTH_CONV SELECT_CONV)") (ONCE_DEPTH_CONV SELECT_CONV) THEN ONCE_REWRITE_TAC[GSYM REAL_LE_NEG2] THEN EXISTS_TAC `--(sup (IMAGE (--) s))` THEN MP_TAC(SPEC `IMAGE (--) (s:real->bool)` SUP) THEN diff --git a/simp.ml b/simp.ml index 679ab968..8bfacf87 100644 --- a/simp.ml +++ b/simp.ml @@ -474,15 +474,15 @@ let PURE_ONCE_ASM_REWRITE_RULE thl th = let ONCE_ASM_REWRITE_RULE thl th = ONCE_REWRITE_RULE ((map ASSUME (hyp th)) @ thl) th;; -let GEN_REWRITE_TAC cnvl thl = CONV_TAC(GEN_REWRITE_CONV cnvl thl);; +let GEN_REWRITE_TAC cnvl thl = (CONV_TAC "(GEN_REWRITE_CONV cnvl thl)") (GEN_REWRITE_CONV cnvl thl);; -let PURE_REWRITE_TAC thl = CONV_TAC(PURE_REWRITE_CONV thl);; +let PURE_REWRITE_TAC thl = (CONV_TAC "(PURE_REWRITE_CONV thl)") (PURE_REWRITE_CONV thl);; -let REWRITE_TAC thl = CONV_TAC(REWRITE_CONV thl);; +let REWRITE_TAC thl = (CONV_TAC "(REWRITE_CONV thl)") (REWRITE_CONV thl);; -let PURE_ONCE_REWRITE_TAC thl = CONV_TAC(PURE_ONCE_REWRITE_CONV thl);; +let PURE_ONCE_REWRITE_TAC thl = (CONV_TAC "(PURE_ONCE_REWRITE_CONV thl)") (PURE_ONCE_REWRITE_CONV thl);; -let ONCE_REWRITE_TAC thl = CONV_TAC(ONCE_REWRITE_CONV thl);; +let ONCE_REWRITE_TAC thl = (CONV_TAC "(ONCE_REWRITE_CONV thl)") (ONCE_REWRITE_CONV thl);; let (PURE_ASM_REWRITE_TAC: thm list -> tactic) = ASM PURE_REWRITE_TAC;; @@ -534,11 +534,11 @@ let PURE_SIMP_RULE thl = CONV_RULE(PURE_SIMP_CONV thl);; let ONCE_SIMP_RULE thl = CONV_RULE(ONCE_SIMP_CONV thl);; -let SIMP_TAC thl = CONV_TAC(SIMP_CONV thl);; +let SIMP_TAC thl = (CONV_TAC "(SIMP_CONV thl)") (SIMP_CONV thl);; -let PURE_SIMP_TAC thl = CONV_TAC(PURE_SIMP_CONV thl);; +let PURE_SIMP_TAC thl = (CONV_TAC "(PURE_SIMP_CONV thl)") (PURE_SIMP_CONV thl);; -let ONCE_SIMP_TAC thl = CONV_TAC(ONCE_SIMP_CONV thl);; +let ONCE_SIMP_TAC thl = (CONV_TAC "(ONCE_SIMP_CONV thl)") (ONCE_SIMP_CONV thl);; let ASM_SIMP_TAC = ASM SIMP_TAC;; diff --git a/tactics.ml b/tactics.ml index b063c268..57c11f80 100644 --- a/tactics.ml +++ b/tactics.ml @@ -354,9 +354,9 @@ let (ACCEPT_TAC: thm_tactic) = (* the form "T" automatically. *) (* ------------------------------------------------------------------------- *) -let (CONV_TAC: conv -> tactic) = +let (CONV_TAC: string -> conv -> tactic) = let t_tm = `T` in - fun conv ((asl,w) as g) -> + fun descr conv ((asl,w) as g) -> let th = conv w in let tm = concl th in if aconv tm w then ACCEPT_TAC th g else @@ -365,7 +365,8 @@ let (CONV_TAC: conv -> tactic) = if r = t_tm then ACCEPT_TAC(EQT_ELIM th) g else let th' = SYM th in null_meta,[asl,r],fun i [th,log] -> EQ_MP (INSTANTIATE_ALL i th') th, - Proof_log (g, Conv_tac_log conv, [log]);; + Proof_log (g, Conv_tac_log (descr, conv), + [log]);; (* ------------------------------------------------------------------------- *) (* Tactics for equality reasoning. *) @@ -412,12 +413,12 @@ let (BINOP_TAC: tactic) = fun gl -> try tac gl with Failure _ -> failwith "AP_THM_TAC";; let (SUBST1_TAC: thm_tactic) = - fun th -> CONV_TAC(SUBS_CONV [th]);; + fun th -> (CONV_TAC "(SUBS_CONV [th])") (SUBS_CONV [th]);; let SUBST_ALL_TAC rth = SUBST1_TAC rth THEN RULE_ASSUM_TAC (SUBS [rth]);; -let BETA_TAC = CONV_TAC(REDEPTH_CONV BETA_CONV);; +let BETA_TAC = (CONV_TAC "(REDEPTH_CONV BETA_CONV)") (REDEPTH_CONV BETA_CONV);; (* ------------------------------------------------------------------------- *) (* Just use an equation to substitute if possible and uninstantiable. *) diff --git a/theorems.ml b/theorems.ml index 0383d42f..f4186431 100644 --- a/theorems.ml +++ b/theorems.ml @@ -222,7 +222,7 @@ let UNWIND_THM1 = prove let UNWIND_THM2 = prove (`!P (a:A). (?x. x = a /\ P x) <=> P a`, - REPEAT GEN_TAC THEN CONV_TAC(LAND_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN + REPEAT GEN_TAC THEN (CONV_TAC "(LAND_CONV(ONCE_DEPTH_CONV SYM_CONV))") (LAND_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN MATCH_ACCEPT_TAC UNWIND_THM1);; let FORALL_UNWIND_THM2 = prove @@ -234,7 +234,7 @@ let FORALL_UNWIND_THM2 = prove let FORALL_UNWIND_THM1 = prove (`!P a. (!x. a = x ==> P x) <=> P a`, - REPEAT GEN_TAC THEN CONV_TAC(LAND_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN + REPEAT GEN_TAC THEN (CONV_TAC "(LAND_CONV(ONCE_DEPTH_CONV SYM_CONV))") (LAND_CONV(ONCE_DEPTH_CONV SYM_CONV)) THEN MATCH_ACCEPT_TAC FORALL_UNWIND_THM2);; (* ------------------------------------------------------------------------- *) @@ -473,9 +473,9 @@ let DESTRUCT_TAC,FIX_TAC,INTRO_TAC,HYP_TAC = let pa_label = pa_ident isalnum and pa_var = pa_ident isalpha in let fix_tac = - let fix_var v = CONV_TAC (NAME_PULL_FORALL_CONV v) THEN PURE_GEN_TAC + let fix_var v = (CONV_TAC "(NAME_PULL_FORALL_CONV v)") (NAME_PULL_FORALL_CONV v) THEN PURE_GEN_TAC and fix_rename = - function u,[v] -> CONV_TAC (NAME_PULL_FORALL_CONV v) THEN NAME_GEN_TAC u + function u,[v] -> (CONV_TAC "(NAME_PULL_FORALL_CONV v)") (NAME_PULL_FORALL_CONV v) THEN NAME_GEN_TAC u | u,_ -> NAME_GEN_TAC u in let vars = let pa_rename = diff --git a/trivia.ml b/trivia.ml index 07f745bb..990dc5aa 100644 --- a/trivia.ml +++ b/trivia.ml @@ -33,13 +33,13 @@ let I_DEF = new_definition let o_THM = prove (`!f:B->C. !g:A->B. !x:A. (f o g) x = f(g(x))`, PURE_REWRITE_TAC [o_DEF] THEN - CONV_TAC (DEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(DEPTH_CONV BETA_CONV)") (DEPTH_CONV BETA_CONV) THEN REPEAT GEN_TAC THEN REFL_TAC);; let o_ASSOC = prove (`!f:C->D. !g:B->C. !h:A->B. f o (g o h) = (f o g) o h`, REPEAT GEN_TAC THEN REWRITE_TAC [o_DEF] THEN - CONV_TAC (REDEPTH_CONV BETA_CONV) THEN + (CONV_TAC "(REDEPTH_CONV BETA_CONV)") (REDEPTH_CONV BETA_CONV) THEN REFL_TAC);; let I_THM = prove diff --git a/wf.ml b/wf.ml index 57fee27c..161d90ab 100644 --- a/wf.ml +++ b/wf.ml @@ -137,7 +137,7 @@ let WF_REC_WF = prove DISCH_TAC THEN REWRITE_TAC[WF_DCHAIN] THEN DISCH_THEN(X_CHOOSE_TAC `x:num->A`) THEN SUBGOAL_THEN `!n. (x:num->A)(@m. x(m) << x(n)) << x(n)` ASSUME_TAC THENL - [CONV_TAC(BINDER_CONV SELECT_CONV) THEN ASM_MESON_TAC[]; ALL_TAC] THEN + [(CONV_TAC "(BINDER_CONV SELECT_CONV)") (BINDER_CONV SELECT_CONV) THEN ASM_MESON_TAC[]; ALL_TAC] THEN FIRST_ASSUM(MP_TAC o SPEC `\f:A->num. \y:A. if ?p:num. y = x(p) then SUC(f(x(@m. x(m) << y))) @@ -184,7 +184,7 @@ let WF_REC_EXISTS = prove MATCH_MP_TAC MONO_EXISTS THEN X_GEN_TAC `f:A->B` THEN DISCH_THEN(fun th -> ONCE_REWRITE_TAC[th] THEN ASSUME_TAC(GSYM th)) THEN - CONV_TAC(BINDER_CONV SELECT_CONV) THEN + (CONV_TAC "(BINDER_CONV SELECT_CONV)") (BINDER_CONV SELECT_CONV) THEN FIRST_ASSUM(MATCH_MP_TAC o GEN_REWRITE_RULE I [WF_IND]) THEN ASM_MESON_TAC[]]);; @@ -237,7 +237,7 @@ let WF_POINTWISE = prove STRIP_TAC THEN MATCH_MP_TAC(GEN_ALL WF_SUBSET) THEN EXISTS_TAC `\(x1,y1) (x2,y2). x1 << x2 \/ (x1:A = x2) /\ (y1:B) <<< (y2:B)` THEN CONJ_TAC THENL - [REWRITE_TAC[FORALL_PAIR_THM] THEN CONV_TAC TAUT; + [REWRITE_TAC[FORALL_PAIR_THM] THEN (CONV_TAC "TAUT") TAUT; MATCH_MP_TAC WF_LEX THEN ASM_REWRITE_TAC[]]);; (* ------------------------------------------------------------------------- *) @@ -320,7 +320,7 @@ let WF_REC_TAIL = prove UNDISCH_THEN `!x:A n. s x (SUC n) :A = g (s x n)` (K ALL_TAC)] THEN ASM_CASES_TAC `(P:A->bool) x` THEN ASM_REWRITE_TAC[] THENL [ASM_SIMP_TAC[lemma1] THEN COND_CASES_TAC THEN ASM_REWRITE_TAC[] THEN - CONV_TAC SYM_CONV THEN ASM_SIMP_TAC[lemma2; lemma1]; + (CONV_TAC "SYM_CONV") SYM_CONV THEN ASM_SIMP_TAC[lemma2; lemma1]; COND_CASES_TAC THENL [ALL_TAC; ASM_MESON_TAC[]] THEN AP_TERM_TAC THEN MATCH_MP_TAC SELECT_UNIQUE THEN REWRITE_TAC[] THEN X_GEN_TAC `y:A` THEN EQ_TAC THENL @@ -413,4 +413,4 @@ let WF_INDUCT_TAC = let th1 = MP (SPECL (tm::fvs) th0) (REFL tm) in let th2 = CONV_RULE(LAND_CONV qqconvs) (DISCH_ALL th1) in (MATCH_MP_TAC th2 THEN MAP_EVERY X_GEN_TAC fvs THEN - CONV_TAC(LAND_CONV qqconvs) THEN DISCH_THEN ASSUME_TAC) gl;; + (CONV_TAC "(LAND_CONV qqconvs)") (LAND_CONV qqconvs) THEN DISCH_THEN ASSUME_TAC) gl;;