\DOC SUBST_OCCS_TAC \SYNOPSIS

advertisement
\DOC SUBST_OCCS_TAC
\TYPE {SUBST_OCCS_TAC : (int list * thm) list -> tactic}
\SYNOPSIS
Makes substitutions in a goal at specific occurrences of a term, using a
list
of theorems.
\KEYWORDS
tactic.
\DESCRIBE
Given a list {(l1,A1|-t1=u1),...,(ln,An|-tn=un)} and a goal {(A,t)},
{SUBST_OCCS_TAC} replaces each {ti} in {t} with {ui}, simultaneously,
at the occurrences specified by the integers in the list {li =
[o1,...,ok]}
for each theorem {Ai|-ti=ui}.
{
A ?- t
============================= SUBST_OCCS_TAC [(l1,A1|-t1=u1),...,
A ?- t[u1,...,un/t1,...,tn]
(ln,An|-tn=un)]
}
The assumptions of the theorems used to substitute with are not
added to the assumptions {A} of the goal, but they are recorded in the
proof.
If any {Ai} is not a subset of {A} (up to alpha-conversion),
{SUBST_OCCS_TAC [(l1,A1|-t1=u1),...,(ln,An|-tn=un)]}
results in an invalid tactic.
{SUBST_OCCS_TAC} automatically renames bound variables to prevent
free variables in {ui} becoming bound after substitution.
\FAILURE
{SUBST_OCCS_TAC [(l1,th1),...,(ln,thn)] (A,t)} fails if the conclusion of
any
theorem in the list is not an equation. No change is made to the goal if
the
supplied occurrences {li} of the left-hand side of the conclusion of
{thi} do
not appear in {t}.
\EXAMPLE
When trying to solve the goal
{
?- (m + n) + (n + m) = (m + n) + (m + n)
}
applying the commutative law for addition on the third occurrence of
the subterm {m + n}
{
SUBST_OCCS_TAC [([3], SPECL [Term `m:num`, Term `n:num`]
arithmeticTheory.ADD_SYM)]
}
results in the goal
{
?- (m + n) + (n + m) = (m + n) + (n + m)
}
\USES
{SUBST_OCCS_TAC} is used when rewriting a goal at specific occurrences
of a term, and when rewriting tactics such as {REWRITE_TAC},
{PURE_REWRITE_TAC}, {ONCE_REWRITE_TAC}, {SUBST_TAC}, etc.
are too extensive or would diverge.
\SEEALSO
Rewrite.ONCE_REWRITE_TAC, Rewrite.PURE_REWRITE_TAC, Rewrite.REWRITE_TAC,
Tactic.SUBST1_TAC, Tactic.SUBST_TAC.
\ENDDOC
Download