Представление бета-равенства в Agda
Я недавно спросил , как правильно представлять бета-равенство на языке доказательства, таком как Agda.Принятый ответ указывает на стандартный способ сделать это путем определения его конгруэнтного замыкания
data _~_ {n} : Tm n → Tm n → Set where
β : ∀ {t u} → app (lam t) u ~ sub u t
app : ∀ {t t' u u'} → t ~ t' → u ~ u' → app t u ~ app t' u'
lam : ∀ {t t'} → t ~ t' → lam t ~ lam t'
~refl : ∀ {t} → t ~ t
~sym : ∀ {t t'} → t ~ t' → t' ~ t
~trans : ∀ {t t' t''} → t ~ t' → t' ~ t'' → t ~ t''
, которое, если я правильно понимаю, указывает, что: 1. приложение (λx.t u)
равно t[u/x]
,2. функция / аргумент приложения или тело функции могут быть заменены равными терминами;3. рефлексивность, симметрия и транзитивность сохраняются.Ответ также предлагает альтернативу: можно определить одноэтапное редукционное отношение между терминами, затем определить многоэтапное редукционное отношение и, наконец, определить, что два термина равны, если их можно в конечном итоге уменьшить до идентичного термина.Обе эти альтернативы имеют смысл.
Другая альтернатива
Пока я ждал ответа, я искал это определение:
data _~_ : Term → Term → Set where
refl : (a : Term) → a ~ a
red₁ : (a b : Term) → (f : Term → Term) → f a ~ b → f (redex a) ~ b
red₂ : (a b : Term) → (f : Term → Term) → a ~ f b → a ~ f (redex b)
amp₁ : (a b : Term) → (f : Term → Term) → f (redex a) ~ b → f a ~ b
amp₂ : (a b : Term) → (f : Term → Term) → a ~ f (redex b) → a ~ f b
Где redex a
применяет одну подстановку, если a
является приложением λ.Это говорит о том, что термины эквивалентны, если они идентичны или если их можно сделать идентичными, уменьшая / уменьшая любое из его подвыражений.Можно доказать sym
, trans
, cong
:
sym : (a : Term) -> (b : Term) -> a ~ b -> b ~ a
trans : (a : Term) → (b : Term) → (c : Term) → a ~ b → b ~ c → a ~ c
cong : (f : Term → Term) → (a : Term) → (b : Term) → a ~ b → f a ~ f b
Полный источник доступен здесь .Теперь, ради любопытства, я хотел бы знать, является ли третье решение также допустимым представлением?Если это так, каковы его отношения с двумя предыдущими?Если нет, то почему?