File: types-helper.lisp

package info (click to toggle)
acl2 8.5dfsg-5
  • links: PTS
  • area: main
  • in suites: bookworm
  • size: 991,452 kB
  • sloc: lisp: 15,567,759; javascript: 22,820; cpp: 13,929; ansic: 12,092; perl: 7,150; java: 4,405; xml: 3,884; makefile: 3,507; sh: 3,187; ruby: 2,633; ml: 763; python: 746; yacc: 723; awk: 295; csh: 186; php: 171; lex: 154; tcl: 49; asm: 23; haskell: 17
file content (82 lines) | stat: -rw-r--r-- 1,923 bytes parent folder | download | duplicates (6)
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
; Arithmetic-5 Library
; Written by Robert Krug
; Copyright/License:
; See the LICENSE file at the top level of the arithmetic-5 library.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; types.lisp
;;;
;;; The neccesity for these theorems does not arise very often,
;;; but it can be very irritating when they do.
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(in-package "ACL2")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(local
 (include-book "../../support/top"))



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(local
 (defthm one-a
   (implies (and (< 0 x)
		 (< x 1))
	    (not (integerp x)))))

(local
 (defthm one-b
   (implies (and (< x 0)
		 (< -1 x))
	    (not (integerp x)))))

(local
 (defthm two-a
   (implies (and (real/rationalp x)
		 (< 1 x))
	    (and (< 0 (/ x))
		 (< (/ x) 1)))
   :hints (("Goal" :in-theory (enable NORMALIZE-<-/-TO-*-2)))))

(local
 (defthm two-b
   (implies (and (real/rationalp x)
		 (< x -1))
	    (and (< (/ x) 0)
		 (< -1 (/ x))))
   :hints (("Goal" :in-theory (enable NORMALIZE-<-/-TO-*-1)))))

(local
 (defthm three
   (implies (complex/complex-rationalp x)
	    (not (integerp (/ x))))))

(defthm not-integerp-/-1
  (implies (< 1 x)
	   (not (integerp (/ x))))
  :hints (("Goal" :cases ((real/rationalp x)
			  (complex/complex-rationalp x)))))

(defthm not-integerp-/-2
  (implies (< x -1)
	   (not (integerp (/ x))))
  :hints (("Goal" :cases ((real/rationalp x)
			  (complex/complex-rationalp x)))))

(defthm integerp-/-helper
  (implies (integerp x)
	   (equal (integerp (/ x))
		  (or (equal x -1)
		      (equal x 0)
		      (equal x 1))))
  :hints (("Goal" :use ((:instance not-integerp-/-1)
			(:instance not-integerp-/-2))
	          :in-theory (disable not-integerp-/-1
				      not-integerp-/-2))))