【问题标题】:Isabelle - Code generation - typedefIsabelle - 代码生成 - typedef
【发布时间】:2016-01-11 21:33:06
【问题描述】:

我正在尝试从一个非常简单的 Isabelle 程序生成代码。

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

反正我不明白。究竟缺少什么?

【问题讨论】:

    标签: code-generation isabelle


    【解决方案1】:

    您可以在提升和转移包中注册类型。然后代码生成工作。此外,最好不要直接使用Rep_point,而是使用lift_definition,例如,如下代码所示。

    setup_lifting type_definition_point
    
    lift_definition xCoord :: "point ⇒ real" is fst .
    
    export_code xCoord in Haskell module_name Example 
    

    【讨论】:

    • 另一种解决方案是将点定义为数据类型,例如datatype point = Point "real × real".
    猜你喜欢
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 2017-12-27
    • 2018-09-26
    • 2018-06-15
    • 2010-10-31
    • 2016-06-04
    相关资源
    最近更新 更多