Вы можете выбрать конкретный случай с помощью тактики rewrite
, используя суффикс at <em>N</em>
.Вхождения нумеруются от 1 в порядке слева направо.Вы можете переписать несколько вхождений, разделяя их индексы пробелами.Вам нужно Require Import Setoid
.Суффикс at
также доступен с некоторыми другими тактиками, нацеленными на вхождения термина, включая многие тактики, выполняющие преобразования (change
, unfold
, fold
и т. Д.), set
, destruct
,и т. д.
intros.
rewrite -> (comm a b) at 2.
rewrite -> (comm _ _).
reflexivity.
Существуют и другие возможные подходы, особенно если все, что вам нужно, это применять равенства.Тактика congruence
может найти то, что нужно переписать и применить симметрию и транзитивность самостоятельно, но вам нужно проинициализировать ее, добавив все эквивалентности в контекст (в форме универсально-количественных равенств), она не будет запрашивать базы данных подсказок.
assert (Comm := comm).
congruence.
Для большей автоматизации Hint Rewrite
создает базу данных теорем, которые попытается применить тактика autorewrite
.Для более продвинутой автоматизации, посмотрите обобщенное переписывание с сетоидами, с которым я не достаточно знаком, чтобы разъяснять.