2016-09-15 3 views
1

This answer обеспечивает простой полезный трюк: unfold ">=" такой же, как unfold ge, но не требует, чтобы вы знали, что >= это обозначение ge.Открываются нотацию в пределах области

Можете ли вы сделать то же самое для обозначений в пределах области?

Require Import NArith. 
Goal forall x, (x >= x)%N. 
unfold ">=". 

unfold ">=" Здесь ничего не делать, потому что он пытается раскрыть ge, не N.ge.

Я нашел следующее решение:

Open Scope N. 
unfold ">=". 

Но есть ли синтаксис, позволяющий развернуть эту запись, не открывая сферу?

ответ

1

Да, вы можете использовать шаблон unfold string % scope следующим образом:

Require Import NArith. 
Goal forall x, (x >= x)%N. 
    unfold ">=" % N. 

Это дает нам цель forall x : N, (x ?= x)%N <> Lt с развернутым >=.

+0

Спасибо! Я пробовал много синтаксиса, но не этот. –

+0

'(term)% scope' является стандартным синтаксисом для локального открытия области интерпретации. Так получилось, что Coq принимает это и в этом случае. На самом деле это не 'scope', а' key', я здесь неаккуратный. –