2016-01-11 1 views
3

Я пытаюсь сгенерировать код из очень простой программы Isabelle.Isabelle - генерация кода - typedef

typedef point = "{p::(real*real). True}" by(auto) 
definition xCoord :: "point ⇒ real" where "xCoord P ≡ fst(Rep_point P)" 

export_code xCoord in Haskell module_name Example file code 

но получаю ошибку:

No code equations for Rep_point 

в любом случае я не понимаю. Что именно отсутствует?

ответ

3

Вы можете зарегистрировать тип в подъемно-транспортной упаковке. Затем работает генерация кода. Более того, полезно не использовать непосредственно Rep_point, а вместо этого использовать lift_definition, например, как в следующем коде.

setup_lifting type_definition_point 

lift_definition xCoord :: "point ⇒ real" is fst . 

export_code xCoord in Haskell module_name Example 
+1

Другим решением является определение точки в качестве типа данных, например. 'datatype point = Point" real × real "'. –