Structure extrealTheory


Source File Identifier index Theory binding index

signature extrealTheory =
sig
  type thm = Thm.thm

  (*  Definitions  *)
    val EXTREAL_SUM_IMAGE_DEF : thm
    val Q_set_def : thm
    val ceiling_def : thm
    val ext_mono_decreasing_def : thm
    val ext_mono_increasing_def : thm
    val ext_suminf_def : thm
    val extreal_TY_DEF : thm
    val extreal_abs_primitive_def : thm
    val extreal_add_curried_def : thm
    val extreal_add_tupled_primitive_def : thm
    val extreal_ainv_def : thm
    val extreal_case_def : thm
    val extreal_div_def : thm
    val extreal_exp_def : thm
    val extreal_inf_def : thm
    val extreal_inv_def : thm
    val extreal_le_curried_def : thm
    val extreal_le_tupled_primitive_def : thm
    val extreal_lg_def : thm
    val extreal_logr_def : thm
    val extreal_lt_def : thm
    val extreal_max_def : thm
    val extreal_min_def : thm
    val extreal_mul_curried_def : thm
    val extreal_mul_tupled_primitive_def : thm
    val extreal_of_num_def : thm
    val extreal_pow_def : thm
    val extreal_size_def : thm
    val extreal_sqrt_def : thm
    val extreal_sub_curried_def : thm
    val extreal_sub_tupled_primitive_def : thm
    val extreal_sup_def : thm
    val mono_decreasing_def : thm
    val mono_increasing_def : thm
    val open_interval_def : thm
    val open_intervals_set_def : thm
    val rational_intervals_def : thm
    val real_def : thm

  (*  Theorems  *)
    val ADD_IN_Q : thm
    val CEILING_LBOUND : thm
    val CEILING_UBOUND : thm
    val CMUL_IN_Q : thm
    val COUNTABLE_ENUM_Q : thm
    val COUNTABLE_RATIONAL_INTERVALS : thm
    val CROSS_COUNTABLE : thm
    val CROSS_COUNTABLE_LEMMA1 : thm
    val CROSS_COUNTABLE_LEMMA2 : thm
    val CROSS_COUNTABLE_UNIV : thm
    val DIV_IN_Q : thm
    val EXTREAL_ARCH : thm
    val EXTREAL_ARCH_POW : thm
    val EXTREAL_ARCH_POW_INV : thm
    val EXTREAL_EQ_LADD : thm
    val EXTREAL_SUM_IMAGE_0 : thm
    val EXTREAL_SUM_IMAGE_ADD : thm
    val EXTREAL_SUM_IMAGE_CMUL : thm
    val EXTREAL_SUM_IMAGE_CMUL2 : thm
    val EXTREAL_SUM_IMAGE_COUNT : thm
    val EXTREAL_SUM_IMAGE_CROSS_SYM : thm
    val EXTREAL_SUM_IMAGE_DISJOINT_UNION : thm
    val EXTREAL_SUM_IMAGE_EQ : thm
    val EXTREAL_SUM_IMAGE_EQ_CARD : thm
    val EXTREAL_SUM_IMAGE_EXTREAL_SUM_IMAGE : thm
    val EXTREAL_SUM_IMAGE_FINITE_CONST : thm
    val EXTREAL_SUM_IMAGE_FINITE_SAME : thm
    val EXTREAL_SUM_IMAGE_IF_ELIM : thm
    val EXTREAL_SUM_IMAGE_IMAGE : thm
    val EXTREAL_SUM_IMAGE_INTER_ELIM : thm
    val EXTREAL_SUM_IMAGE_INTER_NONZERO : thm
    val EXTREAL_SUM_IMAGE_INV_CARD_EQ_1 : thm
    val EXTREAL_SUM_IMAGE_IN_IF : thm
    val EXTREAL_SUM_IMAGE_IN_IF_ALT : thm
    val EXTREAL_SUM_IMAGE_MONO : thm
    val EXTREAL_SUM_IMAGE_MONO_SET : thm
    val EXTREAL_SUM_IMAGE_NORMAL : thm
    val EXTREAL_SUM_IMAGE_NOT_INFTY : thm
    val EXTREAL_SUM_IMAGE_NOT_NEG_INF : thm
    val EXTREAL_SUM_IMAGE_NOT_POS_INF : thm
    val EXTREAL_SUM_IMAGE_POS : thm
    val EXTREAL_SUM_IMAGE_POS_MEM_LE : thm
    val EXTREAL_SUM_IMAGE_SING : thm
    val EXTREAL_SUM_IMAGE_SPOS : thm
    val EXTREAL_SUM_IMAGE_SUB : thm
    val EXTREAL_SUM_IMAGE_THM : thm
    val EXTREAL_SUM_IMAGE_ZERO : thm
    val EXTREAL_SUM_IMAGE_ZERO_DIFF : thm
    val INV_IN_Q : thm
    val LOGR_MONO_LE : thm
    val LOGR_MONO_LE_IMP : thm
    val MUL_IN_Q : thm
    val NUM_IN_Q : thm
    val OPP_IN_Q : thm
    val POW_NEG_ODD : thm
    val POW_POS_EVEN : thm
    val Q_COUNTABLE : thm
    val Q_DENSE_IN_R : thm
    val Q_DENSE_IN_R_LEMMA : thm
    val Q_INFINITE : thm
    val Q_not_infty : thm
    val REAL_ARCH_POW : thm
    val REAL_LE_MUL_EPSILON : thm
    val REAL_LE_RDIV_EQ_NEG : thm
    val REAL_LT_LMUL_0_NEG : thm
    val REAL_LT_LMUL_NEG_0 : thm
    val REAL_LT_LMUL_NEG_0_NEG : thm
    val REAL_LT_RDIV_EQ_NEG : thm
    val REAL_LT_RMUL_0_NEG : thm
    val REAL_LT_RMUL_NEG_0 : thm
    val REAL_LT_RMUL_NEG_0_NEG : thm
    val SIMP_EXTREAL_ARCH : thm
    val SIMP_REAL_ARCH : thm
    val SIMP_REAL_ARCH_NEG : thm
    val SUB_IN_Q : thm
    val abs_bounds : thm
    val abs_bounds_lt : thm
    val abs_pos : thm
    val abs_refl : thm
    val add2_sub2 : thm
    val add_assoc : thm
    val add_comm : thm
    val add_infty : thm
    val add_ldistrib : thm
    val add_ldistrib_neg : thm
    val add_ldistrib_normal : thm
    val add_ldistrib_normal2 : thm
    val add_ldistrib_pos : thm
    val add_lzero : thm
    val add_not_infty : thm
    val add_pow2 : thm
    val add_rdistrib : thm
    val add_rdistrib_normal : thm
    val add_rdistrib_normal2 : thm
    val add_rzero : thm
    val add_sub : thm
    val add_sub2 : thm
    val datatype_extreal : thm
    val div_add : thm
    val div_one : thm
    val entire : thm
    val eq_add_sub_switch : thm
    val eq_neg : thm
    val eq_sub_ladd : thm
    val eq_sub_ladd_normal : thm
    val eq_sub_radd : thm
    val eq_sub_switch : thm
    val ext_mono_decreasing_suc : thm
    val ext_mono_increasing_suc : thm
    val ext_suminf_add : thm
    val ext_suminf_cmul : thm
    val ext_suminf_cmul_alt : thm
    val ext_suminf_lt_infty : thm
    val ext_suminf_mono : thm
    val ext_suminf_sub : thm
    val ext_suminf_sum : thm
    val ext_suminf_suminf : thm
    val extreal_11 : thm
    val extreal_Axiom : thm
    val extreal_abs_def : thm
    val extreal_abs_ind : thm
    val extreal_add_def : thm
    val extreal_add_ind : thm
    val extreal_case_cong : thm
    val extreal_cases : thm
    val extreal_distinct : thm
    val extreal_div_eq : thm
    val extreal_eq_zero : thm
    val extreal_induction : thm
    val extreal_le_def : thm
    val extreal_le_ind : thm
    val extreal_lt_eq : thm
    val extreal_mul_def : thm
    val extreal_mul_ind : thm
    val extreal_nchotomy : thm
    val extreal_not_infty : thm
    val extreal_sub_add : thm
    val extreal_sub_def : thm
    val extreal_sub_ind : thm
    val fourth_cancel : thm
    val half_between : thm
    val half_cancel : thm
    val inf_cminus : thm
    val inf_const : thm
    val inf_const_alt : thm
    val inf_const_over_set : thm
    val inf_eq : thm
    val inf_le : thm
    val inf_le_imp : thm
    val inf_lt_infty : thm
    val inf_min : thm
    val inf_seq : thm
    val inf_suc : thm
    val inv_1over : thm
    val inv_one : thm
    val inv_pos : thm
    val le_01 : thm
    val le_02 : thm
    val le_add : thm
    val le_add2 : thm
    val le_addr : thm
    val le_addr_imp : thm
    val le_antisym : thm
    val le_epsilon : thm
    val le_inf : thm
    val le_infty : thm
    val le_inv : thm
    val le_ladd : thm
    val le_ladd_imp : thm
    val le_ldiv : thm
    val le_lmul_imp : thm
    val le_lneg : thm
    val le_lsub_imp : thm
    val le_lt : thm
    val le_max : thm
    val le_max1 : thm
    val le_max2 : thm
    val le_min : thm
    val le_mul : thm
    val le_mul_epsilon : thm
    val le_mul_neg : thm
    val le_neg : thm
    val le_num : thm
    val le_pow2 : thm
    val le_radd : thm
    val le_radd_imp : thm
    val le_rdiv : thm
    val le_refl : thm
    val le_rmul_imp : thm
    val le_sub_eq : thm
    val le_sub_eq2 : thm
    val le_sub_imp : thm
    val le_sup : thm
    val le_sup_imp : thm
    val le_total : thm
    val le_trans : thm
    val let_add : thm
    val let_add2 : thm
    val let_add2_alt : thm
    val let_mul : thm
    val let_trans : thm
    val linv_uniq : thm
    val logr_not_infty : thm
    val lt_01 : thm
    val lt_02 : thm
    val lt_add : thm
    val lt_add2 : thm
    val lt_addl : thm
    val lt_antisym : thm
    val lt_imp_le : thm
    val lt_imp_ne : thm
    val lt_infty : thm
    val lt_ladd : thm
    val lt_ldiv : thm
    val lt_le : thm
    val lt_lmul : thm
    val lt_mul : thm
    val lt_mul2 : thm
    val lt_mul_neg : thm
    val lt_neg : thm
    val lt_radd : thm
    val lt_rdiv : thm
    val lt_rdiv_neg : thm
    val lt_refl : thm
    val lt_rmul : thm
    val lt_sub : thm
    val lt_sub_imp : thm
    val lt_total : thm
    val lt_trans : thm
    val lte_add : thm
    val lte_mul : thm
    val lte_trans : thm
    val max_comm : thm
    val max_infty : thm
    val max_le : thm
    val max_le2_imp : thm
    val max_refl : thm
    val min_comm : thm
    val min_infty : thm
    val min_le : thm
    val min_le1 : thm
    val min_le2 : thm
    val min_le2_imp : thm
    val min_refl : thm
    val mono_decreasing_suc : thm
    val mono_increasing_converges_to_sup : thm
    val mono_increasing_suc : thm
    val mul_assoc : thm
    val mul_comm : thm
    val mul_le : thm
    val mul_let : thm
    val mul_lneg : thm
    val mul_lone : thm
    val mul_lt : thm
    val mul_lte : thm
    val mul_lzero : thm
    val mul_not_infty : thm
    val mul_not_infty2 : thm
    val mul_rneg : thm
    val mul_rone : thm
    val mul_rzero : thm
    val ne_01 : thm
    val ne_02 : thm
    val neg_0 : thm
    val neg_eq0 : thm
    val neg_minus1 : thm
    val neg_mul2 : thm
    val neg_neg : thm
    val neg_sub : thm
    val normal_real : thm
    val num_not_infty : thm
    val pow2_sqrt : thm
    val pow_0 : thm
    val pow_1 : thm
    val pow_2 : thm
    val pow_add : thm
    val pow_le : thm
    val pow_le_mono : thm
    val pow_lt : thm
    val pow_lt2 : thm
    val pow_minus1 : thm
    val pow_mul : thm
    val pow_neg_odd : thm
    val pow_not_infty : thm
    val pow_pos_even : thm
    val pow_pos_le : thm
    val pow_pos_lt : thm
    val pow_zero : thm
    val pow_zero_imp : thm
    val quotient_normal : thm
    val rat_not_infty : thm
    val real_normal : thm
    val rinv_uniq : thm
    val sqrt_mono_le : thm
    val sqrt_pos_le : thm
    val sqrt_pos_lt : thm
    val sqrt_pow2 : thm
    val sub_0 : thm
    val sub_add : thm
    val sub_add2 : thm
    val sub_ldistrib : thm
    val sub_le_eq : thm
    val sub_le_eq2 : thm
    val sub_le_imp : thm
    val sub_le_imp2 : thm
    val sub_le_switch : thm
    val sub_le_switch2 : thm
    val sub_le_zero : thm
    val sub_lneg : thm
    val sub_lt_imp : thm
    val sub_lt_imp2 : thm
    val sub_lt_zero : thm
    val sub_lt_zero2 : thm
    val sub_lzero : thm
    val sub_not_infty : thm
    val sub_rdistrib : thm
    val sub_refl : thm
    val sub_rneg : thm
    val sub_rzero : thm
    val sub_zero_le : thm
    val sub_zero_lt : thm
    val sub_zero_lt2 : thm
    val sup_add_mono : thm
    val sup_cmul : thm
    val sup_const : thm
    val sup_const_alt : thm
    val sup_const_over_set : thm
    val sup_eq : thm
    val sup_le : thm
    val sup_le_mono : thm
    val sup_le_sup_imp : thm
    val sup_lt : thm
    val sup_lt_epsilon : thm
    val sup_lt_infty : thm
    val sup_max : thm
    val sup_mono : thm
    val sup_num : thm
    val sup_seq : thm
    val sup_suc : thm
    val sup_sum_mono : thm
    val third_cancel : thm
    val thirds_between : thm

  val extreal_grammars : type_grammar.grammar * term_grammar.grammar
(*
   [util_prob] Parent theory of "extreal"

   [EXTREAL_SUM_IMAGE_DEF]  Definition

      |- ∀f s. SIGMA f s = ITSET (λe acc. f e + acc) s 0

   [Q_set_def]  Definition

      |- Q_set =
         {x | ∃a b. (x = &a / &b) ∧ 0 < &b} ∪
         {x | ∃a b. (x = -(&a / &b)) ∧ 0 < &b}

   [ceiling_def]  Definition

      |- ∀x. ceiling (Normal x) = LEAST n. x ≤ &n

   [ext_mono_decreasing_def]  Definition

      |- ∀f. mono_decreasing f ⇔ ∀m n. m ≤ n ⇒ f n ≤ f m

   [ext_mono_increasing_def]  Definition

      |- ∀f. mono_increasing f ⇔ ∀m n. m ≤ n ⇒ f m ≤ f n

   [ext_suminf_def]  Definition

      |- ∀f. suminf f = sup (IMAGE (λn. SIGMA f (count n)) 𝕌(:num))

   [extreal_TY_DEF]  Definition

      |- ∃rep.
           TYPE_DEFINITION
             (λa0.
                ∀'extreal' .
                  (∀a0.
                     (a0 = ind_type$CONSTR 0 ARB (λn. ind_type$BOTTOM)) ∨
                     (a0 =
                      ind_type$CONSTR (SUC 0) ARB (λn. ind_type$BOTTOM)) ∨
                     (∃a.
                        a0 =
                        (λa.
                           ind_type$CONSTR (SUC (SUC 0)) a
                             (λn. ind_type$BOTTOM)) a) ⇒
                     'extreal' a0) ⇒
                  'extreal' a0) rep

   [extreal_abs_primitive_def]  Definition

      |- abs =
         WFREC (@R. WF R)
           (λextreal_abs a.
              case a of Normal x => I (Normal (abs x)) | _ => I PosInf)

   [extreal_add_curried_def]  Definition

      |- ∀x x1. x + x1 = extreal_add_tupled (x,x1)

   [extreal_add_tupled_primitive_def]  Definition

      |- extreal_add_tupled =
         WFREC (@R. WF R)
           (λextreal_add_tupled a'.
              case a' of
                (NegInf,NegInf) => I NegInf
              | (NegInf,PosInf) => I PosInf
              | (NegInf,Normal v6) => I NegInf
              | (PosInf,a) => I PosInf
              | (Normal x,NegInf) => I NegInf
              | (Normal x,PosInf) => I PosInf
              | (Normal x,Normal y) => I (Normal (x + y)))

   [extreal_ainv_def]  Definition

      |- (-NegInf = PosInf) ∧ (-PosInf = NegInf) ∧
         ∀x. -Normal x = Normal (-x)

   [extreal_case_def]  Definition

      |- (∀v v1 f. extreal_CASE NegInf v v1 f = v) ∧
         (∀v v1 f. extreal_CASE PosInf v v1 f = v1) ∧
         ∀a v v1 f. extreal_CASE (Normal a) v v1 f = f a

   [extreal_div_def]  Definition

      |- ∀x y. x / y = x * inv y

   [extreal_exp_def]  Definition

      |- (∀x. exp (Normal x) = Normal (exp x)) ∧ (exp PosInf = PosInf) ∧
         (exp NegInf = Normal 0)

   [extreal_inf_def]  Definition

      |- ∀p. inf p = -sup (IMAGE numeric_negate p)

   [extreal_inv_def]  Definition

      |- (inv NegInf = Normal 0) ∧ (inv PosInf = Normal 0) ∧
         ∀x. inv (Normal x) = Normal (inv x)

   [extreal_le_curried_def]  Definition

      |- ∀x x1. x ≤ x1 ⇔ extreal_le_tupled (x,x1)

   [extreal_le_tupled_primitive_def]  Definition

      |- extreal_le_tupled =
         WFREC (@R. WF R)
           (λextreal_le_tupled a'.
              case a' of
                (NegInf,a) => I T
              | (PosInf,NegInf) => I F
              | (PosInf,PosInf) => I T
              | (PosInf,Normal v6) => I F
              | (Normal x,NegInf) => I F
              | (Normal x,PosInf) => I T
              | (Normal x,Normal y) => I (x ≤ y))

   [extreal_lg_def]  Definition

      |- ∀x. lg x = logr 2 x

   [extreal_logr_def]  Definition

      |- (∀b x. logr b (Normal x) = Normal (logr b x)) ∧
         (∀b. logr b PosInf = PosInf) ∧ ∀b. logr b NegInf = NegInf

   [extreal_lt_def]  Definition

      |- ∀x y. x < y ⇔ ¬(y ≤ x)

   [extreal_max_def]  Definition

      |- ∀x y. max x y = if x ≤ y then y else x

   [extreal_min_def]  Definition

      |- ∀x y. min x y = if x ≤ y then x else y

   [extreal_mul_curried_def]  Definition

      |- ∀x x1. x * x1 = extreal_mul_tupled (x,x1)

   [extreal_mul_tupled_primitive_def]  Definition

      |- extreal_mul_tupled =
         WFREC (@R. WF R)
           (λextreal_mul_tupled a.
              case a of
                (NegInf,NegInf) => I PosInf
              | (NegInf,PosInf) => I NegInf
              | (NegInf,Normal y) =>
                  I
                    (if y = 0 then Normal 0
                     else if 0 < y then NegInf
                     else PosInf)
              | (PosInf,NegInf) => I NegInf
              | (PosInf,PosInf) => I PosInf
              | (PosInf,Normal y') =>
                  I
                    (if y' = 0 then Normal 0
                     else if 0 < y' then PosInf
                     else NegInf)
              | (Normal x,NegInf) =>
                  I
                    (if x = 0 then Normal 0
                     else if 0 < x then NegInf
                     else PosInf)
              | (Normal x,PosInf) =>
                  I
                    (if x = 0 then Normal 0
                     else if 0 < x then PosInf
                     else NegInf)
              | (Normal x,Normal y'') => I (Normal (x * y'')))

   [extreal_of_num_def]  Definition

      |- ∀n. &n = Normal (&n)

   [extreal_pow_def]  Definition

      |- (∀a n. Normal a pow n = Normal (a pow n)) ∧
         (∀n. PosInf pow n = if n = 0 then Normal 1 else PosInf) ∧
         ∀n.
           NegInf pow n =
           if n = 0 then Normal 1 else if EVEN n then PosInf else NegInf

   [extreal_size_def]  Definition

      |- (extreal_size NegInf = 0) ∧ (extreal_size PosInf = 0) ∧
         ∀a. extreal_size (Normal a) = 1

   [extreal_sqrt_def]  Definition

      |- (∀x. sqrt (Normal x) = Normal (sqrt x)) ∧ (sqrt PosInf = PosInf)

   [extreal_sub_curried_def]  Definition

      |- ∀x x1. x − x1 = extreal_sub_tupled (x,x1)

   [extreal_sub_tupled_primitive_def]  Definition

      |- extreal_sub_tupled =
         WFREC (@R. WF R)
           (λextreal_sub_tupled a'.
              case a' of
                (NegInf,NegInf) => I PosInf
              | (NegInf,PosInf) => I NegInf
              | (NegInf,Normal v6) => I NegInf
              | (PosInf,a) => I PosInf
              | (Normal x,NegInf) => I PosInf
              | (Normal x,PosInf) => I NegInf
              | (Normal x,Normal y) => I (Normal (x − y)))

   [extreal_sup_def]  Definition

      |- ∀p.
           sup p =
           if ∀x. (∀y. p y ⇒ y ≤ x) ⇒ (x = PosInf) then PosInf
           else if ∀x. p x ⇒ (x = NegInf) then NegInf
           else Normal (sup (λr. p (Normal r)))

   [mono_decreasing_def]  Definition

      |- ∀f. mono_decreasing f ⇔ ∀m n. m ≤ n ⇒ f n ≤ f m

   [mono_increasing_def]  Definition

      |- ∀f. mono_increasing f ⇔ ∀m n. m ≤ n ⇒ f m ≤ f n

   [open_interval_def]  Definition

      |- ∀a b. open_interval a b = {x | a < x ∧ x < b}

   [open_intervals_set_def]  Definition

      |- open_intervals_set =
         {open_interval a b | a ∈ 𝕌(:extreal) ∧ b ∈ 𝕌(:extreal)}

   [rational_intervals_def]  Definition

      |- rational_intervals = {open_interval a b | a ∈ Q_set ∧ b ∈ Q_set}

   [real_def]  Definition

      |- ∀x.
           real x =
           if (x = NegInf) ∨ (x = PosInf) then 0 else @r. x = Normal r

   [ADD_IN_Q]  Theorem

      |- ∀x y. x ∈ Q_set ∧ y ∈ Q_set ⇒ x + y ∈ Q_set

   [CEILING_LBOUND]  Theorem

      |- ∀x. Normal x ≤ &ceiling (Normal x)

   [CEILING_UBOUND]  Theorem

      |- ∀x. 0 ≤ x ⇒ &ceiling (Normal x) < Normal x + 1

   [CMUL_IN_Q]  Theorem

      |- ∀z x. x ∈ Q_set ⇒ &z * x ∈ Q_set ∧ -&z * x ∈ Q_set

   [COUNTABLE_ENUM_Q]  Theorem

      |- ∀c. countable c ⇔ (c = ∅) ∨ ∃f. c = IMAGE f Q_set

   [COUNTABLE_RATIONAL_INTERVALS]  Theorem

      |- countable rational_intervals

   [CROSS_COUNTABLE]  Theorem

      |- ∀s. countable s ∧ countable t ⇒ countable (s × t)

   [CROSS_COUNTABLE_LEMMA1]  Theorem

      |- ∀s. countable s ∧ FINITE s ∧ countable t ⇒ countable (s × t)

   [CROSS_COUNTABLE_LEMMA2]  Theorem

      |- ∀s. countable s ∧ countable t ∧ FINITE t ⇒ countable (s × t)

   [CROSS_COUNTABLE_UNIV]  Theorem

      |- countable (𝕌(:num) × 𝕌(:num))

   [DIV_IN_Q]  Theorem

      |- ∀x y. x ∈ Q_set ∧ y ∈ Q_set ∧ y ≠ 0 ⇒ x / y ∈ Q_set

   [EXTREAL_ARCH]  Theorem

      |- ∀x. 0 < x ⇒ ∀y. y ≠ PosInf ⇒ ∃n. y < &n * x

   [EXTREAL_ARCH_POW]  Theorem

      |- ∀x. x ≠ PosInf ⇒ ∃n. x < 2 pow n

   [EXTREAL_ARCH_POW_INV]  Theorem

      |- ∀e. 0 < e ⇒ ∃n. Normal ((1 / 2) pow n) < e

   [EXTREAL_EQ_LADD]  Theorem

      |- ∀x y z. x ≠ NegInf ∧ x ≠ PosInf ⇒ ((x + y = x + z) ⇔ (y = z))

   [EXTREAL_SUM_IMAGE_0]  Theorem

      |- ∀f s. FINITE s ∧ (∀x. x ∈ s ⇒ (f x = 0)) ⇒ (SIGMA f s = 0)

   [EXTREAL_SUM_IMAGE_ADD]  Theorem

      |- ∀s.
           FINITE s ⇒
           ∀f f'. SIGMA (λx. f x + f' x) s = SIGMA f s + SIGMA f' s

   [EXTREAL_SUM_IMAGE_CMUL]  Theorem

      |- ∀s.
           FINITE s ⇒
           ∀f c.
             0 ≤ c ∨ (∀x. x ∈ s ⇒ 0 ≤ f x) ⇒
             (SIGMA (λx. Normal c * f x) s = Normal c * SIGMA f s)

   [EXTREAL_SUM_IMAGE_CMUL2]  Theorem

      |- ∀s f c.
           FINITE s ∧ (∀x. x ∈ s ⇒ f x ≠ NegInf) ⇒
           (SIGMA (λx. Normal c * f x) s = Normal c * SIGMA f s)

   [EXTREAL_SUM_IMAGE_COUNT]  Theorem

      |- ∀f.
           (SIGMA f (count 2) = f 0 + f 1) ∧
           (SIGMA f (count 3) = f 0 + f 1 + f 2) ∧
           (SIGMA f (count 4) = f 0 + f 1 + f 2 + f 3) ∧
           (SIGMA f (count 5) = f 0 + f 1 + f 2 + f 3 + f 4)

   [EXTREAL_SUM_IMAGE_CROSS_SYM]  Theorem

      |- ∀f s1 s2.
           FINITE s1 ∧ FINITE s2 ⇒
           (SIGMA (λ(x,y). f (x,y)) (s1 × s2) =
            SIGMA (λ(y,x). f (x,y)) (s2 × s1))

   [EXTREAL_SUM_IMAGE_DISJOINT_UNION]  Theorem

      |- ∀s s'.
           FINITE s ∧ FINITE s' ∧ DISJOINT s s' ⇒
           ∀f. SIGMA f (s ∪ s') = SIGMA f s + SIGMA f s'

   [EXTREAL_SUM_IMAGE_EQ]  Theorem

      |- ∀s.
           FINITE s ⇒
           ∀f f'. (∀x. x ∈ s ⇒ (f x = f' x)) ⇒ (SIGMA f s = SIGMA f' s)

   [EXTREAL_SUM_IMAGE_EQ_CARD]  Theorem

      |- ∀s. FINITE s ⇒ (SIGMA (λx. if x ∈ s then 1 else 0) s = &CARD s)

   [EXTREAL_SUM_IMAGE_EXTREAL_SUM_IMAGE]  Theorem

      |- ∀s s' f.
           FINITE s ∧ FINITE s' ⇒
           (SIGMA (λx. SIGMA (f x) s') s =
            SIGMA (λx. f (FST x) (SND x)) (s × s'))

   [EXTREAL_SUM_IMAGE_FINITE_CONST]  Theorem

      |- ∀P. FINITE P ⇒ ∀f x. (∀y. f y = x) ⇒ (SIGMA f P = &CARD P * x)

   [EXTREAL_SUM_IMAGE_FINITE_SAME]  Theorem

      |- ∀s.
           FINITE s ⇒
           ∀f p.
             p ∈ s ∧ (∀q. q ∈ s ⇒ (f p = f q)) ⇒
             (SIGMA f s = &CARD s * f p)

   [EXTREAL_SUM_IMAGE_IF_ELIM]  Theorem

      |- ∀s P f.
           FINITE s ∧ (∀x. x ∈ s ⇒ P x) ⇒
           (SIGMA (λx. if P x then f x else 0) s = SIGMA f s)

   [EXTREAL_SUM_IMAGE_IMAGE]  Theorem

      |- ∀s.
           FINITE s ⇒
           ∀f'.
             INJ f' s (IMAGE f' s) ⇒
             ∀f. SIGMA f (IMAGE f' s) = SIGMA (f o f') s

   [EXTREAL_SUM_IMAGE_INTER_ELIM]  Theorem

      |- ∀s.
           FINITE s ⇒
           ∀f s'. (∀x. x ∉ s' ⇒ (f x = 0)) ⇒ (SIGMA f (s ∩ s') = SIGMA f s)

   [EXTREAL_SUM_IMAGE_INTER_NONZERO]  Theorem

      |- ∀s. FINITE s ⇒ ∀f. SIGMA f (s ∩ (λp. f p ≠ 0)) = SIGMA f s

   [EXTREAL_SUM_IMAGE_INV_CARD_EQ_1]  Theorem

      |- ∀s.
           s ≠ ∅ ∧ FINITE s ⇒
           (SIGMA (λx. if x ∈ s then inv (&CARD s) else 0) s = 1)

   [EXTREAL_SUM_IMAGE_IN_IF]  Theorem

      |- ∀s.
           FINITE s ⇒
           ∀f. SIGMA f s = SIGMA (λx. if x ∈ s then f x else 0) s

   [EXTREAL_SUM_IMAGE_IN_IF_ALT]  Theorem

      |- ∀s f z.
           FINITE s ⇒ (SIGMA f s = SIGMA (λx. if x ∈ s then f x else z) s)

   [EXTREAL_SUM_IMAGE_MONO]  Theorem

      |- ∀s.
           FINITE s ⇒
           ∀f f'. (∀x. x ∈ s ⇒ f x ≤ f' x) ⇒ SIGMA f s ≤ SIGMA f' s

   [EXTREAL_SUM_IMAGE_MONO_SET]  Theorem

      |- ∀f s t.
           FINITE s ∧ FINITE t ∧ s ⊆ t ∧ (∀x. x ∈ t ⇒ 0 ≤ f x) ⇒
           SIGMA f s ≤ SIGMA f t

   [EXTREAL_SUM_IMAGE_NORMAL]  Theorem

      |- ∀f s. FINITE s ⇒ (SIGMA (λx. Normal (f x)) s = Normal (SIGMA f s))

   [EXTREAL_SUM_IMAGE_NOT_INFTY]  Theorem

      |- ∀f s.
           (FINITE s ∧ (∀x. x ∈ s ⇒ f x ≠ NegInf) ⇒ SIGMA f s ≠ NegInf) ∧
           (FINITE s ∧ (∀x. x ∈ s ⇒ f x ≠ PosInf) ⇒ SIGMA f s ≠ PosInf)

   [EXTREAL_SUM_IMAGE_NOT_NEG_INF]  Theorem

      |- ∀f s. FINITE s ∧ (∀x. x ∈ s ⇒ f x ≠ NegInf) ⇒ SIGMA f s ≠ NegInf

   [EXTREAL_SUM_IMAGE_NOT_POS_INF]  Theorem

      |- ∀f s. FINITE s ∧ (∀x. x ∈ s ⇒ f x ≠ PosInf) ⇒ SIGMA f s ≠ PosInf

   [EXTREAL_SUM_IMAGE_POS]  Theorem

      |- ∀f s. FINITE s ∧ (∀x. x ∈ s ⇒ 0 ≤ f x) ⇒ 0 ≤ SIGMA f s

   [EXTREAL_SUM_IMAGE_POS_MEM_LE]  Theorem

      |- ∀f s.
           FINITE s ∧ (∀x. x ∈ s ⇒ 0 ≤ f x) ⇒ ∀x. x ∈ s ⇒ f x ≤ SIGMA f s

   [EXTREAL_SUM_IMAGE_SING]  Theorem

      |- ∀f e. SIGMA f {e} = f e

   [EXTREAL_SUM_IMAGE_SPOS]  Theorem

      |- ∀f s. FINITE s ∧ s ≠ ∅ ∧ (∀x. x ∈ s ⇒ 0 < f x) ⇒ 0 < SIGMA f s

   [EXTREAL_SUM_IMAGE_SUB]  Theorem

      |- ∀s.
           FINITE s ⇒
           ∀f f'.
             (∀x. x ∈ s ⇒ f' x ≠ NegInf) ∨ (∀x. x ∈ s ⇒ f' x ≠ PosInf) ⇒
             (SIGMA (λx. f x − f' x) s = SIGMA f s − SIGMA f' s)

   [EXTREAL_SUM_IMAGE_THM]  Theorem

      |- ∀f.
           (SIGMA f ∅ = 0) ∧
           ∀e s.
             FINITE s ⇒ (SIGMA f (e INSERT s) = f e + SIGMA f (s DELETE e))

   [EXTREAL_SUM_IMAGE_ZERO]  Theorem

      |- ∀s. FINITE s ⇒ (SIGMA (λx. 0) s = 0)

   [EXTREAL_SUM_IMAGE_ZERO_DIFF]  Theorem

      |- ∀s.
           FINITE s ⇒
           ∀f t. (∀x. x ∈ t ⇒ (f x = 0)) ⇒ (SIGMA f s = SIGMA f (s DIFF t))

   [INV_IN_Q]  Theorem

      |- ∀x. x ∈ Q_set ∧ x ≠ 0 ⇒ 1 / x ∈ Q_set

   [LOGR_MONO_LE]  Theorem

      |- ∀x y b. 0 < x ∧ 0 < y ∧ 1 < b ⇒ (logr b x ≤ logr b y ⇔ x ≤ y)

   [LOGR_MONO_LE_IMP]  Theorem

      |- ∀x y b. 0 < x ∧ x ≤ y ∧ 1 ≤ b ⇒ logr b x ≤ logr b y

   [MUL_IN_Q]  Theorem

      |- ∀x y. x ∈ Q_set ∧ y ∈ Q_set ⇒ x * y ∈ Q_set

   [NUM_IN_Q]  Theorem

      |- ∀n. &n ∈ Q_set ∧ -&n ∈ Q_set

   [OPP_IN_Q]  Theorem

      |- ∀x. x ∈ Q_set ⇒ -x ∈ Q_set

   [POW_NEG_ODD]  Theorem

      |- ∀x. x < 0 ⇒ (x pow n < 0 ⇔ ODD n)

   [POW_POS_EVEN]  Theorem

      |- ∀x. x < 0 ⇒ (0 < x pow n ⇔ EVEN n)

   [Q_COUNTABLE]  Theorem

      |- countable Q_set

   [Q_DENSE_IN_R]  Theorem

      |- ∀x y. x < y ⇒ ∃r. r ∈ Q_set ∧ x < r ∧ r < y

   [Q_DENSE_IN_R_LEMMA]  Theorem

      |- ∀x y. 0 ≤ x ∧ x < y ⇒ ∃r. r ∈ Q_set ∧ x < r ∧ r < y

   [Q_INFINITE]  Theorem

      |- INFINITE Q_set

   [Q_not_infty]  Theorem

      |- ∀x. x ∈ Q_set ⇒ ∃y. x = Normal y

   [REAL_ARCH_POW]  Theorem

      |- ∀x. ∃n. x < 2 pow n

   [REAL_LE_MUL_EPSILON]  Theorem

      |- ∀x y. (∀z. 0 < z ∧ z < 1 ⇒ z * x ≤ y) ⇒ x ≤ y

   [REAL_LE_RDIV_EQ_NEG]  Theorem

      |- ∀x y z. z < 0 ⇒ (y / z ≤ x ⇔ x * z ≤ y)

   [REAL_LT_LMUL_0_NEG]  Theorem

      |- ∀x y. 0 < x * y ∧ x < 0 ⇒ y < 0

   [REAL_LT_LMUL_NEG_0]  Theorem

      |- ∀x y. x * y < 0 ∧ 0 < x ⇒ y < 0

   [REAL_LT_LMUL_NEG_0_NEG]  Theorem

      |- ∀x y. x * y < 0 ∧ x < 0 ⇒ 0 < y

   [REAL_LT_RDIV_EQ_NEG]  Theorem

      |- ∀x y z. z < 0 ⇒ (y / z < x ⇔ x * z < y)

   [REAL_LT_RMUL_0_NEG]  Theorem

      |- ∀x y. 0 < x * y ∧ y < 0 ⇒ x < 0

   [REAL_LT_RMUL_NEG_0]  Theorem

      |- ∀x y. x * y < 0 ∧ 0 < y ⇒ x < 0

   [REAL_LT_RMUL_NEG_0_NEG]  Theorem

      |- ∀x y. x * y < 0 ∧ y < 0 ⇒ 0 < x

   [SIMP_EXTREAL_ARCH]  Theorem

      |- ∀x. x ≠ PosInf ⇒ ∃n. x ≤ &n

   [SIMP_REAL_ARCH]  Theorem

      |- ∀x. ∃n. x ≤ &n

   [SIMP_REAL_ARCH_NEG]  Theorem

      |- ∀x. ∃n. -&n ≤ x

   [SUB_IN_Q]  Theorem

      |- ∀x y. x ∈ Q_set ∧ y ∈ Q_set ⇒ x − y ∈ Q_set

   [abs_bounds]  Theorem

      |- ∀x k. abs x ≤ k ⇔ -k ≤ x ∧ x ≤ k

   [abs_bounds_lt]  Theorem

      |- ∀x k. abs x < k ⇔ -k < x ∧ x < k

   [abs_pos]  Theorem

      |- ∀x. 0 ≤ abs x

   [abs_refl]  Theorem

      |- ∀x. (abs x = x) ⇔ 0 ≤ x

   [add2_sub2]  Theorem

      |- ∀a b c d.
           b ≠ PosInf ∧ d ≠ PosInf ∨ b ≠ NegInf ∧ d ≠ NegInf ⇒
           (a − b + (c − d) = a + c − (b + d))

   [add_assoc]  Theorem

      |- ∀x y z. x + (y + z) = x + y + z

   [add_comm]  Theorem

      |- ∀x y. x + y = y + x

   [add_infty]  Theorem

      |- (∀x. (x + PosInf = PosInf) ∧ (PosInf + x = PosInf)) ∧
         ∀x. x ≠ PosInf ⇒ (x + NegInf = NegInf) ∧ (NegInf + x = NegInf)

   [add_ldistrib]  Theorem

      |- ∀x y z.
           0 ≤ y ∧ 0 ≤ z ∨ y ≤ 0 ∧ z ≤ 0 ⇒ (x * (y + z) = x * y + x * z)

   [add_ldistrib_neg]  Theorem

      |- ∀x y z. y ≤ 0 ∧ z ≤ 0 ⇒ (x * (y + z) = x * y + x * z)

   [add_ldistrib_normal]  Theorem

      |- ∀x y z.
           y ≠ PosInf ∧ z ≠ PosInf ∨ y ≠ NegInf ∧ z ≠ NegInf ⇒
           (Normal x * (y + z) = Normal x * y + Normal x * z)

   [add_ldistrib_normal2]  Theorem

      |- ∀x y z. 0 ≤ x ⇒ (Normal x * (y + z) = Normal x * y + Normal x * z)

   [add_ldistrib_pos]  Theorem

      |- ∀x y z. 0 ≤ y ∧ 0 ≤ z ⇒ (x * (y + z) = x * y + x * z)

   [add_lzero]  Theorem

      |- ∀x. 0 + x = x

   [add_not_infty]  Theorem

      |- ∀x y.
           (x ≠ NegInf ∧ y ≠ NegInf ⇒ x + y ≠ NegInf) ∧
           (x ≠ PosInf ∧ y ≠ PosInf ⇒ x + y ≠ PosInf)

   [add_pow2]  Theorem

      |- ∀x y. (x + y) pow 2 = x pow 2 + y pow 2 + 2 * x * y

   [add_rdistrib]  Theorem

      |- ∀x y z.
           0 ≤ y ∧ 0 ≤ z ∨ y ≤ 0 ∧ z ≤ 0 ⇒ ((y + z) * x = y * x + z * x)

   [add_rdistrib_normal]  Theorem

      |- ∀x y z.
           y ≠ PosInf ∧ z ≠ PosInf ∨ y ≠ NegInf ∧ z ≠ NegInf ⇒
           ((y + z) * Normal x = y * Normal x + z * Normal x)

   [add_rdistrib_normal2]  Theorem

      |- ∀x y z. 0 ≤ x ⇒ ((y + z) * Normal x = y * Normal x + z * Normal x)

   [add_rzero]  Theorem

      |- ∀x. x + 0 = x

   [add_sub]  Theorem

      |- ∀x y. y ≠ NegInf ∧ y ≠ PosInf ⇒ (x + y − y = x)

   [add_sub2]  Theorem

      |- ∀x y. y ≠ NegInf ∧ y ≠ PosInf ⇒ (y + x − y = x)

   [datatype_extreal]  Theorem

      |- DATATYPE (extreal NegInf PosInf Normal)

   [div_add]  Theorem

      |- ∀x y z.
           x ≠ NegInf ∧ y ≠ NegInf ∧ z ≠ 0 ⇒ (x / z + y / z = (x + y) / z)

   [div_one]  Theorem

      |- ∀x. x / 1 = x

   [entire]  Theorem

      |- ∀x y. (x * y = 0) ⇔ (x = 0) ∨ (y = 0)

   [eq_add_sub_switch]  Theorem

      |- ∀a b c d.
           b ≠ NegInf ∧ b ≠ PosInf ∧ c ≠ NegInf ∧ c ≠ PosInf ⇒
           ((a + b = c + d) ⇔ (a − c = d − b))

   [eq_neg]  Theorem

      |- ∀x y. (-x = -y) ⇔ (x = y)

   [eq_sub_ladd]  Theorem

      |- ∀x y z. z ≠ NegInf ∧ z ≠ PosInf ⇒ ((x = y − z) ⇔ (x + z = y))

   [eq_sub_ladd_normal]  Theorem

      |- ∀x y z. (x = y − Normal z) ⇔ (x + Normal z = y)

   [eq_sub_radd]  Theorem

      |- ∀x y z. y ≠ NegInf ∧ y ≠ PosInf ⇒ ((x − y = z) ⇔ (x = z + y))

   [eq_sub_switch]  Theorem

      |- ∀x y z. (x = Normal z − y) ⇔ (y = Normal z − x)

   [ext_mono_decreasing_suc]  Theorem

      |- ∀f. mono_decreasing f ⇔ ∀n. f (SUC n) ≤ f n

   [ext_mono_increasing_suc]  Theorem

      |- ∀f. mono_increasing f ⇔ ∀n. f n ≤ f (SUC n)

   [ext_suminf_add]  Theorem

      |- ∀f g.
           (∀n. 0 ≤ f n ∧ 0 ≤ g n) ⇒
           (suminf (λn. f n + g n) = suminf f + suminf g)

   [ext_suminf_cmul]  Theorem

      |- ∀f c.
           0 ≤ c ∧ (∀n. 0 ≤ f n) ⇒ (suminf (λn. c * f n) = c * suminf f)

   [ext_suminf_cmul_alt]  Theorem

      |- ∀f c.
           0 ≤ c ∧ ((∀n. f n ≠ NegInf) ∨ ∀n. f n ≠ PosInf) ⇒
           (suminf (λn. Normal c * f n) = Normal c * suminf f)

   [ext_suminf_lt_infty]  Theorem

      |- ∀f. (∀n. 0 ≤ f n) ∧ suminf f ≠ PosInf ⇒ ∀n. f n < PosInf

   [ext_suminf_mono]  Theorem

      |- ∀f g. (∀n. g n ≠ NegInf ∧ g n ≤ f n) ⇒ suminf g ≤ suminf f

   [ext_suminf_sub]  Theorem

      |- ∀f g.
           (∀n. 0 ≤ g n ∧ g n ≤ f n) ∧ suminf f ≠ PosInf ⇒
           (suminf (λi. f i − g i) = suminf f − suminf g)

   [ext_suminf_sum]  Theorem

      |- ∀f n.
           (∀n. 0 ≤ f n) ∧ (∀m. n ≤ m ⇒ (f m = 0)) ⇒
           (suminf f = SIGMA f (count n))

   [ext_suminf_suminf]  Theorem

      |- ∀r.
           (∀n. 0 ≤ r n) ∧ suminf (λn. Normal (r n)) ≠ PosInf ⇒
           (suminf (λn. Normal (r n)) = Normal (suminf r))

   [extreal_11]  Theorem

      |- ∀a a'. (Normal a = Normal a') ⇔ (a = a')

   [extreal_Axiom]  Theorem

      |- ∀f0 f1 f2.
           ∃fn.
             (fn NegInf = f0) ∧ (fn PosInf = f1) ∧ ∀a. fn (Normal a) = f2 a

   [extreal_abs_def]  Theorem

      |- (abs (Normal x) = Normal (abs x)) ∧ (abs NegInf = PosInf) ∧
         (abs PosInf = PosInf)

   [extreal_abs_ind]  Theorem

      |- ∀P. (∀x. P (Normal x)) ∧ P NegInf ∧ P PosInf ⇒ ∀v. P v

   [extreal_add_def]  Theorem

      |- (Normal x + Normal y = Normal (x + y)) ∧ (PosInf + a = PosInf) ∧
         (NegInf + PosInf = PosInf) ∧ (Normal v2 + PosInf = PosInf) ∧
         (NegInf + NegInf = NegInf) ∧ (NegInf + Normal v5 = NegInf) ∧
         (Normal v3 + NegInf = NegInf)

   [extreal_add_ind]  Theorem

      |- ∀P.
           (∀x y. P (Normal x) (Normal y)) ∧ (∀a. P PosInf a) ∧
           P NegInf PosInf ∧ (∀v2. P (Normal v2) PosInf) ∧
           P NegInf NegInf ∧ (∀v5. P NegInf (Normal v5)) ∧
           (∀v3. P (Normal v3) NegInf) ⇒
           ∀v v1. P v v1

   [extreal_case_cong]  Theorem

      |- ∀M M' v v1 f.
           (M = M') ∧ ((M' = NegInf) ⇒ (v = v')) ∧
           ((M' = PosInf) ⇒ (v1 = v1')) ∧
           (∀a. (M' = Normal a) ⇒ (f a = f' a)) ⇒
           (extreal_CASE M v v1 f = extreal_CASE M' v' v1' f')

   [extreal_cases]  Theorem

      |- ∀x. (x = NegInf) ∨ (x = PosInf) ∨ ∃r. x = Normal r

   [extreal_distinct]  Theorem

      |- NegInf ≠ PosInf ∧ (∀a. NegInf ≠ Normal a) ∧ ∀a. PosInf ≠ Normal a

   [extreal_div_eq]  Theorem

      |- ∀x y. Normal x / Normal y = Normal (x / y)

   [extreal_eq_zero]  Theorem

      |- ∀x. (Normal x = 0) ⇔ (x = 0)

   [extreal_induction]  Theorem

      |- ∀P. P NegInf ∧ P PosInf ∧ (∀r. P (Normal r)) ⇒ ∀e. P e

   [extreal_le_def]  Theorem

      |- (Normal x ≤ Normal y ⇔ x ≤ y) ∧ (NegInf ≤ a ⇔ T) ∧
         (PosInf ≤ PosInf ⇔ T) ∧ (Normal v2 ≤ PosInf ⇔ T) ∧
         (PosInf ≤ NegInf ⇔ F) ∧ (Normal v3 ≤ NegInf ⇔ F) ∧
         (PosInf ≤ Normal v5 ⇔ F)

   [extreal_le_ind]  Theorem

      |- ∀P.
           (∀x y. P (Normal x) (Normal y)) ∧ (∀a. P NegInf a) ∧
           P PosInf PosInf ∧ (∀v2. P (Normal v2) PosInf) ∧
           P PosInf NegInf ∧ (∀v3. P (Normal v3) NegInf) ∧
           (∀v5. P PosInf (Normal v5)) ⇒
           ∀v v1. P v v1

   [extreal_lt_eq]  Theorem

      |- ∀x y. Normal x < Normal y ⇔ x < y

   [extreal_mul_def]  Theorem

      |- (NegInf * NegInf = PosInf) ∧ (NegInf * PosInf = NegInf) ∧
         (PosInf * NegInf = NegInf) ∧ (PosInf * PosInf = PosInf) ∧
         (Normal x * NegInf =
          if x = 0 then Normal 0 else if 0 < x then NegInf else PosInf) ∧
         (NegInf * Normal y =
          if y = 0 then Normal 0 else if 0 < y then NegInf else PosInf) ∧
         (Normal x * PosInf =
          if x = 0 then Normal 0 else if 0 < x then PosInf else NegInf) ∧
         (PosInf * Normal y =
          if y = 0 then Normal 0 else if 0 < y then PosInf else NegInf) ∧
         (Normal x * Normal y = Normal (x * y))

   [extreal_mul_ind]  Theorem

      |- ∀P.
           P NegInf NegInf ∧ P NegInf PosInf ∧ P PosInf NegInf ∧
           P PosInf PosInf ∧ (∀x. P (Normal x) NegInf) ∧
           (∀y. P NegInf (Normal y)) ∧ (∀x. P (Normal x) PosInf) ∧
           (∀y. P PosInf (Normal y)) ∧ (∀x y. P (Normal x) (Normal y)) ⇒
           ∀v v1. P v v1

   [extreal_nchotomy]  Theorem

      |- ∀ee. (ee = NegInf) ∨ (ee = PosInf) ∨ ∃r. ee = Normal r

   [extreal_not_infty]  Theorem

      |- ∀x. Normal x ≠ NegInf ∧ Normal x ≠ PosInf

   [extreal_sub_add]  Theorem

      |- ∀x y. x − y = x + -y

   [extreal_sub_def]  Theorem

      |- (Normal x − Normal y = Normal (x − y)) ∧ (PosInf − a = PosInf) ∧
         (NegInf − PosInf = NegInf) ∧ (Normal v2 − PosInf = NegInf) ∧
         (NegInf − NegInf = PosInf) ∧ (NegInf − Normal v5 = NegInf) ∧
         (Normal v3 − NegInf = PosInf)

   [extreal_sub_ind]  Theorem

      |- ∀P.
           (∀x y. P (Normal x) (Normal y)) ∧ (∀a. P PosInf a) ∧
           P NegInf PosInf ∧ (∀v2. P (Normal v2) PosInf) ∧
           P NegInf NegInf ∧ (∀v5. P NegInf (Normal v5)) ∧
           (∀v3. P (Normal v3) NegInf) ⇒
           ∀v v1. P v v1

   [fourth_cancel]  Theorem

      |- 4 * (1 / 4) = 1

   [half_between]  Theorem

      |- (0 < 1 / 2 ∧ 1 / 2 < 1) ∧ 0 ≤ 1 / 2 ∧ 1 / 2 ≤ 1

   [half_cancel]  Theorem

      |- 2 * (1 / 2) = 1

   [inf_cminus]  Theorem

      |- ∀f c.
           Normal c − inf (IMAGE f 𝕌(:α)) =
           sup (IMAGE (λn. Normal c − f n) 𝕌(:α))

   [inf_const]  Theorem

      |- ∀x. inf (λy. y = x) = x

   [inf_const_alt]  Theorem

      |- ∀p z. (∃x. p x) ∧ (∀x. p x ⇒ (x = z)) ⇒ (inf p = z)

   [inf_const_over_set]  Theorem

      |- ∀s k. s ≠ ∅ ⇒ (inf (IMAGE (λx. k) s) = k)

   [inf_eq]  Theorem

      |- ∀p x.
           (inf p = x) ⇔ (∀y. p y ⇒ x ≤ y) ∧ ∀y. (∀z. p z ⇒ y ≤ z) ⇒ y ≤ x

   [inf_le]  Theorem

      |- ∀p x. inf p ≤ x ⇔ ∀y. (∀z. p z ⇒ y ≤ z) ⇒ y ≤ x

   [inf_le_imp]  Theorem

      |- ∀p x. p x ⇒ inf p ≤ x

   [inf_lt_infty]  Theorem

      |- ∀p. NegInf < inf p ⇒ ∀x. p x ⇒ NegInf < x

   [inf_min]  Theorem

      |- ∀p z. p z ∧ (∀x. p x ⇒ z ≤ x) ⇒ (inf p = z)

   [inf_seq]  Theorem

      |- ∀f l.
           mono_decreasing f ⇒
           (f --> l ⇔ (inf (IMAGE (λn. Normal (f n)) 𝕌(:num)) = Normal l))

   [inf_suc]  Theorem

      |- ∀f.
           (∀m n. m ≤ n ⇒ f n ≤ f m) ⇒
           (inf (IMAGE (λn. f (SUC n)) 𝕌(:num)) = inf (IMAGE f 𝕌(:num)))

   [inv_1over]  Theorem

      |- ∀x. inv x = 1 / x

   [inv_one]  Theorem

      |- inv 1 = 1

   [inv_pos]  Theorem

      |- ∀x. 0 < x ∧ x ≠ PosInf ⇒ 0 < 1 / x

   [le_01]  Theorem

      |- 0 ≤ 1

   [le_02]  Theorem

      |- 0 ≤ 2

   [le_add]  Theorem

      |- ∀x y. 0 ≤ x ∧ 0 ≤ y ⇒ 0 ≤ x + y

   [le_add2]  Theorem

      |- ∀w x y z. w ≤ x ∧ y ≤ z ⇒ w + y ≤ x + z

   [le_addr]  Theorem

      |- ∀x y. x ≠ NegInf ∧ x ≠ PosInf ⇒ (x ≤ x + y ⇔ 0 ≤ y)

   [le_addr_imp]  Theorem

      |- ∀x y. 0 ≤ y ⇒ x ≤ x + y

   [le_antisym]  Theorem

      |- ∀x y. x ≤ y ∧ y ≤ x ⇔ (x = y)

   [le_epsilon]  Theorem

      |- ∀x y. (∀e. 0 < e ∧ e ≠ PosInf ⇒ x ≤ y + e) ⇒ x ≤ y

   [le_inf]  Theorem

      |- ∀p x. x ≤ inf p ⇔ ∀y. p y ⇒ x ≤ y

   [le_infty]  Theorem

      |- (∀x. NegInf ≤ x ∧ x ≤ PosInf) ∧ (∀x. x ≤ NegInf ⇔ (x = NegInf)) ∧
         ∀x. PosInf ≤ x ⇔ (x = PosInf)

   [le_inv]  Theorem

      |- ∀x. 0 ≤ x ⇒ 0 ≤ inv x

   [le_ladd]  Theorem

      |- ∀x y z. x ≠ NegInf ∧ x ≠ PosInf ⇒ (x + y ≤ x + z ⇔ y ≤ z)

   [le_ladd_imp]  Theorem

      |- ∀x y z. y ≤ z ⇒ x + y ≤ x + z

   [le_ldiv]  Theorem

      |- ∀x y z. 0 < x ⇒ (y ≤ z * Normal x ⇔ y / Normal x ≤ z)

   [le_lmul_imp]  Theorem

      |- ∀x y z. 0 ≤ z ∧ x ≤ y ⇒ z * x ≤ z * y

   [le_lneg]  Theorem

      |- ∀x y. -x ≤ y ⇔ 0 ≤ x + y

   [le_lsub_imp]  Theorem

      |- ∀x y z. y ≤ z ⇒ x − z ≤ x − y

   [le_lt]  Theorem

      |- ∀x y. x ≤ y ⇔ x < y ∨ (x = y)

   [le_max]  Theorem

      |- ∀z x y. z ≤ max x y ⇔ z ≤ x ∨ z ≤ y

   [le_max1]  Theorem

      |- ∀x y. x ≤ max x y

   [le_max2]  Theorem

      |- ∀x y. y ≤ max x y

   [le_min]  Theorem

      |- ∀z x y. z ≤ min x y ⇔ z ≤ x ∧ z ≤ y

   [le_mul]  Theorem

      |- ∀x y. 0 ≤ x ∧ 0 ≤ y ⇒ 0 ≤ x * y

   [le_mul_epsilon]  Theorem

      |- ∀x y. (∀z. 0 ≤ z ∧ z < 1 ⇒ z * x ≤ y) ⇒ x ≤ y

   [le_mul_neg]  Theorem

      |- ∀x y. x ≤ 0 ∧ y ≤ 0 ⇒ 0 ≤ x * y

   [le_neg]  Theorem

      |- ∀x y. -x ≤ -y ⇔ y ≤ x

   [le_num]  Theorem

      |- ∀n. 0 ≤ &n

   [le_pow2]  Theorem

      |- ∀x. 0 ≤ x pow 2

   [le_radd]  Theorem

      |- ∀x y z. x ≠ NegInf ∧ x ≠ PosInf ⇒ (y + x ≤ z + x ⇔ y ≤ z)

   [le_radd_imp]  Theorem

      |- ∀x y z. y ≤ z ⇒ y + x ≤ z + x

   [le_rdiv]  Theorem

      |- ∀x y z. 0 < x ⇒ (y * Normal x ≤ z ⇔ y ≤ z / Normal x)

   [le_refl]  Theorem

      |- ∀x. x ≤ x

   [le_rmul_imp]  Theorem

      |- ∀x y z. 0 < z ∧ x ≤ y ⇒ x * z ≤ y * z

   [le_sub_eq]  Theorem

      |- ∀x y z. x ≠ NegInf ∧ x ≠ PosInf ⇒ (y ≤ z − x ⇔ y + x ≤ z)

   [le_sub_eq2]  Theorem

      |- ∀x y z.
           z ≠ NegInf ∧ z ≠ PosInf ∧ x ≠ NegInf ∧ y ≠ NegInf ⇒
           (y ≤ z − x ⇔ y + x ≤ z)

   [le_sub_imp]  Theorem

      |- ∀x y z. y + x ≤ z ⇒ y ≤ z − x

   [le_sup]  Theorem

      |- ∀p x. x ≤ sup p ⇔ ∀y. (∀z. p z ⇒ z ≤ y) ⇒ x ≤ y

   [le_sup_imp]  Theorem

      |- ∀p x. p x ⇒ x ≤ sup p

   [le_total]  Theorem

      |- ∀x y. x ≤ y ∨ y ≤ x

   [le_trans]  Theorem

      |- ∀x y z. x ≤ y ∧ y ≤ z ⇒ x ≤ z

   [let_add]  Theorem

      |- ∀x y. 0 ≤ x ∧ 0 < y ⇒ 0 < x + y

   [let_add2]  Theorem

      |- ∀w x y z. w ≠ NegInf ∧ w ≠ PosInf ∧ w ≤ x ∧ y < z ⇒ w + y < x + z

   [let_add2_alt]  Theorem

      |- ∀w x y z. x ≠ NegInf ∧ x ≠ PosInf ∧ w ≤ x ∧ y < z ⇒ w + y < x + z

   [let_mul]  Theorem

      |- ∀x y. 0 ≤ x ∧ 0 < y ⇒ 0 ≤ x * y

   [let_trans]  Theorem

      |- ∀x y z. x ≤ y ∧ y < z ⇒ x < z

   [linv_uniq]  Theorem

      |- ∀x y. (x * y = 1) ⇒ (x = inv y)

   [logr_not_infty]  Theorem

      |- ∀x b.
           x ≠ NegInf ∧ x ≠ PosInf ⇒ logr b x ≠ NegInf ∧ logr b x ≠ PosInf

   [lt_01]  Theorem

      |- 0 < 1

   [lt_02]  Theorem

      |- 0 < 2

   [lt_add]  Theorem

      |- ∀x y. 0 < x ∧ 0 < y ⇒ 0 < x + y

   [lt_add2]  Theorem

      |- ∀w x y z. w < x ∧ y < z ⇒ w + y < x + z

   [lt_addl]  Theorem

      |- ∀x y. y ≠ NegInf ∧ y ≠ PosInf ⇒ (y < x + y ⇔ 0 < x)

   [lt_antisym]  Theorem

      |- ∀x y. ¬(x < y ∧ y < x)

   [lt_imp_le]  Theorem

      |- ∀x y. x < y ⇒ x ≤ y

   [lt_imp_ne]  Theorem

      |- ∀x y. x < y ⇒ x ≠ y

   [lt_infty]  Theorem

      |- ∀x y.
           NegInf < Normal y ∧ Normal y < PosInf ∧ NegInf < PosInf ∧
           ¬(x < NegInf) ∧ ¬(PosInf < x) ∧ (x ≠ PosInf ⇔ x < PosInf) ∧
           (x ≠ NegInf ⇔ NegInf < x)

   [lt_ladd]  Theorem

      |- ∀x y z. x ≠ NegInf ∧ x ≠ PosInf ⇒ (x + y < x + z ⇔ y < z)

   [lt_ldiv]  Theorem

      |- ∀x y z. 0 < z ⇒ (x / Normal z < y ⇔ x < y * Normal z)

   [lt_le]  Theorem

      |- ∀x y. x < y ⇔ x ≤ y ∧ x ≠ y

   [lt_lmul]  Theorem

      |- ∀x y z. 0 < x ∧ x ≠ PosInf ⇒ (x * y < x * z ⇔ y < z)

   [lt_mul]  Theorem

      |- ∀x y. 0 < x ∧ 0 < y ⇒ 0 < x * y

   [lt_mul2]  Theorem

      |- ∀x1 x2 y1 y2.
           0 ≤ x1 ∧ 0 ≤ y1 ∧ x1 ≠ PosInf ∧ y1 ≠ PosInf ∧ x1 < x2 ∧
           y1 < y2 ⇒
           x1 * y1 < x2 * y2

   [lt_mul_neg]  Theorem

      |- ∀x y. x < 0 ∧ y < 0 ⇒ 0 < x * y

   [lt_neg]  Theorem

      |- ∀x y. -x < -y ⇔ y < x

   [lt_radd]  Theorem

      |- ∀x y z. x ≠ NegInf ∧ x ≠ PosInf ⇒ (y + x < z + x ⇔ y < z)

   [lt_rdiv]  Theorem

      |- ∀x y z. 0 < z ⇒ (x < y / Normal z ⇔ x * Normal z < y)

   [lt_rdiv_neg]  Theorem

      |- ∀x y z. z < 0 ⇒ (y / Normal z < x ⇔ x * Normal z < y)

   [lt_refl]  Theorem

      |- ∀x. ¬(x < x)

   [lt_rmul]  Theorem

      |- ∀x y z. 0 < z ∧ z ≠ PosInf ⇒ (x * z < y * z ⇔ x < y)

   [lt_sub]  Theorem

      |- ∀x y z. z ≠ NegInf ∧ z ≠ PosInf ⇒ (y + x < z ⇔ y < z − x)

   [lt_sub_imp]  Theorem

      |- ∀x y z. y + x < z ⇒ y < z − x

   [lt_total]  Theorem

      |- ∀x y. (x = y) ∨ x < y ∨ y < x

   [lt_trans]  Theorem

      |- ∀x y z. x < y ∧ y < z ⇒ x < z

   [lte_add]  Theorem

      |- ∀x y. 0 < x ∧ 0 ≤ y ⇒ 0 < x + y

   [lte_mul]  Theorem

      |- ∀x y. 0 < x ∧ 0 ≤ y ⇒ 0 ≤ x * y

   [lte_trans]  Theorem

      |- ∀x y z. x < y ∧ y ≤ z ⇒ x < z

   [max_comm]  Theorem

      |- ∀x y. max x y = max y x

   [max_infty]  Theorem

      |- ∀x.
           (max x PosInf = PosInf) ∧ (max PosInf x = PosInf) ∧
           (max NegInf x = x) ∧ (max x NegInf = x)

   [max_le]  Theorem

      |- ∀z x y. max x y ≤ z ⇔ x ≤ z ∧ y ≤ z

   [max_le2_imp]  Theorem

      |- ∀x1 x2 y1 y2. x1 ≤ y1 ∧ x2 ≤ y2 ⇒ max x1 x2 ≤ max y1 y2

   [max_refl]  Theorem

      |- ∀x. max x x = x

   [min_comm]  Theorem

      |- ∀x y. min x y = min y x

   [min_infty]  Theorem

      |- ∀x.
           (min x PosInf = x) ∧ (min PosInf x = x) ∧
           (min NegInf x = NegInf) ∧ (min x NegInf = NegInf)

   [min_le]  Theorem

      |- ∀z x y. min x y ≤ z ⇔ x ≤ z ∨ y ≤ z

   [min_le1]  Theorem

      |- ∀x y. min x y ≤ x

   [min_le2]  Theorem

      |- ∀x y. min x y ≤ y

   [min_le2_imp]  Theorem

      |- ∀x1 x2 y1 y2. x1 ≤ y1 ∧ x2 ≤ y2 ⇒ min x1 x2 ≤ min y1 y2

   [min_refl]  Theorem

      |- ∀x. min x x = x

   [mono_decreasing_suc]  Theorem

      |- ∀f. mono_decreasing f ⇔ ∀n. f (SUC n) ≤ f n

   [mono_increasing_converges_to_sup]  Theorem

      |- ∀f r. mono_increasing f ∧ f --> r ⇒ (r = sup (IMAGE f 𝕌(:num)))

   [mono_increasing_suc]  Theorem

      |- ∀f. mono_increasing f ⇔ ∀n. f n ≤ f (SUC n)

   [mul_assoc]  Theorem

      |- ∀x y z. x * (y * z) = x * y * z

   [mul_comm]  Theorem

      |- ∀x y. x * y = y * x

   [mul_le]  Theorem

      |- ∀x y. 0 ≤ x ∧ y ≤ 0 ⇒ x * y ≤ 0

   [mul_let]  Theorem

      |- ∀x y. 0 ≤ x ∧ y < 0 ⇒ x * y ≤ 0

   [mul_lneg]  Theorem

      |- ∀x y. -x * y = -(x * y)

   [mul_lone]  Theorem

      |- ∀x. 1 * x = x

   [mul_lt]  Theorem

      |- ∀x y. 0 < x ∧ y < 0 ⇒ x * y < 0

   [mul_lte]  Theorem

      |- ∀x y. 0 < x ∧ y ≤ 0 ⇒ x * y ≤ 0

   [mul_lzero]  Theorem

      |- ∀x. 0 * x = 0

   [mul_not_infty]  Theorem

      |- (∀c y. 0 ≤ c ∧ y ≠ NegInf ⇒ Normal c * y ≠ NegInf) ∧
         (∀c y. 0 ≤ c ∧ y ≠ PosInf ⇒ Normal c * y ≠ PosInf) ∧
         (∀c y. c ≤ 0 ∧ y ≠ NegInf ⇒ Normal c * y ≠ PosInf) ∧
         ∀c y. c ≤ 0 ∧ y ≠ PosInf ⇒ Normal c * y ≠ NegInf

   [mul_not_infty2]  Theorem

      |- ∀x y.
           x ≠ NegInf ∧ x ≠ PosInf ∧ y ≠ NegInf ∧ y ≠ PosInf ⇒
           x * y ≠ NegInf ∧ x * y ≠ PosInf

   [mul_rneg]  Theorem

      |- ∀x y. x * -y = -(x * y)

   [mul_rone]  Theorem

      |- ∀x. x * 1 = x

   [mul_rzero]  Theorem

      |- ∀x. x * 0 = 0

   [ne_01]  Theorem

      |- 0 ≠ 1

   [ne_02]  Theorem

      |- 0 ≠ 2

   [neg_0]  Theorem

      |- -0 = 0

   [neg_eq0]  Theorem

      |- ∀x. (-x = 0) ⇔ (x = 0)

   [neg_minus1]  Theorem

      |- ∀x. -x = -1 * x

   [neg_mul2]  Theorem

      |- ∀x y. -x * -y = x * y

   [neg_neg]  Theorem

      |- ∀x. --x = x

   [neg_sub]  Theorem

      |- ∀x y.
           x ≠ NegInf ∧ x ≠ PosInf ∨ y ≠ NegInf ∧ y ≠ PosInf ⇒
           (-(x − y) = y − x)

   [normal_real]  Theorem

      |- ∀x. x ≠ NegInf ∧ x ≠ PosInf ⇒ (Normal (real x) = x)

   [num_not_infty]  Theorem

      |- ∀n. &n ≠ NegInf ∧ &n ≠ PosInf

   [pow2_sqrt]  Theorem

      |- ∀x. 0 ≤ x ⇒ (sqrt (x pow 2) = x)

   [pow_0]  Theorem

      |- ∀x. x pow 0 = 1

   [pow_1]  Theorem

      |- ∀x. x pow 1 = x

   [pow_2]  Theorem

      |- ∀x. x pow 2 = x * x

   [pow_add]  Theorem

      |- ∀x n m. x pow (n + m) = x pow n * x pow m

   [pow_le]  Theorem

      |- ∀n x y. 0 ≤ x ∧ x ≤ y ⇒ x pow n ≤ y pow n

   [pow_le_mono]  Theorem

      |- ∀x n m. 1 ≤ x ∧ n ≤ m ⇒ x pow n ≤ x pow m

   [pow_lt]  Theorem

      |- ∀n x y. 0 ≤ x ∧ x < y ⇒ x pow SUC n < y pow SUC n

   [pow_lt2]  Theorem

      |- ∀n x y. n ≠ 0 ∧ 0 ≤ x ∧ x < y ⇒ x pow n < y pow n

   [pow_minus1]  Theorem

      |- ∀n. -1 pow (2 * n) = 1

   [pow_mul]  Theorem

      |- ∀n x y. (x * y) pow n = x pow n * y pow n

   [pow_neg_odd]  Theorem

      |- ∀x. x < 0 ⇒ (x pow n < 0 ⇔ ODD n)

   [pow_not_infty]  Theorem

      |- ∀n x.
           x ≠ NegInf ∧ x ≠ PosInf ⇒ x pow n ≠ NegInf ∧ x pow n ≠ PosInf

   [pow_pos_even]  Theorem

      |- ∀x. x < 0 ⇒ (0 < x pow n ⇔ EVEN n)

   [pow_pos_le]  Theorem

      |- ∀x. 0 ≤ x ⇒ ∀n. 0 ≤ x pow n

   [pow_pos_lt]  Theorem

      |- ∀x n. 0 < x ⇒ 0 < x pow n

   [pow_zero]  Theorem

      |- ∀n x. (x pow SUC n = 0) ⇔ (x = 0)

   [pow_zero_imp]  Theorem

      |- ∀n x. (x pow n = 0) ⇒ (x = 0)

   [quotient_normal]  Theorem

      |- ∀n m. &n / &m = Normal (&n / &m)

   [rat_not_infty]  Theorem

      |- ∀r. r ∈ Q_set ⇒ r ≠ NegInf ∧ r ≠ PosInf

   [real_normal]  Theorem

      |- ∀x. real (Normal x) = x

   [rinv_uniq]  Theorem

      |- ∀x y. (x * y = 1) ⇒ (y = inv x)

   [sqrt_mono_le]  Theorem

      |- ∀x y. 0 ≤ x ∧ x ≤ y ⇒ sqrt x ≤ sqrt y

   [sqrt_pos_le]  Theorem

      |- ∀x. 0 ≤ x ⇒ 0 ≤ sqrt x

   [sqrt_pos_lt]  Theorem

      |- ∀x. 0 < x ⇒ 0 < sqrt x

   [sqrt_pow2]  Theorem

      |- ∀x. (sqrt x pow 2 = x) ⇔ 0 ≤ x

   [sub_0]  Theorem

      |- ∀x y. (x − y = 0) ⇒ (x = y)

   [sub_add]  Theorem

      |- ∀x y. y ≠ NegInf ∧ y ≠ PosInf ⇒ (x − y + y = x)

   [sub_add2]  Theorem

      |- ∀x y. x ≠ NegInf ∧ x ≠ PosInf ⇒ (x + (y − x) = y)

   [sub_ldistrib]  Theorem

      |- ∀x y z.
           x ≠ NegInf ∧ x ≠ PosInf ∧ y ≠ NegInf ∧ y ≠ PosInf ∧ z ≠ NegInf ∧
           z ≠ PosInf ⇒
           (x * (y − z) = x * y − x * z)

   [sub_le_eq]  Theorem

      |- ∀x y z. x ≠ NegInf ∧ x ≠ PosInf ⇒ (y − x ≤ z ⇔ y ≤ z + x)

   [sub_le_eq2]  Theorem

      |- ∀x y z.
           y ≠ NegInf ∧ y ≠ PosInf ∧ x ≠ NegInf ∧ z ≠ NegInf ⇒
           (y − x ≤ z ⇔ y ≤ z + x)

   [sub_le_imp]  Theorem

      |- ∀x y z. x ≠ NegInf ∧ x ≠ PosInf ∧ y ≤ z + x ⇒ y − x ≤ z

   [sub_le_imp2]  Theorem

      |- ∀x y z. y ≠ NegInf ∧ y ≠ PosInf ∧ y ≤ z + x ⇒ y − x ≤ z

   [sub_le_switch]  Theorem

      |- ∀x y z.
           x ≠ NegInf ∧ x ≠ PosInf ∧ z ≠ NegInf ∧ z ≠ PosInf ⇒
           (y − x ≤ z ⇔ y − z ≤ x)

   [sub_le_switch2]  Theorem

      |- ∀x y z.
           x ≠ NegInf ∧ x ≠ PosInf ∧ y ≠ NegInf ∧ y ≠ PosInf ⇒
           (y − x ≤ z ⇔ y − z ≤ x)

   [sub_le_zero]  Theorem

      |- ∀x y. y ≠ NegInf ∧ y ≠ PosInf ⇒ (x ≤ y ⇔ x − y ≤ 0)

   [sub_lneg]  Theorem

      |- ∀x y.
           x ≠ NegInf ∧ y ≠ NegInf ∨ x ≠ PosInf ∧ y ≠ PosInf ⇒
           (-x − y = -(x + y))

   [sub_lt_imp]  Theorem

      |- ∀x y z. x ≠ NegInf ∧ x ≠ PosInf ∧ y < z + x ⇒ y − x < z

   [sub_lt_imp2]  Theorem

      |- ∀x y z. z ≠ NegInf ∧ z ≠ PosInf ∧ y < z + x ⇒ y − x < z

   [sub_lt_zero]  Theorem

      |- ∀x y. x < y ⇒ x − y < 0

   [sub_lt_zero2]  Theorem

      |- ∀x y. y ≠ NegInf ∧ y ≠ PosInf ∧ x − y < 0 ⇒ x < y

   [sub_lzero]  Theorem

      |- ∀x. 0 − x = -x

   [sub_not_infty]  Theorem

      |- ∀x y.
           (x ≠ NegInf ∧ y ≠ PosInf ⇒ x − y ≠ NegInf) ∧
           (x ≠ PosInf ∧ y ≠ NegInf ⇒ x − y ≠ PosInf)

   [sub_rdistrib]  Theorem

      |- ∀x y z.
           x ≠ NegInf ∧ x ≠ PosInf ∧ y ≠ NegInf ∧ y ≠ PosInf ∧ z ≠ NegInf ∧
           z ≠ PosInf ⇒
           ((x − y) * z = x * z − y * z)

   [sub_refl]  Theorem

      |- ∀x. x ≠ NegInf ∧ x ≠ PosInf ⇒ (x − x = 0)

   [sub_rneg]  Theorem

      |- ∀x y. x − -y = x + y

   [sub_rzero]  Theorem

      |- ∀x. x − 0 = x

   [sub_zero_le]  Theorem

      |- ∀x y. x ≤ y ⇔ 0 ≤ y − x

   [sub_zero_lt]  Theorem

      |- ∀x y. x < y ⇒ 0 < y − x

   [sub_zero_lt2]  Theorem

      |- ∀x y. x ≠ NegInf ∧ x ≠ PosInf ∧ 0 < y − x ⇒ x < y

   [sup_add_mono]  Theorem

      |- ∀f g.
           (∀n. 0 ≤ f n) ∧ (∀n. f n ≤ f (SUC n)) ∧ (∀n. 0 ≤ g n) ∧
           (∀n. g n ≤ g (SUC n)) ⇒
           (sup (IMAGE (λn. f n + g n) 𝕌(:num)) =
            sup (IMAGE f 𝕌(:num)) + sup (IMAGE g 𝕌(:num)))

   [sup_cmul]  Theorem

      |- ∀f c.
           0 ≤ c ⇒
           (sup (IMAGE (λn. Normal c * f n) 𝕌(:α)) =
            Normal c * sup (IMAGE f 𝕌(:α)))

   [sup_const]  Theorem

      |- ∀x. sup (λy. y = x) = x

   [sup_const_alt]  Theorem

      |- ∀p z. (∃x. p x) ∧ (∀x. p x ⇒ (x = z)) ⇒ (sup p = z)

   [sup_const_over_set]  Theorem

      |- ∀s k. s ≠ ∅ ⇒ (sup (IMAGE (λx. k) s) = k)

   [sup_eq]  Theorem

      |- ∀p x.
           (sup p = x) ⇔ (∀y. p y ⇒ y ≤ x) ∧ ∀y. (∀z. p z ⇒ z ≤ y) ⇒ x ≤ y

   [sup_le]  Theorem

      |- ∀p x. sup p ≤ x ⇔ ∀y. p y ⇒ y ≤ x

   [sup_le_mono]  Theorem

      |- ∀f z.
           (∀n. f n ≤ f (SUC n)) ∧ z < sup (IMAGE f 𝕌(:num)) ⇒ ∃n. z ≤ f n

   [sup_le_sup_imp]  Theorem

      |- ∀p q. (∀x. p x ⇒ ∃y. q y ∧ x ≤ y) ⇒ sup p ≤ sup q

   [sup_lt]  Theorem

      |- ∀P y. (∃x. P x ∧ y < x) ⇔ y < sup P

   [sup_lt_epsilon]  Theorem

      |- ∀P e.
           0 < e ∧ (∃x. P x ∧ x ≠ NegInf) ∧ sup P ≠ PosInf ⇒
           ∃x. P x ∧ sup P < x + e

   [sup_lt_infty]  Theorem

      |- ∀p. sup p < PosInf ⇒ ∀x. p x ⇒ x < PosInf

   [sup_max]  Theorem

      |- ∀p z. p z ∧ (∀x. p x ⇒ x ≤ z) ⇒ (sup p = z)

   [sup_mono]  Theorem

      |- ∀p q.
           (∀n. p n ≤ q n) ⇒ sup (IMAGE p 𝕌(:num)) ≤ sup (IMAGE q 𝕌(:num))

   [sup_num]  Theorem

      |- sup (λx. ∃n. x = &n) = PosInf

   [sup_seq]  Theorem

      |- ∀f l.
           mono_increasing f ⇒
           (f --> l ⇔ (sup (IMAGE (λn. Normal (f n)) 𝕌(:num)) = Normal l))

   [sup_suc]  Theorem

      |- ∀f.
           (∀m n. m ≤ n ⇒ f m ≤ f n) ⇒
           (sup (IMAGE (λn. f (SUC n)) 𝕌(:num)) = sup (IMAGE f 𝕌(:num)))

   [sup_sum_mono]  Theorem

      |- ∀f s.
           FINITE s ∧ (∀i. i ∈ s ⇒ ∀n. 0 ≤ f i n) ∧
           (∀i. i ∈ s ⇒ ∀n. f i n ≤ f i (SUC n)) ⇒
           (sup (IMAGE (λn. SIGMA (λi. f i n) s) 𝕌(:num)) =
            SIGMA (λi. sup (IMAGE (f i) 𝕌(:num))) s)

   [third_cancel]  Theorem

      |- 3 * (1 / 3) = 1

   [thirds_between]  Theorem

      |- ((0 < 1 / 3 ∧ 1 / 3 < 1) ∧ 0 < 2 / 3 ∧ 2 / 3 < 1) ∧
         (0 ≤ 1 / 3 ∧ 1 / 3 ≤ 1) ∧ 0 ≤ 2 / 3 ∧ 2 / 3 ≤ 1


*)
end


Source File Identifier index Theory binding index

HOL 4, Kananaskis-10