Тип Несоответствие Зависимая Мили Машина - PullRequest
0 голосов
/ 16 декабря 2018

Функция X проходит проверку типа, а DependentMealy - нет.Мне кажется, что они оба одинаковы.Первый аргумент - это состояние.Второй аргумент - это функция, которая задает тип ввода для машины из текущего состояния.Третий аргумент - это функция, которая дает новое состояние.Четвертый аргумент - это функция, которая задает тип вывода мучного аппарата.Состояние подразумевается как уровень типа.

X : state -> (opt : state -> Type) -> ((s : state) -> opt s -> state) -> ((s : state) -> opt s -> Type) -> Type
X s f1 f2 f3  = (op : f1 s) -> (f3 s op, X (f2 s op) f1 f2 f3)

data DependentMealy : state -> (opt : state -> Type) -> ((s : state) -> opt s -> state) -> ((s : state) -> opt s -> Type) -> Type where
     MkDependentMealy : ((op : f1 s) -> (f3 s op, DependentMealy (f2 s op) f1 f2 f3)) -> DependentMealy s f1 f2 f3

При проверке типа NewM.MkDependentMealy: при проверке приложения NewM.DependentMealy:

Несоответствие типов между

phTy -> f1 s -> Type (Type of f3) 

и

(s8 : phTy) -> f1 s8 -> Type (Expected type)

В частности: Несоответствие типов между

f1 s

и

f1 v0
...