Structure dividesTheory


Source File Identifier index Theory binding index

signature dividesTheory =
sig
  type thm = Thm.thm
  
  (*  Definitions  *)
    val PRIMES_def : thm
    val divides_def : thm
    val prime_def : thm
  
  (*  Theorems  *)
    val ADD_DIV_EQ : thm
    val ALL_DIVIDES_0 : thm
    val DIVIDES_ADD_1 : thm
    val DIVIDES_ADD_2 : thm
    val DIVIDES_ANTISYM : thm
    val DIVIDES_COMMON_MULT_I : thm
    val DIVIDES_DIV : thm
    val DIVIDES_EQN : thm
    val DIVIDES_EQN_COMM : thm
    val DIVIDES_EVEN : thm
    val DIVIDES_FACT : thm
    val DIVIDES_LE : thm
    val DIVIDES_LEQ_OR_ZERO : thm
    val DIVIDES_MOD_0 : thm
    val DIVIDES_MULT : thm
    val DIVIDES_MULTIPLE : thm
    val DIVIDES_MULT_LCANCEL : thm
    val DIVIDES_MULT_LEFT : thm
    val DIVIDES_MULT_RCANCEL : thm
    val DIVIDES_ODD : thm
    val DIVIDES_ONE : thm
    val DIVIDES_PROD : thm
    val DIVIDES_REFL : thm
    val DIVIDES_SUB : thm
    val DIVIDES_TRANS : thm
    val DIV_EQ : thm
    val DIV_EQUAL_0 : thm
    val DIV_EQ_MULT : thm
    val DIV_LE : thm
    val DIV_LE_MONOTONE_REVERSE : thm
    val DIV_MOD_EQ_0 : thm
    val DIV_MULT_EQ : thm
    val DIV_MULT_LE : thm
    val DIV_POS : thm
    val DIV_SOLVE : thm
    val DIV_SOLVE_COMM : thm
    val EUCLID : thm
    val EUCLID_PRIMES : thm
    val EVEN_ALT : thm
    val EXP_DIVIDES : thm
    val EXP_divides : thm
    val FACT_0 : thm
    val FACT_1 : thm
    val FACT_2 : thm
    val FACT_DIV : thm
    val FACT_EQ_1 : thm
    val FACT_EQ_SELF : thm
    val FACT_GE_SELF : thm
    val INDEX_LESS_PRIMES : thm
    val INFINITE_PRIMES : thm
    val LEQ_DIVIDES_FACT : thm
    val LE_MULT_LE_DIV : thm
    val LT_PRIMES : thm
    val MULT_LT_DIV : thm
    val NEXT_LARGER_PRIME : thm
    val NOT_LT_DIVIDES : thm
    val NOT_PRIME_0 : thm
    val NOT_PRIME_1 : thm
    val ODD_ALT : thm
    val ONE_DIV : 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 SUB_DIV : thm
    val ZERO_DIVIDES : thm
    val ZERO_LT_PRIMES : thm
    val compute_divides : thm
    val divide_by_cofactor : thm
    val divides_exp : thm
    val divides_linear : thm
    val divides_linear_sub : thm
    val divides_pos : thm
    val divisor_pos : thm
    val factor_divides : thm
    val primePRIMES : thm
    val prime_MULT : thm
    val prime_always_bigger : thm
    val prime_divides_only_self : thm
(*
   [basicSize] Parent theory of "divides"
   
   [cv] Parent theory of "divides"
   
   [reduce] 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. a divides b ⇔ ∃q. b = q * a
   
   [prime_def]  Definition
      
      ⊢ ∀a. prime a ⇔ a ≠ 1 ∧ ∀b. b divides a ⇒ b = a ∨ b = 1
   
   [ADD_DIV_EQ]  Theorem
      
      ⊢ ∀n a b. a MOD n + b < n ⇒ (a + b) DIV n = a DIV n
   
   [ALL_DIVIDES_0]  Theorem
      
      ⊢ ∀a. a divides 0
   
   [DIVIDES_ADD_1]  Theorem
      
      ⊢ ∀a b c. a divides b ∧ a divides c ⇒ a divides b + c
   
   [DIVIDES_ADD_2]  Theorem
      
      ⊢ ∀a b c. a divides b ∧ a divides b + c ⇒ a divides c
   
   [DIVIDES_ANTISYM]  Theorem
      
      ⊢ ∀a b. a divides b ∧ b divides a ⇒ a = b
   
   [DIVIDES_COMMON_MULT_I]  Theorem
      
      ⊢ ∀a b c. a divides b ⇒ c * a divides c * b
   
   [DIVIDES_DIV]  Theorem
      
      ⊢ ∀p n. 0 < p ∧ p divides n ⇒ p * (n DIV p) = n
   
   [DIVIDES_EQN]  Theorem
      
      ⊢ ∀n. 0 < n ⇒ ∀m. n divides m ⇔ m = m DIV n * n
   
   [DIVIDES_EQN_COMM]  Theorem
      
      ⊢ ∀n. 0 < n ⇒ ∀m. n divides m ⇔ m = n * (m DIV n)
   
   [DIVIDES_EVEN]  Theorem
      
      ⊢ ∀m. EVEN m ⇒ ∀n. m divides n ⇒ EVEN n
   
   [DIVIDES_FACT]  Theorem
      
      ⊢ ∀b. 0 < b ⇒ b divides FACT b
   
   [DIVIDES_LE]  Theorem
      
      ⊢ ∀a b. 0 < b ∧ a divides b ⇒ a ≤ b
   
   [DIVIDES_LEQ_OR_ZERO]  Theorem
      
      ⊢ ∀m n. m divides n ⇒ m ≤ n ∨ n = 0
   
   [DIVIDES_MOD_0]  Theorem
      
      ⊢ ∀p n. 0 < p ⇒ (p divides n ⇔ n MOD p = 0)
   
   [DIVIDES_MULT]  Theorem
      
      ⊢ ∀a b c. a divides b ⇒ a divides b * c
   
   [DIVIDES_MULTIPLE]  Theorem
      
      ⊢ ∀m n. n divides m ⇒ ∀k. n divides k * m
   
   [DIVIDES_MULT_LCANCEL]  Theorem
      
      ⊢ ∀a b c. c ≠ 0 ⇒ (c * a divides c * b ⇔ a divides b)
   
   [DIVIDES_MULT_LEFT]  Theorem
      
      ⊢ ∀n m. n * m divides m ⇔ m = 0 ∨ n = 1
   
   [DIVIDES_MULT_RCANCEL]  Theorem
      
      ⊢ ∀a b c. c ≠ 0 ⇒ (a * c divides b * c ⇔ a divides b)
   
   [DIVIDES_ODD]  Theorem
      
      ⊢ ∀n. ODD n ⇒ ∀m. m divides n ⇒ ODD m
   
   [DIVIDES_ONE]  Theorem
      
      ⊢ ∀x. x divides 1 ⇔ x = 1
   
   [DIVIDES_PROD]  Theorem
      
      ⊢ ∀a b c d. a divides c ∧ b divides d ⇒ a * b divides c * d
   
   [DIVIDES_REFL]  Theorem
      
      ⊢ ∀a. a divides a
   
   [DIVIDES_SUB]  Theorem
      
      ⊢ ∀a b c. a divides b ∧ a divides c ⇒ a divides b − c
   
   [DIVIDES_TRANS]  Theorem
      
      ⊢ ∀a b c. a divides b ∧ b divides c ⇒ a divides c
   
   [DIV_EQ]  Theorem
      
      ⊢ ∀x y z. 0 < z ⇒ (x DIV z = y DIV z ⇔ x − x MOD z = y − y MOD z)
   
   [DIV_EQUAL_0]  Theorem
      
      ⊢ ∀m n. 0 < n ⇒ (m DIV n = 0 ⇔ m < n)
   
   [DIV_EQ_MULT]  Theorem
      
      ⊢ ∀n. 0 < n ⇒ ∀k m. m MOD n = 0 ⇒ (k * n = m ⇔ k = m DIV n)
   
   [DIV_LE]  Theorem
      
      ⊢ ∀x y z. 0 < y ∧ x ≤ y * z ⇒ x DIV y ≤ z
   
   [DIV_LE_MONOTONE_REVERSE]  Theorem
      
      ⊢ ∀x y. 0 < x ∧ 0 < y ∧ x ≤ y ⇒ ∀n. n DIV y ≤ n DIV x
   
   [DIV_MOD_EQ_0]  Theorem
      
      ⊢ ∀m n. 0 < m ⇒ (n DIV m = 0 ∧ n MOD m = 0 ⇔ n = 0)
   
   [DIV_MULT_EQ]  Theorem
      
      ⊢ ∀n. 0 < n ⇒ ∀q. n divides q ⇔ q DIV n * n = q
   
   [DIV_MULT_LE]  Theorem
      
      ⊢ ∀n. 0 < n ⇒ ∀q. q DIV n * n ≤ q
   
   [DIV_POS]  Theorem
      
      ⊢ ∀m n. 0 < m ∧ m ≤ n ⇒ 0 < n DIV m
   
   [DIV_SOLVE]  Theorem
      
      ⊢ ∀n. 0 < n ⇒ ∀x y. x * n = y ⇒ x = y DIV n
   
   [DIV_SOLVE_COMM]  Theorem
      
      ⊢ ∀n. 0 < n ⇒ ∀x y. n * x = y ⇒ x = y DIV n
   
   [EUCLID]  Theorem
      
      ⊢ ∀n. ∃p. n < p ∧ prime p
   
   [EUCLID_PRIMES]  Theorem
      
      ⊢ ∀n. ∃i. n < PRIMES i
   
   [EVEN_ALT]  Theorem
      
      ⊢ ∀n. EVEN n ⇔ 2 divides n
   
   [EXP_DIVIDES]  Theorem
      
      ⊢ a ** b divides a ** c ⇔
        b ≤ c ∨ a = 0 ∧ 0 < c ∨ a = 0 ∧ b = 0 ∨ a = 1
   
   [EXP_divides]  Theorem
      
      ⊢ ∀a b n. 0 < n ∧ a ** n divides b ⇒ a divides b
   
   [FACT_0]  Theorem
      
      ⊢ FACT 0 = 1
   
   [FACT_1]  Theorem
      
      ⊢ FACT 1 = 1
   
   [FACT_2]  Theorem
      
      ⊢ FACT 2 = 2
   
   [FACT_DIV]  Theorem
      
      ⊢ ∀n. 0 < n ⇒ FACT (n − 1) = FACT n DIV n
   
   [FACT_EQ_1]  Theorem
      
      ⊢ ∀n. FACT n = 1 ⇔ n ≤ 1
   
   [FACT_EQ_SELF]  Theorem
      
      ⊢ ∀n. FACT n = n ⇔ n = 1 ∨ n = 2
   
   [FACT_GE_SELF]  Theorem
      
      ⊢ ∀n. 0 < n ⇒ n ≤ FACT n
   
   [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 ⇒ m divides FACT n
   
   [LE_MULT_LE_DIV]  Theorem
      
      ⊢ ∀n. 0 < n ⇒ ∀k m. m MOD n = 0 ⇒ (m ≤ n * k ⇔ m DIV n ≤ k)
   
   [LT_PRIMES]  Theorem
      
      ⊢ ∀m n. m < n ⇒ PRIMES m < PRIMES n
   
   [MULT_LT_DIV]  Theorem
      
      ⊢ ∀n. 0 < n ⇒ ∀k m. m MOD n = 0 ⇒ (k * n < m ⇔ k < m DIV 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 ⇒ ¬(a divides b)
   
   [NOT_PRIME_0]  Theorem
      
      ⊢ ¬prime 0
   
   [NOT_PRIME_1]  Theorem
      
      ⊢ ¬prime 1
   
   [ODD_ALT]  Theorem
      
      ⊢ ∀n. ODD n ⇔ ¬(2 divides n)
   
   [ONE_DIV]  Theorem
      
      ⊢ ∀n. 1 < n ⇒ 1 DIV n = 0
   
   [ONE_DIVIDES_ALL]  Theorem
      
      ⊢ ∀a. 1 divides 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 ∧ p divides n
   
   [PRIME_INDEX]  Theorem
      
      ⊢ ∀p. prime p ⇔ ∃i. p = PRIMES i
   
   [PRIME_POS]  Theorem
      
      ⊢ ∀p. prime p ⇒ 0 < p
   
   [SUB_DIV]  Theorem
      
      ⊢ ∀m n. 0 < n ∧ n ≤ m ⇒ (m − n) DIV n = m DIV n − 1
   
   [ZERO_DIVIDES]  Theorem
      
      ⊢ 0 divides m ⇔ m = 0
   
   [ZERO_LT_PRIMES]  Theorem
      
      ⊢ ∀n. 0 < PRIMES n
   
   [compute_divides]  Theorem
      
      ⊢ ∀a b.
          a divides b ⇔
          if a = 0 then b = 0
          else if a = 1 then T
          else if b = 0 then T
          else b MOD a = 0
   
   [divide_by_cofactor]  Theorem
      
      ⊢ ∀m n. 0 < n ∧ m divides n ⇒ n DIV (n DIV m) = m
   
   [divides_exp]  Theorem
      
      ⊢ ∀n. 0 < n ⇒ ∀a b. a divides b ⇒ a divides b ** n
   
   [divides_linear]  Theorem
      
      ⊢ ∀a b c. c divides a ∧ c divides b ⇒ ∀h k. c divides h * a + k * b
   
   [divides_linear_sub]  Theorem
      
      ⊢ ∀a b c.
          c divides a ∧ c divides b ⇒
          ∀h k d. h * a = k * b + d ⇒ c divides d
   
   [divides_pos]  Theorem
      
      ⊢ ∀m n. 0 < n ∧ m divides n ⇒ 0 < m ∧ m ≤ n
   
   [divisor_pos]  Theorem
      
      ⊢ ∀m n. 0 < n ∧ m divides n ⇒ 0 < m
   
   [factor_divides]  Theorem
      
      ⊢ ∀m n. n divides m * n ∧ n divides n * m
   
   [primePRIMES]  Theorem
      
      ⊢ ∀n. prime (PRIMES n)
   
   [prime_MULT]  Theorem
      
      ⊢ ∀n m.
          prime (n * m) ⇔
          (n ≤ m ⇒ n = 1 ∧ prime m) ∧ (m ≤ n ⇒ m = 1 ∧ prime n)
   
   [prime_always_bigger]  Theorem
      
      ⊢ ∀n. ∃p. prime p ∧ n < p
   
   [prime_divides_only_self]  Theorem
      
      ⊢ ∀m n. prime m ∧ prime n ∧ m divides n ⇒ m = n
   
   
*)
end


Source File Identifier index Theory binding index

HOL 4, Trindemossen-2