ASM_REAL_ARITH_TAC : tactic
- SYNOPSIS
-
Attempt to prove goal using basic algebra and linear arithmetic over the reals.
- DESCRIPTION
-
The tactic ASM_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. Unlike plain
REAL_ARITH_TAC, ASM_REAL_ARITH_TAC uses any assumptions that are not
universally quantified as additional hypotheses.
- FAILURE CONDITIONS
-
Fails if the goal is not in the subset solvable by these means, or is not
valid.
- EXAMPLE
-
This example illustrates how ASM_REAL_ARITH_TAC uses assumptions while
REAL_ARITH_TAC does not. Of course, this is for illustration only: plain
REAL_ARITH_TAC would solve the entire goal before application of STRIP_TAC.
# g `!x y z:real. abs(x) <= y ==> abs(x - z) <= abs(y + abs(z))`;;
val it : goalstack = 1 subgoal (1 total)
`!x y z. abs x <= y ==> abs (x - z) <= abs (y + abs z)`
# e(REPEAT STRIP_TAC);;
val it : goalstack = 1 subgoal (1 total)
0 [`abs x <= y`]
`abs (x - z) <= abs (y + abs z)`
# e REAL_ARITH_TAC;;
Exception: Failure "linear_ineqs: no contradiction".
# e ASM_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.
- SEE ALSO
-
ARITH_TAC, INT_ARITH_TAC, REAL_ARITH, REAL_ARITH_TAC, REAL_FIELD, REAL_RING.