Я доказал это простофиля правило:Почему симулятор не обрабатывает этот термин внутри выражения лямбда?
lemma AAA: the_sector (log_update ?f ?s) ?p = the_sector ?s ?p
правило не используется для упрощения следующее:
lemma BBB: "(λA. if A then (the_sector (log_update f s) p) else B)
=
(λA. if A then (the_sector s p) else B)"
Я знаю, что я могу применить авто или (правило вн) с последующим по simp, чтобы доказать эту лемму, но моя конечная цель - это нечто более неприятное, чем функция. Я считаю, что точкой приклеивания является использование функциональной переменной A в условии if. Я хотел бы понять, почему simp не упрощает термин в этом случае.
Следующая иллюстрируют, почему я считаю, что это камень преткновения (оба доказаны):
lemma CCC: "(λf s p. the_sector (log_update f s) p) = (λf s p. the_sector s p)"
by simp
lemma DDD: "(if A then (the_sector (log_update f s) p) else B)
=
(if A then (the_sector s p) else B)"
by simp
Спасибо за любые советы.