codatatype
으로 첫 번째 실험을하고 있지만 다소 빠르다. 나는 분기의 정의, 가능성이 무한 트리 시작 :코어 캐시 트리를 정의 할 때 "유효하지 않은 맵 기능"
codatatype (lset: 'a) ltree = Node (lnext : "'a ⇒ 'a ltree option")
일부 정의는 잘 작동 :
primcorec lempty :: "'a ltree"
where "lnext lempty = (λ _ . None)"
primcorec single :: "'a ⇒ 'a ltree"
where "lnext (single x) = (λ _ . None)(x := Some lempty)"
하지만이 작동하지 않습니다
primcorec many :: "'a ⇒ 'a ltree"
where "lnext (many x) = (λ _ . None)(x := Some (many x))"
내가 얻을로 오류 메시지
primcorec error:
Invalid map function in "[x ↦ many x]"
나는 primcorec
방법 fun
요구 fundef_cong
보조 정리 및 inductive
요구 mono
보조 정리 유사한 기능을 업데이트 연산자 "에 대해 뭔가를 알고"할 필요가 있다고 생각 될 수
primcorec many :: "'a ⇒ 'a ltree"
where "lnext (many x) = (λ x'. if x' = x then Some (many x) else None)"
를 작성하여 해결 할 수있다. 그러나 정확하게 무엇?
아,이 점에 대해 자세히 알아 보려면 어떻게해야합니까? –