From b5e1ae0c2960f3e18bf1c42083976e4436647e78 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Tue, 17 Mar 2020 15:50:19 -0400 Subject: [PATCH] Clarify what linear_arithmetic does these days --- frap_book.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frap_book.tex b/frap_book.tex index 53ec2c6..20d5a01 100644 --- a/frap_book.tex +++ b/frap_book.tex @@ -5506,7 +5506,7 @@ Note that many of these are specific to the \texttt{Frap} library distributed wi \item[\texttt{f\_equal}] When the goal is an equality between two applications of the same function, switch to proving that the function arguments are pairwise equal. \item[\texttt{induct} $x$] Where $x$ is a variable in the theorem statement, structure the proof by induction on the structure of $x$. You will get one generated subgoal per constructor in the inductive definition of $x$. (Indeed, it is required that $x$'s type was introduced with \texttt{Inductive}.) \item[\texttt{invert} $H$] Replace hypothesis $H$ with other facts that can be deduced from the structure of $H$'s statement. More detail to be added here soon! - \item[\texttt{linear\_arithmetic}] A complete decision procedure for linear arithmetic. Relevant formulas are essentially those built up from variables and constant natural numbers and integers using only addition and subtraction, with equality and inequality comparisons on top. (Multiplication by constants is supported, as a shorthand for repeated addition.) See Section \ref{decidable}. + \item[\texttt{linear\_arithmetic}] A complete decision procedure for linear arithmetic. Relevant formulas are essentially those built up from variables and constant natural numbers and integers using only addition and subtraction, with equality and inequality comparisons on top. (Multiplication by constants is supported, as a shorthand for repeated addition.) See Section \ref{decidable}. Also note that this tactic goes a bit beyond that theory, by (1) converting multivariable terms into a standard polynomial form and then (2) treating each different product of powers of variables as one variable in a linear-arithmetic problem. So, for instance, \texttt{linear\_arithmetic} can prove $x \times y = y \times x$ simply by deciding that a new variable $z = x \times y$, rewriting the goal to $z = z$ after putting polynomials in canonical form (in this case, commuting argument order in products to make it consistent). \item[\texttt{left}] Prove a disjunction by proving its left side. \item[\texttt{maps\_equal}] Prove that two finite maps are equal by considering all the relevant cases for mappings of different keys. \item[\texttt{propositional}] Simplify a goal into zero or more new goals, based on the rules of propositional logic alone.