Structure dividesTheory
signature dividesTheory =
sig
type thm = Thm.thm
(* Definitions *)
val PRIMES_def : thm
val divides_def : thm
val prime_def : thm
(* Theorems *)
val ALL_DIVIDES_0 : thm
val DIVIDES_ADD_1 : thm
val DIVIDES_ADD_2 : thm
val DIVIDES_ANTISYM : thm
val DIVIDES_FACT : thm
val DIVIDES_LE : thm
val DIVIDES_LEQ_OR_ZERO : thm
val DIVIDES_MULT : thm
val DIVIDES_MULT_LEFT : thm
val DIVIDES_ONE : thm
val DIVIDES_REFL : thm
val DIVIDES_SUB : thm
val DIVIDES_TRANS : thm
val EUCLID : thm
val EUCLID_PRIMES : thm
val INDEX_LESS_PRIMES : thm
val INFINITE_PRIMES : thm
val LEQ_DIVIDES_FACT : thm
val LT_PRIMES : thm
val NEXT_LARGER_PRIME : thm
val NOT_LT_DIVIDES : thm
val NOT_PRIME_0 : thm
val NOT_PRIME_1 : thm
val ONE_DIVIDES_ALL : thm
val ONE_LT_PRIME : thm
val ONE_LT_PRIMES : thm
val PRIMES_11 : thm
val PRIMES_NO_GAP : thm
val PRIMES_ONTO : thm
val PRIME_2 : thm
val PRIME_3 : thm
val PRIME_FACTOR : thm
val PRIME_INDEX : thm
val PRIME_POS : thm
val ZERO_DIVIDES : thm
val ZERO_LT_PRIMES : thm
val compute_divides : thm
val primePRIMES : thm
val prime_divides_only_self : thm
val divides_grammars : type_grammar.grammar * term_grammar.grammar
(*
[numeral] Parent theory of "divides"
[while] Parent theory of "divides"
[PRIMES_def] Definition
⊢ PRIMES 0 = 2 ∧ ∀n. PRIMES (SUC n) = LEAST p. prime p ∧ PRIMES n < p
[divides_def] Definition
⊢ ∀a b. divides a b ⇔ ∃q. b = q * a
[prime_def] Definition
⊢ ∀a. prime a ⇔ a ≠ 1 ∧ ∀b. divides b a ⇒ b = a ∨ b = 1
[ALL_DIVIDES_0] Theorem
⊢ ∀a. divides a 0
[DIVIDES_ADD_1] Theorem
⊢ ∀a b c. divides a b ∧ divides a c ⇒ divides a (b + c)
[DIVIDES_ADD_2] Theorem
⊢ ∀a b c. divides a b ∧ divides a (b + c) ⇒ divides a c
[DIVIDES_ANTISYM] Theorem
⊢ ∀a b. divides a b ∧ divides b a ⇒ a = b
[DIVIDES_FACT] Theorem
⊢ ∀b. 0 < b ⇒ divides b (FACT b)
[DIVIDES_LE] Theorem
⊢ ∀a b. 0 < b ∧ divides a b ⇒ a ≤ b
[DIVIDES_LEQ_OR_ZERO] Theorem
⊢ ∀m n. divides m n ⇒ m ≤ n ∨ n = 0
[DIVIDES_MULT] Theorem
⊢ ∀a b c. divides a b ⇒ divides a (b * c)
[DIVIDES_MULT_LEFT] Theorem
⊢ ∀n m. divides (n * m) m ⇔ m = 0 ∨ n = 1
[DIVIDES_ONE] Theorem
⊢ ∀x. divides x 1 ⇔ x = 1
[DIVIDES_REFL] Theorem
⊢ ∀a. divides a a
[DIVIDES_SUB] Theorem
⊢ ∀a b c. divides a b ∧ divides a c ⇒ divides a (b − c)
[DIVIDES_TRANS] Theorem
⊢ ∀a b c. divides a b ∧ divides b c ⇒ divides a c
[EUCLID] Theorem
⊢ ∀n. ∃p. n < p ∧ prime p
[EUCLID_PRIMES] Theorem
⊢ ∀n. ∃i. n < PRIMES i
[INDEX_LESS_PRIMES] Theorem
⊢ ∀n. n < PRIMES n
[INFINITE_PRIMES] Theorem
⊢ ∀n. PRIMES n < PRIMES (SUC n)
[LEQ_DIVIDES_FACT] Theorem
⊢ ∀m n. 0 < m ∧ m ≤ n ⇒ divides m (FACT n)
[LT_PRIMES] Theorem
⊢ ∀m n. m < n ⇒ PRIMES m < PRIMES n
[NEXT_LARGER_PRIME] Theorem
⊢ ∀n. ∃i. n < PRIMES i ∧ ∀j. j < i ⇒ PRIMES j ≤ n
[NOT_LT_DIVIDES] Theorem
⊢ ∀a b. 0 < b ∧ b < a ⇒ ¬divides a b
[NOT_PRIME_0] Theorem
⊢ ¬prime 0
[NOT_PRIME_1] Theorem
⊢ ¬prime 1
[ONE_DIVIDES_ALL] Theorem
⊢ ∀a. divides 1 a
[ONE_LT_PRIME] Theorem
⊢ ∀p. prime p ⇒ 1 < p
[ONE_LT_PRIMES] Theorem
⊢ ∀n. 1 < PRIMES n
[PRIMES_11] Theorem
⊢ ∀m n. PRIMES m = PRIMES n ⇒ m = n
[PRIMES_NO_GAP] Theorem
⊢ ∀n p. PRIMES n < p ∧ p < PRIMES (SUC n) ∧ prime p ⇒ F
[PRIMES_ONTO] Theorem
⊢ ∀p. prime p ⇒ ∃i. PRIMES i = p
[PRIME_2] Theorem
⊢ prime 2
[PRIME_3] Theorem
⊢ prime 3
[PRIME_FACTOR] Theorem
⊢ ∀n. n ≠ 1 ⇒ ∃p. prime p ∧ divides p n
[PRIME_INDEX] Theorem
⊢ ∀p. prime p ⇔ ∃i. p = PRIMES i
[PRIME_POS] Theorem
⊢ ∀p. prime p ⇒ 0 < p
[ZERO_DIVIDES] Theorem
⊢ divides 0 m ⇔ m = 0
[ZERO_LT_PRIMES] Theorem
⊢ ∀n. 0 < PRIMES n
[compute_divides] Theorem
⊢ ∀a b.
divides a b ⇔
if a = 0 then b = 0
else if a = 1 then T
else if b = 0 then T
else b MOD a = 0
[primePRIMES] Theorem
⊢ ∀n. prime (PRIMES n)
[prime_divides_only_self] Theorem
⊢ ∀m n. prime m ∧ prime n ∧ divides m n ⇒ m = n
*)
end
HOL 4, Kananaskis-14