Structure hratTheory


Source File Identifier index Theory binding index

signature hratTheory =
sig
  type thm = Thm.thm

  (*  Definitions  *)
    val hrat_1 : thm
    val hrat_ABS_def : thm
    val hrat_REP_def : thm
    val hrat_TY_DEF : thm
    val hrat_add : thm
    val hrat_bijections : thm
    val hrat_inv : thm
    val hrat_mul : thm
    val hrat_sucint : thm
    val trat_1 : thm
    val trat_add : thm
    val trat_eq : thm
    val trat_inv : thm
    val trat_mul : thm
    val trat_sucint : thm

  (*  Theorems  *)
    val HRAT_ADD_ASSOC : thm
    val HRAT_ADD_SYM : thm
    val HRAT_ADD_TOTAL : thm
    val HRAT_ARCH : thm
    val HRAT_LDISTRIB : thm
    val HRAT_MUL_ASSOC : thm
    val HRAT_MUL_LID : thm
    val HRAT_MUL_LINV : thm
    val HRAT_MUL_SYM : thm
    val HRAT_NOZERO : thm
    val HRAT_SUCINT : thm
    val TRAT_ADD_ASSOC : thm
    val TRAT_ADD_SYM : thm
    val TRAT_ADD_SYM_EQ : thm
    val TRAT_ADD_TOTAL : thm
    val TRAT_ADD_WELLDEFINED : thm
    val TRAT_ADD_WELLDEFINED2 : thm
    val TRAT_ARCH : thm
    val TRAT_EQ_AP : thm
    val TRAT_EQ_EQUIV : thm
    val TRAT_EQ_REFL : thm
    val TRAT_EQ_SYM : thm
    val TRAT_EQ_TRANS : thm
    val TRAT_INV_WELLDEFINED : thm
    val TRAT_LDISTRIB : thm
    val TRAT_MUL_ASSOC : thm
    val TRAT_MUL_LID : thm
    val TRAT_MUL_LINV : thm
    val TRAT_MUL_SYM : thm
    val TRAT_MUL_SYM_EQ : thm
    val TRAT_MUL_WELLDEFINED : thm
    val TRAT_MUL_WELLDEFINED2 : thm
    val TRAT_NOZERO : thm
    val TRAT_SUCINT : thm
    val TRAT_SUCINT_0 : thm
    val hrat_ABS_REP_CLASS : thm
    val hrat_QUOTIENT : thm

  val hrat_grammars : type_grammar.grammar * term_grammar.grammar
(*
   [quotient_list] Parent theory of "hrat"

   [quotient_option] Parent theory of "hrat"

   [quotient_pair] Parent theory of "hrat"

   [quotient_sum] Parent theory of "hrat"

   [hrat_1]  Definition

      |- hrat_1 = hrat_ABS trat_1

   [hrat_ABS_def]  Definition

      |- ∀r. hrat_ABS r = hrat_ABS_CLASS ($trat_eq r)

   [hrat_REP_def]  Definition

      |- ∀a. hrat_REP a = $@ (hrat_REP_CLASS a)

   [hrat_TY_DEF]  Definition

      |- ∃rep. TYPE_DEFINITION (λc. ∃r. r trat_eq r ∧ (c = $trat_eq r)) rep

   [hrat_add]  Definition

      |- ∀T1 T2.
           T1 hrat_add T2 = hrat_ABS (hrat_REP T1 trat_add hrat_REP T2)

   [hrat_bijections]  Definition

      |- (∀a. hrat_ABS_CLASS (hrat_REP_CLASS a) = a) ∧
         ∀r.
           (λc. ∃r. r trat_eq r ∧ (c = $trat_eq r)) r ⇔
           (hrat_REP_CLASS (hrat_ABS_CLASS r) = r)

   [hrat_inv]  Definition

      |- ∀T1. hrat_inv T1 = hrat_ABS (trat_inv (hrat_REP T1))

   [hrat_mul]  Definition

      |- ∀T1 T2.
           T1 hrat_mul T2 = hrat_ABS (hrat_REP T1 trat_mul hrat_REP T2)

   [hrat_sucint]  Definition

      |- ∀T1. hrat_sucint T1 = hrat_ABS (trat_sucint T1)

   [trat_1]  Definition

      |- trat_1 = (0,0)

   [trat_add]  Definition

      |- ∀x y x' y'.
           (x,y) trat_add (x',y') =
           (PRE (SUC x * SUC y' + SUC x' * SUC y),PRE (SUC y * SUC y'))

   [trat_eq]  Definition

      |- ∀x y x' y'.
           (x,y) trat_eq (x',y') ⇔ (SUC x * SUC y' = SUC x' * SUC y)

   [trat_inv]  Definition

      |- ∀x y. trat_inv (x,y) = (y,x)

   [trat_mul]  Definition

      |- ∀x y x' y'.
           (x,y) trat_mul (x',y') =
           (PRE (SUC x * SUC x'),PRE (SUC y * SUC y'))

   [trat_sucint]  Definition

      |- (trat_sucint 0 = trat_1) ∧
         ∀n. trat_sucint (SUC n) = trat_sucint n trat_add trat_1

   [HRAT_ADD_ASSOC]  Theorem

      |- ∀h i j. h hrat_add (i hrat_add j) = h hrat_add i hrat_add j

   [HRAT_ADD_SYM]  Theorem

      |- ∀h i. h hrat_add i = i hrat_add h

   [HRAT_ADD_TOTAL]  Theorem

      |- ∀h i. (h = i) ∨ (∃d. h = i hrat_add d) ∨ ∃d. i = h hrat_add d

   [HRAT_ARCH]  Theorem

      |- ∀h. ∃n d. hrat_sucint n = h hrat_add d

   [HRAT_LDISTRIB]  Theorem

      |- ∀h i j.
           h hrat_mul (i hrat_add j) = h hrat_mul i hrat_add h hrat_mul j

   [HRAT_MUL_ASSOC]  Theorem

      |- ∀h i j. h hrat_mul (i hrat_mul j) = h hrat_mul i hrat_mul j

   [HRAT_MUL_LID]  Theorem

      |- ∀h. hrat_1 hrat_mul h = h

   [HRAT_MUL_LINV]  Theorem

      |- ∀h. hrat_inv h hrat_mul h = hrat_1

   [HRAT_MUL_SYM]  Theorem

      |- ∀h i. h hrat_mul i = i hrat_mul h

   [HRAT_NOZERO]  Theorem

      |- ∀h i. h hrat_add i ≠ h

   [HRAT_SUCINT]  Theorem

      |- (hrat_sucint 0 = hrat_1) ∧
         ∀n. hrat_sucint (SUC n) = hrat_sucint n hrat_add hrat_1

   [TRAT_ADD_ASSOC]  Theorem

      |- ∀h i j. h trat_add (i trat_add j) trat_eq h trat_add i trat_add j

   [TRAT_ADD_SYM]  Theorem

      |- ∀h i. h trat_add i trat_eq i trat_add h

   [TRAT_ADD_SYM_EQ]  Theorem

      |- ∀h i. h trat_add i = i trat_add h

   [TRAT_ADD_TOTAL]  Theorem

      |- ∀h i.
           h trat_eq i ∨ (∃d. h trat_eq i trat_add d) ∨
           ∃d. i trat_eq h trat_add d

   [TRAT_ADD_WELLDEFINED]  Theorem

      |- ∀p q r. p trat_eq q ⇒ p trat_add r trat_eq q trat_add r

   [TRAT_ADD_WELLDEFINED2]  Theorem

      |- ∀p1 p2 q1 q2.
           p1 trat_eq p2 ∧ q1 trat_eq q2 ⇒
           p1 trat_add q1 trat_eq p2 trat_add q2

   [TRAT_ARCH]  Theorem

      |- ∀h. ∃n d. trat_sucint n trat_eq h trat_add d

   [TRAT_EQ_AP]  Theorem

      |- ∀p q. (p = q) ⇒ p trat_eq q

   [TRAT_EQ_EQUIV]  Theorem

      |- ∀p q. p trat_eq q ⇔ ($trat_eq p = $trat_eq q)

   [TRAT_EQ_REFL]  Theorem

      |- ∀p. p trat_eq p

   [TRAT_EQ_SYM]  Theorem

      |- ∀p q. p trat_eq q ⇔ q trat_eq p

   [TRAT_EQ_TRANS]  Theorem

      |- ∀p q r. p trat_eq q ∧ q trat_eq r ⇒ p trat_eq r

   [TRAT_INV_WELLDEFINED]  Theorem

      |- ∀p q. p trat_eq q ⇒ trat_inv p trat_eq trat_inv q

   [TRAT_LDISTRIB]  Theorem

      |- ∀h i j.
           h trat_mul (i trat_add j) trat_eq
           h trat_mul i trat_add h trat_mul j

   [TRAT_MUL_ASSOC]  Theorem

      |- ∀h i j. h trat_mul (i trat_mul j) trat_eq h trat_mul i trat_mul j

   [TRAT_MUL_LID]  Theorem

      |- ∀h. trat_1 trat_mul h trat_eq h

   [TRAT_MUL_LINV]  Theorem

      |- ∀h. trat_inv h trat_mul h trat_eq trat_1

   [TRAT_MUL_SYM]  Theorem

      |- ∀h i. h trat_mul i trat_eq i trat_mul h

   [TRAT_MUL_SYM_EQ]  Theorem

      |- ∀h i. h trat_mul i = i trat_mul h

   [TRAT_MUL_WELLDEFINED]  Theorem

      |- ∀p q r. p trat_eq q ⇒ p trat_mul r trat_eq q trat_mul r

   [TRAT_MUL_WELLDEFINED2]  Theorem

      |- ∀p1 p2 q1 q2.
           p1 trat_eq p2 ∧ q1 trat_eq q2 ⇒
           p1 trat_mul q1 trat_eq p2 trat_mul q2

   [TRAT_NOZERO]  Theorem

      |- ∀h i. ¬(h trat_add i trat_eq h)

   [TRAT_SUCINT]  Theorem

      |- trat_sucint 0 trat_eq trat_1 ∧
         ∀n. trat_sucint (SUC n) trat_eq trat_sucint n trat_add trat_1

   [TRAT_SUCINT_0]  Theorem

      |- ∀n. trat_sucint n trat_eq (n,0)

   [hrat_ABS_REP_CLASS]  Theorem

      |- (∀a. hrat_ABS_CLASS (hrat_REP_CLASS a) = a) ∧
         ∀c.
           (∃r. r trat_eq r ∧ (c = $trat_eq r)) ⇔
           (hrat_REP_CLASS (hrat_ABS_CLASS c) = c)

   [hrat_QUOTIENT]  Theorem

      |- QUOTIENT $trat_eq hrat_ABS hrat_REP


*)
end


Source File Identifier index Theory binding index

HOL 4, Kananaskis-10