Я прошу прощения за то, что задал так много вопросов Изабель за последнее время. Прямо сейчас у меня есть проблема с типом.
Я хочу использовать синоним типа, введенный в AFP-теории.
type_synonym my_fun = "nat ⇒ real"
В моей собственной теории есть локаль, где:
fixes n :: nat
and f :: "my_fun"
and A :: "nat set"
defines A: "A ≡ {0..n}"
Однако, в моем случае использования, выход функции f всегда является натуральным числом в наборе {0..n}. Я хочу навязать это как условие (или есть ли лучший способ сделать это?). Я нашел только один способ:
assumes "∀v. ∃ i. f v = i ∧ i ∈ A"
, поскольку
assumes "∀v. f v ∈ A"
не работает.
Если Я позволил Изабель показать мне, какие типы шрифтов мне подходят:
∀v::nat. ∃i::nat. (f::nat ⇒ real) v = real i ∧ i ∈ (A::nat set)
Но, конечно, теперь я не могу напечатать что-то вроде этого:
have "f ` {0..10} ⊆ A"
Но я должен это доказать. Я понимаю, откуда эта проблема. Однако я не знаю, как поступить в таком случае. Какой нормальный способ с этим справиться? Я хотел бы использовать my_fun, поскольку он имеет то же значение, что и в моей теории.
Спасибо (еще раз).