https://github.com/JacquesCarette/hol-light
Raw File
Tip revision: b27a524086caf73530b7c2c5da1b237d3539f143 authored by Jacques Carette on 24 August 2020, 14:18:07 UTC
Merge pull request #35 from sjjs7/final-changes
Tip revision: b27a524
FIX_TAC.doc
\DOC FIX_TAC

\TYPE {FIX_TAC : string -> tactic}

\SYNOPSIS
Fixes universally quantified variables in goal.

\DESCRIBE

Given a string {s} indicating a sequence of variable names, {FIX_TAC s}
performs the introduction of the indicated universally quantified variables.
It is not required to specify the variables in any particular order. The
syntax for the string argument s allows the following patterns:

\begin{{itemize}}

\item a variable name {varname} (meaning introduce the variable varname)

\item a pattern {[newname/varname]} (meaning introduce {varname} and call it
   {newname})

\item a pattern {[newname]} (meaning introduce the outermost variable and
   call it {newname})

\item a final {*} (meaning introduce the remaining outermost universal
   quantified variables)

\end{{itemize}}

\FAILURE
Fails if the string specifying the variables is ill-formed or if some of the
indicated variables are not present as outer universal quantifiers in the goal.

\EXAMPLE
Here we fix just the variable {a}:
{
  # g `!x a. a + x = x + a`;;
  # e (FIX_TAC "a");;
  val it : goalstack = 1 subgoal (1 total)

  `!x. a + x = x + a`
}
\noindent while here we rename one of the variables and fix all the others:
{
  # g `!a b x. a + b + x = (a + b) + x`;;
  # e (FIX_TAC "[d/x] *");;
  val it : goalstack = 1 subgoal (1 total)

  `a + b + d = (a + b) + d`
}

Here we fix an automatically generated variable and choose a meaningful name
for it
{
  # g `(@x. x = 0) + 0 = 0`;;
  # e SELECT_ELIM_TAC;;
  val it : goalstack = 1 subgoal (1 total)

  `!_75605. (!x. x = 0 ==> _75605 = 0) ==> _75605 + 0 = 0`

  # e (FIX_TAC "[y]");;
  val it : goalstack = 1 subgoal (1 total)

  `(!x. x = 0 ==> y = 0) ==> y + 0 = 0`
}

\SEEALSO
GEN, GEN_TAC, INTRO_TAC, STRIP_TAC, X_GEN_TAC.

\ENDDOC
back to top