Skip to content

Commit b646cd3

Browse files
authored
Merge pull request #1030 from MetaCoq/typed-extraction-integration
Typed extraction integration
2 parents 943772d + f1a445b commit b646cd3

23 files changed

+2429
-293
lines changed

erasure-plugin/_PluginProject.in

+27-2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ src/wGraph.ml
1111
src/wGraph.mli
1212
src/etaExpand.mli
1313
src/etaExpand.ml
14+
src/utils.mli
15+
src/utils.ml
16+
17+
src/resultMonad.mli
18+
src/resultMonad.ml
1419

1520
# From PCUIC
1621
src/pCUICPrimitive.mli
@@ -79,6 +84,24 @@ src/eSpineView.ml
7984
src/eRemoveParams.mli
8085
src/eRemoveParams.ml
8186

87+
# Typed erasure
88+
src/exAst.mli
89+
src/exAst.ml
90+
src/optimize.mli
91+
src/optimize.ml
92+
src/vectorDef.mli
93+
src/vectorDef.ml
94+
src/vector.mli
95+
src/vector.ml
96+
src/fin.mli
97+
src/fin.ml
98+
src/extractionCorrectness.mli
99+
src/extractionCorrectness.ml
100+
src/optimizeCorrectness.mli
101+
src/optimizeCorrectness.ml
102+
src/erasure.mli
103+
src/erasure.ml
104+
82105
src/erasureFunction.mli
83106
src/erasureFunction.ml
84107
src/erasureFunctionProperties.mli
@@ -87,6 +110,8 @@ src/ePretty.mli
87110
src/ePretty.ml
88111
src/eOptimizePropDiscr.mli
89112
src/eOptimizePropDiscr.ml
113+
src/optimizePropDiscr.mli
114+
src/optimizePropDiscr.ml
90115
src/eProgram.mli
91116
src/eProgram.ml
92117
src/eInlineProjections.mli
@@ -95,8 +120,8 @@ src/eConstructorsAsBlocks.mli
95120
src/eConstructorsAsBlocks.ml
96121
src/eTransform.mli
97122
src/eTransform.ml
98-
src/erasure.mli
99-
src/erasure.ml
123+
src/erasure0.mli
124+
src/erasure0.ml
100125

101126
src/g_metacoq_erasure.mlg
102127
src/metacoq_erasure_plugin.mlpack

erasure-plugin/src/g_metacoq_erasure.mlg

+18-3
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,15 @@ let pr_char_list l =
2525
(* We allow utf8 encoding *)
2626
str (Caml_bytestring.caml_string_of_bytestring l)
2727

28-
let check ~bypass ~fast env evm c =
28+
let check ~bypass ~fast ?(with_types=false) env evm c =
2929
debug (fun () -> str"Quoting");
3030
let term = time (str"Quoting") (Ast_quoter.quote_term_rec ~bypass env evm) (EConstr.to_constr evm c) in
3131
let erase = time (str"Erasure")
32-
(if fast then Erasure.erase_fast_and_print_template_program
33-
else Erasure.erase_and_print_template_program)
32+
(if fast then Erasure0.erase_fast_and_print_template_program
33+
else
34+
if with_types then
35+
Erasure0.typed_erase_and_print_template_program
36+
else Erasure0.erase_and_print_template_program)
3437
term
3538
in
3639
Feedback.msg_info (pr_char_list erase)
@@ -43,6 +46,18 @@ VERNAC COMMAND EXTEND MetaCoqErase CLASSIFIED AS QUERY
4346
let (c, _) = Constrintern.interp_constr env evm c in
4447
check ~bypass:true ~fast:false env evm c
4548
}
49+
| [ "MetaCoq" "Bypass" "Typed" "Erase" constr(c) ] -> {
50+
let env = Global.env () in
51+
let evm = Evd.from_env env in
52+
let (c, _) = Constrintern.interp_constr env evm c in
53+
check ~bypass:true ~fast:false ~with_types:true env evm c
54+
}
55+
| [ "MetaCoq" "Typed" "Erase" constr(c) ] -> {
56+
let env = Global.env () in
57+
let evm = Evd.from_env env in
58+
let (c, _) = Constrintern.interp_constr env evm c in
59+
check ~bypass:false ~fast:false ~with_types:true env evm c
60+
}
4661
| [ "MetaCoq" "Erase" constr(c) ] -> {
4762
let env = Global.env () in
4863
let evm = Evd.from_env env in

erasure-plugin/src/metacoq_erasure_plugin.mlpack

+15-2
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,17 @@ MSetWeakList
22
EqdepFacts
33
Ssrbool
44

5-
Utils
5+
Fin
6+
Vector
7+
VectorDef
68

9+
Utils
10+
ResultMonad
711
WGraph
812
UGraph0
913
EtaExpand
1014

15+
1116
WcbvEval
1217
Classes0
1318
Logic1
@@ -60,7 +65,15 @@ EOptimizePropDiscr
6065
EInlineProjections
6166
EConstructorsAsBlocks
6267
EProgram
63-
ETransform
68+
OptimizePropDiscr
69+
70+
ExAst
71+
Optimize
72+
OptimizeCorrectness
6473
Erasure
74+
ExtractionCorrectness
75+
76+
ETransform
77+
Erasure0
6578

6679
G_metacoq_erasure

0 commit comments

Comments
 (0)