0
CPDT에서 코드를 작성하면 쉬운 스트림 ones
에 대한 속성을 증명하고 싶습니다. 항상 1
을 반환합니다.Coq에있는 스트림의 간단한 증거
Eval compute in approx Z ones 5.
= 1 :: 1 :: 1 :: 1 :: 1 :: nil
: list Z
가 어떻게 작업을 수행합니다,
Fixpoint approx A (s:Stream A) (n:nat) : list A :=
match n with
| O => nil
| S p => match s with
| Cons h t => h :: approx A t p
end
end.
다섯 1
의 목록을 가져 오려면 예를 :
CoFixpoint ones : Stream Z := Cons 1 ones.
또한 CPDT에서, 나는 스트림에서 목록을 검색하려면이 기능을 사용 모든 n
에 대해 approx
이 주어지면 그 목록에는 1
만 포함될 것임을 증명합니다. 나는 이것을 공식화하는 방법조차 모릅니다. 목록에 nth n list
과 같은 도움말 기능을 사용해야하는 경우 요소 번호 n
을 list
에서 반환합니까? 그리고 그
forall (n length : nat), nth n1 (approx Z ones length) = 1
(아니면 Zeq
대신 =
를 사용합니다.)
내가 올바른 방향을 향하고 있습니까?