\DOC REAL_ARITH_TAC \TYPE {REAL_ARITH_TAC : tactic

advertisement
\DOC REAL_ARITH_TAC
\TYPE {REAL_ARITH_TAC : tactic}
\SYNOPSIS
Attempt to prove goal using basic algebra and linear arithmetic over the
reals.
\DESCRIBE
The tactic {REAL_ARITH_TAC} is the tactic form of {REAL_ARITH}. Roughly
speaking, it will automatically prove any formulas over the reals that
are
effectively universally quantified and can be proved valid by algebraic
normalization and linear equational and inequality reasoning. See
{REAL_ARITH}
for more information about the algorithm used and its scope.
\FAILURE
Fails if the goal is not in the subset solvable by these means, or is not
valid.
\EXAMPLE
Here is a goal that holds by virtue of pure algebraic normalization:
{
# g `(x1 pow 2 + x2 pow 2 + x3 pow 2 + x4 pow 2) pow 2 =
((x1 + x2) pow 4 + (x1 + x3) pow 4 + (x1 + x4) pow 4 +
(x2 + x3) pow 4 + (x2 + x4) pow 4 + (x3 + x4) pow 4 +
(x1 - x2) pow 4 + (x1 - x3) pow 4 + (x1 - x4) pow 4 +
(x2 - x3) pow 4 + (x2 - x4) pow 4 + (x3 - x4) pow 4) / &6`;;
}
\noindent and here is one that holds by linear inequality reasoning:
{
# g `&26 < x / &2 ==> abs(x / &4 + &1) < abs(x / &3)`;;
}
\noindent so either goal is solved simply by:
{
# e REAL_ARITH_TAC;;
val it : goalstack = No subgoals
}
\COMMENTS
For nonlinear equational reasoning, use {CONV_TAC REAL_RING} or {CONV_TAC
REAL_FIELD}. For nonlinear inequality reasoning, there are no powerful
rules
built into HOL Light, but the additional derived rules defined in
{Examples/sos.ml} and {Rqe/make.ml} may be useful.
\SEEALSO
ARITH_TAC, ASM_REAL_ARITH_TAC, INT_ARITH_TAC, REAL_ARITH, REAL_FIELD,
REAL_RING.
\ENDDOC
Download