summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--compiler/Translate.ml23
-rw-r--r--tests/coq/betree/BetreeMain_Funs.v4
-rw-r--r--tests/coq/betree/BetreeMain_FunsExternal.v (renamed from tests/coq/betree/BetreeMain_Opaque.v)7
-rw-r--r--tests/coq/betree/BetreeMain_FunsExternal_Template.v46
-rw-r--r--tests/coq/betree/_CoqProject3
-rw-r--r--tests/coq/hashmap_on_disk/HashmapMain_Funs.v4
-rw-r--r--tests/coq/hashmap_on_disk/HashmapMain_FunsExternal.v (renamed from tests/coq/hashmap_on_disk/HashmapMain_Opaque.v)4
-rw-r--r--tests/coq/hashmap_on_disk/HashmapMain_FunsExternal_Template.v26
-rw-r--r--tests/coq/hashmap_on_disk/_CoqProject3
-rw-r--r--tests/coq/misc/External_Funs.v4
-rw-r--r--tests/coq/misc/External_FunsExternal.v (renamed from tests/coq/misc/External_Opaque.v)4
-rw-r--r--tests/coq/misc/External_FunsExternal_Template.v44
-rw-r--r--tests/coq/misc/_CoqProject3
-rw-r--r--tests/fstar/betree/BetreeMain.Funs.fst2
-rw-r--r--tests/fstar/betree/BetreeMain.FunsExternal.fsti (renamed from tests/fstar/betree_back_stateful/BetreeMain.Opaque.fsti)2
-rw-r--r--tests/fstar/betree_back_stateful/BetreeMain.Funs.fst2
-rw-r--r--tests/fstar/betree_back_stateful/BetreeMain.FunsExternal.fsti (renamed from tests/fstar/betree/BetreeMain.Opaque.fsti)2
-rw-r--r--tests/fstar/hashmap_on_disk/HashmapMain.Funs.fst2
-rw-r--r--tests/fstar/hashmap_on_disk/HashmapMain.FunsExternal.fsti (renamed from tests/fstar/hashmap_on_disk/HashmapMain.Opaque.fsti)2
-rw-r--r--tests/fstar/misc/External.Funs.fst2
-rw-r--r--tests/fstar/misc/External.FunsExternal.fsti (renamed from tests/fstar/misc/External.Opaque.fsti)2
21 files changed, 158 insertions, 33 deletions
diff --git a/compiler/Translate.ml b/compiler/Translate.ml
index 05e48af5..31cb4b32 100644
--- a/compiler/Translate.ml
+++ b/compiler/Translate.ml
@@ -977,7 +977,7 @@ let extract_file (config : gen_config) (ctx : gen_ctx) (fi : extract_file_info)
| FStar -> ()
| Lean -> if fi.in_namespace then Printf.fprintf out "end %s\n" fi.namespace
| HOL4 -> Printf.fprintf out "val _ = export_theory ()\n"
- | Coq -> Printf.fprintf out "End %s .\n" fi.module_name);
+ | Coq -> Printf.fprintf out "End %s.\n" fi.module_name);
(* Some logging *)
log#linfo (lazy ("Generated: " ^ fi.filename));
@@ -1320,13 +1320,20 @@ let translate_crate (filename : string) (dest_dir : string) (crate : crate) :
(* Extract the opaque declarations, if needed *)
let opaque_funs_module =
if has_opaque_funs then (
- (* In the case of Lean we generate a template file *)
+ (* For F*, we generate an .fsti, and let the user write the .fst.
+ For the other backends, we generate a template file as a model
+ for the file the user has to provide. *)
let module_suffix, opaque_imported_suffix, custom_msg =
match !Config.backend with
- | FStar | Coq | HOL4 ->
- ("Opaque", "Opaque", ": external function declarations")
- | Lean ->
- ( "FunsExternal_Template",
+ | FStar ->
+ ( "FunsExternal",
+ "FunsExternal",
+ ": external function declarations" )
+ | HOL4 | Coq | Lean ->
+ ( (* The name of the file we generate *)
+ "FunsExternal_Template",
+ (* The name of the file that will be imported by the Funs
+ module, and that the user has to provide. *)
"FunsExternal",
": external functions.\n\
-- This is a template file: rename it to \
@@ -1337,9 +1344,7 @@ let translate_crate (filename : string) (dest_dir : string) (crate : crate) :
in
let opaque_module = crate_name ^ module_delimiter ^ module_suffix in
let opaque_imported_module =
- if !Config.backend = Lean then
- crate_name ^ module_delimiter ^ opaque_imported_suffix
- else opaque_module
+ crate_name ^ module_delimiter ^ opaque_imported_suffix
in
let opaque_config =
{
diff --git a/tests/coq/betree/BetreeMain_Funs.v b/tests/coq/betree/BetreeMain_Funs.v
index 8e48b17d..ede82492 100644
--- a/tests/coq/betree/BetreeMain_Funs.v
+++ b/tests/coq/betree/BetreeMain_Funs.v
@@ -8,8 +8,8 @@ Import ListNotations.
Local Open Scope Primitives_scope.
Require Export BetreeMain_Types.
Import BetreeMain_Types.
-Require Export BetreeMain_Opaque.
-Import BetreeMain_Opaque.
+Require Export BetreeMain_FunsExternal.
+Import BetreeMain_FunsExternal.
Module BetreeMain_Funs.
(** [betree_main::betree::load_internal_node]: forward function
diff --git a/tests/coq/betree/BetreeMain_Opaque.v b/tests/coq/betree/BetreeMain_FunsExternal.v
index a065c8a3..07dba263 100644
--- a/tests/coq/betree/BetreeMain_Opaque.v
+++ b/tests/coq/betree/BetreeMain_FunsExternal.v
@@ -1,5 +1,6 @@
(** THIS FILE WAS AUTOMATICALLY GENERATED BY AENEAS *)
-(** [betree_main]: external function declarations *)
+(** [betree_main]: external functions.
+-- This is a template file: rename it to "FunsExternal.lean" and fill the holes. *)
Require Import Primitives.
Import Primitives.
Require Import Coq.ZArith.ZArith.
@@ -8,7 +9,7 @@ Import ListNotations.
Local Open Scope Primitives_scope.
Require Export BetreeMain_Types.
Import BetreeMain_Types.
-Module BetreeMain_Opaque.
+Module BetreeMain_FunsExternal.
(** [betree_main::betree_utils::load_internal_node]: forward function
Source: 'src/betree_utils.rs', lines 98:0-98:63 *)
@@ -42,4 +43,4 @@ Axiom core_option_Option_unwrap :
forall(T : Type), option T -> state -> result (state * T)
.
-End BetreeMain_Opaque .
+End BetreeMain_FunsExternal.
diff --git a/tests/coq/betree/BetreeMain_FunsExternal_Template.v b/tests/coq/betree/BetreeMain_FunsExternal_Template.v
new file mode 100644
index 00000000..4898acd4
--- /dev/null
+++ b/tests/coq/betree/BetreeMain_FunsExternal_Template.v
@@ -0,0 +1,46 @@
+(** THIS FILE WAS AUTOMATICALLY GENERATED BY AENEAS *)
+(** [betree_main]: external functions.
+-- This is a template file: rename it to "FunsExternal.lean" and fill the holes. *)
+Require Import Primitives.
+Import Primitives.
+Require Import Coq.ZArith.ZArith.
+Require Import List.
+Import ListNotations.
+Local Open Scope Primitives_scope.
+Require Export BetreeMain_Types.
+Import BetreeMain_Types.
+Module BetreeMain_FunsExternal_Template.
+
+(** [betree_main::betree_utils::load_internal_node]: forward function
+ Source: 'src/betree_utils.rs', lines 98:0-98:63 *)
+Axiom betree_utils_load_internal_node
+ : u64 -> state -> result (state * (betree_List_t (u64 * betree_Message_t)))
+.
+
+(** [betree_main::betree_utils::store_internal_node]: forward function
+ Source: 'src/betree_utils.rs', lines 115:0-115:71 *)
+Axiom betree_utils_store_internal_node
+ :
+ u64 -> betree_List_t (u64 * betree_Message_t) -> state -> result (state *
+ unit)
+.
+
+(** [betree_main::betree_utils::load_leaf_node]: forward function
+ Source: 'src/betree_utils.rs', lines 132:0-132:55 *)
+Axiom betree_utils_load_leaf_node
+ : u64 -> state -> result (state * (betree_List_t (u64 * u64)))
+.
+
+(** [betree_main::betree_utils::store_leaf_node]: forward function
+ Source: 'src/betree_utils.rs', lines 145:0-145:63 *)
+Axiom betree_utils_store_leaf_node
+ : u64 -> betree_List_t (u64 * u64) -> state -> result (state * unit)
+.
+
+(** [core::option::{core::option::Option<T>}::unwrap]: forward function
+ Source: '/rustc/d59363ad0b6391b7fc5bbb02c9ccf9300eef3753/library/core/src/option.rs', lines 932:4-932:34 *)
+Axiom core_option_Option_unwrap :
+ forall(T : Type), option T -> state -> result (state * T)
+.
+
+End BetreeMain_FunsExternal_Template .
diff --git a/tests/coq/betree/_CoqProject b/tests/coq/betree/_CoqProject
index 42c62421..9ab8ea9f 100644
--- a/tests/coq/betree/_CoqProject
+++ b/tests/coq/betree/_CoqProject
@@ -5,5 +5,6 @@
BetreeMain_Types.v
Primitives.v
+BetreeMain_FunsExternal_Template.v
BetreeMain_Funs.v
-BetreeMain_Opaque.v
+BetreeMain_FunsExternal.v
diff --git a/tests/coq/hashmap_on_disk/HashmapMain_Funs.v b/tests/coq/hashmap_on_disk/HashmapMain_Funs.v
index 46d3ee29..188c98b3 100644
--- a/tests/coq/hashmap_on_disk/HashmapMain_Funs.v
+++ b/tests/coq/hashmap_on_disk/HashmapMain_Funs.v
@@ -8,8 +8,8 @@ Import ListNotations.
Local Open Scope Primitives_scope.
Require Export HashmapMain_Types.
Import HashmapMain_Types.
-Require Export HashmapMain_Opaque.
-Import HashmapMain_Opaque.
+Require Export HashmapMain_FunsExternal.
+Import HashmapMain_FunsExternal.
Module HashmapMain_Funs.
(** [hashmap_main::hashmap::hash_key]: forward function
diff --git a/tests/coq/hashmap_on_disk/HashmapMain_Opaque.v b/tests/coq/hashmap_on_disk/HashmapMain_FunsExternal.v
index a0e9003d..a03dc407 100644
--- a/tests/coq/hashmap_on_disk/HashmapMain_Opaque.v
+++ b/tests/coq/hashmap_on_disk/HashmapMain_FunsExternal.v
@@ -8,7 +8,7 @@ Import ListNotations.
Local Open Scope Primitives_scope.
Require Export HashmapMain_Types.
Import HashmapMain_Types.
-Module HashmapMain_Opaque.
+Module HashmapMain_FunsExternal.
(** [hashmap_main::hashmap_utils::deserialize]: forward function
Source: 'src/hashmap_utils.rs', lines 10:0-10:43 *)
@@ -22,4 +22,4 @@ Axiom hashmap_utils_serialize
: hashmap_HashMap_t u64 -> state -> result (state * unit)
.
-End HashmapMain_Opaque .
+End HashmapMain_FunsExternal.
diff --git a/tests/coq/hashmap_on_disk/HashmapMain_FunsExternal_Template.v b/tests/coq/hashmap_on_disk/HashmapMain_FunsExternal_Template.v
new file mode 100644
index 00000000..b5a4a101
--- /dev/null
+++ b/tests/coq/hashmap_on_disk/HashmapMain_FunsExternal_Template.v
@@ -0,0 +1,26 @@
+(** THIS FILE WAS AUTOMATICALLY GENERATED BY AENEAS *)
+(** [hashmap_main]: external functions.
+-- This is a template file: rename it to "FunsExternal.lean" and fill the holes. *)
+Require Import Primitives.
+Import Primitives.
+Require Import Coq.ZArith.ZArith.
+Require Import List.
+Import ListNotations.
+Local Open Scope Primitives_scope.
+Require Export HashmapMain_Types.
+Import HashmapMain_Types.
+Module HashmapMain_FunsExternal_Template.
+
+(** [hashmap_main::hashmap_utils::deserialize]: forward function
+ Source: 'src/hashmap_utils.rs', lines 10:0-10:43 *)
+Axiom hashmap_utils_deserialize
+ : state -> result (state * (hashmap_HashMap_t u64))
+.
+
+(** [hashmap_main::hashmap_utils::serialize]: forward function
+ Source: 'src/hashmap_utils.rs', lines 5:0-5:42 *)
+Axiom hashmap_utils_serialize
+ : hashmap_HashMap_t u64 -> state -> result (state * unit)
+.
+
+End HashmapMain_FunsExternal_Template .
diff --git a/tests/coq/hashmap_on_disk/_CoqProject b/tests/coq/hashmap_on_disk/_CoqProject
index b78c7b5f..a85fa1fe 100644
--- a/tests/coq/hashmap_on_disk/_CoqProject
+++ b/tests/coq/hashmap_on_disk/_CoqProject
@@ -6,4 +6,5 @@
HashmapMain_Types.v
Primitives.v
HashmapMain_Funs.v
-HashmapMain_Opaque.v
+HashmapMain_FunsExternal_Template.v
+HashmapMain_FunsExternal.v
diff --git a/tests/coq/misc/External_Funs.v b/tests/coq/misc/External_Funs.v
index 0a14c7d1..8a3360bb 100644
--- a/tests/coq/misc/External_Funs.v
+++ b/tests/coq/misc/External_Funs.v
@@ -8,8 +8,8 @@ Import ListNotations.
Local Open Scope Primitives_scope.
Require Export External_Types.
Import External_Types.
-Require Export External_Opaque.
-Import External_Opaque.
+Require Export External_FunsExternal.
+Import External_FunsExternal.
Module External_Funs.
(** [external::swap]: forward function
diff --git a/tests/coq/misc/External_Opaque.v b/tests/coq/misc/External_FunsExternal.v
index b482431f..07d43061 100644
--- a/tests/coq/misc/External_Opaque.v
+++ b/tests/coq/misc/External_FunsExternal.v
@@ -8,7 +8,7 @@ Import ListNotations.
Local Open Scope Primitives_scope.
Require Export External_Types.
Import External_Types.
-Module External_Opaque.
+Module External_FunsExternal.
(** [core::mem::swap]: forward function
Source: '/rustc/d59363ad0b6391b7fc5bbb02c9ccf9300eef3753/library/core/src/mem/mod.rs', lines 726:0-726:42 *)
@@ -40,4 +40,4 @@ Axiom core_option_Option_unwrap :
forall(T : Type), option T -> state -> result (state * T)
.
-End External_Opaque .
+End External_FunsExternal.
diff --git a/tests/coq/misc/External_FunsExternal_Template.v b/tests/coq/misc/External_FunsExternal_Template.v
new file mode 100644
index 00000000..0977c3ae
--- /dev/null
+++ b/tests/coq/misc/External_FunsExternal_Template.v
@@ -0,0 +1,44 @@
+(** THIS FILE WAS AUTOMATICALLY GENERATED BY AENEAS *)
+(** [external]: external functions.
+-- This is a template file: rename it to "FunsExternal.lean" and fill the holes. *)
+Require Import Primitives.
+Import Primitives.
+Require Import Coq.ZArith.ZArith.
+Require Import List.
+Import ListNotations.
+Local Open Scope Primitives_scope.
+Require Export External_Types.
+Import External_Types.
+Module External_FunsExternal_Template.
+
+(** [core::mem::swap]: forward function
+ Source: '/rustc/d59363ad0b6391b7fc5bbb02c9ccf9300eef3753/library/core/src/mem/mod.rs', lines 726:0-726:42 *)
+Axiom core_mem_swap :
+ forall(T : Type), T -> T -> state -> result (state * unit)
+.
+
+(** [core::mem::swap]: backward function 0
+ Source: '/rustc/d59363ad0b6391b7fc5bbb02c9ccf9300eef3753/library/core/src/mem/mod.rs', lines 726:0-726:42 *)
+Axiom core_mem_swap_back0 :
+ forall(T : Type), T -> T -> state -> state -> result (state * T)
+.
+
+(** [core::mem::swap]: backward function 1
+ Source: '/rustc/d59363ad0b6391b7fc5bbb02c9ccf9300eef3753/library/core/src/mem/mod.rs', lines 726:0-726:42 *)
+Axiom core_mem_swap_back1 :
+ forall(T : Type), T -> T -> state -> state -> result (state * T)
+.
+
+(** [core::num::nonzero::{core::num::nonzero::NonZeroU32#14}::new]: forward function
+ Source: '/rustc/d59363ad0b6391b7fc5bbb02c9ccf9300eef3753/library/core/src/num/nonzero.rs', lines 79:16-79:57 *)
+Axiom core_num_nonzero_NonZeroU32_new
+ : u32 -> state -> result (state * (option core_num_nonzero_NonZeroU32_t))
+.
+
+(** [core::option::{core::option::Option<T>}::unwrap]: forward function
+ Source: '/rustc/d59363ad0b6391b7fc5bbb02c9ccf9300eef3753/library/core/src/option.rs', lines 932:4-932:34 *)
+Axiom core_option_Option_unwrap :
+ forall(T : Type), option T -> state -> result (state * T)
+.
+
+End External_FunsExternal_Template .
diff --git a/tests/coq/misc/_CoqProject b/tests/coq/misc/_CoqProject
index db6c2742..6884d5d9 100644
--- a/tests/coq/misc/_CoqProject
+++ b/tests/coq/misc/_CoqProject
@@ -10,5 +10,6 @@ Constants.v
PoloniusList.v
External_Types.v
NoNestedBorrows.v
-External_Opaque.v
+External_FunsExternal.v
+External_FunsExternal_Template.v
Paper.v
diff --git a/tests/fstar/betree/BetreeMain.Funs.fst b/tests/fstar/betree/BetreeMain.Funs.fst
index 537ec32e..fef8a8e1 100644
--- a/tests/fstar/betree/BetreeMain.Funs.fst
+++ b/tests/fstar/betree/BetreeMain.Funs.fst
@@ -3,7 +3,7 @@
module BetreeMain.Funs
open Primitives
include BetreeMain.Types
-include BetreeMain.Opaque
+include BetreeMain.FunsExternal
include BetreeMain.Clauses
#set-options "--z3rlimit 50 --fuel 1 --ifuel 1"
diff --git a/tests/fstar/betree_back_stateful/BetreeMain.Opaque.fsti b/tests/fstar/betree/BetreeMain.FunsExternal.fsti
index b89c8718..cd2f956f 100644
--- a/tests/fstar/betree_back_stateful/BetreeMain.Opaque.fsti
+++ b/tests/fstar/betree/BetreeMain.FunsExternal.fsti
@@ -1,6 +1,6 @@
(** THIS FILE WAS AUTOMATICALLY GENERATED BY AENEAS *)
(** [betree_main]: external function declarations *)
-module BetreeMain.Opaque
+module BetreeMain.FunsExternal
open Primitives
include BetreeMain.Types
diff --git a/tests/fstar/betree_back_stateful/BetreeMain.Funs.fst b/tests/fstar/betree_back_stateful/BetreeMain.Funs.fst
index a2586431..b912a316 100644
--- a/tests/fstar/betree_back_stateful/BetreeMain.Funs.fst
+++ b/tests/fstar/betree_back_stateful/BetreeMain.Funs.fst
@@ -3,7 +3,7 @@
module BetreeMain.Funs
open Primitives
include BetreeMain.Types
-include BetreeMain.Opaque
+include BetreeMain.FunsExternal
include BetreeMain.Clauses
#set-options "--z3rlimit 50 --fuel 1 --ifuel 1"
diff --git a/tests/fstar/betree/BetreeMain.Opaque.fsti b/tests/fstar/betree_back_stateful/BetreeMain.FunsExternal.fsti
index b89c8718..cd2f956f 100644
--- a/tests/fstar/betree/BetreeMain.Opaque.fsti
+++ b/tests/fstar/betree_back_stateful/BetreeMain.FunsExternal.fsti
@@ -1,6 +1,6 @@
(** THIS FILE WAS AUTOMATICALLY GENERATED BY AENEAS *)
(** [betree_main]: external function declarations *)
-module BetreeMain.Opaque
+module BetreeMain.FunsExternal
open Primitives
include BetreeMain.Types
diff --git a/tests/fstar/hashmap_on_disk/HashmapMain.Funs.fst b/tests/fstar/hashmap_on_disk/HashmapMain.Funs.fst
index fa570309..f2d09a38 100644
--- a/tests/fstar/hashmap_on_disk/HashmapMain.Funs.fst
+++ b/tests/fstar/hashmap_on_disk/HashmapMain.Funs.fst
@@ -3,7 +3,7 @@
module HashmapMain.Funs
open Primitives
include HashmapMain.Types
-include HashmapMain.Opaque
+include HashmapMain.FunsExternal
include HashmapMain.Clauses
#set-options "--z3rlimit 50 --fuel 1 --ifuel 1"
diff --git a/tests/fstar/hashmap_on_disk/HashmapMain.Opaque.fsti b/tests/fstar/hashmap_on_disk/HashmapMain.FunsExternal.fsti
index 1f47eb33..b00bbcde 100644
--- a/tests/fstar/hashmap_on_disk/HashmapMain.Opaque.fsti
+++ b/tests/fstar/hashmap_on_disk/HashmapMain.FunsExternal.fsti
@@ -1,6 +1,6 @@
(** THIS FILE WAS AUTOMATICALLY GENERATED BY AENEAS *)
(** [hashmap_main]: external function declarations *)
-module HashmapMain.Opaque
+module HashmapMain.FunsExternal
open Primitives
include HashmapMain.Types
diff --git a/tests/fstar/misc/External.Funs.fst b/tests/fstar/misc/External.Funs.fst
index 4d13fb71..00995634 100644
--- a/tests/fstar/misc/External.Funs.fst
+++ b/tests/fstar/misc/External.Funs.fst
@@ -3,7 +3,7 @@
module External.Funs
open Primitives
include External.Types
-include External.Opaque
+include External.FunsExternal
#set-options "--z3rlimit 50 --fuel 1 --ifuel 1"
diff --git a/tests/fstar/misc/External.Opaque.fsti b/tests/fstar/misc/External.FunsExternal.fsti
index ea1a70c2..923a1101 100644
--- a/tests/fstar/misc/External.Opaque.fsti
+++ b/tests/fstar/misc/External.FunsExternal.fsti
@@ -1,6 +1,6 @@
(** THIS FILE WAS AUTOMATICALLY GENERATED BY AENEAS *)
(** [external]: external function declarations *)
-module External.Opaque
+module External.FunsExternal
open Primitives
include External.Types