您可以显式更改的类型f x
:
Π-equal : ∀ {α β} {A : Set α} {B : A -> Set β} {f : (x : A) -> B x} {x y : A}
-> (p : x ≡ y) -> P.subst B p (f x) ≡ f y
Π-equal refl = refl
或者
Π-equal'T : ∀ {α β} {A : Set α} {B : A -> Set β} -> ((x : A) -> B x) -> (x y : A) -> x ≡ y -> Set β
Π-equal'T f x y p with f x | f y
...| fx | fy rewrite p = fx ≡ fy
Π-equal' : ∀ {α β} {A : Set α} {B : A -> Set β} {f : (x : A) -> B x} {x y : A}
-> (p : x ≡ y) -> Π-equal'T f x y p
Π-equal' refl = refl
或者您可以使用异构相等:
Π-equal'' : ∀ {α β} {A : Set α} {B : A -> Set β} {f : (x : A) -> B x} {x y : A}
-> x ≡ y -> f x ≅ f y
Π-equal'' refl = refl
该subst
函数也很有用,这是它的类型(C-c C-d P.subst
在 Emacs 中):
{a p : .Agda.Primitive.Level} {A : Set a} (P : A → Set p)
{x y : A} →
x ≡ y → P x → P y
使用的进口:
open import Relation.Binary.PropositionalEquality as P
open import Relation.Binary.HeterogeneousEquality as H
顺便说一句,您f-equal
在cong
标准库中。