У меня есть тип записи, который допускает недопустимые экземпляры, поскольку они могут быть из внешнего источника. Например,
record Foo : Set where
fields
x : Nat
y : Nat
z : Nat
Теперь у меня есть валидатор, который возвращает доказательство того, что данный Foo
соответствует определенным суждениям. Тип доказательства может быть, например, следующим:
data IsValidFoo : Foo → Set where
validFoo : (foo : Foo) → Even (Foo.x foo) → (Foo.y foo) < (Foo.z foo) → IsValidFoo foo
validateFoo : (foo : Foo) → Maybe (IsValidFoo foo)
…
Я хочу иметь возможность получить доступ к отдельным доказательствам в IsValidFoo
по имени и мысли о преобразовании IsValidFoo
в тип записи. Возможно ли это и как этого достичь, если я хочу, чтобы его тип оставался IsValidFoo : Foo → Set
?