src/HOL/Real/PReal.ML
changeset 7825 1be9b63e7d93
parent 7499 23e090051cb8
child 8919 d00b01ed8539
equal deleted inserted replaced
7824:1a85ba81d019 7825:1be9b63e7d93
    49 by (auto_tac (claset() addIs [(equals0I RS sym)],
    49 by (auto_tac (claset() addIs [(equals0I RS sym)],
    50               simpset() addsimps [psubset_def]));
    50               simpset() addsimps [psubset_def]));
    51 qed "mem_Rep_preal_Ex";
    51 qed "mem_Rep_preal_Ex";
    52 
    52 
    53 Goalw [preal_def] 
    53 Goalw [preal_def] 
    54       "[| {} < A; A < {q::prat. True}; \
    54       "[| {} < A; A < UNIV; \
    55 \              (!y: A. ((!z. z < y --> z: A) & \
    55 \              (!y: A. ((!z. z < y --> z: A) & \
    56 \                        (? u: A. y < u))) |] ==> A : preal";
    56 \                        (? u: A. y < u))) |] ==> A : preal";
    57 by (Fast_tac 1);
    57 by (Fast_tac 1);
    58 qed "prealI1";
    58 qed "prealI1";
    59     
    59     
    60 Goalw [preal_def] 
    60 Goalw [preal_def] 
    61       "[| {} < A; A < {q::prat. True}; \
    61       "[| {} < A; A < UNIV; \
    62 \              !y: A. (!z. z < y --> z: A); \
    62 \              !y: A. (!z. z < y --> z: A); \
    63 \              !y: A. (? u: A. y < u) |] ==> A : preal";
    63 \              !y: A. (? u: A. y < u) |] ==> A : preal";
    64 by (Best_tac 1);
    64 by (Best_tac 1);
    65 qed "prealI2";
    65 qed "prealI2";
    66 
    66 
    67 Goalw [preal_def] 
    67 Goalw [preal_def] 
    68       "A : preal ==> {} < A & A < {q::prat. True} & \
    68       "A : preal ==> {} < A & A < UNIV & \
    69 \                         (!y: A. ((!z. z < y --> z: A) & \
    69 \                         (!y: A. ((!z. z < y --> z: A) & \
    70 \                                  (? u: A. y < u)))";
    70 \                                  (? u: A. y < u)))";
    71 by (Fast_tac 1);
    71 by (Fast_tac 1);
    72 qed "prealE_lemma";
    72 qed "prealE_lemma";
    73 
    73 
    79 
    79 
    80 Goalw [preal_def] "A : preal ==> {} < A";
    80 Goalw [preal_def] "A : preal ==> {} < A";
    81 by (Fast_tac 1);
    81 by (Fast_tac 1);
    82 qed "prealE_lemma1";
    82 qed "prealE_lemma1";
    83 
    83 
    84 Goalw [preal_def] "A : preal ==> A < {q::prat. True}";
    84 Goalw [preal_def] "A : preal ==> A < UNIV";
    85 by (Fast_tac 1);
    85 by (Fast_tac 1);
    86 qed "prealE_lemma2";
    86 qed "prealE_lemma2";
    87 
    87 
    88 Goalw [preal_def] "A : preal ==> !y: A. (!z. z < y --> z: A)";
    88 Goalw [preal_def] "A : preal ==> !y: A. (!z. z < y --> z: A)";
    89 by (Fast_tac 1);
    89 by (Fast_tac 1);
   233 by (Auto_tac THEN (REPEAT(etac ballE 1)) THEN Auto_tac);
   233 by (Auto_tac THEN (REPEAT(etac ballE 1)) THEN Auto_tac);
   234 by (dtac prat_add_less_mono 1);
   234 by (dtac prat_add_less_mono 1);
   235 by (auto_tac (claset(),simpset() addsimps [prat_less_not_refl]));
   235 by (auto_tac (claset(),simpset() addsimps [prat_less_not_refl]));
   236 qed "preal_not_mem_add_set_Ex";
   236 qed "preal_not_mem_add_set_Ex";
   237 
   237 
   238 Goal "{w. ? x: Rep_preal R. ? y:Rep_preal S. w = x + y} < {q. True}";
   238 Goal "{w. ? x: Rep_preal R. ? y:Rep_preal S. w = x + y} < UNIV";
   239 by (auto_tac (claset() addSIs [psubsetI],simpset()));
   239 by (auto_tac (claset() addSIs [psubsetI],simpset()));
   240 by (cut_inst_tac [("R","R"),("S","S")] preal_not_mem_add_set_Ex 1);
   240 by (cut_inst_tac [("R","R"),("S","S")] preal_not_mem_add_set_Ex 1);
   241 by (etac exE 1);
   241 by (etac exE 1);
   242 by (eres_inst_tac [("c","q")] equalityCE 1);
   242 by (eres_inst_tac [("c","q")] equalityCE 1);
   243 by Auto_tac;
   243 by Auto_tac;
   323 by (Auto_tac  THEN (REPEAT(etac ballE 1)) THEN Auto_tac );
   323 by (Auto_tac  THEN (REPEAT(etac ballE 1)) THEN Auto_tac );
   324 by (dtac prat_mult_less_mono 1);
   324 by (dtac prat_mult_less_mono 1);
   325 by (auto_tac (claset(),simpset() addsimps [prat_less_not_refl]));
   325 by (auto_tac (claset(),simpset() addsimps [prat_less_not_refl]));
   326 qed "preal_not_mem_mult_set_Ex";
   326 qed "preal_not_mem_mult_set_Ex";
   327 
   327 
   328 Goal "{w. ? x: Rep_preal R. ? y:Rep_preal S. w = x * y} < {q. True}";
   328 Goal "{w. ? x: Rep_preal R. ? y:Rep_preal S. w = x * y} < UNIV";
   329 by (auto_tac (claset() addSIs [psubsetI],simpset()));
   329 by (auto_tac (claset() addSIs [psubsetI],simpset()));
   330 by (cut_inst_tac [("R","R"),("S","S")] preal_not_mem_mult_set_Ex 1);
   330 by (cut_inst_tac [("R","R"),("S","S")] preal_not_mem_mult_set_Ex 1);
   331 by (etac exE 1);
   331 by (etac exE 1);
   332 by (eres_inst_tac [("c","q")] equalityCE 1);
   332 by (eres_inst_tac [("c","q")] equalityCE 1);
   333 by Auto_tac;
   333 by Auto_tac;
   553 by (eres_inst_tac [("x","qinv y")] ballE 1);
   553 by (eres_inst_tac [("x","qinv y")] ballE 1);
   554 by (dtac prat_less_trans 1);
   554 by (dtac prat_less_trans 1);
   555 by (auto_tac (claset(),simpset() addsimps [prat_less_not_refl]));
   555 by (auto_tac (claset(),simpset() addsimps [prat_less_not_refl]));
   556 qed "preal_not_mem_inv_set_Ex";
   556 qed "preal_not_mem_inv_set_Ex";
   557 
   557 
   558 Goal "{x. ? y. x < y & qinv y ~:  Rep_preal A} < {q. True}";
   558 Goal "{x. ? y. x < y & qinv y ~:  Rep_preal A} < UNIV";
   559 by (auto_tac (claset() addSIs [psubsetI],simpset()));
   559 by (auto_tac (claset() addSIs [psubsetI],simpset()));
   560 by (cut_inst_tac [("A","A")]  preal_not_mem_inv_set_Ex 1);
   560 by (cut_inst_tac [("A","A")]  preal_not_mem_inv_set_Ex 1);
   561 by (etac exE 1);
   561 by (etac exE 1);
   562 by (eres_inst_tac [("c","x")] equalityCE 1);
   562 by (eres_inst_tac [("c","x")] equalityCE 1);
   563 by Auto_tac;
   563 by Auto_tac;
   875 by Auto_tac;
   875 by Auto_tac;
   876 by (cut_inst_tac [("x","x"),("y","n")] prat_self_less_add_right 1);
   876 by (cut_inst_tac [("x","x"),("y","n")] prat_self_less_add_right 1);
   877 by (auto_tac (claset() addDs [Rep_preal RS prealE_lemma3b],simpset()));
   877 by (auto_tac (claset() addDs [Rep_preal RS prealE_lemma3b],simpset()));
   878 qed "lemma_ex_not_mem_less_left_add1";
   878 qed "lemma_ex_not_mem_less_left_add1";
   879 
   879 
   880 Goal "{d. ? n. n ~: Rep_preal(A) & n + d : Rep_preal(B)} < {q. True}";
   880 Goal "{d. ? n. n ~: Rep_preal(A) & n + d : Rep_preal(B)} < UNIV";
   881 by (auto_tac (claset() addSIs [psubsetI],simpset()));
   881 by (auto_tac (claset() addSIs [psubsetI],simpset()));
   882 by (cut_inst_tac [("A","A"),("B","B")] lemma_ex_not_mem_less_left_add1 1);
   882 by (cut_inst_tac [("A","A"),("B","B")] lemma_ex_not_mem_less_left_add1 1);
   883 by (etac exE 1);
   883 by (etac exE 1);
   884 by (eres_inst_tac [("c","q")] equalityCE 1);
   884 by (eres_inst_tac [("c","q")] equalityCE 1);
   885 by Auto_tac;
   885 by Auto_tac;
  1113 by (res_inst_tac [("x","x")] exI 1);
  1113 by (res_inst_tac [("x","x")] exI 1);
  1114 by (auto_tac (claset() addSDs [bspec],simpset()));
  1114 by (auto_tac (claset() addSDs [bspec],simpset()));
  1115 qed "preal_sup_not_mem_Ex1";
  1115 qed "preal_sup_not_mem_Ex1";
  1116 
  1116 
  1117 Goal "? Y. (! X: P. X < Y)  \                                    
  1117 Goal "? Y. (! X: P. X < Y)  \                                    
  1118 \         ==> {w. ? X: P. w: Rep_preal(X)} < {q. True}";       (**)
  1118 \         ==> {w. ? X: P. w: Rep_preal(X)} < UNIV";       (**)
  1119 by (dtac preal_sup_not_mem_Ex 1);
  1119 by (dtac preal_sup_not_mem_Ex 1);
  1120 by (auto_tac (claset() addSIs [psubsetI],simpset()));
  1120 by (auto_tac (claset() addSIs [psubsetI],simpset()));
  1121 by (eres_inst_tac [("c","q")] equalityCE 1);
  1121 by (eres_inst_tac [("c","q")] equalityCE 1);
  1122 by Auto_tac;
  1122 by Auto_tac;
  1123 qed "preal_sup_set_not_prat_set";
  1123 qed "preal_sup_set_not_prat_set";
  1124 
  1124 
  1125 Goal "? Y. (! X: P. X <= Y)  \
  1125 Goal "? Y. (! X: P. X <= Y)  \
  1126 \         ==> {w. ? X: P. w: Rep_preal(X)} < {q. True}";
  1126 \         ==> {w. ? X: P. w: Rep_preal(X)} < UNIV";
  1127 by (dtac preal_sup_not_mem_Ex1 1);
  1127 by (dtac preal_sup_not_mem_Ex1 1);
  1128 by (auto_tac (claset() addSIs [psubsetI],simpset()));
  1128 by (auto_tac (claset() addSIs [psubsetI],simpset()));
  1129 by (eres_inst_tac [("c","q")] equalityCE 1);
  1129 by (eres_inst_tac [("c","q")] equalityCE 1);
  1130 by Auto_tac;
  1130 by Auto_tac;
  1131 qed "preal_sup_set_not_prat_set1";
  1131 qed "preal_sup_set_not_prat_set1";