Structure RealArith


Source File Identifier index Theory binding index

signature RealArith =
sig
  include Abbrev

  type positivstellensatz
  type rat = Arbrat.rat
  type aint = Arbint.int

  val is_realintconst      : term -> bool
  val dest_realintconst    : term -> aint
  val mk_realintconst      : aint -> term
  val is_ratconst          : term -> bool
  val rat_of_term          : term -> rat
  val term_of_rat          : rat -> term
  val mk_real_arith_tac    : (term -> thm) -> tactic * tactic

  val REAL_INT_LE_CONV     : conv
  val REAL_INT_LT_CONV     : conv
  val REAL_INT_GE_CONV     : conv
  val REAL_INT_GT_CONV     : conv
  val REAL_INT_EQ_CONV     : conv
  val REAL_INT_ADD_CONV    : conv
  val REAL_INT_SUB_CONV    : conv
  val REAL_INT_NEG_CONV    : conv
  val REAL_INT_MUL_CONV    : conv
  val REAL_INT_POW_CONV    : conv
  val REAL_INT_ABS_CONV    : conv

  val REAL_INT_REDUCE_CONV : conv
  val real_int_compset     : unit -> computeLib.compset

 (* fn translator (eq,le,lt) -> 'a *)
  val REAL_LINEAR_PROVER   : (thm list * thm list * thm list ->
                              positivstellensatz -> 'a) ->
                             thm list * thm list * thm list -> 'a

 (* for REAL_LINEAR_PROVER, 0: nothing, 1: minimal, 2+: details *)
  val verbose_level        : int ref (* default: 1 *)

 (* fn (mkconst,EQ,GE,GT,NORM,NEG,ADD,MUL,PROVER) -> term -> thm *)
  val GEN_REAL_ARITH       :
     (rat -> term) * conv * conv * conv * conv * conv * conv * conv *
     ((thm list * thm list * thm list -> positivstellensatz -> thm) ->
       thm list * thm list * thm list -> thm) -> term -> thm

 (* NOTE: users are recommended to use the final versions in RealField *)
  val REAL_ARITH           : term -> thm
  val REAL_ARITH_TAC       : tactic
  val REAL_ASM_ARITH_TAC   : tactic

 (* below are Joe Hurd's old port *)

 (* PURE_REAL_ARITH_TAC doesn't throw away assumptions, but requires
    them to be pre-normalised in order to work.  There also must not
    be any non-Presburger terms lurking amongst them.

    REAL_ASM_ARITH_TAC moves all assumptions into the goal, and then
    proceeds.  It thus gets around the two restrictions above.  *)

  val PURE_REAL_ARITH_TAC    : tactic
  val OLD_REAL_ARITH         : term -> thm
  val OLD_REAL_ARITH_TAC     : tactic
  val OLD_REAL_ASM_ARITH_TAC : tactic

end


Source File Identifier index Theory binding index

HOL 4, Trindemossen-1