File: zero.ml

package info (click to toggle)
hol88 2.02.19940316-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 63,052 kB
  • ctags: 19,365
  • sloc: ml: 199,939; ansic: 9,300; sh: 7,118; makefile: 6,076; lisp: 2,747; yacc: 894; sed: 201; cpp: 87; awk: 5
file content (198 lines) | stat: -rw-r--r-- 8,098 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                            %
%   FILE:         zero_ineq.ml                                               %
%   EDITOR:       Paul Curzon                                                %
%   DATE:         July 1991                                                  %
%   DESCRIPTION:  Inequalities about 0		     		     	     %
%                                                                            %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%*********************************  HISTORY  ********************************%
%									     %
%   This file is based on the theories of 				     %
%                                                                            %
%   Mike Benjamin							     %
%   Rachel Cardell-Oliver						     %
%   Paul Curzon							 	     %
%   Wim Ploegaerts							     %
%                                                                            %
%****************************************************************************%
%                                                                            %
% PC 21/4/93                                                                 %
%     Removed dependencies on several external files/theories                %
%                                                                            %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%****************************************************************************%
%                                                                            %
%  DEPENDANCIES :                                                            %
%                                                                            %
%                                                                            %
%****************************************************************************%

system `rm -f zero_ineq.th`;;

new_theory `zero_ineq`;;

% PC 22-4-92 These are no longer used%
%new_parent `ineq`;;%
%loadf `tools`;;%
%autoload_defs_and_thms `ineq`;;%

let autoload_defs_and_thms thy =
   map (\name. autoload_theory(`definition`,thy,name))
     (map fst (definitions thy));
   map (\name. autoload_theory(`theorem`,thy,name))
     (map fst (theorems thy)) in

   autoload_defs_and_thms `prim_rec`;;




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                            %
%   AUTHOR:       Wim Ploegaerts                                             %
%                                                                            %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%WP 4-9-90%
let M_LESS_0_LESS = prove_thm  (
  `M_LESS_0_LESS`,
  "! m n . (m < n) ==> (0 < n)",
  REPEAT GEN_TAC THEN
  DISCH_THEN \thm . ASSUME_TAC
% PC 12/8/92 CONJ1 LESS_EQ_LESS_TRANS -> LESS_EQ_LESS_TRANS %
%               (MATCH_MP (CONJ1 LESS_EQ_LESS_TRANS)%
               (MATCH_MP (LESS_EQ_LESS_TRANS)
                         (CONJ (SPEC "m:num" ZERO_LESS_EQ) thm)) THEN
  FIRST_ASSUM ACCEPT_TAC
);;
 
%<-------------------------------------------------------------------------->%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                            %
%   AUTHOR:       Paul Curzon                                                %
%   DATE:         June 1991                                                  %
%                                                                            %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

let LESS1EQ0 = prove_thm (`LESS1EQ0`,
       "!m . (m < 1) = (m = 0)",

 GEN_TAC THEN
 EQ_TAC THENL[

 (CONV_TAC (DEPTH_CONV num_CONV)) THEN
 (REPEAT STRIP_TAC) THEN
 (REWRITE_TAC[REWRITE_RULE
                      [ASSUME "m < (SUC 0)"; NOT_LESS_0]
                      (SPECL ["m:num";"0"] LESS_LEMMA1)]);

 DISCH_TAC THEN
 (REWRITE_TAC[ASSUME "m = 0"]) THEN
 (CONV_TAC (DEPTH_CONV num_CONV)) THEN
 (REWRITE_TAC[LESS_SUC_REFL])]);;

% (POP_ASSUM (\th . ASSUME_TAC (REWRITE_RULE[th]%
%                      (SPECL ["m:num";"0"] LESS_LEMMA1)))) THEN%
% (POP_TAC (REWRITE_RULE[NOT_LESS_0])) THEN%
% POP_REWRITE_TAC;%
% DISCH_TAC THEN%
% POP_REWRITE_TAC THEN%
% (CONV_TAC (DEPTH_CONV num_CONV)) THEN%
% (REWRITE_TAC[LESS_SUC_REFL])]);;%
%<-------------------------------------------------------------------------->%
let NOT_EQ_0 = prove_thm(`NOT_EQ_0`,
   "! m . ~ ( m = 0)  ==> (m >= 1)",
 INDUCT_TAC THENL
 [
 (REWRITE_TAC[]);

 (REPEAT STRIP_TAC) THEN
 (ASM_CASES_TAC "m = 0") THENL
   [
    REWRITE_TAC[ASSUME "m = 0"] THEN
%    POP_REWRITE_TAC THEN%
    (CONV_TAC (ONCE_DEPTH_CONV num_CONV)) THEN
    (REWRITE_TAC[LESS_EQ_REFL;GREATER_EQ]);

    (REWRITE_TAC[GREATER_EQ;ADD1]) THEN
    (ONCE_REWRITE_TAC[ADD_SYM]) THEN
    (REWRITE_TAC[LESS_EQ_ADD])
   ]
 ]
);;

%<-------------------------------------------------------------------------->%
let LESS_EQ_0_EQ = prove_thm(`LESS_EQ_0_EQ`,
"!m. m <= 0 ==> (m = 0)",
 (REPEAT STRIP_TAC) THEN
 (REWRITE_TAC [LESS_OR_EQ;
              (REWRITE_RULE[ASSUME "m <= 0"]
                           (SPEC_ALL 
                             (REWRITE_RULE[GSYM NOT_LESS_EQUAL]
                                          LESS_0_CASES)) )]));;
% (REPEAT STRIP_TAC) THEN%
% (REWRITE_TAC [LESS_OR_EQ]) THEN%
% (ASSUME_TAC (SPEC_ALL (REWRITE_RULE[GSYM NOT_LESS_EQ_LESS] LESS_0_CASES))) THEN %
% PC 12/8/92 NOT_LESS_EQ_LESS -> NOT_LESS_EQUAL %
% (ASSUME_TAC (SPEC_ALL (REWRITE_RULE[GSYM NOT_LESS_EQUAL] LESS_0_CASES))) THEN%
% (REWRITE_A1_WITH_A2_THEN ASSUME_TAC) THEN%
% (ASM_REWRITE_TAC[]));;%

%<-------------------------------------------------------------------------->%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                            %
%   AUTHOR:       Mike Benjamin                                              %
%                                                                            %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%   ***************************************************************************
    *                                                                         *
    *    If a number is greater than zero then it's not zero.                 *
    *                                                                         *
    *    GREATER_NOT_ZERO = |- !x. 0 < x ==> ~(x = 0)                         *
    *                                                                         *
    **************************************************************************%

%let GREATER_NOT_ZERO = prove_thm (`GREATER_NOT_ZERO`,%
%"! (x:num). (0 < x) ==> ~(x = 0)",%
%GEN_TAC%
%THEN CUT_THM_TAC (SPEC "x:num" num_CASES)%
%THEN DISJ_LEFT_TAC%
%THENL [%
% ASM_REWRITE_TAC [LESS_REFL];%
% EXISTS_LEFT_TAC%
% THEN ASM_REWRITE_TAC []%
% THEN DISCH_TAC%
% THEN IMP_RES_TAC (SPEC "SUC (n:num)" (SPEC "0" LESS_NOT_EQ))%
% THEN N_REVERSE_TAC 1%
% THEN N_REWRITE_TAC 1]);;%

%New proof by PC 22-4-93%
let GREATER_NOT_ZERO = prove_thm (`GREATER_NOT_ZERO`,
"! (x:num). (0 < x) ==> ~(x = 0)",
 (REPEAT STRIP_TAC) THEN
 UNDISCH_TAC "0<x" THEN
 ASM_REWRITE_TAC[LESS_REFL]);;


%****************************************************************************%
%                                                                            %
% AUTHOR        : Rachel Cardell-Oliver                                      %
% DATE          : 1990                                                       %
%                                                                            %
%****************************************************************************%


let NOT_0_AND_MORE =prove_thm(`NOT_0_AND_MORE`,
 "!x:num. ~( (x=0) /\ (0<x) )",
  REPEAT STRIP_TAC THEN UNDISCH_TAC "0<x" THEN ASM_REWRITE_TAC[LESS_REFL]);;


close_theory ();;