Как можно конструктивно доказать, что число 4 является полным квадратом некоторого натурального числа? Предъявив такое число n, для которого n * n = 4. ( И мы знаем это число... )
Ну проще всего воспользоваться квантором существования (то есть зависимой парой, если размышлять на уровне термов):
list-by-hand : List (∃ λ n → Image square ∋ n) list-by-hand = (4 , im 2) ∷ (1 , im 1) ∷ (0 , im 0) ∷ [] Теперь обобщаем до заказываемой пользователем длины
list-of-squares : ℕ → List (∃ λ n → Image square ∋ n) list-of-squares = Data.List.map ( λ x → square x , im x) ∘ downFrom Ну и, абстрагируясь от square, получим
list-of-images : {Y : Set}(f : ℕ → Y) → ℕ → List (∃ λ n → Image f ∋ n) list-of-images f = Data.List.map ( λ x → f x , im x) ∘ downFrom
Да, спасибо, хороший курс и организован разумно. У нас магистры перегружены, я сомневаюсь, что мне дадут слот под это дело. Может для аспирантов спецкурс удастся сделать, но мне ещё надо некоторое время самому пооттачивать кунг-фу.
Comments 53
Вопрос: а можно ли сделать таблицу - массив/список, где n-ный элемент будет содержать Image f ∋ n? В ATS я подобное делал, но через хак по сути.
Reply
Reply
Reply
list-by-hand : List (∃ λ n → Image square ∋ n)
list-by-hand = (4 , im 2) ∷ (1 , im 1) ∷ (0 , im 0) ∷ []
Теперь обобщаем до заказываемой пользователем длины
list-of-squares : ℕ → List (∃ λ n → Image square ∋ n)
list-of-squares = Data.List.map ( λ x → square x , im x) ∘ downFrom
Ну и, абстрагируясь от square, получим
list-of-images : {Y : Set}(f : ℕ → Y) → ℕ → List (∃ λ n → Image f ∋ n)
list-of-images f = Data.List.map ( λ x → f x , im x) ∘ downFrom
Reply
Reply
Reply
Reply
Но вы поищите, может я недосмотрел.
Reply
http://www.cs.nott.ac.uk/~txa/g53cfr/
Если делать свой курс, то на этот стоит обратить внимание.
Reply
Reply
Reply
Reply
Leave a comment