Я хотел бы формализовать структуру данных (конкатенацию строк) в Coq:
Require Import List.
Record SeedPassword (A: Type): Type := {
seed: list A;
password: list A
}.
Record SeedPasswordConcatenation {A: Type} (S: SeedPassword A): Type := {
concatenation: list A;
proof: concatenation = (seed S ++ password S)
}.
Однако я получаю сообщение об ошибке в последней записи:
The term "S" has type "SeedPassword A" while it is expected to have type "Type".
Почемуэто ожидать Type
?Проекция seed
должна занять SeedPassword A
, верно?