假设F *中的val和opaque类型构造

时间:2017-04-02 14:32:41

标签: types functional-programming fstar

我是F *的新手,虽然教程编写得很好但我缺少一些好的API页面供参考。

所以我需要以下结构的精确含义:

assume val name: type

我会说这行在求解器中注册了正在使用的名字吗?

opaque type name (...) ...

调用不透明类型有什么影响?它可能需要参数列表怎么样?

请提供您用于提供此答案的参考资料。

1 个答案:

答案 0 :(得分:2)

{ "name-of-index": { "order": 0, "version": 50001, "template": "name-of-index-*", "settings": { "index": { "refresh_interval": "5s" } }, "mappings": { "_default_": { "dynamic_templates": [ { "message_field": { "path_match": "message", "mapping": { "norms": false, "type": "text" }, "match_mapping_type": "string" } }, { "string_fields": { "mapping": { "norms": false, "type": "text", "fields": { "keyword": { "type": "keyword" } } }, "match_mapping_type": "string", "match": "*" } } ], "_all": { "norms": false, "enabled": true }, "properties": { "@timestamp": { "include_in_all": false, "type": "date" }, "geoip": { "dynamic": true, "properties": { "ip": { "type": "ip" }, "latitude": { "type": "half_float" }, "location": { "type": "geo_point" }, "longitude": { "type": "half_float" } } }, "@version": { "include_in_all": false, "type": "keyword" } } } }, "aliases": {} } } 的含义是假设assume val name : Type居住的公理可由Type访问。由于它是一个公理,它不会有实现,并且如果误用会导致逻辑上的不一致(例如假设一个严格小于0的自然数)。

F *教程与去年发生的多项更改并不完全一致,name是该问题的一个实例。 从编译器源(写作时,在opaque中):

  

'不透明'限定词因为使用奇怪的精神分裂症而被弃用。有两个重载用途:   (1)鉴于“不透明的val f:t'”,行为是排除“f' f'到SMT求解器。这大致相当于新的' irreducible'预选赛。   (2)给定' opaque类型t = t'',行为是提供' t' SMT求解器,但不要内联它,除非统一需要。这大致相当于“不可展开的”行为。 (目前是默认值)。