Reals

(theory Reals

 :smt-lib-version 2.6
 :smt-lib-release "2017-11-24"
 :written-by "Cesare Tinelli"
 :date "2010-04-17"
 :last-updated "2017-05-08"
 :update-history
 "Note: history only accounts for content changes, not release changes.
  2017-05-08 Fixed error in note on intepretation of (/t 0). 
  2016-04-20 Minor formatting of notes fields.
  2015-04-25 Updated to Version 2.5.
  2012-06-20 Modified the definition of :value attribute to include abstract values
             for irrational algebraic numbers.
 "
 :sorts ((Real 0))

 :funs ((NUMERAL Real) 
        (DECIMAL Real) 
        (- Real Real)                  ; negation
        (- Real Real Real :left-assoc) ; subtraction
        (+ Real Real Real :left-assoc) 
        (* Real Real Real :left-assoc)
        (/ Real Real Real :left-assoc)
        (<= Real Real Bool :chainable)
        (<  Real Real Bool :chainable)
        (>= Real Real Bool :chainable)
        (>  Real Real Bool :chainable)
       )

 :values
 "The set of values for the sort Real consists of 
  - an abstract value for each irrational algebraic number
  - all numerals
  - all terms of the form (- n) where n is a numeral other than 0
  - all terms of the form (/ m n) or (/ (- m) n) where 
    - m is a numeral other than 0,
    - n is a numeral other than 0 and 1,
    - as integers, m and n have no common factors besides 1.
 "
 :definition 
 "For every expanded signature Sigma, the instance of Reals with that 
  signature is the theory consisting of all Sigma-models that interpret

  - the sort Real as the set of all real numbers, 

  - each numeral as the corresponding real number,

  - each decimal as the corresponding real number,

  - / as a total function that coincides with the real division function 
    for all inputs x and y where y is non-zero,

  - the other function symbols of Reals as expected.
 "

 :notes
 "Since in SMT-LIB logic all function symbols are interpreted as total
  functions, terms of the form (/ t 0) *are* meaningful in every 
  instance of Reals. However, the declaration imposes no constraints
  on their value. This means in particular that 
  - for every instance theory T and
  - for every value v (as defined in the :values attribute) and 
    closed term t of sort Real,
  there is a model of T that satisfies (= v (/ t 0)).
 "

 :notes
 "The restriction of Reals over the signature having just the symbols 
  (0 Real)
  (1 Real)
  (- Real Real)
  (+ Real Real Real) 
  (* Real Real Real)
  (<= Real Real Bool)
  (<  Real Real Bool)
  coincides with the theory of real closed fields, axiomatized by
  the formulas below: 

   - associativity of +
   (forall ((x Real) (y Real) (z Real))
    (= (+ (+ x y) z) (+ x (+ y z))))

   - commutativity of +
   (forall ((x Real) (y Real))
    (= (* x y) (* y x)))

   - 0 is the right (and by commutativity, left) unit of +
   (forall ((x Real)) (= (+ x 0) x))

   - right (and left) inverse wrt +
   (forall ((x Real)) (= (+ x (- x)) 0))

   - associativity of *
   (forall ((x Real) (y Real) (z Real))
    (= (* (* x y) z) (* x (* y z))))

   - commutativity of *
   (forall ((x Real) (y Real)) (= (* x y) (* y x)))

   - 1 is the right (and by commutativity, left) unit of *
   (forall ((x Real)) (= (* x 1) x))

   - existence of right (and left) inverse wrt *
   (forall ((x Real))
    (or (= x 0) (exists (y Real) (= (* x y) 1))))

   - left distributivity of * over +
   (forall ((x Real) (y Real) (z Real))
    (= (* x (+ y z)) (+ (* x y) (* x z))))

   - right distributivity of * over +
   (forall ((x Real) (y Real) (z Real))
    (= (* (+ x y) z) (+ (* x z) (* y z))))

   - non-triviality
   (distinct 0 1)

   - all positive elements have a square root
   (forall (x Real)
    (exists (y Real) (or (= x (* y y)) (= (- x) (* y y)))))

    - axiom schemas for all n > 0
    (forall (x_1 Real) ... (x_n Real)
      (distinct (+ (* x_1 x_1) (+ ... (* x_n x_n)))
         (- 1))) 

    - axiom schemas for all odd n > 0 where (^ y n) abbreviates
      the n-fold product of y with itself
    (forall (x_1 Real) ... (x_n Real)
     (exists (y Real)
      (= 0
         (+ (^ y n) (+ (* x_1 (^ y n-1)) (+  ... (+ (* x_{n-1} y) x_n)))))))

    - reflexivity of <=
    (forall (x Real) (<= x x))

    - antisymmetry of <=
    (forall (x Real) (y Real)
      (=> (and (<= x y) (<= y x)) 
       (= x y)))

    - transitivity of <=
    (forall (x Real) (y Real) (z Real)
     (=> (and (<= x y) (<= y z))
      (<= x z)))

    - totality of <=
    (forall (x Real) (y Real)
      (or (<= x y) (<= y x)))
    
    - monotonicity of <= wrt +
    (forall (x Real) (y Real) (z Real)
      (=> (<= x y) (<= (+ x z) (+ y z))))

    - monotonicity of <= wrt *
    (forall (x Real) (y Real) (z Real)
      (=> (and (<= x y) (<= 0 z))
       (<= (* z x) (* z y))))

   - definition of <
   (forall (x Real) (y Real) 
     (= (< x y) (and (<= x y) (distinct x y))))

  References:
  1) W. Hodges. Model theory. Cambridge University Press, 1993.
  2) PlanetMath, http://planetmath.org/encyclopedia/RealClosedFields.html
 "
)
(raw file)