diff --git a/examples/bug-reports/Makefile b/examples/bug-reports/Makefile index 9c6c6d310a1..e55bf57d5c5 100644 --- a/examples/bug-reports/Makefile +++ b/examples/bug-reports/Makefile @@ -31,7 +31,8 @@ SHOULD_VERIFY_CLOSED=bug022.fst bug024.fst bug025.fst bug026.fst bug026b.fst bug Bug1502.fst \ Bug1488.fst bug607.fst bug466.fst bug400.fst bug1470.fst bug1481.fst Bug1506.fst bug606.fst bug543.fst bug1521.fst \ Bug1533.fst bug1535a.fst bug1535b.fst Bug1536.fst bug1370a.fst bug1370b.fst bug1534.fst bug575.fst \ - bug1443a.fst bug1443b.fst bug1443c.fst bug1443d.fst bug1443e.fst bug1523.fst bug1141a.fst bug1141b.fst bug1141c.fst bug1141d.fst + bug1443a.fst bug1443b.fst bug1443c.fst bug1443d.fst bug1443e.fst bug1523.fst bug1141a.fst bug1141b.fst bug1141c.fst bug1141d.fst \ + bug1561a.fst bug1561b.fst bug1065a.fst bug1065b.fst bug1065c.fst SHOULD_VERIFY_INTERFACE_CLOSED=bug771.fsti bug771b.fsti SHOULD_VERIFY_AND_WARN_CLOSED=bug016.fst diff --git a/examples/bug-reports/bug1065a.fst b/examples/bug-reports/bug1065a.fst new file mode 100644 index 00000000000..069f556957e --- /dev/null +++ b/examples/bug-reports/bug1065a.fst @@ -0,0 +1,10 @@ +module Bug1065a + +assume type mem + +let st_pre = st_pre_h mem +let st_post' (a:Type) (pre:Type) = st_post_h' mem a pre + +assume val myStack : (a:Type) -> (pre:st_pre) -> (post: (m0:mem -> Tot (st_post' a (pre m0)))) -> Type0 + +assume val gg : #a:Type -> #pre:(st_pre_h mem) -> #post:(mem -> Tot (st_post_h' mem a True)) -> myStack a pre post diff --git a/examples/bug-reports/bug1065b.fst b/examples/bug-reports/bug1065b.fst new file mode 100644 index 00000000000..1f1bc17bdca --- /dev/null +++ b/examples/bug-reports/bug1065b.fst @@ -0,0 +1,5 @@ +module Bug1065b + +assume val f : list (x:int{x>=0}) -> unit + +let test (x:list nat) = f x diff --git a/examples/bug-reports/bug1065c.fst b/examples/bug-reports/bug1065c.fst new file mode 100644 index 00000000000..f21f775c1de --- /dev/null +++ b/examples/bug-reports/bug1065c.fst @@ -0,0 +1,14 @@ +module Bug1065c + +assume val t : Type + +assume val proof : squash t + +#set-options "--no_smt" + +val ref : _:unit{t} +let ref = proof + +let id1 (x : (_:unit{t})) : squash t = x + +let id2 (x : squash t) : (_:unit{t}) = x diff --git a/examples/bug-reports/bug1561a.fst b/examples/bug-reports/bug1561a.fst new file mode 100644 index 00000000000..bdd59d0a3d8 --- /dev/null +++ b/examples/bug-reports/bug1561a.fst @@ -0,0 +1,9 @@ +module Bug1561a + +class validator_cls = { bidon: nat } + +type validator' (v : validator_cls) (k: nat) : Type0 = | C + +let validator [| cls: validator_cls |] k = validator' cls k + +let validate_nat [| d : validator_cls |] (p: bool) : Tot (validator 18) = C diff --git a/examples/bug-reports/bug1561b.fst b/examples/bug-reports/bug1561b.fst new file mode 100644 index 00000000000..1d2b68412e5 --- /dev/null +++ b/examples/bug-reports/bug1561b.fst @@ -0,0 +1,22 @@ +module Bug1561b + +class a = {x : bool} + +let t [| a |] : Tot Type = if x then ℤ else unit + +type u = | A | B + +let f_t [| _ : a |] : Tot Type = u → t → Tot t + +instance ii : a = { x = true } + +let f0 : f_t = fun l y → y + +(* used to explode with an assertion failure *) +val test : unit -> unit +let test () : unit = + let f : f_t = fun l y → y + in () + +val f1 : f_t +let f1 = fun l y → y diff --git a/examples/typeclasses/EnumEq.fst b/examples/typeclasses/EnumEq.fst index e7158e4462c..99ff984434f 100644 --- a/examples/typeclasses/EnumEq.fst +++ b/examples/typeclasses/EnumEq.fst @@ -6,14 +6,7 @@ open FStar.Tactics.Typeclasses (* Trying out a "class morphism", a post-facto relation between two existing classes. *) instance enum_eq (#a:Type) (d : enum a) : deq a = { - (* Why the #d annotation? A tricky dependency causes the meta-arg - * annotation to vanish. First we solve that the type where this - * comparison occurs is (Enum.bounded (Mkenum?.max #a ?u)), then - * we solve both of the dictionaries here with ?u. So they *ARE* - * solved, and the meta-arg annotation is lost. What should happen, - * is that when we solve a meta-implicit with a uvar, the meta-annotation - * should be copied. (But what about the environment?) *) - eq = (fun (x y : a) -> toInt #_ #d x = toInt y); + eq = (fun (x y : a) -> toInt x = toInt y); eq_ok = (fun (x y : a) -> inv1 x; inv1 y); } diff --git a/src/ocaml-output/FStar_Extraction_Kremlin.ml b/src/ocaml-output/FStar_Extraction_Kremlin.ml index 69abb5b33e4..939a12d3719 100644 --- a/src/ocaml-output/FStar_Extraction_Kremlin.ml +++ b/src/ocaml-output/FStar_Extraction_Kremlin.ml @@ -804,8 +804,8 @@ let thd3 : -> 'Auu____4074 = fun uu____4085 -> match uu____4085 with | (uu____4092,uu____4093,x) -> x let (mk_width : Prims.string -> width FStar_Pervasives_Native.option) = - fun uu___281_4103 -> - match uu___281_4103 with + fun uu___280_4103 -> + match uu___280_4103 with | "UInt8" -> FStar_Pervasives_Native.Some UInt8 | "UInt16" -> FStar_Pervasives_Native.Some UInt16 | "UInt32" -> FStar_Pervasives_Native.Some UInt32 @@ -817,8 +817,8 @@ let (mk_width : Prims.string -> width FStar_Pervasives_Native.option) = | uu____4115 -> FStar_Pervasives_Native.None let (mk_bool_op : Prims.string -> op FStar_Pervasives_Native.option) = - fun uu___282_4125 -> - match uu___282_4125 with + fun uu___281_4125 -> + match uu___281_4125 with | "op_Negation" -> FStar_Pervasives_Native.Some Not | "op_AmpAmp" -> FStar_Pervasives_Native.Some And | "op_BarBar" -> FStar_Pervasives_Native.Some Or @@ -829,8 +829,8 @@ let (mk_bool_op : Prims.string -> op FStar_Pervasives_Native.option) = let (is_bool_op : Prims.string -> Prims.bool) = fun op -> (mk_bool_op op) <> FStar_Pervasives_Native.None let (mk_op : Prims.string -> op FStar_Pervasives_Native.option) = - fun uu___283_4155 -> - match uu___283_4155 with + fun uu___282_4155 -> + match uu___282_4155 with | "add" -> FStar_Pervasives_Native.Some Add | "op_Plus_Hat" -> FStar_Pervasives_Native.Some Add | "add_underspec" -> FStar_Pervasives_Native.Some Add @@ -904,21 +904,21 @@ let (empty : Prims.string Prims.list -> env) = let (extend : env -> Prims.string -> env) = fun env -> fun x -> - let uu___289_4356 = env in + let uu___288_4356 = env in { names = ({ pretty = x } :: (env.names)); - names_t = (uu___289_4356.names_t); - module_name = (uu___289_4356.module_name) + names_t = (uu___288_4356.names_t); + module_name = (uu___288_4356.module_name) } let (extend_t : env -> Prims.string -> env) = fun env -> fun x -> - let uu___290_4370 = env in + let uu___289_4370 = env in { - names = (uu___290_4370.names); + names = (uu___289_4370.names); names_t = (x :: (env.names_t)); - module_name = (uu___290_4370.module_name) + module_name = (uu___289_4370.module_name) } let (find_name : env -> Prims.string -> name) = @@ -935,12 +935,12 @@ let (find : env -> Prims.string -> Prims.int) = fun env -> fun x -> try - (fun uu___292_4409 -> + (fun uu___291_4409 -> match () with | () -> FStar_List.index (fun name -> name.pretty = x) env.names) () with - | uu___291_4416 -> + | uu___290_4416 -> let uu____4418 = FStar_Util.format1 "Internal error: name not found %s\n" x in failwith uu____4418 @@ -949,11 +949,11 @@ let (find_t : env -> Prims.string -> Prims.int) = fun env -> fun x -> try - (fun uu___294_4438 -> + (fun uu___293_4438 -> match () with | () -> FStar_List.index (fun name -> name = x) env.names_t) () with - | uu___293_4447 -> + | uu___292_4447 -> let uu____4449 = FStar_Util.format1 "Internal error: name not found %s\n" x in failwith uu____4449 @@ -1002,7 +1002,7 @@ let rec (translate : FStar_Extraction_ML_Syntax.mllib -> file Prims.list) = FStar_Extraction_ML_Syntax.string_of_mlpath path in try - (fun uu___296_4856 -> + (fun uu___295_4856 -> match () with | () -> (FStar_Util.print1 @@ -1045,8 +1045,8 @@ and (translate_flags : FStar_Extraction_ML_Syntax.meta Prims.list -> flag Prims.list) = fun flags1 -> FStar_List.choose - (fun uu___284_4937 -> - match uu___284_4937 with + (fun uu___283_4937 -> + match uu___283_4937 with | FStar_Extraction_ML_Syntax.Private -> FStar_Pervasives_Native.Some Private | FStar_Extraction_ML_Syntax.NoExtract -> @@ -1078,8 +1078,8 @@ and (translate_cc : fun flags1 -> let uu____4952 = FStar_List.choose - (fun uu___285_4959 -> - match uu___285_4959 with + (fun uu___284_4959 -> + match uu___284_4959 with | FStar_Extraction_ML_Syntax.CCConv s -> FStar_Pervasives_Native.Some s | uu____4966 -> FStar_Pervasives_Native.None) flags1 @@ -1125,8 +1125,8 @@ and (translate_let : FStar_Extraction_ML_Syntax.mllb_meta = meta; FStar_Extraction_ML_Syntax.print_typ = uu____5030;_} when FStar_Util.for_some - (fun uu___286_5035 -> - match uu___286_5035 with + (fun uu___285_5035 -> + match uu___285_5035 with | FStar_Extraction_ML_Syntax.Assumed -> true | uu____5038 -> false) meta -> @@ -1172,8 +1172,8 @@ and (translate_let : (fun env2 -> fun name1 -> extend_t env2 name1) env1 tvars in - let rec find_return_type eff i uu___287_5172 = - match uu___287_5172 with + let rec find_return_type eff i uu___286_5172 = + match uu___286_5172 with | FStar_Extraction_ML_Syntax.MLTY_Fun (uu____5181,eff1,t) when i > (Prims.parse_int "0") -> find_return_type eff1 (i - (Prims.parse_int "1")) t @@ -1210,7 +1210,7 @@ and (translate_let : MustDisappear :: uu____5249 | uu____5252 -> translate_flags meta in try - (fun uu___298_5261 -> + (fun uu___297_5261 -> match () with | () -> let body1 = translate_expr env3 body in @@ -1262,7 +1262,7 @@ and (translate_let : let t1 = translate_type env1 t in let name1 = ((env1.module_name), name) in try - (fun uu___300_5367 -> + (fun uu___299_5367 -> match () with | () -> let expr1 = translate_expr env1 expr in @@ -2685,8 +2685,8 @@ and (translate_width : (FStar_Const.signedness,FStar_Const.width) FStar_Pervasives_Native.tuple2 FStar_Pervasives_Native.option -> width) = - fun uu___288_8222 -> - match uu___288_8222 with + fun uu___287_8222 -> + match uu___287_8222 with | FStar_Pervasives_Native.None -> CInt | FStar_Pervasives_Native.Some (FStar_Const.Signed ,FStar_Const.Int8 ) -> Int8 diff --git a/src/ocaml-output/FStar_Extraction_ML_Code.ml b/src/ocaml-output/FStar_Extraction_ML_Code.ml index 09e053abb90..07c9212aa64 100644 --- a/src/ocaml-output/FStar_Extraction_ML_Code.ml +++ b/src/ocaml-output/FStar_Extraction_ML_Code.ml @@ -345,40 +345,40 @@ let (escape_or : FStar_BaseTypes.char -> Prims.string) = fun fallback -> - fun uu___273_1710 -> - if uu___273_1710 = 92 + fun uu___272_1710 -> + if uu___272_1710 = 92 then "\\\\" else - if uu___273_1710 = 32 + if uu___272_1710 = 32 then " " else - if uu___273_1710 = 8 + if uu___272_1710 = 8 then "\\b" else - if uu___273_1710 = 9 + if uu___272_1710 = 9 then "\\t" else - if uu___273_1710 = 13 + if uu___272_1710 = 13 then "\\r" else - if uu___273_1710 = 10 + if uu___272_1710 = 10 then "\\n" else - if uu___273_1710 = 39 + if uu___272_1710 = 39 then "\\'" else - if uu___273_1710 = 34 + if uu___272_1710 = 34 then "\\\"" else - if FStar_Util.is_letter_or_digit uu___273_1710 - then FStar_Util.string_of_char uu___273_1710 + if FStar_Util.is_letter_or_digit uu___272_1710 + then FStar_Util.string_of_char uu___272_1710 else - if FStar_Util.is_punctuation uu___273_1710 - then FStar_Util.string_of_char uu___273_1710 + if FStar_Util.is_punctuation uu___272_1710 + then FStar_Util.string_of_char uu___272_1710 else - if FStar_Util.is_symbol uu___273_1710 - then FStar_Util.string_of_char uu___273_1710 - else fallback uu___273_1710 + if FStar_Util.is_symbol uu___272_1710 + then FStar_Util.string_of_char uu___272_1710 + else fallback uu___272_1710 let (string_of_mlconstant : FStar_Extraction_ML_Syntax.mlconstant -> Prims.string) = diff --git a/src/ocaml-output/FStar_Extraction_ML_Modul.ml b/src/ocaml-output/FStar_Extraction_ML_Modul.ml index 71a00780d15..bd5688ec908 100644 --- a/src/ocaml-output/FStar_Extraction_ML_Modul.ml +++ b/src/ocaml-output/FStar_Extraction_ML_Modul.ml @@ -98,8 +98,8 @@ let as_pair : 'Auu____290 Prims.list -> ('Auu____290,'Auu____290) FStar_Pervasives_Native.tuple2 = - fun uu___402_301 -> - match uu___402_301 with + fun uu___401_301 -> + match uu___401_301 with | a::b::[] -> (a, b) | uu____306 -> failwith "Expected a list with 2 elements" @@ -107,8 +107,8 @@ let (flag_of_qual : FStar_Syntax_Syntax.qualifier -> FStar_Extraction_ML_Syntax.meta FStar_Pervasives_Native.option) = - fun uu___403_321 -> - match uu___403_321 with + fun uu___402_321 -> + match uu___402_321 with | FStar_Syntax_Syntax.Assumption -> FStar_Pervasives_Native.Some FStar_Extraction_ML_Syntax.Assumed | FStar_Syntax_Syntax.Private -> @@ -492,34 +492,34 @@ let (iface_of_bindings : FStar_Pervasives_Native.tuple2 Prims.list -> iface) = fun fvs -> - let uu___413_1302 = empty_iface in + let uu___412_1302 = empty_iface in { - iface_module_name = (uu___413_1302.iface_module_name); + iface_module_name = (uu___412_1302.iface_module_name); iface_bindings = fvs; - iface_tydefs = (uu___413_1302.iface_tydefs); - iface_type_names = (uu___413_1302.iface_type_names) + iface_tydefs = (uu___412_1302.iface_tydefs); + iface_type_names = (uu___412_1302.iface_type_names) } let (iface_of_tydefs : FStar_Extraction_ML_UEnv.tydef Prims.list -> iface) = fun tds -> - let uu___414_1313 = empty_iface in + let uu___413_1313 = empty_iface in let uu____1314 = FStar_List.map (fun td -> td.FStar_Extraction_ML_UEnv.tydef_fv) tds in { - iface_module_name = (uu___414_1313.iface_module_name); - iface_bindings = (uu___414_1313.iface_bindings); + iface_module_name = (uu___413_1313.iface_module_name); + iface_bindings = (uu___413_1313.iface_bindings); iface_tydefs = tds; iface_type_names = uu____1314 } let (iface_of_type_names : FStar_Syntax_Syntax.fv Prims.list -> iface) = fun fvs -> - let uu___415_1329 = empty_iface in + let uu___414_1329 = empty_iface in { - iface_module_name = (uu___415_1329.iface_module_name); - iface_bindings = (uu___415_1329.iface_bindings); - iface_tydefs = (uu___415_1329.iface_tydefs); + iface_module_name = (uu___414_1329.iface_module_name); + iface_bindings = (uu___414_1329.iface_bindings); + iface_tydefs = (uu___414_1329.iface_tydefs); iface_type_names = fvs } @@ -631,8 +631,8 @@ let (gamma_to_string : FStar_Extraction_ML_UEnv.uenv -> Prims.string) = let cm = env.FStar_Extraction_ML_UEnv.currentModule in let gamma = FStar_List.collect - (fun uu___404_1548 -> - match uu___404_1548 with + (fun uu___403_1548 -> + match uu___403_1548 with | FStar_Extraction_ML_UEnv.Fv (b,e) -> [(b, e)] | uu____1565 -> []) env.FStar_Extraction_ML_UEnv.env_bindings in @@ -700,8 +700,8 @@ let (extract_typ_abbrev : | (bs,body) -> let assumed = FStar_Util.for_some - (fun uu___405_1781 -> - match uu___405_1781 with + (fun uu___404_1781 -> + match uu___404_1781 with | FStar_Syntax_Syntax.Assumption -> true | uu____1784 -> false) quals in @@ -720,8 +720,8 @@ let (extract_typ_abbrev : let uu____1818 = FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___406_1825 -> - match uu___406_1825 with + (fun uu___405_1825 -> + match uu___405_1825 with | FStar_Syntax_Syntax.Projector uu____1827 -> true | uu____1833 -> false)) @@ -759,8 +759,8 @@ let (extract_typ_abbrev : let uu____1893 = FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___407_1899 -> - match uu___407_1899 with + (fun uu___406_1899 -> + match uu___406_1899 with | FStar_Syntax_Syntax.Assumption -> true | FStar_Syntax_Syntax.New -> true | uu____1903 -> false)) @@ -872,8 +872,8 @@ let (extract_type_declaration : let uu____2378 = FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___408_2384 -> - match uu___408_2384 with + (fun uu___407_2384 -> + match uu___407_2384 with | FStar_Syntax_Syntax.Assumption -> true | uu____2387 -> false)) in @@ -1237,12 +1237,12 @@ let (extract_iface : else (let decls = modul.FStar_Syntax_Syntax.declarations in let iface1 = - let uu___416_3354 = empty_iface in + let uu___415_3354 = empty_iface in { iface_module_name = (g.FStar_Extraction_ML_UEnv.currentModule); - iface_bindings = (uu___416_3354.iface_bindings); - iface_tydefs = (uu___416_3354.iface_tydefs); - iface_type_names = (uu___416_3354.iface_type_names) + iface_bindings = (uu___415_3354.iface_bindings); + iface_tydefs = (uu___415_3354.iface_tydefs); + iface_type_names = (uu___415_3354.iface_type_names) } in let res = FStar_List.fold_left @@ -1264,7 +1264,7 @@ let (extend_with_iface : FStar_Extraction_ML_UEnv.uenv -> iface -> FStar_Extraction_ML_UEnv.uenv) = fun g -> fun iface1 -> - let uu___417_3410 = g in + let uu___416_3410 = g in let uu____3411 = let uu____3414 = FStar_List.map (fun _0_1 -> FStar_Extraction_ML_UEnv.Fv _0_1) @@ -1274,7 +1274,7 @@ let (extend_with_iface : in { FStar_Extraction_ML_UEnv.env_tcenv = - (uu___417_3410.FStar_Extraction_ML_UEnv.env_tcenv); + (uu___416_3410.FStar_Extraction_ML_UEnv.env_tcenv); FStar_Extraction_ML_UEnv.env_bindings = uu____3411; FStar_Extraction_ML_UEnv.tydefs = (FStar_List.append iface1.iface_tydefs @@ -1283,7 +1283,7 @@ let (extend_with_iface : (FStar_List.append iface1.iface_type_names g.FStar_Extraction_ML_UEnv.type_names); FStar_Extraction_ML_UEnv.currentModule = - (uu___417_3410.FStar_Extraction_ML_UEnv.currentModule) + (uu___416_3410.FStar_Extraction_ML_UEnv.currentModule) } let (extract_bundle : @@ -1368,8 +1368,8 @@ let (extract_bundle : let tbody = let uu____3947 = FStar_Util.find_opt - (fun uu___409_3952 -> - match uu___409_3952 with + (fun uu___408_3952 -> + match uu___408_3952 with | FStar_Syntax_Syntax.RecordType uu____3954 -> true | uu____3964 -> false) ind.iquals @@ -1638,21 +1638,21 @@ let rec (extract_sig : lb.FStar_Syntax_Syntax.lbtyp lb.FStar_Syntax_Syntax.lbdef in - let uu___418_5043 = lb in + let uu___417_5043 = lb in { FStar_Syntax_Syntax.lbname = - (uu___418_5043.FStar_Syntax_Syntax.lbname); + (uu___417_5043.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___418_5043.FStar_Syntax_Syntax.lbunivs); + (uu___417_5043.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = - (uu___418_5043.FStar_Syntax_Syntax.lbtyp); + (uu___417_5043.FStar_Syntax_Syntax.lbtyp); FStar_Syntax_Syntax.lbeff = - (uu___418_5043.FStar_Syntax_Syntax.lbeff); + (uu___417_5043.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = lbdef; FStar_Syntax_Syntax.lbattrs = - (uu___418_5043.FStar_Syntax_Syntax.lbattrs); + (uu___417_5043.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___418_5043.FStar_Syntax_Syntax.lbpos) + (uu___417_5043.FStar_Syntax_Syntax.lbpos) } in let lbs1 = let uu____5052 = @@ -1771,32 +1771,32 @@ let rec (extract_sig : flags'') in let ml_lb1 = - let uu___419_5282 = ml_lb in + let uu___418_5282 = ml_lb in { FStar_Extraction_ML_Syntax.mllb_name = - (uu___419_5282.FStar_Extraction_ML_Syntax.mllb_name); + (uu___418_5282.FStar_Extraction_ML_Syntax.mllb_name); FStar_Extraction_ML_Syntax.mllb_tysc = - (uu___419_5282.FStar_Extraction_ML_Syntax.mllb_tysc); + (uu___418_5282.FStar_Extraction_ML_Syntax.mllb_tysc); FStar_Extraction_ML_Syntax.mllb_add_unit = - (uu___419_5282.FStar_Extraction_ML_Syntax.mllb_add_unit); + (uu___418_5282.FStar_Extraction_ML_Syntax.mllb_add_unit); FStar_Extraction_ML_Syntax.mllb_def = - (uu___419_5282.FStar_Extraction_ML_Syntax.mllb_def); + (uu___418_5282.FStar_Extraction_ML_Syntax.mllb_def); FStar_Extraction_ML_Syntax.mllb_meta = meta; FStar_Extraction_ML_Syntax.print_typ = - (uu___419_5282.FStar_Extraction_ML_Syntax.print_typ) + (uu___418_5282.FStar_Extraction_ML_Syntax.print_typ) } in let uu____5283 = let uu____5288 = FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___410_5295 -> - match uu___410_5295 + (fun uu___409_5295 -> + match uu___409_5295 with | FStar_Syntax_Syntax.Projector uu____5297 -> @@ -1832,7 +1832,7 @@ let rec (extract_sig : | (env1,uu____5344,uu____5345) -> (env1, - (let uu___420_5349 = + (let uu___419_5349 = ml_lb1 in { FStar_Extraction_ML_Syntax.mllb_name @@ -1841,19 +1841,19 @@ let rec (extract_sig : mname); FStar_Extraction_ML_Syntax.mllb_tysc = - (uu___420_5349.FStar_Extraction_ML_Syntax.mllb_tysc); + (uu___419_5349.FStar_Extraction_ML_Syntax.mllb_tysc); FStar_Extraction_ML_Syntax.mllb_add_unit = - (uu___420_5349.FStar_Extraction_ML_Syntax.mllb_add_unit); + (uu___419_5349.FStar_Extraction_ML_Syntax.mllb_add_unit); FStar_Extraction_ML_Syntax.mllb_def = - (uu___420_5349.FStar_Extraction_ML_Syntax.mllb_def); + (uu___419_5349.FStar_Extraction_ML_Syntax.mllb_def); FStar_Extraction_ML_Syntax.mllb_meta = - (uu___420_5349.FStar_Extraction_ML_Syntax.mllb_meta); + (uu___419_5349.FStar_Extraction_ML_Syntax.mllb_meta); FStar_Extraction_ML_Syntax.print_typ = - (uu___420_5349.FStar_Extraction_ML_Syntax.print_typ) + (uu___419_5349.FStar_Extraction_ML_Syntax.print_typ) })) else (let uu____5356 = @@ -1923,7 +1923,7 @@ let rec (extract_sig : if uu____5435 then let always_fail1 = - let uu___421_5451 = se in + let uu___420_5451 = se in let uu____5452 = let uu____5453 = let uu____5460 = @@ -1936,21 +1936,21 @@ let rec (extract_sig : { FStar_Syntax_Syntax.sigel = uu____5452; FStar_Syntax_Syntax.sigrng = - (uu___421_5451.FStar_Syntax_Syntax.sigrng); + (uu___420_5451.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___421_5451.FStar_Syntax_Syntax.sigquals); + (uu___420_5451.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___421_5451.FStar_Syntax_Syntax.sigmeta); + (uu___420_5451.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___421_5451.FStar_Syntax_Syntax.sigattrs) + (uu___420_5451.FStar_Syntax_Syntax.sigattrs) } in let uu____5471 = extract_sig g always_fail1 in (match uu____5471 with | (g1,mlm) -> let uu____5490 = FStar_Util.find_map quals - (fun uu___411_5495 -> - match uu___411_5495 with + (fun uu___410_5495 -> + match uu___410_5495 with | FStar_Syntax_Syntax.Discriminator l -> FStar_Pervasives_Native.Some l | uu____5499 -> FStar_Pervasives_Native.None) @@ -1975,8 +1975,8 @@ let rec (extract_sig : | uu____5518 -> let uu____5521 = FStar_Util.find_map quals - (fun uu___412_5527 -> - match uu___412_5527 with + (fun uu___411_5527 -> + match uu___411_5527 with | FStar_Syntax_Syntax.Projector (l,uu____5531) -> FStar_Pervasives_Native.Some l | uu____5532 -> FStar_Pervasives_Native.None) @@ -2024,7 +2024,7 @@ let (extract' : m.FStar_Syntax_Syntax.name in let g1 = - let uu___422_5642 = g in + let uu___421_5642 = g in let uu____5643 = FStar_TypeChecker_Env.set_current_module g.FStar_Extraction_ML_UEnv.env_tcenv m.FStar_Syntax_Syntax.name @@ -2032,11 +2032,11 @@ let (extract' : { FStar_Extraction_ML_UEnv.env_tcenv = uu____5643; FStar_Extraction_ML_UEnv.env_bindings = - (uu___422_5642.FStar_Extraction_ML_UEnv.env_bindings); + (uu___421_5642.FStar_Extraction_ML_UEnv.env_bindings); FStar_Extraction_ML_UEnv.tydefs = - (uu___422_5642.FStar_Extraction_ML_UEnv.tydefs); + (uu___421_5642.FStar_Extraction_ML_UEnv.tydefs); FStar_Extraction_ML_UEnv.type_names = - (uu___422_5642.FStar_Extraction_ML_UEnv.type_names); + (uu___421_5642.FStar_Extraction_ML_UEnv.type_names); FStar_Extraction_ML_UEnv.currentModule = name } in let uu____5644 = diff --git a/src/ocaml-output/FStar_Extraction_ML_Term.ml b/src/ocaml-output/FStar_Extraction_ML_Term.ml index 614193835c8..e102bc9e1d8 100644 --- a/src/ocaml-output/FStar_Extraction_ML_Term.ml +++ b/src/ocaml-output/FStar_Extraction_ML_Term.ml @@ -336,50 +336,51 @@ let rec (is_type_aux : FStar_Syntax_Syntax.ctx_uvar_typ = t2; FStar_Syntax_Syntax.ctx_uvar_reason = uu____991; FStar_Syntax_Syntax.ctx_uvar_should_check = uu____992; - FStar_Syntax_Syntax.ctx_uvar_range = uu____993;_},s) + FStar_Syntax_Syntax.ctx_uvar_range = uu____993; + FStar_Syntax_Syntax.ctx_uvar_meta = uu____994;_},s) -> - let uu____1034 = FStar_Syntax_Subst.subst' s t2 in - is_arity env uu____1034 + let uu____1043 = FStar_Syntax_Subst.subst' s t2 in + is_arity env uu____1043 | FStar_Syntax_Syntax.Tm_bvar - { FStar_Syntax_Syntax.ppname = uu____1035; - FStar_Syntax_Syntax.index = uu____1036; + { FStar_Syntax_Syntax.ppname = uu____1044; + FStar_Syntax_Syntax.index = uu____1045; FStar_Syntax_Syntax.sort = t2;_} -> is_arity env t2 | FStar_Syntax_Syntax.Tm_name - { FStar_Syntax_Syntax.ppname = uu____1041; - FStar_Syntax_Syntax.index = uu____1042; + { FStar_Syntax_Syntax.ppname = uu____1050; + FStar_Syntax_Syntax.index = uu____1051; FStar_Syntax_Syntax.sort = t2;_} -> is_arity env t2 - | FStar_Syntax_Syntax.Tm_ascribed (t2,uu____1048,uu____1049) -> + | FStar_Syntax_Syntax.Tm_ascribed (t2,uu____1057,uu____1058) -> is_type_aux env t2 - | FStar_Syntax_Syntax.Tm_uinst (t2,uu____1091) -> is_type_aux env t2 - | FStar_Syntax_Syntax.Tm_abs (bs,body,uu____1098) -> - let uu____1123 = FStar_Syntax_Subst.open_term bs body in - (match uu____1123 with - | (uu____1129,body1) -> is_type_aux env body1) + | FStar_Syntax_Syntax.Tm_uinst (t2,uu____1100) -> is_type_aux env t2 + | FStar_Syntax_Syntax.Tm_abs (bs,body,uu____1107) -> + let uu____1132 = FStar_Syntax_Subst.open_term bs body in + (match uu____1132 with + | (uu____1138,body1) -> is_type_aux env body1) | FStar_Syntax_Syntax.Tm_let ((false ,lb::[]),body) -> let x = FStar_Util.left lb.FStar_Syntax_Syntax.lbname in - let uu____1149 = - let uu____1154 = - let uu____1155 = FStar_Syntax_Syntax.mk_binder x in - [uu____1155] in - FStar_Syntax_Subst.open_term uu____1154 body in - (match uu____1149 with - | (uu____1175,body1) -> is_type_aux env body1) - | FStar_Syntax_Syntax.Tm_let ((uu____1177,lbs),body) -> - let uu____1197 = FStar_Syntax_Subst.open_let_rec lbs body in - (match uu____1197 with - | (uu____1205,body1) -> is_type_aux env body1) - | FStar_Syntax_Syntax.Tm_match (uu____1211,branches) -> + let uu____1158 = + let uu____1163 = + let uu____1164 = FStar_Syntax_Syntax.mk_binder x in + [uu____1164] in + FStar_Syntax_Subst.open_term uu____1163 body in + (match uu____1158 with + | (uu____1184,body1) -> is_type_aux env body1) + | FStar_Syntax_Syntax.Tm_let ((uu____1186,lbs),body) -> + let uu____1206 = FStar_Syntax_Subst.open_let_rec lbs body in + (match uu____1206 with + | (uu____1214,body1) -> is_type_aux env body1) + | FStar_Syntax_Syntax.Tm_match (uu____1220,branches) -> (match branches with - | b::uu____1251 -> - let uu____1296 = FStar_Syntax_Subst.open_branch b in - (match uu____1296 with - | (uu____1298,uu____1299,e) -> is_type_aux env e) - | uu____1317 -> false) - | FStar_Syntax_Syntax.Tm_quoted uu____1335 -> false - | FStar_Syntax_Syntax.Tm_meta (t2,uu____1344) -> is_type_aux env t2 - | FStar_Syntax_Syntax.Tm_app (head1,uu____1350) -> + | b::uu____1260 -> + let uu____1305 = FStar_Syntax_Subst.open_branch b in + (match uu____1305 with + | (uu____1307,uu____1308,e) -> is_type_aux env e) + | uu____1326 -> false) + | FStar_Syntax_Syntax.Tm_quoted uu____1344 -> false + | FStar_Syntax_Syntax.Tm_meta (t2,uu____1353) -> is_type_aux env t2 + | FStar_Syntax_Syntax.Tm_app (head1,uu____1359) -> is_type_aux env head1 let (is_type : @@ -387,30 +388,30 @@ let (is_type : fun env -> fun t -> FStar_Extraction_ML_UEnv.debug env - (fun uu____1391 -> - let uu____1392 = FStar_Syntax_Print.tag_of_term t in - let uu____1394 = FStar_Syntax_Print.term_to_string t in - FStar_Util.print2 "checking is_type (%s) %s\n" uu____1392 - uu____1394); + (fun uu____1400 -> + let uu____1401 = FStar_Syntax_Print.tag_of_term t in + let uu____1403 = FStar_Syntax_Print.term_to_string t in + FStar_Util.print2 "checking is_type (%s) %s\n" uu____1401 + uu____1403); (let b = is_type_aux env t in FStar_Extraction_ML_UEnv.debug env - (fun uu____1403 -> + (fun uu____1412 -> if b then - let uu____1405 = FStar_Syntax_Print.term_to_string t in - let uu____1407 = FStar_Syntax_Print.tag_of_term t in - FStar_Util.print2 "yes, is_type %s (%s)\n" uu____1405 - uu____1407 + let uu____1414 = FStar_Syntax_Print.term_to_string t in + let uu____1416 = FStar_Syntax_Print.tag_of_term t in + FStar_Util.print2 "yes, is_type %s (%s)\n" uu____1414 + uu____1416 else - (let uu____1412 = FStar_Syntax_Print.term_to_string t in - let uu____1414 = FStar_Syntax_Print.tag_of_term t in - FStar_Util.print2 "not a type %s (%s)\n" uu____1412 uu____1414)); + (let uu____1421 = FStar_Syntax_Print.term_to_string t in + let uu____1423 = FStar_Syntax_Print.tag_of_term t in + FStar_Util.print2 "not a type %s (%s)\n" uu____1421 uu____1423)); b) let is_type_binder : - 'Auu____1424 . + 'Auu____1433 . FStar_Extraction_ML_UEnv.uenv -> - (FStar_Syntax_Syntax.bv,'Auu____1424) FStar_Pervasives_Native.tuple2 -> + (FStar_Syntax_Syntax.bv,'Auu____1433) FStar_Pervasives_Native.tuple2 -> Prims.bool = fun env -> @@ -419,76 +420,76 @@ let is_type_binder : let (is_constructor : FStar_Syntax_Syntax.term -> Prims.bool) = fun t -> - let uu____1451 = - let uu____1452 = FStar_Syntax_Subst.compress t in - uu____1452.FStar_Syntax_Syntax.n in - match uu____1451 with + let uu____1460 = + let uu____1461 = FStar_Syntax_Subst.compress t in + uu____1461.FStar_Syntax_Syntax.n in + match uu____1460 with | FStar_Syntax_Syntax.Tm_fvar - { FStar_Syntax_Syntax.fv_name = uu____1456; - FStar_Syntax_Syntax.fv_delta = uu____1457; + { FStar_Syntax_Syntax.fv_name = uu____1465; + FStar_Syntax_Syntax.fv_delta = uu____1466; FStar_Syntax_Syntax.fv_qual = FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Data_ctor );_} -> true | FStar_Syntax_Syntax.Tm_fvar - { FStar_Syntax_Syntax.fv_name = uu____1459; - FStar_Syntax_Syntax.fv_delta = uu____1460; + { FStar_Syntax_Syntax.fv_name = uu____1468; + FStar_Syntax_Syntax.fv_delta = uu____1469; FStar_Syntax_Syntax.fv_qual = FStar_Pervasives_Native.Some - (FStar_Syntax_Syntax.Record_ctor uu____1461);_} + (FStar_Syntax_Syntax.Record_ctor uu____1470);_} -> true - | uu____1469 -> false + | uu____1478 -> false let rec (is_fstar_value : FStar_Syntax_Syntax.term -> Prims.bool) = fun t -> - let uu____1478 = - let uu____1479 = FStar_Syntax_Subst.compress t in - uu____1479.FStar_Syntax_Syntax.n in - match uu____1478 with - | FStar_Syntax_Syntax.Tm_constant uu____1483 -> true - | FStar_Syntax_Syntax.Tm_bvar uu____1485 -> true - | FStar_Syntax_Syntax.Tm_fvar uu____1487 -> true - | FStar_Syntax_Syntax.Tm_abs uu____1489 -> true + let uu____1487 = + let uu____1488 = FStar_Syntax_Subst.compress t in + uu____1488.FStar_Syntax_Syntax.n in + match uu____1487 with + | FStar_Syntax_Syntax.Tm_constant uu____1492 -> true + | FStar_Syntax_Syntax.Tm_bvar uu____1494 -> true + | FStar_Syntax_Syntax.Tm_fvar uu____1496 -> true + | FStar_Syntax_Syntax.Tm_abs uu____1498 -> true | FStar_Syntax_Syntax.Tm_app (head1,args) -> - let uu____1535 = is_constructor head1 in - if uu____1535 + let uu____1544 = is_constructor head1 in + if uu____1544 then FStar_All.pipe_right args (FStar_List.for_all - (fun uu____1557 -> - match uu____1557 with - | (te,uu____1566) -> is_fstar_value te)) + (fun uu____1566 -> + match uu____1566 with + | (te,uu____1575) -> is_fstar_value te)) else false - | FStar_Syntax_Syntax.Tm_meta (t1,uu____1575) -> is_fstar_value t1 - | FStar_Syntax_Syntax.Tm_ascribed (t1,uu____1581,uu____1582) -> + | FStar_Syntax_Syntax.Tm_meta (t1,uu____1584) -> is_fstar_value t1 + | FStar_Syntax_Syntax.Tm_ascribed (t1,uu____1590,uu____1591) -> is_fstar_value t1 - | uu____1623 -> false + | uu____1632 -> false let rec (is_ml_value : FStar_Extraction_ML_Syntax.mlexpr -> Prims.bool) = fun e -> match e.FStar_Extraction_ML_Syntax.expr with - | FStar_Extraction_ML_Syntax.MLE_Const uu____1633 -> true - | FStar_Extraction_ML_Syntax.MLE_Var uu____1635 -> true - | FStar_Extraction_ML_Syntax.MLE_Name uu____1638 -> true - | FStar_Extraction_ML_Syntax.MLE_Fun uu____1640 -> true - | FStar_Extraction_ML_Syntax.MLE_CTor (uu____1653,exps) -> + | FStar_Extraction_ML_Syntax.MLE_Const uu____1642 -> true + | FStar_Extraction_ML_Syntax.MLE_Var uu____1644 -> true + | FStar_Extraction_ML_Syntax.MLE_Name uu____1647 -> true + | FStar_Extraction_ML_Syntax.MLE_Fun uu____1649 -> true + | FStar_Extraction_ML_Syntax.MLE_CTor (uu____1662,exps) -> FStar_Util.for_all is_ml_value exps | FStar_Extraction_ML_Syntax.MLE_Tuple exps -> FStar_Util.for_all is_ml_value exps - | FStar_Extraction_ML_Syntax.MLE_Record (uu____1662,fields) -> + | FStar_Extraction_ML_Syntax.MLE_Record (uu____1671,fields) -> FStar_Util.for_all - (fun uu____1692 -> - match uu____1692 with | (uu____1699,e1) -> is_ml_value e1) + (fun uu____1701 -> + match uu____1701 with | (uu____1708,e1) -> is_ml_value e1) fields - | FStar_Extraction_ML_Syntax.MLE_TApp (h,uu____1704) -> is_ml_value h - | uu____1709 -> false + | FStar_Extraction_ML_Syntax.MLE_TApp (h,uu____1713) -> is_ml_value h + | uu____1718 -> false let (fresh : Prims.string -> Prims.string) = let c = FStar_Util.mk_ref (Prims.parse_int "0") in fun x -> FStar_Util.incr c; - (let uu____1760 = - let uu____1762 = FStar_ST.op_Bang c in - FStar_Util.string_of_int uu____1762 in - Prims.strcat x uu____1760) + (let uu____1769 = + let uu____1771 = FStar_ST.op_Bang c in + FStar_Util.string_of_int uu____1771 in + Prims.strcat x uu____1769) let (normalize_abs : FStar_Syntax_Syntax.term -> FStar_Syntax_Syntax.term) = fun t0 -> @@ -497,21 +498,21 @@ let (normalize_abs : FStar_Syntax_Syntax.term -> FStar_Syntax_Syntax.term) = match t1.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_abs (bs',body,copt1) -> aux (FStar_List.append bs bs') body copt1 - | uu____1887 -> + | uu____1896 -> let e' = FStar_Syntax_Util.unascribe t1 in - let uu____1889 = FStar_Syntax_Util.is_fun e' in - if uu____1889 + let uu____1898 = FStar_Syntax_Util.is_fun e' in + if uu____1898 then aux bs e' copt else FStar_Syntax_Util.abs bs e' copt in aux [] t0 FStar_Pervasives_Native.None let (unit_binder : FStar_Syntax_Syntax.binder) = - let uu____1903 = + let uu____1912 = FStar_Syntax_Syntax.new_bv FStar_Pervasives_Native.None FStar_Syntax_Syntax.t_unit in - FStar_All.pipe_left FStar_Syntax_Syntax.mk_binder uu____1903 + FStar_All.pipe_left FStar_Syntax_Syntax.mk_binder uu____1912 let (check_pats_for_ite : (FStar_Syntax_Syntax.pat,FStar_Syntax_Syntax.term FStar_Pervasives_Native.option,FStar_Syntax_Syntax.term) @@ -526,13 +527,13 @@ let (check_pats_for_ite : if (FStar_List.length l) <> (Prims.parse_int "2") then def else - (let uu____1994 = FStar_List.hd l in - match uu____1994 with + (let uu____2003 = FStar_List.hd l in + match uu____2003 with | (p1,w1,e1) -> - let uu____2029 = - let uu____2038 = FStar_List.tl l in FStar_List.hd uu____2038 + let uu____2038 = + let uu____2047 = FStar_List.tl l in FStar_List.hd uu____2047 in - (match uu____2029 with + (match uu____2038 with | (p2,w2,e2) -> (match (w1, w2, (p1.FStar_Syntax_Syntax.v), (p2.FStar_Syntax_Syntax.v)) @@ -551,7 +552,7 @@ let (check_pats_for_ite : (FStar_Const.Const_bool (true ))) -> (true, (FStar_Pervasives_Native.Some e2), (FStar_Pervasives_Native.Some e1)) - | uu____2122 -> def))) + | uu____2131 -> def))) let (instantiate : FStar_Extraction_ML_Syntax.mltyscheme -> @@ -564,22 +565,22 @@ let (eta_expand : = fun t -> fun e -> - let uu____2161 = FStar_Extraction_ML_Util.doms_and_cod t in - match uu____2161 with + let uu____2170 = FStar_Extraction_ML_Util.doms_and_cod t in + match uu____2170 with | (ts,r) -> if ts = [] then e else - (let vs = FStar_List.map (fun uu____2185 -> fresh "a") ts in + (let vs = FStar_List.map (fun uu____2194 -> fresh "a") ts in let vs_ts = FStar_List.zip vs ts in let vs_es = - let uu____2199 = FStar_List.zip vs ts in + let uu____2208 = FStar_List.zip vs ts in FStar_List.map - (fun uu____2216 -> - match uu____2216 with + (fun uu____2225 -> + match uu____2225 with | (v1,t1) -> FStar_Extraction_ML_Syntax.with_ty t1 - (FStar_Extraction_ML_Syntax.MLE_Var v1)) uu____2199 + (FStar_Extraction_ML_Syntax.MLE_Var v1)) uu____2208 in let body = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty r) @@ -594,14 +595,14 @@ let (default_value_for_ty : = fun g -> fun t -> - let uu____2247 = FStar_Extraction_ML_Util.doms_and_cod t in - match uu____2247 with + let uu____2256 = FStar_Extraction_ML_Util.doms_and_cod t in + match uu____2256 with | (ts,r) -> let body r1 = let r2 = - let uu____2267 = FStar_Extraction_ML_Util.udelta_unfold g r1 + let uu____2276 = FStar_Extraction_ML_Util.udelta_unfold g r1 in - match uu____2267 with + match uu____2276 with | FStar_Pervasives_Native.None -> r1 | FStar_Pervasives_Native.Some r2 -> r2 in match r2 with @@ -611,7 +612,7 @@ let (default_value_for_ty : FStar_Extraction_ML_Syntax.apply_obj_repr FStar_Extraction_ML_Syntax.ml_unit FStar_Extraction_ML_Syntax.MLTY_Erased - | uu____2271 -> + | uu____2280 -> FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty r2) (FStar_Extraction_ML_Syntax.MLE_Coerce (FStar_Extraction_ML_Syntax.ml_unit, @@ -620,14 +621,14 @@ let (default_value_for_ty : if ts = [] then body r else - (let vs = FStar_List.map (fun uu____2283 -> fresh "a") ts in + (let vs = FStar_List.map (fun uu____2292 -> fresh "a") ts in let vs_ts = FStar_List.zip vs ts in - let uu____2294 = - let uu____2295 = - let uu____2307 = body r in (vs_ts, uu____2307) in - FStar_Extraction_ML_Syntax.MLE_Fun uu____2295 in + let uu____2303 = + let uu____2304 = + let uu____2316 = body r in (vs_ts, uu____2316) in + FStar_Extraction_ML_Syntax.MLE_Fun uu____2304 in FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty t) - uu____2294) + uu____2303) let (maybe_eta_expand : FStar_Extraction_ML_Syntax.mlty -> @@ -635,12 +636,12 @@ let (maybe_eta_expand : = fun expect -> fun e -> - let uu____2326 = + let uu____2335 = (FStar_Options.ml_no_eta_expand_coertions ()) || - (let uu____2329 = FStar_Options.codegen () in - uu____2329 = (FStar_Pervasives_Native.Some FStar_Options.Kremlin)) + (let uu____2338 = FStar_Options.codegen () in + uu____2338 = (FStar_Pervasives_Native.Some FStar_Options.Kremlin)) in - if uu____2326 then e else eta_expand expect e + if uu____2335 then e else eta_expand expect e let (apply_coercion : FStar_Extraction_ML_UEnv.uenv -> @@ -657,54 +658,54 @@ let (apply_coercion : | FStar_Extraction_ML_Syntax.MLE_Fun (binders,body1) -> FStar_Extraction_ML_Syntax.MLE_Fun ((binder :: binders), body1) - | uu____2407 -> + | uu____2416 -> FStar_Extraction_ML_Syntax.MLE_Fun ([binder], body) in let rec aux e1 ty1 expect1 = - let coerce_branch uu____2462 = - match uu____2462 with + let coerce_branch uu____2471 = + match uu____2471 with | (pat,w,b) -> - let uu____2486 = aux b ty1 expect1 in (pat, w, uu____2486) + let uu____2495 = aux b ty1 expect1 in (pat, w, uu____2495) in match ((e1.FStar_Extraction_ML_Syntax.expr), ty1, expect1) with | (FStar_Extraction_ML_Syntax.MLE_Fun (arg::rest,body),FStar_Extraction_ML_Syntax.MLTY_Fun - (t0,uu____2493,t1),FStar_Extraction_ML_Syntax.MLTY_Fun - (s0,uu____2496,s1)) -> + (t0,uu____2502,t1),FStar_Extraction_ML_Syntax.MLTY_Fun + (s0,uu____2505,s1)) -> let body1 = match rest with | [] -> body - | uu____2528 -> + | uu____2537 -> FStar_Extraction_ML_Syntax.with_ty t1 (FStar_Extraction_ML_Syntax.MLE_Fun (rest, body)) in let body2 = aux body1 t1 s1 in - let uu____2544 = type_leq g s0 t0 in - if uu____2544 + let uu____2553 = type_leq g s0 t0 in + if uu____2553 then FStar_Extraction_ML_Syntax.with_ty expect1 (mk_fun arg body2) else (let lb = - let uu____2550 = - let uu____2551 = - let uu____2552 = - let uu____2559 = + let uu____2559 = + let uu____2560 = + let uu____2561 = + let uu____2568 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty s0) (FStar_Extraction_ML_Syntax.MLE_Var (FStar_Pervasives_Native.fst arg)) in - (uu____2559, s0, t0) in - FStar_Extraction_ML_Syntax.MLE_Coerce uu____2552 in - FStar_Extraction_ML_Syntax.with_ty t0 uu____2551 in + (uu____2568, s0, t0) in + FStar_Extraction_ML_Syntax.MLE_Coerce uu____2561 in + FStar_Extraction_ML_Syntax.with_ty t0 uu____2560 in { FStar_Extraction_ML_Syntax.mllb_name = (FStar_Pervasives_Native.fst arg); FStar_Extraction_ML_Syntax.mllb_tysc = (FStar_Pervasives_Native.Some ([], t0)); FStar_Extraction_ML_Syntax.mllb_add_unit = false; - FStar_Extraction_ML_Syntax.mllb_def = uu____2550; + FStar_Extraction_ML_Syntax.mllb_def = uu____2559; FStar_Extraction_ML_Syntax.mllb_meta = []; FStar_Extraction_ML_Syntax.print_typ = false } in @@ -717,71 +718,71 @@ let (apply_coercion : FStar_Extraction_ML_Syntax.with_ty expect1 (mk_fun ((FStar_Pervasives_Native.fst arg), s0) body3)) | (FStar_Extraction_ML_Syntax.MLE_Let - (lbs,body),uu____2578,uu____2579) -> - let uu____2592 = - let uu____2593 = - let uu____2604 = aux body ty1 expect1 in - (lbs, uu____2604) in - FStar_Extraction_ML_Syntax.MLE_Let uu____2593 in + (lbs,body),uu____2587,uu____2588) -> + let uu____2601 = + let uu____2602 = + let uu____2613 = aux body ty1 expect1 in + (lbs, uu____2613) in + FStar_Extraction_ML_Syntax.MLE_Let uu____2602 in FStar_All.pipe_left - (FStar_Extraction_ML_Syntax.with_ty expect1) uu____2592 + (FStar_Extraction_ML_Syntax.with_ty expect1) uu____2601 | (FStar_Extraction_ML_Syntax.MLE_Match - (s,branches),uu____2613,uu____2614) -> - let uu____2635 = - let uu____2636 = - let uu____2651 = FStar_List.map coerce_branch branches + (s,branches),uu____2622,uu____2623) -> + let uu____2644 = + let uu____2645 = + let uu____2660 = FStar_List.map coerce_branch branches in - (s, uu____2651) in - FStar_Extraction_ML_Syntax.MLE_Match uu____2636 in + (s, uu____2660) in + FStar_Extraction_ML_Syntax.MLE_Match uu____2645 in FStar_All.pipe_left - (FStar_Extraction_ML_Syntax.with_ty expect1) uu____2635 + (FStar_Extraction_ML_Syntax.with_ty expect1) uu____2644 | (FStar_Extraction_ML_Syntax.MLE_If - (s,b1,b2_opt),uu____2691,uu____2692) -> - let uu____2697 = - let uu____2698 = - let uu____2707 = aux b1 ty1 expect1 in - let uu____2708 = + (s,b1,b2_opt),uu____2700,uu____2701) -> + let uu____2706 = + let uu____2707 = + let uu____2716 = aux b1 ty1 expect1 in + let uu____2717 = FStar_Util.map_opt b2_opt (fun b2 -> aux b2 ty1 expect1) in - (s, uu____2707, uu____2708) in - FStar_Extraction_ML_Syntax.MLE_If uu____2698 in + (s, uu____2716, uu____2717) in + FStar_Extraction_ML_Syntax.MLE_If uu____2707 in FStar_All.pipe_left - (FStar_Extraction_ML_Syntax.with_ty expect1) uu____2697 - | (FStar_Extraction_ML_Syntax.MLE_Seq es,uu____2716,uu____2717) + (FStar_Extraction_ML_Syntax.with_ty expect1) uu____2706 + | (FStar_Extraction_ML_Syntax.MLE_Seq es,uu____2725,uu____2726) -> - let uu____2720 = FStar_Util.prefix es in - (match uu____2720 with + let uu____2729 = FStar_Util.prefix es in + (match uu____2729 with | (prefix1,last1) -> - let uu____2733 = - let uu____2734 = - let uu____2737 = - let uu____2740 = aux last1 ty1 expect1 in - [uu____2740] in - FStar_List.append prefix1 uu____2737 in - FStar_Extraction_ML_Syntax.MLE_Seq uu____2734 in + let uu____2742 = + let uu____2743 = + let uu____2746 = + let uu____2749 = aux last1 ty1 expect1 in + [uu____2749] in + FStar_List.append prefix1 uu____2746 in + FStar_Extraction_ML_Syntax.MLE_Seq uu____2743 in FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty expect1) - uu____2733) + uu____2742) | (FStar_Extraction_ML_Syntax.MLE_Try - (s,branches),uu____2743,uu____2744) -> - let uu____2765 = - let uu____2766 = - let uu____2781 = FStar_List.map coerce_branch branches + (s,branches),uu____2752,uu____2753) -> + let uu____2774 = + let uu____2775 = + let uu____2790 = FStar_List.map coerce_branch branches in - (s, uu____2781) in - FStar_Extraction_ML_Syntax.MLE_Try uu____2766 in + (s, uu____2790) in + FStar_Extraction_ML_Syntax.MLE_Try uu____2775 in FStar_All.pipe_left - (FStar_Extraction_ML_Syntax.with_ty expect1) uu____2765 - | uu____2818 -> + (FStar_Extraction_ML_Syntax.with_ty expect1) uu____2774 + | uu____2827 -> FStar_Extraction_ML_Syntax.with_ty expect1 (FStar_Extraction_ML_Syntax.MLE_Coerce (e1, ty1, expect1)) in aux e ty expect let maybe_coerce : - 'Auu____2838 . - 'Auu____2838 -> + 'Auu____2847 . + 'Auu____2847 -> FStar_Extraction_ML_UEnv.uenv -> FStar_Extraction_ML_Syntax.mlexpr -> FStar_Extraction_ML_Syntax.mlty -> @@ -794,62 +795,62 @@ let maybe_coerce : fun ty -> fun expect -> let ty1 = eraseTypeDeep g ty in - let uu____2865 = + let uu____2874 = type_leq_c g (FStar_Pervasives_Native.Some e) ty1 expect in - match uu____2865 with + match uu____2874 with | (true ,FStar_Pervasives_Native.Some e') -> e' - | uu____2878 -> + | uu____2887 -> (match ty1 with | FStar_Extraction_ML_Syntax.MLTY_Erased -> default_value_for_ty g expect - | uu____2886 -> - let uu____2887 = - let uu____2889 = + | uu____2895 -> + let uu____2896 = + let uu____2898 = FStar_Extraction_ML_Util.erase_effect_annotations ty1 in - let uu____2890 = + let uu____2899 = FStar_Extraction_ML_Util.erase_effect_annotations expect in - type_leq g uu____2889 uu____2890 in - if uu____2887 + type_leq g uu____2898 uu____2899 in + if uu____2896 then (FStar_Extraction_ML_UEnv.debug g - (fun uu____2896 -> - let uu____2897 = + (fun uu____2905 -> + let uu____2906 = FStar_Extraction_ML_Code.string_of_mlexpr g.FStar_Extraction_ML_UEnv.currentModule e in - let uu____2899 = + let uu____2908 = FStar_Extraction_ML_Code.string_of_mlty g.FStar_Extraction_ML_UEnv.currentModule ty1 in FStar_Util.print2 "\n Effect mismatch on type of %s : %s\n" - uu____2897 uu____2899); + uu____2906 uu____2908); e) else (FStar_Extraction_ML_UEnv.debug g - (fun uu____2909 -> - let uu____2910 = + (fun uu____2918 -> + let uu____2919 = FStar_Extraction_ML_Code.string_of_mlexpr g.FStar_Extraction_ML_UEnv.currentModule e in - let uu____2912 = + let uu____2921 = FStar_Extraction_ML_Code.string_of_mlty g.FStar_Extraction_ML_UEnv.currentModule ty1 in - let uu____2914 = + let uu____2923 = FStar_Extraction_ML_Code.string_of_mlty g.FStar_Extraction_ML_UEnv.currentModule expect in FStar_Util.print3 "\n (*needed to coerce expression \n %s \n of type \n %s \n to type \n %s *) \n" - uu____2910 uu____2912 uu____2914); - (let uu____2917 = apply_coercion g e ty1 expect in - maybe_eta_expand expect uu____2917))) + uu____2919 uu____2921 uu____2923); + (let uu____2926 = apply_coercion g e ty1 expect in + maybe_eta_expand expect uu____2926))) let (bv_as_mlty : FStar_Extraction_ML_UEnv.uenv -> @@ -857,10 +858,10 @@ let (bv_as_mlty : = fun g -> fun bv -> - let uu____2929 = FStar_Extraction_ML_UEnv.lookup_bv g bv in - match uu____2929 with + let uu____2938 = FStar_Extraction_ML_UEnv.lookup_bv g bv in + match uu____2938 with | FStar_Util.Inl ty_b -> ty_b.FStar_Extraction_ML_UEnv.ty_b_ty - | uu____2931 -> FStar_Extraction_ML_Syntax.MLTY_Top + | uu____2940 -> FStar_Extraction_ML_Syntax.MLTY_Top let (basic_norm_steps : FStar_TypeChecker_Env.step Prims.list) = [FStar_TypeChecker_Env.Beta; @@ -876,36 +877,36 @@ let (comp_no_args : = fun c -> match c.FStar_Syntax_Syntax.n with - | FStar_Syntax_Syntax.Total uu____2949 -> c - | FStar_Syntax_Syntax.GTotal uu____2958 -> c + | FStar_Syntax_Syntax.Total uu____2958 -> c + | FStar_Syntax_Syntax.GTotal uu____2967 -> c | FStar_Syntax_Syntax.Comp ct -> let effect_args = FStar_List.map - (fun uu____2994 -> - match uu____2994 with - | (uu____3009,aq) -> (FStar_Syntax_Syntax.t_unit, aq)) + (fun uu____3003 -> + match uu____3003 with + | (uu____3018,aq) -> (FStar_Syntax_Syntax.t_unit, aq)) ct.FStar_Syntax_Syntax.effect_args in let ct1 = - let uu___368_3022 = ct in + let uu___367_3031 = ct in { FStar_Syntax_Syntax.comp_univs = - (uu___368_3022.FStar_Syntax_Syntax.comp_univs); + (uu___367_3031.FStar_Syntax_Syntax.comp_univs); FStar_Syntax_Syntax.effect_name = - (uu___368_3022.FStar_Syntax_Syntax.effect_name); + (uu___367_3031.FStar_Syntax_Syntax.effect_name); FStar_Syntax_Syntax.result_typ = - (uu___368_3022.FStar_Syntax_Syntax.result_typ); + (uu___367_3031.FStar_Syntax_Syntax.result_typ); FStar_Syntax_Syntax.effect_args = effect_args; FStar_Syntax_Syntax.flags = - (uu___368_3022.FStar_Syntax_Syntax.flags) + (uu___367_3031.FStar_Syntax_Syntax.flags) } in let c1 = - let uu___369_3026 = c in + let uu___368_3035 = c in { FStar_Syntax_Syntax.n = (FStar_Syntax_Syntax.Comp ct1); - FStar_Syntax_Syntax.pos = (uu___369_3026.FStar_Syntax_Syntax.pos); + FStar_Syntax_Syntax.pos = (uu___368_3035.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___369_3026.FStar_Syntax_Syntax.vars) + (uu___368_3035.FStar_Syntax_Syntax.vars) } in c1 @@ -915,29 +916,29 @@ let rec (translate_term_to_mlty : = fun g -> fun t0 -> - let arg_as_mlty g1 uu____3075 = - match uu____3075 with - | (a,uu____3083) -> - let uu____3088 = is_type g1 a in - if uu____3088 + let arg_as_mlty g1 uu____3084 = + match uu____3084 with + | (a,uu____3092) -> + let uu____3097 = is_type g1 a in + if uu____3097 then translate_term_to_mlty g1 a else FStar_Extraction_ML_UEnv.erasedContent in let fv_app_as_mlty g1 fv args = - let uu____3109 = - let uu____3111 = FStar_Extraction_ML_UEnv.is_fv_type g1 fv in - Prims.op_Negation uu____3111 in - if uu____3109 + let uu____3118 = + let uu____3120 = FStar_Extraction_ML_UEnv.is_fv_type g1 fv in + Prims.op_Negation uu____3120 in + if uu____3118 then FStar_Extraction_ML_Syntax.MLTY_Top else - (let uu____3116 = - let uu____3131 = + (let uu____3125 = + let uu____3140 = FStar_TypeChecker_Env.lookup_lid g1.FStar_Extraction_ML_UEnv.env_tcenv (fv.FStar_Syntax_Syntax.fv_name).FStar_Syntax_Syntax.v in - match uu____3131 with - | ((uu____3154,fvty),uu____3156) -> + match uu____3140 with + | ((uu____3163,fvty),uu____3165) -> let fvty1 = FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.UnfoldUntil @@ -946,28 +947,28 @@ let rec (translate_term_to_mlty : in FStar_Syntax_Util.arrow_formals fvty1 in - match uu____3116 with - | (formals,uu____3163) -> + match uu____3125 with + | (formals,uu____3172) -> let mlargs = FStar_List.map (arg_as_mlty g1) args in let mlargs1 = let n_args = FStar_List.length args in if (FStar_List.length formals) > n_args then - let uu____3220 = FStar_Util.first_N n_args formals in - match uu____3220 with - | (uu____3253,rest) -> - let uu____3287 = + let uu____3229 = FStar_Util.first_N n_args formals in + match uu____3229 with + | (uu____3262,rest) -> + let uu____3296 = FStar_List.map - (fun uu____3297 -> + (fun uu____3306 -> FStar_Extraction_ML_UEnv.erasedContent) rest in - FStar_List.append mlargs uu____3287 + FStar_List.append mlargs uu____3296 else mlargs in let nm = - let uu____3307 = + let uu____3316 = FStar_Extraction_ML_UEnv.maybe_mangle_type_projector g1 fv in - match uu____3307 with + match uu____3316 with | FStar_Pervasives_Native.Some p -> p | FStar_Pervasives_Native.None -> FStar_Extraction_ML_Syntax.mlpath_of_lident @@ -978,54 +979,54 @@ let rec (translate_term_to_mlty : let aux env t = let t1 = FStar_Syntax_Subst.compress t in match t1.FStar_Syntax_Syntax.n with - | FStar_Syntax_Syntax.Tm_type uu____3325 -> + | FStar_Syntax_Syntax.Tm_type uu____3334 -> FStar_Extraction_ML_Syntax.MLTY_Erased - | FStar_Syntax_Syntax.Tm_bvar uu____3326 -> - let uu____3327 = - let uu____3329 = FStar_Syntax_Print.term_to_string t1 in - FStar_Util.format1 "Impossible: Unexpected term %s" uu____3329 + | FStar_Syntax_Syntax.Tm_bvar uu____3335 -> + let uu____3336 = + let uu____3338 = FStar_Syntax_Print.term_to_string t1 in + FStar_Util.format1 "Impossible: Unexpected term %s" uu____3338 in - failwith uu____3327 - | FStar_Syntax_Syntax.Tm_delayed uu____3332 -> - let uu____3355 = - let uu____3357 = FStar_Syntax_Print.term_to_string t1 in - FStar_Util.format1 "Impossible: Unexpected term %s" uu____3357 + failwith uu____3336 + | FStar_Syntax_Syntax.Tm_delayed uu____3341 -> + let uu____3364 = + let uu____3366 = FStar_Syntax_Print.term_to_string t1 in + FStar_Util.format1 "Impossible: Unexpected term %s" uu____3366 in - failwith uu____3355 + failwith uu____3364 | FStar_Syntax_Syntax.Tm_unknown -> - let uu____3360 = - let uu____3362 = FStar_Syntax_Print.term_to_string t1 in - FStar_Util.format1 "Impossible: Unexpected term %s" uu____3362 + let uu____3369 = + let uu____3371 = FStar_Syntax_Print.term_to_string t1 in + FStar_Util.format1 "Impossible: Unexpected term %s" uu____3371 in - failwith uu____3360 + failwith uu____3369 | FStar_Syntax_Syntax.Tm_lazy i -> - let uu____3366 = FStar_Syntax_Util.unfold_lazy i in - translate_term_to_mlty env uu____3366 - | FStar_Syntax_Syntax.Tm_constant uu____3367 -> + let uu____3375 = FStar_Syntax_Util.unfold_lazy i in + translate_term_to_mlty env uu____3375 + | FStar_Syntax_Syntax.Tm_constant uu____3376 -> FStar_Extraction_ML_UEnv.unknownType - | FStar_Syntax_Syntax.Tm_quoted uu____3368 -> + | FStar_Syntax_Syntax.Tm_quoted uu____3377 -> FStar_Extraction_ML_UEnv.unknownType - | FStar_Syntax_Syntax.Tm_uvar uu____3375 -> + | FStar_Syntax_Syntax.Tm_uvar uu____3384 -> FStar_Extraction_ML_UEnv.unknownType - | FStar_Syntax_Syntax.Tm_meta (t2,uu____3389) -> + | FStar_Syntax_Syntax.Tm_meta (t2,uu____3398) -> translate_term_to_mlty env t2 | FStar_Syntax_Syntax.Tm_refine - ({ FStar_Syntax_Syntax.ppname = uu____3394; - FStar_Syntax_Syntax.index = uu____3395; - FStar_Syntax_Syntax.sort = t2;_},uu____3397) + ({ FStar_Syntax_Syntax.ppname = uu____3403; + FStar_Syntax_Syntax.index = uu____3404; + FStar_Syntax_Syntax.sort = t2;_},uu____3406) -> translate_term_to_mlty env t2 - | FStar_Syntax_Syntax.Tm_uinst (t2,uu____3406) -> + | FStar_Syntax_Syntax.Tm_uinst (t2,uu____3415) -> translate_term_to_mlty env t2 - | FStar_Syntax_Syntax.Tm_ascribed (t2,uu____3412,uu____3413) -> + | FStar_Syntax_Syntax.Tm_ascribed (t2,uu____3421,uu____3422) -> translate_term_to_mlty env t2 | FStar_Syntax_Syntax.Tm_name bv -> bv_as_mlty env bv | FStar_Syntax_Syntax.Tm_fvar fv -> fv_app_as_mlty env fv [] | FStar_Syntax_Syntax.Tm_arrow (bs,c) -> - let uu____3486 = FStar_Syntax_Subst.open_comp bs c in - (match uu____3486 with + let uu____3495 = FStar_Syntax_Subst.open_comp bs c in + (match uu____3495 with | (bs1,c1) -> - let uu____3493 = binders_as_ml_binders env bs1 in - (match uu____3493 with + let uu____3502 = binders_as_ml_binders env bs1 in + (match uu____3502 with | (mlbs,env1) -> let t_ret = let eff = @@ -1034,20 +1035,20 @@ let rec (translate_term_to_mlty : (FStar_Syntax_Util.comp_effect_name c1) in let c2 = comp_no_args c1 in - let uu____3526 = - let uu____3533 = + let uu____3535 = + let uu____3542 = FStar_TypeChecker_Env.effect_decl_opt env1.FStar_Extraction_ML_UEnv.env_tcenv eff in - FStar_Util.must uu____3533 in - match uu____3526 with + FStar_Util.must uu____3542 in + match uu____3535 with | (ed,qualifiers) -> - let uu____3554 = + let uu____3563 = FStar_TypeChecker_Env.is_reifiable_effect g.FStar_Extraction_ML_UEnv.env_tcenv ed.FStar_Syntax_Syntax.mname in - if uu____3554 + if uu____3563 then let t2 = FStar_TypeChecker_Env.reify_comp @@ -1055,33 +1056,33 @@ let rec (translate_term_to_mlty : FStar_Syntax_Syntax.U_unknown in (FStar_Extraction_ML_UEnv.debug env1 - (fun uu____3562 -> - let uu____3563 = + (fun uu____3571 -> + let uu____3572 = FStar_Syntax_Print.comp_to_string c2 in - let uu____3565 = + let uu____3574 = FStar_Syntax_Print.term_to_string t2 in FStar_Util.print2 "Translating comp type %s as %s\n" - uu____3563 uu____3565); + uu____3572 uu____3574); (let res = translate_term_to_mlty env1 t2 in FStar_Extraction_ML_UEnv.debug env1 - (fun uu____3574 -> - let uu____3575 = + (fun uu____3583 -> + let uu____3584 = FStar_Syntax_Print.comp_to_string c2 in - let uu____3577 = + let uu____3586 = FStar_Syntax_Print.term_to_string t2 in - let uu____3579 = + let uu____3588 = FStar_Extraction_ML_Code.string_of_mlty env1.FStar_Extraction_ML_UEnv.currentModule res in FStar_Util.print3 "Translated comp type %s as %s ... to %s\n" - uu____3575 uu____3577 uu____3579); + uu____3584 uu____3586 uu____3588); res)) else translate_term_to_mlty env1 @@ -1091,66 +1092,66 @@ let rec (translate_term_to_mlty : effect_as_etag env1 (FStar_Syntax_Util.comp_effect_name c1) in - let uu____3585 = + let uu____3594 = FStar_List.fold_right - (fun uu____3605 -> - fun uu____3606 -> - match (uu____3605, uu____3606) with - | ((uu____3629,t2),(tag,t')) -> + (fun uu____3614 -> + fun uu____3615 -> + match (uu____3614, uu____3615) with + | ((uu____3638,t2),(tag,t')) -> (FStar_Extraction_ML_Syntax.E_PURE, (FStar_Extraction_ML_Syntax.MLTY_Fun (t2, tag, t')))) mlbs (erase, t_ret) in - (match uu____3585 with | (uu____3644,t2) -> t2))) + (match uu____3594 with | (uu____3653,t2) -> t2))) | FStar_Syntax_Syntax.Tm_app (head1,args) -> let res = - let uu____3673 = - let uu____3674 = FStar_Syntax_Util.un_uinst head1 in - uu____3674.FStar_Syntax_Syntax.n in - match uu____3673 with + let uu____3682 = + let uu____3683 = FStar_Syntax_Util.un_uinst head1 in + uu____3683.FStar_Syntax_Syntax.n in + match uu____3682 with | FStar_Syntax_Syntax.Tm_name bv -> bv_as_mlty env bv | FStar_Syntax_Syntax.Tm_fvar fv -> fv_app_as_mlty env fv args | FStar_Syntax_Syntax.Tm_app (head2,args') -> - let uu____3705 = + let uu____3714 = FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_app (head2, (FStar_List.append args' args))) FStar_Pervasives_Native.None t1.FStar_Syntax_Syntax.pos in - translate_term_to_mlty env uu____3705 - | uu____3726 -> FStar_Extraction_ML_UEnv.unknownType in + translate_term_to_mlty env uu____3714 + | uu____3735 -> FStar_Extraction_ML_UEnv.unknownType in res - | FStar_Syntax_Syntax.Tm_abs (bs,ty,uu____3729) -> - let uu____3754 = FStar_Syntax_Subst.open_term bs ty in - (match uu____3754 with + | FStar_Syntax_Syntax.Tm_abs (bs,ty,uu____3738) -> + let uu____3763 = FStar_Syntax_Subst.open_term bs ty in + (match uu____3763 with | (bs1,ty1) -> - let uu____3761 = binders_as_ml_binders env bs1 in - (match uu____3761 with + let uu____3770 = binders_as_ml_binders env bs1 in + (match uu____3770 with | (bts,env1) -> translate_term_to_mlty env1 ty1)) - | FStar_Syntax_Syntax.Tm_let uu____3789 -> + | FStar_Syntax_Syntax.Tm_let uu____3798 -> FStar_Extraction_ML_UEnv.unknownType - | FStar_Syntax_Syntax.Tm_match uu____3803 -> + | FStar_Syntax_Syntax.Tm_match uu____3812 -> FStar_Extraction_ML_UEnv.unknownType in let rec is_top_ty t = match t with | FStar_Extraction_ML_Syntax.MLTY_Top -> true - | FStar_Extraction_ML_Syntax.MLTY_Named uu____3835 -> - let uu____3842 = FStar_Extraction_ML_Util.udelta_unfold g t in - (match uu____3842 with + | FStar_Extraction_ML_Syntax.MLTY_Named uu____3844 -> + let uu____3851 = FStar_Extraction_ML_Util.udelta_unfold g t in + (match uu____3851 with | FStar_Pervasives_Native.None -> false | FStar_Pervasives_Native.Some t1 -> is_top_ty t1) - | uu____3848 -> false in - let uu____3850 = + | uu____3857 -> false in + let uu____3859 = FStar_TypeChecker_Util.must_erase_for_extraction g.FStar_Extraction_ML_UEnv.env_tcenv t0 in - if uu____3850 + if uu____3859 then FStar_Extraction_ML_Syntax.MLTY_Erased else (let mlt = aux g t0 in - let uu____3856 = is_top_ty mlt in - if uu____3856 + let uu____3865 = is_top_ty mlt in + if uu____3865 then let t = FStar_TypeChecker_Normalize.normalize @@ -1170,15 +1171,15 @@ and (binders_as_ml_binders : = fun g -> fun bs -> - let uu____3875 = + let uu____3884 = FStar_All.pipe_right bs (FStar_List.fold_left - (fun uu____3931 -> + (fun uu____3940 -> fun b -> - match uu____3931 with + match uu____3940 with | (ml_bs,env) -> - let uu____3977 = is_type_binder g b in - if uu____3977 + let uu____3986 = is_type_binder g b in + if uu____3986 then let b1 = FStar_Pervasives_Native.fst b in let env1 = @@ -1187,9 +1188,9 @@ and (binders_as_ml_binders : FStar_Extraction_ML_Syntax.MLTY_Top) in let ml_b = - let uu____4003 = + let uu____4012 = FStar_Extraction_ML_UEnv.bv_as_ml_termvar b1 in - (uu____4003, FStar_Extraction_ML_Syntax.ml_unit_ty) + (uu____4012, FStar_Extraction_ML_Syntax.ml_unit_ty) in ((ml_b :: ml_bs), env1) else @@ -1198,19 +1199,19 @@ and (binders_as_ml_binders : translate_term_to_mlty env b1.FStar_Syntax_Syntax.sort in - let uu____4024 = + let uu____4033 = FStar_Extraction_ML_UEnv.extend_bv env b1 ([], t) false false false in - match uu____4024 with - | (env1,b2,uu____4049) -> + match uu____4033 with + | (env1,b2,uu____4058) -> let ml_b = - let uu____4058 = + let uu____4067 = FStar_Extraction_ML_UEnv.removeTick b2 in - (uu____4058, t) in + (uu____4067, t) in ((ml_b :: ml_bs), env1))) ([], g)) in - match uu____3875 with | (ml_bs,env) -> ((FStar_List.rev ml_bs), env) + match uu____3884 with | (ml_bs,env) -> ((FStar_List.rev ml_bs), env) let (term_as_mlty : FStar_Extraction_ML_UEnv.uenv -> @@ -1236,11 +1237,11 @@ let (mk_MLE_Seq : | (FStar_Extraction_ML_Syntax.MLE_Seq es1,FStar_Extraction_ML_Syntax.MLE_Seq es2) -> FStar_Extraction_ML_Syntax.MLE_Seq (FStar_List.append es1 es2) - | (FStar_Extraction_ML_Syntax.MLE_Seq es1,uu____4154) -> + | (FStar_Extraction_ML_Syntax.MLE_Seq es1,uu____4163) -> FStar_Extraction_ML_Syntax.MLE_Seq (FStar_List.append es1 [e2]) - | (uu____4157,FStar_Extraction_ML_Syntax.MLE_Seq es2) -> + | (uu____4166,FStar_Extraction_ML_Syntax.MLE_Seq es2) -> FStar_Extraction_ML_Syntax.MLE_Seq (e1 :: es2) - | uu____4161 -> FStar_Extraction_ML_Syntax.MLE_Seq [e1; e2] + | uu____4170 -> FStar_Extraction_ML_Syntax.MLE_Seq [e1; e2] let (mk_MLE_Let : Prims.bool -> @@ -1266,16 +1267,16 @@ let (mk_MLE_Let : | FStar_Extraction_ML_Syntax.MLE_Var x when x = lb.FStar_Extraction_ML_Syntax.mllb_name -> (lb.FStar_Extraction_ML_Syntax.mllb_def).FStar_Extraction_ML_Syntax.expr - | uu____4195 when + | uu____4204 when (lb.FStar_Extraction_ML_Syntax.mllb_def).FStar_Extraction_ML_Syntax.expr = FStar_Extraction_ML_Syntax.ml_unit.FStar_Extraction_ML_Syntax.expr -> body.FStar_Extraction_ML_Syntax.expr - | uu____4196 -> + | uu____4205 -> mk_MLE_Seq lb.FStar_Extraction_ML_Syntax.mllb_def body) - | uu____4197 -> FStar_Extraction_ML_Syntax.MLE_Let (lbs, body)) - | uu____4206 -> FStar_Extraction_ML_Syntax.MLE_Let (lbs, body) + | uu____4206 -> FStar_Extraction_ML_Syntax.MLE_Let (lbs, body)) + | uu____4215 -> FStar_Extraction_ML_Syntax.MLE_Let (lbs, body) let (resugar_pat : FStar_Syntax_Syntax.fv_qual FStar_Pervasives_Native.option -> @@ -1286,11 +1287,11 @@ let (resugar_pat : fun p -> match p with | FStar_Extraction_ML_Syntax.MLP_CTor (d,pats) -> - let uu____4234 = FStar_Extraction_ML_Util.is_xtuple d in - (match uu____4234 with + let uu____4243 = FStar_Extraction_ML_Util.is_xtuple d in + (match uu____4243 with | FStar_Pervasives_Native.Some n1 -> FStar_Extraction_ML_Syntax.MLP_Tuple pats - | uu____4241 -> + | uu____4250 -> (match q with | FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Record_ctor (ty,fns)) -> @@ -1299,8 +1300,8 @@ let (resugar_pat : in let fs = record_fields fns pats in FStar_Extraction_ML_Syntax.MLP_Record (path, fs) - | uu____4274 -> p)) - | uu____4277 -> p + | uu____4283 -> p)) + | uu____4286 -> p let rec (extract_one_pat : Prims.bool -> @@ -1333,81 +1334,81 @@ let rec (extract_one_pat : (if Prims.op_Negation ok then FStar_Extraction_ML_UEnv.debug g - (fun uu____4379 -> - let uu____4380 = + (fun uu____4388 -> + let uu____4389 = FStar_Extraction_ML_Code.string_of_mlty g.FStar_Extraction_ML_UEnv.currentModule t' in - let uu____4382 = + let uu____4391 = FStar_Extraction_ML_Code.string_of_mlty g.FStar_Extraction_ML_UEnv.currentModule t in FStar_Util.print2 "Expected pattern type %s; got pattern type %s\n" - uu____4380 uu____4382) + uu____4389 uu____4391) else (); ok) in match p.FStar_Syntax_Syntax.v with | FStar_Syntax_Syntax.Pat_constant (FStar_Const.Const_int (c,swopt)) when - let uu____4418 = FStar_Options.codegen () in - uu____4418 <> + let uu____4427 = FStar_Options.codegen () in + uu____4427 <> (FStar_Pervasives_Native.Some FStar_Options.Kremlin) -> - let uu____4423 = + let uu____4432 = match swopt with | FStar_Pervasives_Native.None -> - let uu____4436 = - let uu____4437 = - let uu____4438 = + let uu____4445 = + let uu____4446 = + let uu____4447 = FStar_Extraction_ML_Util.mlconst_of_const p.FStar_Syntax_Syntax.p (FStar_Const.Const_int (c, FStar_Pervasives_Native.None)) in - FStar_Extraction_ML_Syntax.MLE_Const uu____4438 in + FStar_Extraction_ML_Syntax.MLE_Const uu____4447 in FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty - FStar_Extraction_ML_Syntax.ml_int_ty) uu____4437 + FStar_Extraction_ML_Syntax.ml_int_ty) uu____4446 in - (uu____4436, FStar_Extraction_ML_Syntax.ml_int_ty) + (uu____4445, FStar_Extraction_ML_Syntax.ml_int_ty) | FStar_Pervasives_Native.Some sw -> let source_term = FStar_ToSyntax_ToSyntax.desugar_machine_integer (g.FStar_Extraction_ML_UEnv.env_tcenv).FStar_TypeChecker_Env.dsenv c sw FStar_Range.dummyRange in - let uu____4460 = term_as_mlexpr g source_term in - (match uu____4460 with - | (mlterm,uu____4472,mlty) -> (mlterm, mlty)) + let uu____4469 = term_as_mlexpr g source_term in + (match uu____4469 with + | (mlterm,uu____4481,mlty) -> (mlterm, mlty)) in - (match uu____4423 with + (match uu____4432 with | (mlc,ml_ty) -> let x = FStar_Extraction_ML_Syntax.gensym () in let when_clause = - let uu____4494 = - let uu____4495 = - let uu____4502 = - let uu____4505 = + let uu____4503 = + let uu____4504 = + let uu____4511 = + let uu____4514 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty ml_ty) (FStar_Extraction_ML_Syntax.MLE_Var x) in - [uu____4505; mlc] in + [uu____4514; mlc] in (FStar_Extraction_ML_Util.prims_op_equality, - uu____4502) + uu____4511) in - FStar_Extraction_ML_Syntax.MLE_App uu____4495 in + FStar_Extraction_ML_Syntax.MLE_App uu____4504 in FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty - FStar_Extraction_ML_Syntax.ml_bool_ty) uu____4494 + FStar_Extraction_ML_Syntax.ml_bool_ty) uu____4503 in - let uu____4508 = ok ml_ty in + let uu____4517 = ok ml_ty in (g, (FStar_Pervasives_Native.Some ((FStar_Extraction_ML_Syntax.MLP_Var x), - [when_clause])), uu____4508)) + [when_clause])), uu____4517)) | FStar_Syntax_Syntax.Pat_constant s -> let t = FStar_TypeChecker_TcTerm.tc_constant @@ -1415,103 +1416,103 @@ let rec (extract_one_pat : FStar_Range.dummyRange s in let mlty = term_as_mlty g t in - let uu____4530 = - let uu____4539 = - let uu____4546 = - let uu____4547 = + let uu____4539 = + let uu____4548 = + let uu____4555 = + let uu____4556 = FStar_Extraction_ML_Util.mlconst_of_const p.FStar_Syntax_Syntax.p s in - FStar_Extraction_ML_Syntax.MLP_Const uu____4547 in - (uu____4546, []) in - FStar_Pervasives_Native.Some uu____4539 in - let uu____4556 = ok mlty in (g, uu____4530, uu____4556) + FStar_Extraction_ML_Syntax.MLP_Const uu____4556 in + (uu____4555, []) in + FStar_Pervasives_Native.Some uu____4548 in + let uu____4565 = ok mlty in (g, uu____4539, uu____4565) | FStar_Syntax_Syntax.Pat_var x -> let mlty = term_as_mlty g x.FStar_Syntax_Syntax.sort in - let uu____4569 = + let uu____4578 = FStar_Extraction_ML_UEnv.extend_bv g x ([], mlty) false false imp in - (match uu____4569 with - | (g1,x1,uu____4597) -> - let uu____4600 = ok mlty in + (match uu____4578 with + | (g1,x1,uu____4606) -> + let uu____4609 = ok mlty in (g1, (if imp then FStar_Pervasives_Native.None else FStar_Pervasives_Native.Some ((FStar_Extraction_ML_Syntax.MLP_Var x1), [])), - uu____4600)) + uu____4609)) | FStar_Syntax_Syntax.Pat_wild x -> let mlty = term_as_mlty g x.FStar_Syntax_Syntax.sort in - let uu____4638 = + let uu____4647 = FStar_Extraction_ML_UEnv.extend_bv g x ([], mlty) false false imp in - (match uu____4638 with - | (g1,x1,uu____4666) -> - let uu____4669 = ok mlty in + (match uu____4647 with + | (g1,x1,uu____4675) -> + let uu____4678 = ok mlty in (g1, (if imp then FStar_Pervasives_Native.None else FStar_Pervasives_Native.Some ((FStar_Extraction_ML_Syntax.MLP_Var x1), [])), - uu____4669)) - | FStar_Syntax_Syntax.Pat_dot_term uu____4705 -> + uu____4678)) + | FStar_Syntax_Syntax.Pat_dot_term uu____4714 -> (g, FStar_Pervasives_Native.None, true) | FStar_Syntax_Syntax.Pat_cons (f,pats) -> - let uu____4748 = - let uu____4757 = FStar_Extraction_ML_UEnv.lookup_fv g f in - match uu____4757 with - | { FStar_Extraction_ML_UEnv.exp_b_name = uu____4766; + let uu____4757 = + let uu____4766 = FStar_Extraction_ML_UEnv.lookup_fv g f in + match uu____4766 with + | { FStar_Extraction_ML_UEnv.exp_b_name = uu____4775; FStar_Extraction_ML_UEnv.exp_b_expr = { FStar_Extraction_ML_Syntax.expr = FStar_Extraction_ML_Syntax.MLE_Name n1; - FStar_Extraction_ML_Syntax.mlty = uu____4768; - FStar_Extraction_ML_Syntax.loc = uu____4769;_}; + FStar_Extraction_ML_Syntax.mlty = uu____4777; + FStar_Extraction_ML_Syntax.loc = uu____4778;_}; FStar_Extraction_ML_UEnv.exp_b_tscheme = ttys; - FStar_Extraction_ML_UEnv.exp_b_inst_ok = uu____4771;_} + FStar_Extraction_ML_UEnv.exp_b_inst_ok = uu____4780;_} -> (n1, ttys) - | uu____4778 -> failwith "Expected a constructor" in - (match uu____4748 with + | uu____4787 -> failwith "Expected a constructor" in + (match uu____4757 with | (d,tys) -> let nTyVars = FStar_List.length (FStar_Pervasives_Native.fst tys) in - let uu____4815 = FStar_Util.first_N nTyVars pats in - (match uu____4815 with + let uu____4824 = FStar_Util.first_N nTyVars pats in + (match uu____4824 with | (tysVarPats,restPats) -> let f_ty_opt = try - (fun uu___371_4923 -> + (fun uu___370_4932 -> match () with | () -> let mlty_args = FStar_All.pipe_right tysVarPats (FStar_List.map - (fun uu____4954 -> - match uu____4954 with - | (p1,uu____4961) -> + (fun uu____4963 -> + match uu____4963 with + | (p1,uu____4970) -> (match p1.FStar_Syntax_Syntax.v with | FStar_Syntax_Syntax.Pat_dot_term - (uu____4964,t) -> + (uu____4973,t) -> term_as_mlty g t - | uu____4970 -> + | uu____4979 -> (FStar_Extraction_ML_UEnv.debug g - (fun uu____4974 + (fun uu____4983 -> - let uu____4975 + let uu____4984 = FStar_Syntax_Print.pat_to_string p1 in FStar_Util.print1 "Pattern %s is not extractable" - uu____4975); + uu____4984); FStar_Exn.raise Un_extractable)))) in @@ -1519,39 +1520,39 @@ let rec (extract_one_pat : FStar_Extraction_ML_Util.subst tys mlty_args in - let uu____4979 = + let uu____4988 = FStar_Extraction_ML_Util.uncurry_mlty_fun f_ty in - FStar_Pervasives_Native.Some uu____4979) + FStar_Pervasives_Native.Some uu____4988) () with | Un_extractable -> FStar_Pervasives_Native.None in - let uu____5008 = + let uu____5017 = FStar_Util.fold_map (fun g1 -> - fun uu____5045 -> - match uu____5045 with + fun uu____5054 -> + match uu____5054 with | (p1,imp1) -> - let uu____5067 = + let uu____5076 = extract_one_pat true g1 p1 FStar_Pervasives_Native.None term_as_mlexpr in - (match uu____5067 with - | (g2,p2,uu____5098) -> (g2, p2))) g + (match uu____5076 with + | (g2,p2,uu____5107) -> (g2, p2))) g tysVarPats in - (match uu____5008 with + (match uu____5017 with | (g1,tyMLPats) -> - let uu____5162 = + let uu____5171 = FStar_Util.fold_map - (fun uu____5227 -> - fun uu____5228 -> - match (uu____5227, uu____5228) with + (fun uu____5236 -> + fun uu____5237 -> + match (uu____5236, uu____5237) with | ((g2,f_ty_opt1),(p1,imp1)) -> - let uu____5326 = + let uu____5335 = match f_ty_opt1 with | FStar_Pervasives_Native.Some (hd1::rest,res) -> @@ -1559,64 +1560,64 @@ let rec (extract_one_pat : (rest, res)), (FStar_Pervasives_Native.Some hd1)) - | uu____5386 -> + | uu____5395 -> (FStar_Pervasives_Native.None, FStar_Pervasives_Native.None) in - (match uu____5326 with + (match uu____5335 with | (f_ty_opt2,expected_ty) -> - let uu____5457 = + let uu____5466 = extract_one_pat false g2 p1 expected_ty term_as_mlexpr in - (match uu____5457 with - | (g3,p2,uu____5500) -> + (match uu____5466 with + | (g3,p2,uu____5509) -> ((g3, f_ty_opt2), p2)))) (g1, f_ty_opt) restPats in - (match uu____5162 with + (match uu____5171 with | ((g2,f_ty_opt1),restMLPats) -> - let uu____5621 = - let uu____5632 = + let uu____5630 = + let uu____5641 = FStar_All.pipe_right (FStar_List.append tyMLPats restMLPats) (FStar_List.collect - (fun uu___365_5683 -> - match uu___365_5683 with + (fun uu___364_5692 -> + match uu___364_5692 with | FStar_Pervasives_Native.Some x -> [x] - | uu____5725 -> [])) + | uu____5734 -> [])) in - FStar_All.pipe_right uu____5632 + FStar_All.pipe_right uu____5641 FStar_List.split in - (match uu____5621 with + (match uu____5630 with | (mlPats,when_clauses) -> let pat_ty_compat = match f_ty_opt1 with | FStar_Pervasives_Native.Some ([],t) -> ok t - | uu____5801 -> false in - let uu____5811 = - let uu____5820 = - let uu____5827 = + | uu____5810 -> false in + let uu____5820 = + let uu____5829 = + let uu____5836 = resugar_pat f.FStar_Syntax_Syntax.fv_qual (FStar_Extraction_ML_Syntax.MLP_CTor (d, mlPats)) in - let uu____5830 = + let uu____5839 = FStar_All.pipe_right when_clauses FStar_List.flatten in - (uu____5827, uu____5830) in + (uu____5836, uu____5839) in FStar_Pervasives_Native.Some - uu____5820 + uu____5829 in - (g2, uu____5811, pat_ty_compat)))))) + (g2, uu____5820, pat_ty_compat)))))) let (extract_pat : FStar_Extraction_ML_UEnv.uenv -> @@ -1640,27 +1641,27 @@ let (extract_pat : fun expected_t -> fun term_as_mlexpr -> let extract_one_pat1 g1 p1 expected_t1 = - let uu____5962 = + let uu____5971 = extract_one_pat false g1 p1 expected_t1 term_as_mlexpr in - match uu____5962 with + match uu____5971 with | (g2,FStar_Pervasives_Native.Some (x,v1),b) -> (g2, (x, v1), b) - | uu____6025 -> + | uu____6034 -> failwith "Impossible: Unable to translate pattern" in let mk_when_clause whens = match whens with | [] -> FStar_Pervasives_Native.None | hd1::tl1 -> - let uu____6073 = + let uu____6082 = FStar_List.fold_left FStar_Extraction_ML_Util.conjoin hd1 tl1 in - FStar_Pervasives_Native.Some uu____6073 + FStar_Pervasives_Native.Some uu____6082 in - let uu____6074 = + let uu____6083 = extract_one_pat1 g p (FStar_Pervasives_Native.Some expected_t) in - match uu____6074 with + match uu____6083 with | (g1,(p1,whens),b) -> let when_clause = mk_when_clause whens in (g1, [(p1, when_clause)], b) @@ -1678,40 +1679,40 @@ let (maybe_eta_data_and_project_record : fun mlAppExpr -> let rec eta_args more_args t = match t with - | FStar_Extraction_ML_Syntax.MLTY_Fun (t0,uu____6234,t1) -> + | FStar_Extraction_ML_Syntax.MLTY_Fun (t0,uu____6243,t1) -> let x = FStar_Extraction_ML_Syntax.gensym () in - let uu____6238 = - let uu____6250 = - let uu____6260 = + let uu____6247 = + let uu____6259 = + let uu____6269 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty t0) (FStar_Extraction_ML_Syntax.MLE_Var x) in - ((x, t0), uu____6260) in - uu____6250 :: more_args in - eta_args uu____6238 t1 - | FStar_Extraction_ML_Syntax.MLTY_Named (uu____6276,uu____6277) + ((x, t0), uu____6269) in + uu____6259 :: more_args in + eta_args uu____6247 t1 + | FStar_Extraction_ML_Syntax.MLTY_Named (uu____6285,uu____6286) -> ((FStar_List.rev more_args), t) - | uu____6302 -> - let uu____6303 = - let uu____6305 = + | uu____6311 -> + let uu____6312 = + let uu____6314 = FStar_Extraction_ML_Code.string_of_mlexpr g.FStar_Extraction_ML_UEnv.currentModule mlAppExpr in - let uu____6307 = + let uu____6316 = FStar_Extraction_ML_Code.string_of_mlty g.FStar_Extraction_ML_UEnv.currentModule t in FStar_Util.format2 "Impossible: Head type is not an arrow: (%s : %s)" - uu____6305 uu____6307 + uu____6314 uu____6316 in - failwith uu____6303 + failwith uu____6312 in let as_record qual1 e = match ((e.FStar_Extraction_ML_Syntax.expr), qual1) with | (FStar_Extraction_ML_Syntax.MLE_CTor - (uu____6342,args),FStar_Pervasives_Native.Some + (uu____6351,args),FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Record_ctor (tyname,fields))) -> let path = FStar_List.map FStar_Ident.text_of_id tyname.FStar_Ident.ns @@ -1721,25 +1722,25 @@ let (maybe_eta_data_and_project_record : (FStar_Extraction_ML_Syntax.with_ty e.FStar_Extraction_ML_Syntax.mlty) (FStar_Extraction_ML_Syntax.MLE_Record (path, fields1)) - | uu____6379 -> e in + | uu____6388 -> e in let resugar_and_maybe_eta qual1 e = - let uu____6401 = eta_args [] residualType in - match uu____6401 with + let uu____6410 = eta_args [] residualType in + match uu____6410 with | (eargs,tres) -> (match eargs with | [] -> - let uu____6459 = as_record qual1 e in - FStar_Extraction_ML_Util.resugar_exp uu____6459 - | uu____6460 -> - let uu____6472 = FStar_List.unzip eargs in - (match uu____6472 with + let uu____6468 = as_record qual1 e in + FStar_Extraction_ML_Util.resugar_exp uu____6468 + | uu____6469 -> + let uu____6481 = FStar_List.unzip eargs in + (match uu____6481 with | (binders,eargs1) -> (match e.FStar_Extraction_ML_Syntax.expr with | FStar_Extraction_ML_Syntax.MLE_CTor (head1,args) -> let body = - let uu____6518 = - let uu____6519 = + let uu____6527 = + let uu____6528 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty tres) @@ -1748,28 +1749,28 @@ let (maybe_eta_data_and_project_record : (FStar_List.append args eargs1))) in FStar_All.pipe_left (as_record qual1) - uu____6519 + uu____6528 in FStar_All.pipe_left FStar_Extraction_ML_Util.resugar_exp - uu____6518 + uu____6527 in FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty e.FStar_Extraction_ML_Syntax.mlty) (FStar_Extraction_ML_Syntax.MLE_Fun (binders, body)) - | uu____6529 -> + | uu____6538 -> failwith "Impossible: Not a constructor"))) in match ((mlAppExpr.FStar_Extraction_ML_Syntax.expr), qual) with - | (uu____6533,FStar_Pervasives_Native.None ) -> mlAppExpr + | (uu____6542,FStar_Pervasives_Native.None ) -> mlAppExpr | (FStar_Extraction_ML_Syntax.MLE_App ({ FStar_Extraction_ML_Syntax.expr = FStar_Extraction_ML_Syntax.MLE_Name mlp; - FStar_Extraction_ML_Syntax.mlty = uu____6537; - FStar_Extraction_ML_Syntax.loc = uu____6538;_},mle::args),FStar_Pervasives_Native.Some + FStar_Extraction_ML_Syntax.mlty = uu____6546; + FStar_Extraction_ML_Syntax.loc = uu____6547;_},mle::args),FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Record_projector (constrname,f))) -> let f1 = FStar_Ident.lid_of_ids @@ -1780,15 +1781,15 @@ let (maybe_eta_data_and_project_record : let e = match args with | [] -> proj - | uu____6561 -> - let uu____6564 = - let uu____6571 = + | uu____6570 -> + let uu____6573 = + let uu____6580 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty FStar_Extraction_ML_Syntax.MLTY_Top) proj in - (uu____6571, args) in - FStar_Extraction_ML_Syntax.MLE_App uu____6564 + (uu____6580, args) in + FStar_Extraction_ML_Syntax.MLE_App uu____6573 in FStar_Extraction_ML_Syntax.with_ty mlAppExpr.FStar_Extraction_ML_Syntax.mlty e @@ -1799,10 +1800,10 @@ let (maybe_eta_data_and_project_record : ({ FStar_Extraction_ML_Syntax.expr = FStar_Extraction_ML_Syntax.MLE_Name mlp; - FStar_Extraction_ML_Syntax.mlty = uu____6575; - FStar_Extraction_ML_Syntax.loc = uu____6576;_},uu____6577); - FStar_Extraction_ML_Syntax.mlty = uu____6578; - FStar_Extraction_ML_Syntax.loc = uu____6579;_},mle::args),FStar_Pervasives_Native.Some + FStar_Extraction_ML_Syntax.mlty = uu____6584; + FStar_Extraction_ML_Syntax.loc = uu____6585;_},uu____6586); + FStar_Extraction_ML_Syntax.mlty = uu____6587; + FStar_Extraction_ML_Syntax.loc = uu____6588;_},mle::args),FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Record_projector (constrname,f))) -> let f1 = FStar_Ident.lid_of_ids @@ -1813,15 +1814,15 @@ let (maybe_eta_data_and_project_record : let e = match args with | [] -> proj - | uu____6606 -> - let uu____6609 = - let uu____6616 = + | uu____6615 -> + let uu____6618 = + let uu____6625 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty FStar_Extraction_ML_Syntax.MLTY_Top) proj in - (uu____6616, args) in - FStar_Extraction_ML_Syntax.MLE_App uu____6609 + (uu____6625, args) in + FStar_Extraction_ML_Syntax.MLE_App uu____6618 in FStar_Extraction_ML_Syntax.with_ty mlAppExpr.FStar_Extraction_ML_Syntax.mlty e @@ -1829,30 +1830,30 @@ let (maybe_eta_data_and_project_record : ({ FStar_Extraction_ML_Syntax.expr = FStar_Extraction_ML_Syntax.MLE_Name mlp; - FStar_Extraction_ML_Syntax.mlty = uu____6620; - FStar_Extraction_ML_Syntax.loc = uu____6621;_},mlargs),FStar_Pervasives_Native.Some + FStar_Extraction_ML_Syntax.mlty = uu____6629; + FStar_Extraction_ML_Syntax.loc = uu____6630;_},mlargs),FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Data_ctor )) -> - let uu____6629 = + let uu____6638 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty mlAppExpr.FStar_Extraction_ML_Syntax.mlty) (FStar_Extraction_ML_Syntax.MLE_CTor (mlp, mlargs)) in - FStar_All.pipe_left (resugar_and_maybe_eta qual) uu____6629 + FStar_All.pipe_left (resugar_and_maybe_eta qual) uu____6638 | (FStar_Extraction_ML_Syntax.MLE_App ({ FStar_Extraction_ML_Syntax.expr = FStar_Extraction_ML_Syntax.MLE_Name mlp; - FStar_Extraction_ML_Syntax.mlty = uu____6633; - FStar_Extraction_ML_Syntax.loc = uu____6634;_},mlargs),FStar_Pervasives_Native.Some - (FStar_Syntax_Syntax.Record_ctor uu____6636)) -> - let uu____6649 = + FStar_Extraction_ML_Syntax.mlty = uu____6642; + FStar_Extraction_ML_Syntax.loc = uu____6643;_},mlargs),FStar_Pervasives_Native.Some + (FStar_Syntax_Syntax.Record_ctor uu____6645)) -> + let uu____6658 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty mlAppExpr.FStar_Extraction_ML_Syntax.mlty) (FStar_Extraction_ML_Syntax.MLE_CTor (mlp, mlargs)) in - FStar_All.pipe_left (resugar_and_maybe_eta qual) uu____6649 + FStar_All.pipe_left (resugar_and_maybe_eta qual) uu____6658 | (FStar_Extraction_ML_Syntax.MLE_App ({ FStar_Extraction_ML_Syntax.expr = @@ -1860,18 +1861,18 @@ let (maybe_eta_data_and_project_record : ({ FStar_Extraction_ML_Syntax.expr = FStar_Extraction_ML_Syntax.MLE_Name mlp; - FStar_Extraction_ML_Syntax.mlty = uu____6653; - FStar_Extraction_ML_Syntax.loc = uu____6654;_},uu____6655); - FStar_Extraction_ML_Syntax.mlty = uu____6656; - FStar_Extraction_ML_Syntax.loc = uu____6657;_},mlargs),FStar_Pervasives_Native.Some + FStar_Extraction_ML_Syntax.mlty = uu____6662; + FStar_Extraction_ML_Syntax.loc = uu____6663;_},uu____6664); + FStar_Extraction_ML_Syntax.mlty = uu____6665; + FStar_Extraction_ML_Syntax.loc = uu____6666;_},mlargs),FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Data_ctor )) -> - let uu____6669 = + let uu____6678 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty mlAppExpr.FStar_Extraction_ML_Syntax.mlty) (FStar_Extraction_ML_Syntax.MLE_CTor (mlp, mlargs)) in - FStar_All.pipe_left (resugar_and_maybe_eta qual) uu____6669 + FStar_All.pipe_left (resugar_and_maybe_eta qual) uu____6678 | (FStar_Extraction_ML_Syntax.MLE_App ({ FStar_Extraction_ML_Syntax.expr = @@ -1879,67 +1880,67 @@ let (maybe_eta_data_and_project_record : ({ FStar_Extraction_ML_Syntax.expr = FStar_Extraction_ML_Syntax.MLE_Name mlp; - FStar_Extraction_ML_Syntax.mlty = uu____6673; - FStar_Extraction_ML_Syntax.loc = uu____6674;_},uu____6675); - FStar_Extraction_ML_Syntax.mlty = uu____6676; - FStar_Extraction_ML_Syntax.loc = uu____6677;_},mlargs),FStar_Pervasives_Native.Some - (FStar_Syntax_Syntax.Record_ctor uu____6679)) -> - let uu____6696 = + FStar_Extraction_ML_Syntax.mlty = uu____6682; + FStar_Extraction_ML_Syntax.loc = uu____6683;_},uu____6684); + FStar_Extraction_ML_Syntax.mlty = uu____6685; + FStar_Extraction_ML_Syntax.loc = uu____6686;_},mlargs),FStar_Pervasives_Native.Some + (FStar_Syntax_Syntax.Record_ctor uu____6688)) -> + let uu____6705 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty mlAppExpr.FStar_Extraction_ML_Syntax.mlty) (FStar_Extraction_ML_Syntax.MLE_CTor (mlp, mlargs)) in - FStar_All.pipe_left (resugar_and_maybe_eta qual) uu____6696 + FStar_All.pipe_left (resugar_and_maybe_eta qual) uu____6705 | (FStar_Extraction_ML_Syntax.MLE_Name mlp,FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Data_ctor )) -> - let uu____6702 = + let uu____6711 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty mlAppExpr.FStar_Extraction_ML_Syntax.mlty) (FStar_Extraction_ML_Syntax.MLE_CTor (mlp, [])) in - FStar_All.pipe_left (resugar_and_maybe_eta qual) uu____6702 + FStar_All.pipe_left (resugar_and_maybe_eta qual) uu____6711 | (FStar_Extraction_ML_Syntax.MLE_Name mlp,FStar_Pervasives_Native.Some - (FStar_Syntax_Syntax.Record_ctor uu____6706)) -> - let uu____6715 = + (FStar_Syntax_Syntax.Record_ctor uu____6715)) -> + let uu____6724 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty mlAppExpr.FStar_Extraction_ML_Syntax.mlty) (FStar_Extraction_ML_Syntax.MLE_CTor (mlp, [])) in - FStar_All.pipe_left (resugar_and_maybe_eta qual) uu____6715 + FStar_All.pipe_left (resugar_and_maybe_eta qual) uu____6724 | (FStar_Extraction_ML_Syntax.MLE_TApp ({ FStar_Extraction_ML_Syntax.expr = FStar_Extraction_ML_Syntax.MLE_Name mlp; - FStar_Extraction_ML_Syntax.mlty = uu____6719; - FStar_Extraction_ML_Syntax.loc = uu____6720;_},uu____6721),FStar_Pervasives_Native.Some + FStar_Extraction_ML_Syntax.mlty = uu____6728; + FStar_Extraction_ML_Syntax.loc = uu____6729;_},uu____6730),FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Data_ctor )) -> - let uu____6728 = + let uu____6737 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty mlAppExpr.FStar_Extraction_ML_Syntax.mlty) (FStar_Extraction_ML_Syntax.MLE_CTor (mlp, [])) in - FStar_All.pipe_left (resugar_and_maybe_eta qual) uu____6728 + FStar_All.pipe_left (resugar_and_maybe_eta qual) uu____6737 | (FStar_Extraction_ML_Syntax.MLE_TApp ({ FStar_Extraction_ML_Syntax.expr = FStar_Extraction_ML_Syntax.MLE_Name mlp; - FStar_Extraction_ML_Syntax.mlty = uu____6732; - FStar_Extraction_ML_Syntax.loc = uu____6733;_},uu____6734),FStar_Pervasives_Native.Some - (FStar_Syntax_Syntax.Record_ctor uu____6735)) -> - let uu____6748 = + FStar_Extraction_ML_Syntax.mlty = uu____6741; + FStar_Extraction_ML_Syntax.loc = uu____6742;_},uu____6743),FStar_Pervasives_Native.Some + (FStar_Syntax_Syntax.Record_ctor uu____6744)) -> + let uu____6757 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty mlAppExpr.FStar_Extraction_ML_Syntax.mlty) (FStar_Extraction_ML_Syntax.MLE_CTor (mlp, [])) in - FStar_All.pipe_left (resugar_and_maybe_eta qual) uu____6748 - | uu____6751 -> mlAppExpr + FStar_All.pipe_left (resugar_and_maybe_eta qual) uu____6757 + | uu____6760 -> mlAppExpr let (maybe_promote_effect : FStar_Extraction_ML_Syntax.mlexpr -> @@ -1960,7 +1961,7 @@ let (maybe_promote_effect : ,FStar_Extraction_ML_Syntax.MLTY_Erased ) -> (FStar_Extraction_ML_Syntax.ml_unit, FStar_Extraction_ML_Syntax.E_PURE) - | uu____6782 -> (ml_e, tag) + | uu____6791 -> (ml_e, tag) let (extract_lb_sig : FStar_Extraction_ML_UEnv.uenv -> @@ -1975,26 +1976,26 @@ let (extract_lb_sig : = fun g -> fun lbs -> - let maybe_generalize uu____6843 = - match uu____6843 with + let maybe_generalize uu____6852 = + match uu____6852 with | { FStar_Syntax_Syntax.lbname = lbname_; - FStar_Syntax_Syntax.lbunivs = uu____6864; + FStar_Syntax_Syntax.lbunivs = uu____6873; FStar_Syntax_Syntax.lbtyp = lbtyp; FStar_Syntax_Syntax.lbeff = lbeff; FStar_Syntax_Syntax.lbdef = lbdef; - FStar_Syntax_Syntax.lbattrs = uu____6868; - FStar_Syntax_Syntax.lbpos = uu____6869;_} -> + FStar_Syntax_Syntax.lbattrs = uu____6877; + FStar_Syntax_Syntax.lbpos = uu____6878;_} -> let f_e = effect_as_etag g lbeff in let lbtyp1 = FStar_Syntax_Subst.compress lbtyp in - let no_gen uu____6950 = + let no_gen uu____6959 = let expected_t = term_as_mlty g lbtyp1 in (lbname_, f_e, (lbtyp1, ([], ([], expected_t))), false, lbdef) in - let uu____7027 = + let uu____7036 = FStar_TypeChecker_Util.must_erase_for_extraction g.FStar_Extraction_ML_UEnv.env_tcenv lbtyp1 in - if uu____7027 + if uu____7036 then (lbname_, f_e, (lbtyp1, ([], ([], FStar_Extraction_ML_Syntax.MLTY_Erased))), @@ -2002,71 +2003,71 @@ let (extract_lb_sig : else (match lbtyp1.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_arrow (bs,c) when - let uu____7113 = FStar_List.hd bs in - FStar_All.pipe_right uu____7113 (is_type_binder g) -> - let uu____7135 = FStar_Syntax_Subst.open_comp bs c in - (match uu____7135 with + let uu____7122 = FStar_List.hd bs in + FStar_All.pipe_right uu____7122 (is_type_binder g) -> + let uu____7144 = FStar_Syntax_Subst.open_comp bs c in + (match uu____7144 with | (bs1,c1) -> - let uu____7161 = - let uu____7174 = + let uu____7170 = + let uu____7183 = FStar_Util.prefix_until (fun x -> - let uu____7220 = is_type_binder g x in - Prims.op_Negation uu____7220) bs1 + let uu____7229 = is_type_binder g x in + Prims.op_Negation uu____7229) bs1 in - match uu____7174 with + match uu____7183 with | FStar_Pervasives_Native.None -> (bs1, (FStar_Syntax_Util.comp_result c1)) | FStar_Pervasives_Native.Some (bs2,b,rest) -> - let uu____7347 = + let uu____7356 = FStar_Syntax_Util.arrow (b :: rest) c1 in - (bs2, uu____7347) + (bs2, uu____7356) in - (match uu____7161 with + (match uu____7170 with | (tbinders,tbody) -> let n_tbinders = FStar_List.length tbinders in let lbdef1 = - let uu____7409 = normalize_abs lbdef in - FStar_All.pipe_right uu____7409 + let uu____7418 = normalize_abs lbdef in + FStar_All.pipe_right uu____7418 FStar_Syntax_Util.unmeta in (match lbdef1.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_abs (bs2,body,copt) -> - let uu____7458 = + let uu____7467 = FStar_Syntax_Subst.open_term bs2 body in - (match uu____7458 with + (match uu____7467 with | (bs3,body1) -> if n_tbinders <= (FStar_List.length bs3) then - let uu____7516 = + let uu____7525 = FStar_Util.first_N n_tbinders bs3 in - (match uu____7516 with + (match uu____7525 with | (targs,rest_args) -> let expected_source_ty = let s = FStar_List.map2 - (fun uu____7623 -> - fun uu____7624 -> - match (uu____7623, - uu____7624) + (fun uu____7632 -> + fun uu____7633 -> + match (uu____7632, + uu____7633) with - | ((x,uu____7650), - (y,uu____7652)) + | ((x,uu____7659), + (y,uu____7661)) -> - let uu____7673 = - let uu____7680 + let uu____7682 = + let uu____7689 = FStar_Syntax_Syntax.bv_to_name y in (x, - uu____7680) + uu____7689) in FStar_Syntax_Syntax.NT - uu____7673) + uu____7682) tbinders targs in FStar_Syntax_Subst.subst s @@ -2075,9 +2076,9 @@ let (extract_lb_sig : let env = FStar_List.fold_left (fun env -> - fun uu____7697 -> - match uu____7697 with - | (a,uu____7705) -> + fun uu____7706 -> + match uu____7706 with + | (a,uu____7714) -> FStar_Extraction_ML_UEnv.extend_ty env a FStar_Pervasives_Native.None) @@ -2088,33 +2089,33 @@ let (extract_lb_sig : expected_source_ty in let polytype = - let uu____7716 = + let uu____7725 = FStar_All.pipe_right targs (FStar_List.map - (fun uu____7735 -> - match uu____7735 + (fun uu____7744 -> + match uu____7744 with - | (x,uu____7744) -> + | (x,uu____7753) -> FStar_Extraction_ML_UEnv.bv_as_ml_tyvar x)) in - (uu____7716, expected_t) in + (uu____7725, expected_t) in let add_unit = match rest_args with | [] -> - (let uu____7760 = + (let uu____7769 = is_fstar_value body1 in Prims.op_Negation - uu____7760) + uu____7769) || - (let uu____7763 = + (let uu____7772 = FStar_Syntax_Util.is_pure_comp c1 in Prims.op_Negation - uu____7763) - | uu____7765 -> false in + uu____7772) + | uu____7774 -> false in let rest_args1 = if add_unit then unit_binder :: rest_args @@ -2134,13 +2135,13 @@ let (extract_lb_sig : add_unit, body2)) else failwith "Not enough type binders") - | FStar_Syntax_Syntax.Tm_uinst uu____7827 -> + | FStar_Syntax_Syntax.Tm_uinst uu____7836 -> let env = FStar_List.fold_left (fun env -> - fun uu____7846 -> - match uu____7846 with - | (a,uu____7854) -> + fun uu____7855 -> + match uu____7855 with + | (a,uu____7863) -> FStar_Extraction_ML_UEnv.extend_ty env a FStar_Pervasives_Native.None) @@ -2148,28 +2149,28 @@ let (extract_lb_sig : in let expected_t = term_as_mlty env tbody in let polytype = - let uu____7865 = + let uu____7874 = FStar_All.pipe_right tbinders (FStar_List.map - (fun uu____7884 -> - match uu____7884 with - | (x,uu____7893) -> + (fun uu____7893 -> + match uu____7893 with + | (x,uu____7902) -> FStar_Extraction_ML_UEnv.bv_as_ml_tyvar x)) in - (uu____7865, expected_t) in + (uu____7874, expected_t) in let args = FStar_All.pipe_right tbinders (FStar_List.map - (fun uu____7937 -> - match uu____7937 with - | (bv,uu____7945) -> - let uu____7950 = + (fun uu____7946 -> + match uu____7946 with + | (bv,uu____7954) -> + let uu____7959 = FStar_Syntax_Syntax.bv_to_name bv in FStar_All.pipe_right - uu____7950 + uu____7959 FStar_Syntax_Syntax.as_arg)) in let e = @@ -2181,13 +2182,13 @@ let (extract_lb_sig : in (lbname_, f_e, (lbtyp1, (tbinders, polytype)), false, e) - | FStar_Syntax_Syntax.Tm_fvar uu____7980 -> + | FStar_Syntax_Syntax.Tm_fvar uu____7989 -> let env = FStar_List.fold_left (fun env -> - fun uu____7993 -> - match uu____7993 with - | (a,uu____8001) -> + fun uu____8002 -> + match uu____8002 with + | (a,uu____8010) -> FStar_Extraction_ML_UEnv.extend_ty env a FStar_Pervasives_Native.None) @@ -2195,28 +2196,28 @@ let (extract_lb_sig : in let expected_t = term_as_mlty env tbody in let polytype = - let uu____8012 = + let uu____8021 = FStar_All.pipe_right tbinders (FStar_List.map - (fun uu____8031 -> - match uu____8031 with - | (x,uu____8040) -> + (fun uu____8040 -> + match uu____8040 with + | (x,uu____8049) -> FStar_Extraction_ML_UEnv.bv_as_ml_tyvar x)) in - (uu____8012, expected_t) in + (uu____8021, expected_t) in let args = FStar_All.pipe_right tbinders (FStar_List.map - (fun uu____8084 -> - match uu____8084 with - | (bv,uu____8092) -> - let uu____8097 = + (fun uu____8093 -> + match uu____8093 with + | (bv,uu____8101) -> + let uu____8106 = FStar_Syntax_Syntax.bv_to_name bv in FStar_All.pipe_right - uu____8097 + uu____8106 FStar_Syntax_Syntax.as_arg)) in let e = @@ -2228,13 +2229,13 @@ let (extract_lb_sig : in (lbname_, f_e, (lbtyp1, (tbinders, polytype)), false, e) - | FStar_Syntax_Syntax.Tm_name uu____8127 -> + | FStar_Syntax_Syntax.Tm_name uu____8136 -> let env = FStar_List.fold_left (fun env -> - fun uu____8140 -> - match uu____8140 with - | (a,uu____8148) -> + fun uu____8149 -> + match uu____8149 with + | (a,uu____8157) -> FStar_Extraction_ML_UEnv.extend_ty env a FStar_Pervasives_Native.None) @@ -2242,28 +2243,28 @@ let (extract_lb_sig : in let expected_t = term_as_mlty env tbody in let polytype = - let uu____8159 = + let uu____8168 = FStar_All.pipe_right tbinders (FStar_List.map - (fun uu____8178 -> - match uu____8178 with - | (x,uu____8187) -> + (fun uu____8187 -> + match uu____8187 with + | (x,uu____8196) -> FStar_Extraction_ML_UEnv.bv_as_ml_tyvar x)) in - (uu____8159, expected_t) in + (uu____8168, expected_t) in let args = FStar_All.pipe_right tbinders (FStar_List.map - (fun uu____8231 -> - match uu____8231 with - | (bv,uu____8239) -> - let uu____8244 = + (fun uu____8240 -> + match uu____8240 with + | (bv,uu____8248) -> + let uu____8253 = FStar_Syntax_Syntax.bv_to_name bv in FStar_All.pipe_right - uu____8244 + uu____8253 FStar_Syntax_Syntax.as_arg)) in let e = @@ -2275,8 +2276,8 @@ let (extract_lb_sig : in (lbname_, f_e, (lbtyp1, (tbinders, polytype)), false, e) - | uu____8274 -> err_value_restriction lbdef1))) - | uu____8294 -> no_gen ()) + | uu____8283 -> err_value_restriction lbdef1))) + | uu____8303 -> no_gen ()) in FStar_All.pipe_right (FStar_Pervasives_Native.snd lbs) (FStar_List.map maybe_generalize) @@ -2299,19 +2300,19 @@ let (extract_lb_iface : let lbs1 = extract_lb_sig g lbs in FStar_Util.fold_map (fun env -> - fun uu____8445 -> - match uu____8445 with + fun uu____8454 -> + match uu____8454 with | (lbname,e_tag,(typ,(binders,mltyscheme)),add_unit,_body) -> - let uu____8506 = + let uu____8515 = FStar_Extraction_ML_UEnv.extend_lb env lbname typ mltyscheme add_unit is_rec in - (match uu____8506 with - | (env1,uu____8523,exp_binding) -> - let uu____8527 = - let uu____8532 = FStar_Util.right lbname in - (uu____8532, exp_binding) in - (env1, uu____8527))) g lbs1 + (match uu____8515 with + | (env1,uu____8532,exp_binding) -> + let uu____8536 = + let uu____8541 = FStar_Util.right lbname in + (uu____8541, exp_binding) in + (env1, uu____8536))) g lbs1 let rec (check_term_as_mlexpr : FStar_Extraction_ML_UEnv.uenv -> @@ -2326,55 +2327,55 @@ let rec (check_term_as_mlexpr : fun f -> fun ty -> FStar_Extraction_ML_UEnv.debug g - (fun uu____8598 -> - let uu____8599 = FStar_Syntax_Print.term_to_string e in - let uu____8601 = + (fun uu____8607 -> + let uu____8608 = FStar_Syntax_Print.term_to_string e in + let uu____8610 = FStar_Extraction_ML_Code.string_of_mlty g.FStar_Extraction_ML_UEnv.currentModule ty in - FStar_Util.print2 "Checking %s at type %s\n" uu____8599 - uu____8601); + FStar_Util.print2 "Checking %s at type %s\n" uu____8608 + uu____8610); (match (f, ty) with - | (FStar_Extraction_ML_Syntax.E_GHOST ,uu____8608) -> + | (FStar_Extraction_ML_Syntax.E_GHOST ,uu____8617) -> (FStar_Extraction_ML_Syntax.ml_unit, FStar_Extraction_ML_Syntax.MLTY_Erased) | (FStar_Extraction_ML_Syntax.E_PURE ,FStar_Extraction_ML_Syntax.MLTY_Erased ) -> (FStar_Extraction_ML_Syntax.ml_unit, FStar_Extraction_ML_Syntax.MLTY_Erased) - | uu____8609 -> - let uu____8614 = term_as_mlexpr g e in - (match uu____8614 with + | uu____8618 -> + let uu____8623 = term_as_mlexpr g e in + (match uu____8623 with | (ml_e,tag,t) -> - let uu____8628 = maybe_promote_effect ml_e tag t in - (match uu____8628 with + let uu____8637 = maybe_promote_effect ml_e tag t in + (match uu____8637 with | (ml_e1,tag1) -> - let uu____8639 = + let uu____8648 = FStar_Extraction_ML_Util.eff_leq tag1 f in - if uu____8639 + if uu____8648 then - let uu____8646 = + let uu____8655 = maybe_coerce e.FStar_Syntax_Syntax.pos g ml_e1 t ty in - (uu____8646, ty) + (uu____8655, ty) else (match (tag1, f, ty) with | (FStar_Extraction_ML_Syntax.E_GHOST ,FStar_Extraction_ML_Syntax.E_PURE ,FStar_Extraction_ML_Syntax.MLTY_Erased ) -> - let uu____8653 = + let uu____8662 = maybe_coerce e.FStar_Syntax_Syntax.pos g ml_e1 t ty in - (uu____8653, ty) - | uu____8654 -> + (uu____8662, ty) + | uu____8663 -> (err_unexpected_eff g e ty f tag1; - (let uu____8662 = + (let uu____8671 = maybe_coerce e.FStar_Syntax_Syntax.pos g ml_e1 t ty in - (uu____8662, ty))))))) + (uu____8671, ty))))))) and (term_as_mlexpr : FStar_Extraction_ML_UEnv.uenv -> @@ -2384,11 +2385,11 @@ and (term_as_mlexpr : = fun g -> fun e -> - let uu____8665 = term_as_mlexpr' g e in - match uu____8665 with + let uu____8674 = term_as_mlexpr' g e in + match uu____8674 with | (e1,f,t) -> - let uu____8681 = maybe_promote_effect e1 f t in - (match uu____8681 with | (e2,f1) -> (e2, f1, t)) + let uu____8690 = maybe_promote_effect e1 f t in + (match uu____8690 with | (e2,f1) -> (e2, f1, t)) and (term_as_mlexpr' : FStar_Extraction_ML_UEnv.uenv -> @@ -2400,53 +2401,53 @@ and (term_as_mlexpr' : fun top -> FStar_Extraction_ML_UEnv.debug g (fun u -> - let uu____8706 = - let uu____8708 = + let uu____8715 = + let uu____8717 = FStar_Range.string_of_range top.FStar_Syntax_Syntax.pos in - let uu____8710 = FStar_Syntax_Print.tag_of_term top in - let uu____8712 = FStar_Syntax_Print.term_to_string top in + let uu____8719 = FStar_Syntax_Print.tag_of_term top in + let uu____8721 = FStar_Syntax_Print.term_to_string top in FStar_Util.format3 "%s: term_as_mlexpr' (%s) : %s \n" - uu____8708 uu____8710 uu____8712 + uu____8717 uu____8719 uu____8721 in - FStar_Util.print_string uu____8706); + FStar_Util.print_string uu____8715); (let t = FStar_Syntax_Subst.compress top in match t.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_unknown -> - let uu____8722 = - let uu____8724 = FStar_Syntax_Print.tag_of_term t in - FStar_Util.format1 "Impossible: Unexpected term: %s" uu____8724 + let uu____8731 = + let uu____8733 = FStar_Syntax_Print.tag_of_term t in + FStar_Util.format1 "Impossible: Unexpected term: %s" uu____8733 in - failwith uu____8722 - | FStar_Syntax_Syntax.Tm_delayed uu____8733 -> - let uu____8756 = - let uu____8758 = FStar_Syntax_Print.tag_of_term t in - FStar_Util.format1 "Impossible: Unexpected term: %s" uu____8758 + failwith uu____8731 + | FStar_Syntax_Syntax.Tm_delayed uu____8742 -> + let uu____8765 = + let uu____8767 = FStar_Syntax_Print.tag_of_term t in + FStar_Util.format1 "Impossible: Unexpected term: %s" uu____8767 in - failwith uu____8756 - | FStar_Syntax_Syntax.Tm_uvar uu____8767 -> - let uu____8780 = - let uu____8782 = FStar_Syntax_Print.tag_of_term t in - FStar_Util.format1 "Impossible: Unexpected term: %s" uu____8782 + failwith uu____8765 + | FStar_Syntax_Syntax.Tm_uvar uu____8776 -> + let uu____8789 = + let uu____8791 = FStar_Syntax_Print.tag_of_term t in + FStar_Util.format1 "Impossible: Unexpected term: %s" uu____8791 in - failwith uu____8780 - | FStar_Syntax_Syntax.Tm_bvar uu____8791 -> - let uu____8792 = - let uu____8794 = FStar_Syntax_Print.tag_of_term t in - FStar_Util.format1 "Impossible: Unexpected term: %s" uu____8794 + failwith uu____8789 + | FStar_Syntax_Syntax.Tm_bvar uu____8800 -> + let uu____8801 = + let uu____8803 = FStar_Syntax_Print.tag_of_term t in + FStar_Util.format1 "Impossible: Unexpected term: %s" uu____8803 in - failwith uu____8792 + failwith uu____8801 | FStar_Syntax_Syntax.Tm_lazy i -> - let uu____8804 = FStar_Syntax_Util.unfold_lazy i in - term_as_mlexpr g uu____8804 - | FStar_Syntax_Syntax.Tm_type uu____8805 -> + let uu____8813 = FStar_Syntax_Util.unfold_lazy i in + term_as_mlexpr g uu____8813 + | FStar_Syntax_Syntax.Tm_type uu____8814 -> (FStar_Extraction_ML_Syntax.ml_unit, FStar_Extraction_ML_Syntax.E_PURE, FStar_Extraction_ML_Syntax.ml_unit_ty) - | FStar_Syntax_Syntax.Tm_refine uu____8806 -> + | FStar_Syntax_Syntax.Tm_refine uu____8815 -> (FStar_Extraction_ML_Syntax.ml_unit, FStar_Extraction_ML_Syntax.E_PURE, FStar_Extraction_ML_Syntax.ml_unit_ty) - | FStar_Syntax_Syntax.Tm_arrow uu____8813 -> + | FStar_Syntax_Syntax.Tm_arrow uu____8822 -> (FStar_Extraction_ML_Syntax.ml_unit, FStar_Extraction_ML_Syntax.E_PURE, FStar_Extraction_ML_Syntax.ml_unit_ty) @@ -2454,25 +2455,25 @@ and (term_as_mlexpr' : (qt,{ FStar_Syntax_Syntax.qkind = FStar_Syntax_Syntax.Quote_dynamic ; - FStar_Syntax_Syntax.antiquotes = uu____8829;_}) + FStar_Syntax_Syntax.antiquotes = uu____8838;_}) -> - let uu____8842 = - let uu____8843 = + let uu____8851 = + let uu____8852 = FStar_Syntax_Syntax.lid_as_fv FStar_Parser_Const.failwith_lid FStar_Syntax_Syntax.delta_constant FStar_Pervasives_Native.None in - FStar_Extraction_ML_UEnv.lookup_fv g uu____8843 in - (match uu____8842 with - | { FStar_Extraction_ML_UEnv.exp_b_name = uu____8850; + FStar_Extraction_ML_UEnv.lookup_fv g uu____8852 in + (match uu____8851 with + | { FStar_Extraction_ML_UEnv.exp_b_name = uu____8859; FStar_Extraction_ML_UEnv.exp_b_expr = fw; - FStar_Extraction_ML_UEnv.exp_b_tscheme = uu____8852; - FStar_Extraction_ML_UEnv.exp_b_inst_ok = uu____8853;_} -> - let uu____8856 = - let uu____8857 = - let uu____8858 = - let uu____8865 = - let uu____8868 = + FStar_Extraction_ML_UEnv.exp_b_tscheme = uu____8861; + FStar_Extraction_ML_UEnv.exp_b_inst_ok = uu____8862;_} -> + let uu____8865 = + let uu____8866 = + let uu____8867 = + let uu____8874 = + let uu____8877 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty FStar_Extraction_ML_Syntax.ml_string_ty) @@ -2480,130 +2481,130 @@ and (term_as_mlexpr' : (FStar_Extraction_ML_Syntax.MLC_String "Cannot evaluate open quotation at runtime")) in - [uu____8868] in - (fw, uu____8865) in - FStar_Extraction_ML_Syntax.MLE_App uu____8858 in + [uu____8877] in + (fw, uu____8874) in + FStar_Extraction_ML_Syntax.MLE_App uu____8867 in FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty - FStar_Extraction_ML_Syntax.ml_int_ty) uu____8857 + FStar_Extraction_ML_Syntax.ml_int_ty) uu____8866 in - (uu____8856, FStar_Extraction_ML_Syntax.E_PURE, + (uu____8865, FStar_Extraction_ML_Syntax.E_PURE, FStar_Extraction_ML_Syntax.ml_int_ty)) | FStar_Syntax_Syntax.Tm_quoted (qt,{ FStar_Syntax_Syntax.qkind = FStar_Syntax_Syntax.Quote_static ; FStar_Syntax_Syntax.antiquotes = aqs;_}) -> - let uu____8886 = FStar_Reflection_Basic.inspect_ln qt in - (match uu____8886 with + let uu____8895 = FStar_Reflection_Basic.inspect_ln qt in + (match uu____8895 with | FStar_Reflection_Data.Tv_Var bv -> - let uu____8894 = FStar_Syntax_Syntax.lookup_aq bv aqs in - (match uu____8894 with + let uu____8903 = FStar_Syntax_Syntax.lookup_aq bv aqs in + (match uu____8903 with | FStar_Pervasives_Native.Some tm -> term_as_mlexpr g tm | FStar_Pervasives_Native.None -> let tv = - let uu____8905 = - let uu____8912 = + let uu____8914 = + let uu____8921 = FStar_Reflection_Embeddings.e_term_view_aq aqs in - FStar_Syntax_Embeddings.embed uu____8912 + FStar_Syntax_Embeddings.embed uu____8921 (FStar_Reflection_Data.Tv_Var bv) in - uu____8905 t.FStar_Syntax_Syntax.pos + uu____8914 t.FStar_Syntax_Syntax.pos FStar_Pervasives_Native.None FStar_Syntax_Embeddings.id_norm_cb in let t1 = - let uu____8943 = - let uu____8954 = FStar_Syntax_Syntax.as_arg tv in - [uu____8954] in + let uu____8952 = + let uu____8963 = FStar_Syntax_Syntax.as_arg tv in + [uu____8963] in FStar_Syntax_Util.mk_app (FStar_Reflection_Data.refl_constant_term FStar_Reflection_Data.fstar_refl_pack_ln) - uu____8943 + uu____8952 in term_as_mlexpr g t1) | tv -> let tv1 = - let uu____8981 = - let uu____8988 = + let uu____8990 = + let uu____8997 = FStar_Reflection_Embeddings.e_term_view_aq aqs in - FStar_Syntax_Embeddings.embed uu____8988 tv in - uu____8981 t.FStar_Syntax_Syntax.pos + FStar_Syntax_Embeddings.embed uu____8997 tv in + uu____8990 t.FStar_Syntax_Syntax.pos FStar_Pervasives_Native.None FStar_Syntax_Embeddings.id_norm_cb in let t1 = - let uu____9019 = - let uu____9030 = FStar_Syntax_Syntax.as_arg tv1 in - [uu____9030] in + let uu____9028 = + let uu____9039 = FStar_Syntax_Syntax.as_arg tv1 in + [uu____9039] in FStar_Syntax_Util.mk_app (FStar_Reflection_Data.refl_constant_term - FStar_Reflection_Data.fstar_refl_pack_ln) uu____9019 + FStar_Reflection_Data.fstar_refl_pack_ln) uu____9028 in term_as_mlexpr g t1) | FStar_Syntax_Syntax.Tm_meta - (t1,FStar_Syntax_Syntax.Meta_monadic (m,uu____9057)) -> + (t1,FStar_Syntax_Syntax.Meta_monadic (m,uu____9066)) -> let t2 = FStar_Syntax_Subst.compress t1 in (match t2.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_let ((false ,lb::[]),body) when FStar_Util.is_left lb.FStar_Syntax_Syntax.lbname -> - let uu____9090 = - let uu____9097 = + let uu____9099 = + let uu____9106 = FStar_TypeChecker_Env.effect_decl_opt g.FStar_Extraction_ML_UEnv.env_tcenv m in - FStar_Util.must uu____9097 in - (match uu____9090 with + FStar_Util.must uu____9106 in + (match uu____9099 with | (ed,qualifiers) -> - let uu____9124 = - let uu____9126 = + let uu____9133 = + let uu____9135 = FStar_TypeChecker_Env.is_reifiable_effect g.FStar_Extraction_ML_UEnv.env_tcenv ed.FStar_Syntax_Syntax.mname in - Prims.op_Negation uu____9126 in - if uu____9124 + Prims.op_Negation uu____9135 in + if uu____9133 then term_as_mlexpr g t2 else failwith "This should not happen (should have been handled at Tm_abs level)") - | uu____9144 -> term_as_mlexpr g t2) - | FStar_Syntax_Syntax.Tm_meta (t1,uu____9146) -> term_as_mlexpr g t1 - | FStar_Syntax_Syntax.Tm_uinst (t1,uu____9152) -> term_as_mlexpr g t1 + | uu____9153 -> term_as_mlexpr g t2) + | FStar_Syntax_Syntax.Tm_meta (t1,uu____9155) -> term_as_mlexpr g t1 + | FStar_Syntax_Syntax.Tm_uinst (t1,uu____9161) -> term_as_mlexpr g t1 | FStar_Syntax_Syntax.Tm_constant c -> - let uu____9158 = + let uu____9167 = FStar_TypeChecker_TcTerm.type_of_tot_term g.FStar_Extraction_ML_UEnv.env_tcenv t in - (match uu____9158 with - | (uu____9171,ty,uu____9173) -> + (match uu____9167 with + | (uu____9180,ty,uu____9182) -> let ml_ty = term_as_mlty g ty in - let uu____9175 = - let uu____9176 = + let uu____9184 = + let uu____9185 = FStar_Extraction_ML_Util.mlexpr_of_const t.FStar_Syntax_Syntax.pos c in - FStar_Extraction_ML_Syntax.with_ty ml_ty uu____9176 in - (uu____9175, FStar_Extraction_ML_Syntax.E_PURE, ml_ty)) - | FStar_Syntax_Syntax.Tm_name uu____9177 -> - let uu____9178 = is_type g t in - if uu____9178 + FStar_Extraction_ML_Syntax.with_ty ml_ty uu____9185 in + (uu____9184, FStar_Extraction_ML_Syntax.E_PURE, ml_ty)) + | FStar_Syntax_Syntax.Tm_name uu____9186 -> + let uu____9187 = is_type g t in + if uu____9187 then (FStar_Extraction_ML_Syntax.ml_unit, FStar_Extraction_ML_Syntax.E_PURE, FStar_Extraction_ML_Syntax.ml_unit_ty) else - (let uu____9189 = FStar_Extraction_ML_UEnv.lookup_term g t in - match uu____9189 with - | (FStar_Util.Inl uu____9202,uu____9203) -> + (let uu____9198 = FStar_Extraction_ML_UEnv.lookup_term g t in + match uu____9198 with + | (FStar_Util.Inl uu____9211,uu____9212) -> (FStar_Extraction_ML_Syntax.ml_unit, FStar_Extraction_ML_Syntax.E_PURE, FStar_Extraction_ML_Syntax.ml_unit_ty) | (FStar_Util.Inr - { FStar_Extraction_ML_UEnv.exp_b_name = uu____9208; + { FStar_Extraction_ML_UEnv.exp_b_name = uu____9217; FStar_Extraction_ML_UEnv.exp_b_expr = x; FStar_Extraction_ML_UEnv.exp_b_tscheme = mltys; - FStar_Extraction_ML_UEnv.exp_b_inst_ok = uu____9211;_},qual) + FStar_Extraction_ML_UEnv.exp_b_inst_ok = uu____9220;_},qual) -> (match mltys with | ([],t1) when t1 = FStar_Extraction_ML_Syntax.ml_unit_ty @@ -2611,143 +2612,143 @@ and (term_as_mlexpr' : (FStar_Extraction_ML_Syntax.ml_unit, FStar_Extraction_ML_Syntax.E_PURE, t1) | ([],t1) -> - let uu____9229 = + let uu____9238 = maybe_eta_data_and_project_record g qual t1 x in - (uu____9229, FStar_Extraction_ML_Syntax.E_PURE, t1) - | uu____9230 -> err_uninst g t mltys t)) + (uu____9238, FStar_Extraction_ML_Syntax.E_PURE, t1) + | uu____9239 -> err_uninst g t mltys t)) | FStar_Syntax_Syntax.Tm_fvar fv -> - let uu____9238 = is_type g t in - if uu____9238 + let uu____9247 = is_type g t in + if uu____9247 then (FStar_Extraction_ML_Syntax.ml_unit, FStar_Extraction_ML_Syntax.E_PURE, FStar_Extraction_ML_Syntax.ml_unit_ty) else - (let uu____9249 = FStar_Extraction_ML_UEnv.try_lookup_fv g fv + (let uu____9258 = FStar_Extraction_ML_UEnv.try_lookup_fv g fv in - match uu____9249 with + match uu____9258 with | FStar_Pervasives_Native.None -> (FStar_Extraction_ML_Syntax.ml_unit, FStar_Extraction_ML_Syntax.E_PURE, FStar_Extraction_ML_Syntax.MLTY_Erased) | FStar_Pervasives_Native.Some - { FStar_Extraction_ML_UEnv.exp_b_name = uu____9258; + { FStar_Extraction_ML_UEnv.exp_b_name = uu____9267; FStar_Extraction_ML_UEnv.exp_b_expr = x; FStar_Extraction_ML_UEnv.exp_b_tscheme = mltys; - FStar_Extraction_ML_UEnv.exp_b_inst_ok = uu____9261;_} + FStar_Extraction_ML_UEnv.exp_b_inst_ok = uu____9270;_} -> (FStar_Extraction_ML_UEnv.debug g - (fun uu____9269 -> - let uu____9270 = FStar_Syntax_Print.fv_to_string fv + (fun uu____9278 -> + let uu____9279 = FStar_Syntax_Print.fv_to_string fv in - let uu____9272 = + let uu____9281 = FStar_Extraction_ML_Code.string_of_mlexpr g.FStar_Extraction_ML_UEnv.currentModule x in - let uu____9274 = + let uu____9283 = FStar_Extraction_ML_Code.string_of_mlty g.FStar_Extraction_ML_UEnv.currentModule (FStar_Pervasives_Native.snd mltys) in FStar_Util.print3 "looked up %s: got %s at %s \n" - uu____9270 uu____9272 uu____9274); + uu____9279 uu____9281 uu____9283); (match mltys with | ([],t1) when t1 = FStar_Extraction_ML_Syntax.ml_unit_ty -> (FStar_Extraction_ML_Syntax.ml_unit, FStar_Extraction_ML_Syntax.E_PURE, t1) | ([],t1) -> - let uu____9287 = + let uu____9296 = maybe_eta_data_and_project_record g fv.FStar_Syntax_Syntax.fv_qual t1 x in - (uu____9287, FStar_Extraction_ML_Syntax.E_PURE, t1) - | uu____9288 -> err_uninst g t mltys t))) + (uu____9296, FStar_Extraction_ML_Syntax.E_PURE, t1) + | uu____9297 -> err_uninst g t mltys t))) | FStar_Syntax_Syntax.Tm_abs (bs,body,rcopt) -> - let uu____9322 = FStar_Syntax_Subst.open_term bs body in - (match uu____9322 with + let uu____9331 = FStar_Syntax_Subst.open_term bs body in + (match uu____9331 with | (bs1,body1) -> - let uu____9335 = binders_as_ml_binders g bs1 in - (match uu____9335 with + let uu____9344 = binders_as_ml_binders g bs1 in + (match uu____9344 with | (ml_bs,env) -> let body2 = match rcopt with | FStar_Pervasives_Native.Some rc -> - let uu____9371 = + let uu____9380 = FStar_TypeChecker_Env.is_reifiable_rc env.FStar_Extraction_ML_UEnv.env_tcenv rc in - if uu____9371 + if uu____9380 then FStar_TypeChecker_Util.reify_body env.FStar_Extraction_ML_UEnv.env_tcenv body1 else body1 | FStar_Pervasives_Native.None -> (FStar_Extraction_ML_UEnv.debug g - (fun uu____9379 -> - let uu____9380 = + (fun uu____9388 -> + let uu____9389 = FStar_Syntax_Print.term_to_string body1 in FStar_Util.print1 - "No computation type for: %s\n" uu____9380); + "No computation type for: %s\n" uu____9389); body1) in - let uu____9383 = term_as_mlexpr env body2 in - (match uu____9383 with + let uu____9392 = term_as_mlexpr env body2 in + (match uu____9392 with | (ml_body,f,t1) -> - let uu____9399 = + let uu____9408 = FStar_List.fold_right - (fun uu____9419 -> - fun uu____9420 -> - match (uu____9419, uu____9420) with - | ((uu____9443,targ),(f1,t2)) -> + (fun uu____9428 -> + fun uu____9429 -> + match (uu____9428, uu____9429) with + | ((uu____9452,targ),(f1,t2)) -> (FStar_Extraction_ML_Syntax.E_PURE, (FStar_Extraction_ML_Syntax.MLTY_Fun (targ, f1, t2)))) ml_bs (f, t1) in - (match uu____9399 with + (match uu____9408 with | (f1,tfun) -> - let uu____9466 = + let uu____9475 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty tfun) (FStar_Extraction_ML_Syntax.MLE_Fun (ml_bs, ml_body)) in - (uu____9466, f1, tfun))))) + (uu____9475, f1, tfun))))) | FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_constant (FStar_Const.Const_range_of ); - FStar_Syntax_Syntax.pos = uu____9474; - FStar_Syntax_Syntax.vars = uu____9475;_},(a1,uu____9477)::[]) + FStar_Syntax_Syntax.pos = uu____9483; + FStar_Syntax_Syntax.vars = uu____9484;_},(a1,uu____9486)::[]) -> let ty = - let uu____9517 = + let uu____9526 = FStar_Syntax_Syntax.tabbrev FStar_Parser_Const.range_lid in - term_as_mlty g uu____9517 in - let uu____9518 = - let uu____9519 = + term_as_mlty g uu____9526 in + let uu____9527 = + let uu____9528 = FStar_Extraction_ML_Util.mlexpr_of_range a1.FStar_Syntax_Syntax.pos in FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty ty) - uu____9519 + uu____9528 in - (uu____9518, FStar_Extraction_ML_Syntax.E_PURE, ty) + (uu____9527, FStar_Extraction_ML_Syntax.E_PURE, ty) | FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_constant (FStar_Const.Const_set_range_of ); - FStar_Syntax_Syntax.pos = uu____9520; - FStar_Syntax_Syntax.vars = uu____9521;_},(t1,uu____9523):: - (r,uu____9525)::[]) + FStar_Syntax_Syntax.pos = uu____9529; + FStar_Syntax_Syntax.vars = uu____9530;_},(t1,uu____9532):: + (r,uu____9534)::[]) -> term_as_mlexpr g t1 | FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_constant - (FStar_Const.Const_reflect uu____9580); - FStar_Syntax_Syntax.pos = uu____9581; - FStar_Syntax_Syntax.vars = uu____9582;_},uu____9583) + (FStar_Const.Const_reflect uu____9589); + FStar_Syntax_Syntax.pos = uu____9590; + FStar_Syntax_Syntax.vars = uu____9591;_},uu____9592) -> failwith "Unreachable? Tm_app Const_reflect" | FStar_Syntax_Syntax.Tm_app (head1,args) -> let is_total rc = @@ -2756,18 +2757,18 @@ and (term_as_mlexpr' : || (FStar_All.pipe_right rc.FStar_Syntax_Syntax.residual_flags (FStar_List.existsb - (fun uu___366_9652 -> - match uu___366_9652 with + (fun uu___365_9661 -> + match uu___365_9661 with | FStar_Syntax_Syntax.TOTAL -> true - | uu____9655 -> false))) + | uu____9664 -> false))) in - let uu____9657 = - let uu____9662 = - let uu____9663 = FStar_Syntax_Subst.compress head1 in - uu____9663.FStar_Syntax_Syntax.n in - ((head1.FStar_Syntax_Syntax.n), uu____9662) in - (match uu____9657 with - | (FStar_Syntax_Syntax.Tm_uvar uu____9672,uu____9673) -> + let uu____9666 = + let uu____9671 = + let uu____9672 = FStar_Syntax_Subst.compress head1 in + uu____9672.FStar_Syntax_Syntax.n in + ((head1.FStar_Syntax_Syntax.n), uu____9671) in + (match uu____9666 with + | (FStar_Syntax_Syntax.Tm_uvar uu____9681,uu____9682) -> let t1 = FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.Beta; @@ -2778,8 +2779,8 @@ and (term_as_mlexpr' : g.FStar_Extraction_ML_UEnv.env_tcenv t in term_as_mlexpr g t1 - | (uu____9687,FStar_Syntax_Syntax.Tm_abs - (bs,uu____9689,FStar_Pervasives_Native.Some rc)) when + | (uu____9696,FStar_Syntax_Syntax.Tm_abs + (bs,uu____9698,FStar_Pervasives_Native.Some rc)) when is_total rc -> let t1 = FStar_TypeChecker_Normalize.normalize @@ -2791,28 +2792,28 @@ and (term_as_mlexpr' : g.FStar_Extraction_ML_UEnv.env_tcenv t in term_as_mlexpr g t1 - | (uu____9714,FStar_Syntax_Syntax.Tm_constant + | (uu____9723,FStar_Syntax_Syntax.Tm_constant (FStar_Const.Const_reify )) -> let e = - let uu____9716 = FStar_List.hd args in + let uu____9725 = FStar_List.hd args in FStar_TypeChecker_Util.reify_body_with_arg - g.FStar_Extraction_ML_UEnv.env_tcenv head1 uu____9716 + g.FStar_Extraction_ML_UEnv.env_tcenv head1 uu____9725 in let tm = - let uu____9728 = - let uu____9733 = FStar_TypeChecker_Util.remove_reify e + let uu____9737 = + let uu____9742 = FStar_TypeChecker_Util.remove_reify e in - let uu____9734 = FStar_List.tl args in - FStar_Syntax_Syntax.mk_Tm_app uu____9733 uu____9734 in - uu____9728 FStar_Pervasives_Native.None + let uu____9743 = FStar_List.tl args in + FStar_Syntax_Syntax.mk_Tm_app uu____9742 uu____9743 in + uu____9737 FStar_Pervasives_Native.None t.FStar_Syntax_Syntax.pos in term_as_mlexpr g tm - | uu____9745 -> - let rec extract_app is_data uu____9798 uu____9799 restArgs = - match (uu____9798, uu____9799) with + | uu____9754 -> + let rec extract_app is_data uu____9807 uu____9808 restArgs = + match (uu____9807, uu____9808) with | ((mlhead,mlargs_f),(f,t1)) -> - let mk_head uu____9880 = + let mk_head uu____9889 = let mlargs = FStar_All.pipe_right (FStar_List.rev mlargs_f) (FStar_List.map FStar_Pervasives_Native.fst) @@ -2823,82 +2824,82 @@ and (term_as_mlexpr' : (mlhead, mlargs)) in (FStar_Extraction_ML_UEnv.debug g - (fun uu____9907 -> - let uu____9908 = - let uu____9910 = mk_head () in + (fun uu____9916 -> + let uu____9917 = + let uu____9919 = mk_head () in FStar_Extraction_ML_Code.string_of_mlexpr g.FStar_Extraction_ML_UEnv.currentModule - uu____9910 + uu____9919 in - let uu____9911 = + let uu____9920 = FStar_Extraction_ML_Code.string_of_mlty g.FStar_Extraction_ML_UEnv.currentModule t1 in - let uu____9913 = + let uu____9922 = match restArgs with | [] -> "none" - | (hd1,uu____9924)::uu____9925 -> + | (hd1,uu____9933)::uu____9934 -> FStar_Syntax_Print.term_to_string hd1 in FStar_Util.print3 "extract_app ml_head=%s type of head = %s, next arg = %s\n" - uu____9908 uu____9911 uu____9913); + uu____9917 uu____9920 uu____9922); (match (restArgs, t1) with - | ([],uu____9959) -> + | ([],uu____9968) -> let app = - let uu____9975 = mk_head () in + let uu____9984 = mk_head () in maybe_eta_data_and_project_record g is_data t1 - uu____9975 + uu____9984 in (app, f, t1) - | ((arg,uu____9977)::rest,FStar_Extraction_ML_Syntax.MLTY_Fun + | ((arg,uu____9986)::rest,FStar_Extraction_ML_Syntax.MLTY_Fun (formal_t,f',t2)) when (is_type g arg) && (type_leq g formal_t FStar_Extraction_ML_Syntax.ml_unit_ty) -> - let uu____10008 = - let uu____10013 = + let uu____10017 = + let uu____10022 = FStar_Extraction_ML_Util.join arg.FStar_Syntax_Syntax.pos f f' in - (uu____10013, t2) in + (uu____10022, t2) in extract_app is_data (mlhead, ((FStar_Extraction_ML_Syntax.ml_unit, FStar_Extraction_ML_Syntax.E_PURE) :: - mlargs_f)) uu____10008 rest - | ((e0,uu____10025)::rest,FStar_Extraction_ML_Syntax.MLTY_Fun + mlargs_f)) uu____10017 rest + | ((e0,uu____10034)::rest,FStar_Extraction_ML_Syntax.MLTY_Fun (tExpected,f',t2)) -> let r = e0.FStar_Syntax_Syntax.pos in let expected_effect = - let uu____10058 = + let uu____10067 = (FStar_Options.lax ()) && (FStar_TypeChecker_Util.short_circuit_head head1) in - if uu____10058 + if uu____10067 then FStar_Extraction_ML_Syntax.E_IMPURE else FStar_Extraction_ML_Syntax.E_PURE in - let uu____10063 = + let uu____10072 = check_term_as_mlexpr g e0 expected_effect tExpected in - (match uu____10063 with + (match uu____10072 with | (e01,tInferred) -> - let uu____10076 = - let uu____10081 = + let uu____10085 = + let uu____10090 = FStar_Extraction_ML_Util.join_l r [f; f'] in - (uu____10081, t2) in + (uu____10090, t2) in extract_app is_data (mlhead, ((e01, expected_effect) :: - mlargs_f)) uu____10076 rest) - | uu____10092 -> - let uu____10105 = + mlargs_f)) uu____10085 rest) + | uu____10101 -> + let uu____10114 = FStar_Extraction_ML_Util.udelta_unfold g t1 in - (match uu____10105 with + (match uu____10114 with | FStar_Pervasives_Native.Some t2 -> extract_app is_data (mlhead, mlargs_f) (f, t2) restArgs @@ -2941,7 +2942,7 @@ and (term_as_mlexpr' : in extract_app is_data (mlhead1, []) (f, t2) restArgs - | uu____10177 -> + | uu____10186 -> let mlhead1 = let mlargs = FStar_All.pipe_right @@ -2964,95 +2965,95 @@ and (term_as_mlexpr' : err_ill_typed_application g top mlhead1 restArgs t1)))) in - let extract_app_maybe_projector is_data mlhead uu____10248 + let extract_app_maybe_projector is_data mlhead uu____10257 args1 = - match uu____10248 with + match uu____10257 with | (f,t1) -> (match is_data with | FStar_Pervasives_Native.Some - (FStar_Syntax_Syntax.Record_projector uu____10278) + (FStar_Syntax_Syntax.Record_projector uu____10287) -> let rec remove_implicits args2 f1 t2 = match (args2, t2) with | ((a0,FStar_Pervasives_Native.Some - (FStar_Syntax_Syntax.Implicit uu____10362))::args3,FStar_Extraction_ML_Syntax.MLTY_Fun - (uu____10364,f',t3)) -> - let uu____10402 = + (FStar_Syntax_Syntax.Implicit uu____10371))::args3,FStar_Extraction_ML_Syntax.MLTY_Fun + (uu____10373,f',t3)) -> + let uu____10411 = FStar_Extraction_ML_Util.join a0.FStar_Syntax_Syntax.pos f1 f' in - remove_implicits args3 uu____10402 t3 - | uu____10403 -> (args2, f1, t2) in - let uu____10428 = remove_implicits args1 f t1 in - (match uu____10428 with + remove_implicits args3 uu____10411 t3 + | uu____10412 -> (args2, f1, t2) in + let uu____10437 = remove_implicits args1 f t1 in + (match uu____10437 with | (args2,f1,t2) -> extract_app is_data (mlhead, []) (f1, t2) args2) - | uu____10484 -> + | uu____10493 -> extract_app is_data (mlhead, []) (f, t1) args1) in - let extract_app_with_instantiations uu____10508 = + let extract_app_with_instantiations uu____10517 = let head2 = FStar_Syntax_Util.un_uinst head1 in match head2.FStar_Syntax_Syntax.n with - | FStar_Syntax_Syntax.Tm_name uu____10516 -> - let uu____10517 = - let uu____10538 = + | FStar_Syntax_Syntax.Tm_name uu____10525 -> + let uu____10526 = + let uu____10547 = FStar_Extraction_ML_UEnv.lookup_term g head2 in - match uu____10538 with + match uu____10547 with | (FStar_Util.Inr exp_b,q) -> (FStar_Extraction_ML_UEnv.debug g - (fun uu____10577 -> - let uu____10578 = + (fun uu____10586 -> + let uu____10587 = FStar_Syntax_Print.term_to_string head2 in - let uu____10580 = + let uu____10589 = FStar_Extraction_ML_Code.string_of_mlexpr g.FStar_Extraction_ML_UEnv.currentModule exp_b.FStar_Extraction_ML_UEnv.exp_b_expr in - let uu____10582 = + let uu____10591 = FStar_Extraction_ML_Code.string_of_mlty g.FStar_Extraction_ML_UEnv.currentModule (FStar_Pervasives_Native.snd exp_b.FStar_Extraction_ML_UEnv.exp_b_tscheme) in - let uu____10584 = + let uu____10593 = FStar_Util.string_of_bool exp_b.FStar_Extraction_ML_UEnv.exp_b_inst_ok in FStar_Util.print4 "@@@looked up %s: got %s at %s (inst_ok=%s)\n" - uu____10578 uu____10580 uu____10582 - uu____10584); + uu____10587 uu____10589 uu____10591 + uu____10593); (((exp_b.FStar_Extraction_ML_UEnv.exp_b_expr), (exp_b.FStar_Extraction_ML_UEnv.exp_b_tscheme), (exp_b.FStar_Extraction_ML_UEnv.exp_b_inst_ok)), q)) - | uu____10611 -> failwith "FIXME Ty" in - (match uu____10517 with + | uu____10620 -> failwith "FIXME Ty" in + (match uu____10526 with | ((head_ml,(vars,t1),inst_ok),qual) -> let has_typ_apps = match args with - | (a,uu____10687)::uu____10688 -> is_type g a - | uu____10715 -> false in - let uu____10727 = + | (a,uu____10696)::uu____10697 -> is_type g a + | uu____10724 -> false in + let uu____10736 = match vars with - | uu____10756::uu____10757 when + | uu____10765::uu____10766 when (Prims.op_Negation has_typ_apps) && inst_ok -> (head_ml, t1, args) - | uu____10771 -> + | uu____10780 -> let n1 = FStar_List.length vars in if n1 <= (FStar_List.length args) then - let uu____10806 = + let uu____10815 = FStar_Util.first_N n1 args in - (match uu____10806 with + (match uu____10815 with | (prefix1,rest) -> let prefixAsMLTypes = FStar_List.map - (fun uu____10911 -> - match uu____10911 with - | (x,uu____10919) -> + (fun uu____10920 -> + match uu____10920 with + | (x,uu____10928) -> term_as_mlty g x) prefix1 in let t2 = @@ -3060,40 +3061,40 @@ and (term_as_mlexpr' : prefixAsMLTypes in (FStar_Extraction_ML_UEnv.debug g - (fun uu____10931 -> - let uu____10932 = + (fun uu____10940 -> + let uu____10941 = FStar_Syntax_Print.term_to_string head2 in - let uu____10934 = + let uu____10943 = FStar_Syntax_Print.args_to_string prefix1 in - let uu____10936 = - let uu____10938 = + let uu____10945 = + let uu____10947 = FStar_List.map (FStar_Extraction_ML_Code.string_of_mlty g.FStar_Extraction_ML_UEnv.currentModule) prefixAsMLTypes in FStar_All.pipe_right - uu____10938 + uu____10947 (FStar_String.concat ", ") in - let uu____10948 = + let uu____10957 = FStar_Extraction_ML_Code.string_of_mlty g.FStar_Extraction_ML_UEnv.currentModule t2 in FStar_Util.print4 "@@@looked up %s, instantiated with [%s] translated to [%s], got %s\n" - uu____10932 uu____10934 - uu____10936 uu____10948); + uu____10941 uu____10943 + uu____10945 uu____10957); (let mk_tapp e ty_args = match ty_args with | [] -> e - | uu____10966 -> - let uu___372_10969 = e in + | uu____10975 -> + let uu___371_10978 = e in { FStar_Extraction_ML_Syntax.expr = @@ -3101,46 +3102,46 @@ and (term_as_mlexpr' : (e, ty_args)); FStar_Extraction_ML_Syntax.mlty = - (uu___372_10969.FStar_Extraction_ML_Syntax.mlty); + (uu___371_10978.FStar_Extraction_ML_Syntax.mlty); FStar_Extraction_ML_Syntax.loc = - (uu___372_10969.FStar_Extraction_ML_Syntax.loc) + (uu___371_10978.FStar_Extraction_ML_Syntax.loc) } in let head3 = match head_ml.FStar_Extraction_ML_Syntax.expr with | FStar_Extraction_ML_Syntax.MLE_Name - uu____10973 -> - let uu___373_10974 = + uu____10982 -> + let uu___372_10983 = mk_tapp head_ml prefixAsMLTypes in { FStar_Extraction_ML_Syntax.expr = - (uu___373_10974.FStar_Extraction_ML_Syntax.expr); + (uu___372_10983.FStar_Extraction_ML_Syntax.expr); FStar_Extraction_ML_Syntax.mlty = t2; FStar_Extraction_ML_Syntax.loc = - (uu___373_10974.FStar_Extraction_ML_Syntax.loc) + (uu___372_10983.FStar_Extraction_ML_Syntax.loc) } | FStar_Extraction_ML_Syntax.MLE_Var - uu____10975 -> - let uu___373_10977 = + uu____10984 -> + let uu___372_10986 = mk_tapp head_ml prefixAsMLTypes in { FStar_Extraction_ML_Syntax.expr = - (uu___373_10977.FStar_Extraction_ML_Syntax.expr); + (uu___372_10986.FStar_Extraction_ML_Syntax.expr); FStar_Extraction_ML_Syntax.mlty = t2; FStar_Extraction_ML_Syntax.loc = - (uu___373_10977.FStar_Extraction_ML_Syntax.loc) + (uu___372_10986.FStar_Extraction_ML_Syntax.loc) } | FStar_Extraction_ML_Syntax.MLE_App (head3,{ @@ -3150,20 +3151,20 @@ and (term_as_mlexpr' : (FStar_Extraction_ML_Syntax.MLC_Unit ); FStar_Extraction_ML_Syntax.mlty - = uu____10979; + = uu____10988; FStar_Extraction_ML_Syntax.loc - = uu____10980;_}::[]) + = uu____10989;_}::[]) -> FStar_All.pipe_right (FStar_Extraction_ML_Syntax.MLE_App - ((let uu___374_10986 = + ((let uu___373_10995 = mk_tapp head3 prefixAsMLTypes in { FStar_Extraction_ML_Syntax.expr = - (uu___374_10986.FStar_Extraction_ML_Syntax.expr); + (uu___373_10995.FStar_Extraction_ML_Syntax.expr); FStar_Extraction_ML_Syntax.mlty = (FStar_Extraction_ML_Syntax.MLTY_Fun @@ -3172,93 +3173,93 @@ and (term_as_mlexpr' : t2)); FStar_Extraction_ML_Syntax.loc = - (uu___374_10986.FStar_Extraction_ML_Syntax.loc) + (uu___373_10995.FStar_Extraction_ML_Syntax.loc) }), [FStar_Extraction_ML_Syntax.ml_unit])) (FStar_Extraction_ML_Syntax.with_ty t2) - | uu____10987 -> + | uu____10996 -> failwith "Impossible: Unexpected head term" in (head3, t2, rest)))) else err_uninst g head2 (vars, t1) top in - (match uu____10727 with + (match uu____10736 with | (head_ml1,head_t,args1) -> (match args1 with | [] -> - let uu____11053 = + let uu____11062 = maybe_eta_data_and_project_record g qual head_t head_ml1 in - (uu____11053, + (uu____11062, FStar_Extraction_ML_Syntax.E_PURE, head_t) - | uu____11054 -> + | uu____11063 -> extract_app_maybe_projector qual head_ml1 (FStar_Extraction_ML_Syntax.E_PURE, head_t) args1))) - | FStar_Syntax_Syntax.Tm_fvar uu____11063 -> - let uu____11064 = - let uu____11085 = + | FStar_Syntax_Syntax.Tm_fvar uu____11072 -> + let uu____11073 = + let uu____11094 = FStar_Extraction_ML_UEnv.lookup_term g head2 in - match uu____11085 with + match uu____11094 with | (FStar_Util.Inr exp_b,q) -> (FStar_Extraction_ML_UEnv.debug g - (fun uu____11124 -> - let uu____11125 = + (fun uu____11133 -> + let uu____11134 = FStar_Syntax_Print.term_to_string head2 in - let uu____11127 = + let uu____11136 = FStar_Extraction_ML_Code.string_of_mlexpr g.FStar_Extraction_ML_UEnv.currentModule exp_b.FStar_Extraction_ML_UEnv.exp_b_expr in - let uu____11129 = + let uu____11138 = FStar_Extraction_ML_Code.string_of_mlty g.FStar_Extraction_ML_UEnv.currentModule (FStar_Pervasives_Native.snd exp_b.FStar_Extraction_ML_UEnv.exp_b_tscheme) in - let uu____11131 = + let uu____11140 = FStar_Util.string_of_bool exp_b.FStar_Extraction_ML_UEnv.exp_b_inst_ok in FStar_Util.print4 "@@@looked up %s: got %s at %s (inst_ok=%s)\n" - uu____11125 uu____11127 uu____11129 - uu____11131); + uu____11134 uu____11136 uu____11138 + uu____11140); (((exp_b.FStar_Extraction_ML_UEnv.exp_b_expr), (exp_b.FStar_Extraction_ML_UEnv.exp_b_tscheme), (exp_b.FStar_Extraction_ML_UEnv.exp_b_inst_ok)), q)) - | uu____11158 -> failwith "FIXME Ty" in - (match uu____11064 with + | uu____11167 -> failwith "FIXME Ty" in + (match uu____11073 with | ((head_ml,(vars,t1),inst_ok),qual) -> let has_typ_apps = match args with - | (a,uu____11234)::uu____11235 -> is_type g a - | uu____11262 -> false in - let uu____11274 = + | (a,uu____11243)::uu____11244 -> is_type g a + | uu____11271 -> false in + let uu____11283 = match vars with - | uu____11303::uu____11304 when + | uu____11312::uu____11313 when (Prims.op_Negation has_typ_apps) && inst_ok -> (head_ml, t1, args) - | uu____11318 -> + | uu____11327 -> let n1 = FStar_List.length vars in if n1 <= (FStar_List.length args) then - let uu____11353 = + let uu____11362 = FStar_Util.first_N n1 args in - (match uu____11353 with + (match uu____11362 with | (prefix1,rest) -> let prefixAsMLTypes = FStar_List.map - (fun uu____11458 -> - match uu____11458 with - | (x,uu____11466) -> + (fun uu____11467 -> + match uu____11467 with + | (x,uu____11475) -> term_as_mlty g x) prefix1 in let t2 = @@ -3266,40 +3267,40 @@ and (term_as_mlexpr' : prefixAsMLTypes in (FStar_Extraction_ML_UEnv.debug g - (fun uu____11478 -> - let uu____11479 = + (fun uu____11487 -> + let uu____11488 = FStar_Syntax_Print.term_to_string head2 in - let uu____11481 = + let uu____11490 = FStar_Syntax_Print.args_to_string prefix1 in - let uu____11483 = - let uu____11485 = + let uu____11492 = + let uu____11494 = FStar_List.map (FStar_Extraction_ML_Code.string_of_mlty g.FStar_Extraction_ML_UEnv.currentModule) prefixAsMLTypes in FStar_All.pipe_right - uu____11485 + uu____11494 (FStar_String.concat ", ") in - let uu____11495 = + let uu____11504 = FStar_Extraction_ML_Code.string_of_mlty g.FStar_Extraction_ML_UEnv.currentModule t2 in FStar_Util.print4 "@@@looked up %s, instantiated with [%s] translated to [%s], got %s\n" - uu____11479 uu____11481 - uu____11483 uu____11495); + uu____11488 uu____11490 + uu____11492 uu____11504); (let mk_tapp e ty_args = match ty_args with | [] -> e - | uu____11513 -> - let uu___372_11516 = e in + | uu____11522 -> + let uu___371_11525 = e in { FStar_Extraction_ML_Syntax.expr = @@ -3307,46 +3308,46 @@ and (term_as_mlexpr' : (e, ty_args)); FStar_Extraction_ML_Syntax.mlty = - (uu___372_11516.FStar_Extraction_ML_Syntax.mlty); + (uu___371_11525.FStar_Extraction_ML_Syntax.mlty); FStar_Extraction_ML_Syntax.loc = - (uu___372_11516.FStar_Extraction_ML_Syntax.loc) + (uu___371_11525.FStar_Extraction_ML_Syntax.loc) } in let head3 = match head_ml.FStar_Extraction_ML_Syntax.expr with | FStar_Extraction_ML_Syntax.MLE_Name - uu____11520 -> - let uu___373_11521 = + uu____11529 -> + let uu___372_11530 = mk_tapp head_ml prefixAsMLTypes in { FStar_Extraction_ML_Syntax.expr = - (uu___373_11521.FStar_Extraction_ML_Syntax.expr); + (uu___372_11530.FStar_Extraction_ML_Syntax.expr); FStar_Extraction_ML_Syntax.mlty = t2; FStar_Extraction_ML_Syntax.loc = - (uu___373_11521.FStar_Extraction_ML_Syntax.loc) + (uu___372_11530.FStar_Extraction_ML_Syntax.loc) } | FStar_Extraction_ML_Syntax.MLE_Var - uu____11522 -> - let uu___373_11524 = + uu____11531 -> + let uu___372_11533 = mk_tapp head_ml prefixAsMLTypes in { FStar_Extraction_ML_Syntax.expr = - (uu___373_11524.FStar_Extraction_ML_Syntax.expr); + (uu___372_11533.FStar_Extraction_ML_Syntax.expr); FStar_Extraction_ML_Syntax.mlty = t2; FStar_Extraction_ML_Syntax.loc = - (uu___373_11524.FStar_Extraction_ML_Syntax.loc) + (uu___372_11533.FStar_Extraction_ML_Syntax.loc) } | FStar_Extraction_ML_Syntax.MLE_App (head3,{ @@ -3356,20 +3357,20 @@ and (term_as_mlexpr' : (FStar_Extraction_ML_Syntax.MLC_Unit ); FStar_Extraction_ML_Syntax.mlty - = uu____11526; + = uu____11535; FStar_Extraction_ML_Syntax.loc - = uu____11527;_}::[]) + = uu____11536;_}::[]) -> FStar_All.pipe_right (FStar_Extraction_ML_Syntax.MLE_App - ((let uu___374_11533 = + ((let uu___373_11542 = mk_tapp head3 prefixAsMLTypes in { FStar_Extraction_ML_Syntax.expr = - (uu___374_11533.FStar_Extraction_ML_Syntax.expr); + (uu___373_11542.FStar_Extraction_ML_Syntax.expr); FStar_Extraction_ML_Syntax.mlty = (FStar_Extraction_ML_Syntax.MLTY_Fun @@ -3378,63 +3379,63 @@ and (term_as_mlexpr' : t2)); FStar_Extraction_ML_Syntax.loc = - (uu___374_11533.FStar_Extraction_ML_Syntax.loc) + (uu___373_11542.FStar_Extraction_ML_Syntax.loc) }), [FStar_Extraction_ML_Syntax.ml_unit])) (FStar_Extraction_ML_Syntax.with_ty t2) - | uu____11534 -> + | uu____11543 -> failwith "Impossible: Unexpected head term" in (head3, t2, rest)))) else err_uninst g head2 (vars, t1) top in - (match uu____11274 with + (match uu____11283 with | (head_ml1,head_t,args1) -> (match args1 with | [] -> - let uu____11600 = + let uu____11609 = maybe_eta_data_and_project_record g qual head_t head_ml1 in - (uu____11600, + (uu____11609, FStar_Extraction_ML_Syntax.E_PURE, head_t) - | uu____11601 -> + | uu____11610 -> extract_app_maybe_projector qual head_ml1 (FStar_Extraction_ML_Syntax.E_PURE, head_t) args1))) - | uu____11610 -> - let uu____11611 = term_as_mlexpr g head2 in - (match uu____11611 with + | uu____11619 -> + let uu____11620 = term_as_mlexpr g head2 in + (match uu____11620 with | (head3,f,t1) -> extract_app_maybe_projector FStar_Pervasives_Native.None head3 (f, t1) args) in - let uu____11627 = is_type g t in - if uu____11627 + let uu____11636 = is_type g t in + if uu____11636 then (FStar_Extraction_ML_Syntax.ml_unit, FStar_Extraction_ML_Syntax.E_PURE, FStar_Extraction_ML_Syntax.ml_unit_ty) else - (let uu____11638 = - let uu____11639 = FStar_Syntax_Util.un_uinst head1 in - uu____11639.FStar_Syntax_Syntax.n in - match uu____11638 with + (let uu____11647 = + let uu____11648 = FStar_Syntax_Util.un_uinst head1 in + uu____11648.FStar_Syntax_Syntax.n in + match uu____11647 with | FStar_Syntax_Syntax.Tm_fvar fv -> - let uu____11649 = + let uu____11658 = FStar_Extraction_ML_UEnv.try_lookup_fv g fv in - (match uu____11649 with + (match uu____11658 with | FStar_Pervasives_Native.None -> (FStar_Extraction_ML_Syntax.ml_unit, FStar_Extraction_ML_Syntax.E_PURE, FStar_Extraction_ML_Syntax.MLTY_Erased) - | uu____11658 -> extract_app_with_instantiations ()) - | uu____11661 -> extract_app_with_instantiations ())) - | FStar_Syntax_Syntax.Tm_ascribed (e0,(tc,uu____11664),f) -> + | uu____11667 -> extract_app_with_instantiations ()) + | uu____11670 -> extract_app_with_instantiations ())) + | FStar_Syntax_Syntax.Tm_ascribed (e0,(tc,uu____11673),f) -> let t1 = match tc with | FStar_Util.Inl t1 -> term_as_mlty g t1 @@ -3446,39 +3447,39 @@ and (term_as_mlexpr' : | FStar_Pervasives_Native.None -> failwith "Ascription node with an empty effect label" | FStar_Pervasives_Native.Some l -> effect_as_etag g l in - let uu____11732 = check_term_as_mlexpr g e0 f1 t1 in - (match uu____11732 with | (e,t2) -> (e, f1, t2)) + let uu____11741 = check_term_as_mlexpr g e0 f1 t1 in + (match uu____11741 with | (e,t2) -> (e, f1, t2)) | FStar_Syntax_Syntax.Tm_let ((is_rec,lbs),e') -> let top_level = FStar_Syntax_Syntax.is_top_level lbs in - let uu____11767 = + let uu____11776 = if is_rec then FStar_Syntax_Subst.open_let_rec lbs e' else - (let uu____11783 = FStar_Syntax_Syntax.is_top_level lbs in - if uu____11783 + (let uu____11792 = FStar_Syntax_Syntax.is_top_level lbs in + if uu____11792 then (lbs, e') else (let lb = FStar_List.hd lbs in let x = - let uu____11798 = + let uu____11807 = FStar_Util.left lb.FStar_Syntax_Syntax.lbname in - FStar_Syntax_Syntax.freshen_bv uu____11798 in + FStar_Syntax_Syntax.freshen_bv uu____11807 in let lb1 = - let uu___375_11800 = lb in + let uu___374_11809 = lb in { FStar_Syntax_Syntax.lbname = (FStar_Util.Inl x); FStar_Syntax_Syntax.lbunivs = - (uu___375_11800.FStar_Syntax_Syntax.lbunivs); + (uu___374_11809.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = - (uu___375_11800.FStar_Syntax_Syntax.lbtyp); + (uu___374_11809.FStar_Syntax_Syntax.lbtyp); FStar_Syntax_Syntax.lbeff = - (uu___375_11800.FStar_Syntax_Syntax.lbeff); + (uu___374_11809.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = - (uu___375_11800.FStar_Syntax_Syntax.lbdef); + (uu___374_11809.FStar_Syntax_Syntax.lbdef); FStar_Syntax_Syntax.lbattrs = - (uu___375_11800.FStar_Syntax_Syntax.lbattrs); + (uu___374_11809.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___375_11800.FStar_Syntax_Syntax.lbpos) + (uu___374_11809.FStar_Syntax_Syntax.lbpos) } in let e'1 = FStar_Syntax_Subst.subst @@ -3486,7 +3487,7 @@ and (term_as_mlexpr' : in ([lb1], e'1))) in - (match uu____11767 with + (match uu____11776 with | (lbs1,e'1) -> let lbs2 = if top_level @@ -3495,7 +3496,7 @@ and (term_as_mlexpr' : (FStar_List.map (fun lb -> let tcenv = - let uu____11834 = + let uu____11843 = FStar_Ident.lid_of_path (FStar_List.append (FStar_Pervasives_Native.fst @@ -3506,14 +3507,14 @@ and (term_as_mlexpr' : in FStar_TypeChecker_Env.set_current_module g.FStar_Extraction_ML_UEnv.env_tcenv - uu____11834 + uu____11843 in let lbdef = - let uu____11849 = FStar_Options.ml_ish () in - if uu____11849 + let uu____11858 = FStar_Options.ml_ish () in + if uu____11858 then lb.FStar_Syntax_Syntax.lbdef else - (let norm_call uu____11861 = + (let norm_call uu____11870 = FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.AllowUnboundUniverses; FStar_TypeChecker_Env.EraseUniverses; @@ -3527,7 +3528,7 @@ and (term_as_mlexpr' : FStar_TypeChecker_Env.ForExtraction] tcenv lb.FStar_Syntax_Syntax.lbdef in - let uu____11862 = + let uu____11871 = (FStar_All.pipe_left (FStar_TypeChecker_Env.debug tcenv) (FStar_Options.Other "Extraction")) @@ -3536,67 +3537,67 @@ and (term_as_mlexpr' : (FStar_TypeChecker_Env.debug tcenv) (FStar_Options.Other "ExtractNorm")) in - if uu____11862 + if uu____11871 then let a = - let uu____11874 = - let uu____11876 = + let uu____11883 = + let uu____11885 = FStar_Syntax_Print.lbname_to_string lb.FStar_Syntax_Syntax.lbname in FStar_Util.format1 "(Time to normalize top-level let %s)" - uu____11876 + uu____11885 in FStar_Util.measure_execution_time - uu____11874 norm_call + uu____11883 norm_call in - ((let uu____11882 = + ((let uu____11891 = FStar_Syntax_Print.term_to_string a in FStar_Util.print1 "Normalized to %s\n" - uu____11882); + uu____11891); a) else norm_call ()) in - let uu___376_11887 = lb in + let uu___375_11896 = lb in { FStar_Syntax_Syntax.lbname = - (uu___376_11887.FStar_Syntax_Syntax.lbname); + (uu___375_11896.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___376_11887.FStar_Syntax_Syntax.lbunivs); + (uu___375_11896.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = - (uu___376_11887.FStar_Syntax_Syntax.lbtyp); + (uu___375_11896.FStar_Syntax_Syntax.lbtyp); FStar_Syntax_Syntax.lbeff = - (uu___376_11887.FStar_Syntax_Syntax.lbeff); + (uu___375_11896.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = lbdef; FStar_Syntax_Syntax.lbattrs = - (uu___376_11887.FStar_Syntax_Syntax.lbattrs); + (uu___375_11896.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___376_11887.FStar_Syntax_Syntax.lbpos) + (uu___375_11896.FStar_Syntax_Syntax.lbpos) })) else lbs1 in - let check_lb env uu____11940 = - match uu____11940 with + let check_lb env uu____11949 = + match uu____11949 with | (nm,(_lbname,f,(_t,(targs,polytype)),add_unit,e)) -> let env1 = FStar_List.fold_left (fun env1 -> - fun uu____12096 -> - match uu____12096 with - | (a,uu____12104) -> + fun uu____12105 -> + match uu____12105 with + | (a,uu____12113) -> FStar_Extraction_ML_UEnv.extend_ty env1 a FStar_Pervasives_Native.None) env targs in let expected_t = FStar_Pervasives_Native.snd polytype in - let uu____12110 = + let uu____12119 = check_term_as_mlexpr env1 e f expected_t in - (match uu____12110 with + (match uu____12119 with | (e1,ty) -> - let uu____12121 = + let uu____12130 = maybe_promote_effect e1 f expected_t in - (match uu____12121 with + (match uu____12130 with | (e2,f1) -> let meta = match (f1, ty) with @@ -3606,7 +3607,7 @@ and (term_as_mlexpr' : | (FStar_Extraction_ML_Syntax.E_GHOST ,FStar_Extraction_ML_Syntax.MLTY_Erased ) -> [FStar_Extraction_ML_Syntax.Erased] - | uu____12133 -> [] in + | uu____12142 -> [] in (f1, { FStar_Extraction_ML_Syntax.mllb_name = nm; @@ -3622,26 +3623,26 @@ and (term_as_mlexpr' : }))) in let lbs3 = extract_lb_sig g (is_rec, lbs2) in - let uu____12164 = + let uu____12173 = FStar_List.fold_right (fun lb -> - fun uu____12261 -> - match uu____12261 with + fun uu____12270 -> + match uu____12270 with | (env,lbs4) -> - let uu____12395 = lb in - (match uu____12395 with - | (lbname,uu____12446,(t1,(uu____12448,polytype)),add_unit,uu____12451) + let uu____12404 = lb in + (match uu____12404 with + | (lbname,uu____12455,(t1,(uu____12457,polytype)),add_unit,uu____12460) -> - let uu____12466 = + let uu____12475 = FStar_Extraction_ML_UEnv.extend_lb env lbname t1 polytype add_unit true in - (match uu____12466 with - | (env1,nm,uu____12507) -> + (match uu____12475 with + | (env1,nm,uu____12516) -> (env1, ((nm, lb) :: lbs4))))) lbs3 (g, []) in - (match uu____12164 with + (match uu____12173 with | (env_body,lbs4) -> let env_def = if is_rec then env_body else g in let lbs5 = @@ -3649,46 +3650,46 @@ and (term_as_mlexpr' : (FStar_List.map (check_lb env_def)) in let e'_rng = e'1.FStar_Syntax_Syntax.pos in - let uu____12786 = term_as_mlexpr env_body e'1 in - (match uu____12786 with + let uu____12795 = term_as_mlexpr env_body e'1 in + (match uu____12795 with | (e'2,f',t') -> let f = - let uu____12803 = - let uu____12806 = + let uu____12812 = + let uu____12815 = FStar_List.map FStar_Pervasives_Native.fst lbs5 in - f' :: uu____12806 in + f' :: uu____12815 in FStar_Extraction_ML_Util.join_l e'_rng - uu____12803 + uu____12812 in let is_rec1 = if is_rec = true then FStar_Extraction_ML_Syntax.Rec else FStar_Extraction_ML_Syntax.NonRec in - let uu____12819 = - let uu____12820 = - let uu____12821 = - let uu____12822 = + let uu____12828 = + let uu____12829 = + let uu____12830 = + let uu____12831 = FStar_List.map FStar_Pervasives_Native.snd lbs5 in - (is_rec1, uu____12822) in - mk_MLE_Let top_level uu____12821 e'2 in - let uu____12831 = + (is_rec1, uu____12831) in + mk_MLE_Let top_level uu____12830 e'2 in + let uu____12840 = FStar_Extraction_ML_Util.mlloc_of_range t.FStar_Syntax_Syntax.pos in FStar_Extraction_ML_Syntax.with_ty_loc t' - uu____12820 uu____12831 + uu____12829 uu____12840 in - (uu____12819, f, t')))) + (uu____12828, f, t')))) | FStar_Syntax_Syntax.Tm_match (scrutinee,pats) -> - let uu____12870 = term_as_mlexpr g scrutinee in - (match uu____12870 with + let uu____12879 = term_as_mlexpr g scrutinee in + (match uu____12879 with | (e,f_e,t_e) -> - let uu____12886 = check_pats_for_ite pats in - (match uu____12886 with + let uu____12895 = check_pats_for_ite pats in + (match uu____12895 with | (b,then_e,else_e) -> let no_lift x t1 = x in if b @@ -3696,81 +3697,81 @@ and (term_as_mlexpr' : (match (then_e, else_e) with | (FStar_Pervasives_Native.Some then_e1,FStar_Pervasives_Native.Some else_e1) -> - let uu____12951 = term_as_mlexpr g then_e1 in - (match uu____12951 with + let uu____12960 = term_as_mlexpr g then_e1 in + (match uu____12960 with | (then_mle,f_then,t_then) -> - let uu____12967 = term_as_mlexpr g else_e1 + let uu____12976 = term_as_mlexpr g else_e1 in - (match uu____12967 with + (match uu____12976 with | (else_mle,f_else,t_else) -> - let uu____12983 = - let uu____12994 = + let uu____12992 = + let uu____13003 = type_leq g t_then t_else in - if uu____12994 + if uu____13003 then (t_else, no_lift) else - (let uu____13015 = + (let uu____13024 = type_leq g t_else t_then in - if uu____13015 + if uu____13024 then (t_then, no_lift) else (FStar_Extraction_ML_Syntax.MLTY_Top, FStar_Extraction_ML_Syntax.apply_obj_repr)) in - (match uu____12983 with + (match uu____12992 with | (t_branch,maybe_lift1) -> - let uu____13062 = - let uu____13063 = - let uu____13064 = - let uu____13073 = + let uu____13071 = + let uu____13072 = + let uu____13073 = + let uu____13082 = maybe_lift1 then_mle t_then in - let uu____13074 = - let uu____13077 = + let uu____13083 = + let uu____13086 = maybe_lift1 else_mle t_else in FStar_Pervasives_Native.Some - uu____13077 + uu____13086 in - (e, uu____13073, - uu____13074) + (e, uu____13082, + uu____13083) in FStar_Extraction_ML_Syntax.MLE_If - uu____13064 + uu____13073 in FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty - t_branch) uu____13063 + t_branch) uu____13072 in - let uu____13080 = + let uu____13089 = FStar_Extraction_ML_Util.join then_e1.FStar_Syntax_Syntax.pos f_then f_else in - (uu____13062, uu____13080, + (uu____13071, uu____13089, t_branch)))) - | uu____13081 -> + | uu____13090 -> failwith "ITE pats matched but then and else expressions not found?") else - (let uu____13099 = + (let uu____13108 = FStar_All.pipe_right pats (FStar_Util.fold_map (fun compat -> fun br -> - let uu____13198 = + let uu____13207 = FStar_Syntax_Subst.open_branch br in - match uu____13198 with + match uu____13207 with | (pat,when_opt,branch1) -> - let uu____13243 = + let uu____13252 = extract_pat g pat t_e term_as_mlexpr in - (match uu____13243 with + (match uu____13252 with | (env,p,pat_t_compat) -> - let uu____13305 = + let uu____13314 = match when_opt with | FStar_Pervasives_Native.None -> @@ -3781,9 +3782,9 @@ and (term_as_mlexpr' : let w_pos = w.FStar_Syntax_Syntax.pos in - let uu____13328 = + let uu____13337 = term_as_mlexpr env w in - (match uu____13328 with + (match uu____13337 with | (w1,f_w,t_w) -> let w2 = maybe_coerce w_pos @@ -3793,23 +3794,23 @@ and (term_as_mlexpr' : ((FStar_Pervasives_Native.Some w2), f_w)) in - (match uu____13305 with + (match uu____13314 with | (when_opt1,f_when) -> - let uu____13378 = + let uu____13387 = term_as_mlexpr env branch1 in - (match uu____13378 with + (match uu____13387 with | (mlbranch,f_branch,t_branch) -> - let uu____13413 = + let uu____13422 = FStar_All.pipe_right p (FStar_List.map (fun - uu____13490 + uu____13499 -> - match uu____13490 + match uu____13499 with | (p1,wopt) -> @@ -3828,10 +3829,10 @@ and (term_as_mlexpr' : in ((compat && pat_t_compat), - uu____13413))))) + uu____13422))))) true) in - match uu____13099 with + match uu____13108 with | (pat_t_compat,mlbranches) -> let mlbranches1 = FStar_List.flatten mlbranches in @@ -3840,20 +3841,20 @@ and (term_as_mlexpr' : then e else (FStar_Extraction_ML_UEnv.debug g - (fun uu____13661 -> - let uu____13662 = + (fun uu____13670 -> + let uu____13671 = FStar_Extraction_ML_Code.string_of_mlexpr g.FStar_Extraction_ML_UEnv.currentModule e in - let uu____13664 = + let uu____13673 = FStar_Extraction_ML_Code.string_of_mlty g.FStar_Extraction_ML_UEnv.currentModule t_e in FStar_Util.print2 "Coercing scrutinee %s from type %s because pattern type is incompatible\n" - uu____13662 uu____13664); + uu____13671 uu____13673); FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty t_e) (FStar_Extraction_ML_Syntax.MLE_Coerce @@ -3862,32 +3863,32 @@ and (term_as_mlexpr' : in (match mlbranches1 with | [] -> - let uu____13691 = - let uu____13692 = + let uu____13700 = + let uu____13701 = FStar_Syntax_Syntax.lid_as_fv FStar_Parser_Const.failwith_lid FStar_Syntax_Syntax.delta_constant FStar_Pervasives_Native.None in FStar_Extraction_ML_UEnv.lookup_fv g - uu____13692 + uu____13701 in - (match uu____13691 with + (match uu____13700 with | { FStar_Extraction_ML_UEnv.exp_b_name = - uu____13699; + uu____13708; FStar_Extraction_ML_UEnv.exp_b_expr = fw; FStar_Extraction_ML_UEnv.exp_b_tscheme - = uu____13701; + = uu____13710; FStar_Extraction_ML_UEnv.exp_b_inst_ok - = uu____13702;_} + = uu____13711;_} -> - let uu____13705 = - let uu____13706 = - let uu____13707 = - let uu____13714 = - let uu____13717 = + let uu____13714 = + let uu____13715 = + let uu____13716 = + let uu____13723 = + let uu____13726 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty FStar_Extraction_ML_Syntax.ml_string_ty) @@ -3895,29 +3896,29 @@ and (term_as_mlexpr' : (FStar_Extraction_ML_Syntax.MLC_String "unreachable")) in - [uu____13717] in - (fw, uu____13714) in + [uu____13726] in + (fw, uu____13723) in FStar_Extraction_ML_Syntax.MLE_App - uu____13707 + uu____13716 in FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty FStar_Extraction_ML_Syntax.ml_int_ty) - uu____13706 + uu____13715 in - (uu____13705, + (uu____13714, FStar_Extraction_ML_Syntax.E_PURE, FStar_Extraction_ML_Syntax.ml_int_ty)) - | (uu____13721,uu____13722,(uu____13723,f_first,t_first))::rest + | (uu____13730,uu____13731,(uu____13732,f_first,t_first))::rest -> - let uu____13783 = + let uu____13792 = FStar_List.fold_left - (fun uu____13825 -> - fun uu____13826 -> - match (uu____13825, uu____13826) + (fun uu____13834 -> + fun uu____13835 -> + match (uu____13834, uu____13835) with - | ((topt,f),(uu____13883,uu____13884, - (uu____13885,f_branch,t_branch))) + | ((topt,f),(uu____13892,uu____13893, + (uu____13894,f_branch,t_branch))) -> let f1 = FStar_Extraction_ML_Util.join @@ -3931,19 +3932,19 @@ and (term_as_mlexpr' : FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some t1 -> - let uu____13941 = + let uu____13950 = type_leq g t1 t_branch in - if uu____13941 + if uu____13950 then FStar_Pervasives_Native.Some t_branch else - (let uu____13948 = + (let uu____13957 = type_leq g t_branch t1 in - if uu____13948 + if uu____13957 then FStar_Pervasives_Native.Some t1 @@ -3954,15 +3955,15 @@ and (term_as_mlexpr' : ((FStar_Pervasives_Native.Some t_first), f_first) rest in - (match uu____13783 with + (match uu____13792 with | (topt,f_match) -> let mlbranches2 = FStar_All.pipe_right mlbranches1 (FStar_List.map - (fun uu____14046 -> - match uu____14046 with - | (p,(wopt,uu____14075), - (b1,uu____14077,t1)) -> + (fun uu____14055 -> + match uu____14055 with + | (p,(wopt,uu____14084), + (b1,uu____14086,t1)) -> let b2 = match topt with | FStar_Pervasives_Native.None @@ -3970,7 +3971,7 @@ and (term_as_mlexpr' : FStar_Extraction_ML_Syntax.apply_obj_repr b1 t1 | FStar_Pervasives_Native.Some - uu____14096 -> b1 + uu____14105 -> b1 in (p, wopt, b2))) in @@ -3981,14 +3982,14 @@ and (term_as_mlexpr' : | FStar_Pervasives_Native.Some t1 -> t1 in - let uu____14101 = + let uu____14110 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty t_match) (FStar_Extraction_ML_Syntax.MLE_Match (e1, mlbranches2)) in - (uu____14101, f_match, t_match))))))) + (uu____14110, f_match, t_match))))))) let (ind_discriminator_body : FStar_Extraction_ML_UEnv.uenv -> @@ -3998,78 +3999,78 @@ let (ind_discriminator_body : fun env -> fun discName -> fun constrName -> - let uu____14128 = - let uu____14133 = + let uu____14137 = + let uu____14142 = FStar_TypeChecker_Env.lookup_lid env.FStar_Extraction_ML_UEnv.env_tcenv discName in - FStar_All.pipe_left FStar_Pervasives_Native.fst uu____14133 in - match uu____14128 with - | (uu____14158,fstar_disc_type) -> + FStar_All.pipe_left FStar_Pervasives_Native.fst uu____14142 in + match uu____14137 with + | (uu____14167,fstar_disc_type) -> let wildcards = - let uu____14168 = - let uu____14169 = FStar_Syntax_Subst.compress fstar_disc_type + let uu____14177 = + let uu____14178 = FStar_Syntax_Subst.compress fstar_disc_type in - uu____14169.FStar_Syntax_Syntax.n in - match uu____14168 with - | FStar_Syntax_Syntax.Tm_arrow (binders,uu____14180) -> - let uu____14201 = + uu____14178.FStar_Syntax_Syntax.n in + match uu____14177 with + | FStar_Syntax_Syntax.Tm_arrow (binders,uu____14189) -> + let uu____14210 = FStar_All.pipe_right binders (FStar_List.filter - (fun uu___367_14235 -> - match uu___367_14235 with - | (uu____14243,FStar_Pervasives_Native.Some - (FStar_Syntax_Syntax.Implicit uu____14244)) -> + (fun uu___366_14244 -> + match uu___366_14244 with + | (uu____14252,FStar_Pervasives_Native.Some + (FStar_Syntax_Syntax.Implicit uu____14253)) -> true - | uu____14249 -> false)) + | uu____14258 -> false)) in - FStar_All.pipe_right uu____14201 + FStar_All.pipe_right uu____14210 (FStar_List.map - (fun uu____14285 -> - let uu____14292 = fresh "_" in - (uu____14292, FStar_Extraction_ML_Syntax.MLTY_Top))) - | uu____14296 -> failwith "Discriminator must be a function" + (fun uu____14294 -> + let uu____14301 = fresh "_" in + (uu____14301, FStar_Extraction_ML_Syntax.MLTY_Top))) + | uu____14305 -> failwith "Discriminator must be a function" in let mlid = fresh "_discr_" in let targ = FStar_Extraction_ML_Syntax.MLTY_Top in let disc_ty = FStar_Extraction_ML_Syntax.MLTY_Top in let discrBody = - let uu____14311 = - let uu____14312 = - let uu____14324 = - let uu____14325 = - let uu____14326 = - let uu____14341 = + let uu____14320 = + let uu____14321 = + let uu____14333 = + let uu____14334 = + let uu____14335 = + let uu____14350 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty targ) (FStar_Extraction_ML_Syntax.MLE_Name ([], mlid)) in - let uu____14347 = - let uu____14358 = - let uu____14367 = - let uu____14368 = - let uu____14375 = + let uu____14356 = + let uu____14367 = + let uu____14376 = + let uu____14377 = + let uu____14384 = FStar_Extraction_ML_Syntax.mlpath_of_lident constrName in - (uu____14375, + (uu____14384, [FStar_Extraction_ML_Syntax.MLP_Wild]) in - FStar_Extraction_ML_Syntax.MLP_CTor uu____14368 + FStar_Extraction_ML_Syntax.MLP_CTor uu____14377 in - let uu____14378 = + let uu____14387 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty FStar_Extraction_ML_Syntax.ml_bool_ty) (FStar_Extraction_ML_Syntax.MLE_Const (FStar_Extraction_ML_Syntax.MLC_Bool true)) in - (uu____14367, FStar_Pervasives_Native.None, - uu____14378) + (uu____14376, FStar_Pervasives_Native.None, + uu____14387) in - let uu____14382 = - let uu____14393 = - let uu____14402 = + let uu____14391 = + let uu____14402 = + let uu____14411 = FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty FStar_Extraction_ML_Syntax.ml_bool_ty) @@ -4078,31 +4079,31 @@ let (ind_discriminator_body : false)) in (FStar_Extraction_ML_Syntax.MLP_Wild, - FStar_Pervasives_Native.None, uu____14402) + FStar_Pervasives_Native.None, uu____14411) in - [uu____14393] in - uu____14358 :: uu____14382 in - (uu____14341, uu____14347) in - FStar_Extraction_ML_Syntax.MLE_Match uu____14326 in + [uu____14402] in + uu____14367 :: uu____14391 in + (uu____14350, uu____14356) in + FStar_Extraction_ML_Syntax.MLE_Match uu____14335 in FStar_All.pipe_left (FStar_Extraction_ML_Syntax.with_ty - FStar_Extraction_ML_Syntax.ml_bool_ty) uu____14325 + FStar_Extraction_ML_Syntax.ml_bool_ty) uu____14334 in - ((FStar_List.append wildcards [(mlid, targ)]), uu____14324) + ((FStar_List.append wildcards [(mlid, targ)]), uu____14333) in - FStar_Extraction_ML_Syntax.MLE_Fun uu____14312 in + FStar_Extraction_ML_Syntax.MLE_Fun uu____14321 in FStar_All.pipe_left - (FStar_Extraction_ML_Syntax.with_ty disc_ty) uu____14311 + (FStar_Extraction_ML_Syntax.with_ty disc_ty) uu____14320 in - let uu____14463 = - let uu____14464 = - let uu____14467 = - let uu____14468 = + let uu____14472 = + let uu____14473 = + let uu____14476 = + let uu____14477 = FStar_Extraction_ML_UEnv.convIdent discName.FStar_Ident.ident in { - FStar_Extraction_ML_Syntax.mllb_name = uu____14468; + FStar_Extraction_ML_Syntax.mllb_name = uu____14477; FStar_Extraction_ML_Syntax.mllb_tysc = FStar_Pervasives_Native.None; FStar_Extraction_ML_Syntax.mllb_add_unit = false; @@ -4110,7 +4111,7 @@ let (ind_discriminator_body : FStar_Extraction_ML_Syntax.mllb_meta = []; FStar_Extraction_ML_Syntax.print_typ = false } in - [uu____14467] in - (FStar_Extraction_ML_Syntax.NonRec, uu____14464) in - FStar_Extraction_ML_Syntax.MLM_Let uu____14463 + [uu____14476] in + (FStar_Extraction_ML_Syntax.NonRec, uu____14473) in + FStar_Extraction_ML_Syntax.MLM_Let uu____14472 \ No newline at end of file diff --git a/src/ocaml-output/FStar_Extraction_ML_UEnv.ml b/src/ocaml-output/FStar_Extraction_ML_UEnv.ml index 7bf0402975d..c39447f933f 100644 --- a/src/ocaml-output/FStar_Extraction_ML_UEnv.ml +++ b/src/ocaml-output/FStar_Extraction_ML_UEnv.ml @@ -293,8 +293,8 @@ let (lookup_fv_by_lid : uenv -> FStar_Ident.lident -> ty_or_exp_b) = fun lid -> let x = FStar_Util.find_map g.env_bindings - (fun uu___236_900 -> - match uu___236_900 with + (fun uu___235_900 -> + match uu___235_900 with | Fv (fv',x) when FStar_Syntax_Syntax.fv_eq_lid fv' lid -> FStar_Pervasives_Native.Some x | uu____905 -> FStar_Pervasives_Native.None) @@ -315,8 +315,8 @@ let (try_lookup_fv : fun g -> fun fv -> FStar_Util.find_map g.env_bindings - (fun uu___237_928 -> - match uu___237_928 with + (fun uu___236_928 -> + match uu___236_928 with | Fv (fv',t) when FStar_Syntax_Syntax.fv_eq fv fv' -> FStar_Pervasives_Native.Some t | uu____933 -> FStar_Pervasives_Native.None) @@ -347,8 +347,8 @@ let (lookup_bv : uenv -> FStar_Syntax_Syntax.bv -> ty_or_exp_b) = fun bv -> let x = FStar_Util.find_map g.env_bindings - (fun uu___238_973 -> - match uu___238_973 with + (fun uu___237_973 -> + match uu___237_973 with | Bv (bv',r) when FStar_Syntax_Syntax.bv_eq bv bv' -> FStar_Pervasives_Native.Some r | uu____978 -> FStar_Pervasives_Native.None) @@ -416,13 +416,13 @@ let (extend_ty : (a, (FStar_Util.Inl { ty_b_name = ml_a; ty_b_ty = mapped_to1 }))) :: (g.env_bindings) in let tcenv = FStar_TypeChecker_Env.push_bv g.env_tcenv a in - let uu___240_1088 = g in + let uu___239_1088 = g in { env_tcenv = tcenv; env_bindings = gamma; - tydefs = (uu___240_1088.tydefs); - type_names = (uu___240_1088.type_names); - currentModule = (uu___240_1088.currentModule) + tydefs = (uu___239_1088.tydefs); + type_names = (uu___239_1088.type_names); + currentModule = (uu___239_1088.currentModule) } let (sanitize : Prims.string -> Prims.string) = @@ -456,8 +456,8 @@ let (find_uniq : binding Prims.list -> Prims.string -> Prims.string) = let target_mlident = Prims.strcat mlident1 suffix in let has_collision = FStar_List.existsb - (fun uu___239_1227 -> - match uu___239_1227 with + (fun uu___238_1227 -> + match uu___238_1227 with | Bv (uu____1229,FStar_Util.Inl ty_b) -> target_mlident = ty_b.ty_b_name | Fv (uu____1232,exp_b) -> target_mlident = exp_b.exp_b_name @@ -526,13 +526,13 @@ let (extend_bv : let tcenv = let uu____1324 = FStar_Syntax_Syntax.binders_of_list [x] in FStar_TypeChecker_Env.push_binders g.env_tcenv uu____1324 in - ((let uu___241_1327 = g in + ((let uu___240_1327 = g in { env_tcenv = tcenv; env_bindings = gamma; - tydefs = (uu___241_1327.tydefs); - type_names = (uu___241_1327.type_names); - currentModule = (uu___241_1327.currentModule) + tydefs = (uu___240_1327.tydefs); + type_names = (uu___240_1327.type_names); + currentModule = (uu___240_1327.currentModule) }), mlident, exp_binding) let rec (mltyFvars : @@ -626,13 +626,13 @@ let (extend_fv' : exp_b_inst_ok = is_rec } in let gamma = (Fv (x, exp_binding)) :: (g.env_bindings) in - ((let uu___242_1536 = g in + ((let uu___241_1536 = g in { - env_tcenv = (uu___242_1536.env_tcenv); + env_tcenv = (uu___241_1536.env_tcenv); env_bindings = gamma; - tydefs = (uu___242_1536.tydefs); - type_names = (uu___242_1536.type_names); - currentModule = (uu___242_1536.currentModule) + tydefs = (uu___241_1536.tydefs); + type_names = (uu___241_1536.type_names); + currentModule = (uu___241_1536.currentModule) }), mlsymbol, exp_binding) else failwith "freevars found" @@ -706,25 +706,25 @@ let (extend_tydef : tydef_mangled_name = mangled; tydef_def = uu____1720 } in - ((let uu___243_1730 = g in + ((let uu___242_1730 = g in { - env_tcenv = (uu___243_1730.env_tcenv); - env_bindings = (uu___243_1730.env_bindings); + env_tcenv = (uu___242_1730.env_tcenv); + env_bindings = (uu___242_1730.env_bindings); tydefs = (tydef :: (g.tydefs)); type_names = (fv :: (g.type_names)); - currentModule = (uu___243_1730.currentModule) + currentModule = (uu___242_1730.currentModule) }), tydef) let (extend_type_name : uenv -> FStar_Syntax_Syntax.fv -> uenv) = fun g -> fun fv -> - let uu___244_1742 = g in + let uu___243_1742 = g in { - env_tcenv = (uu___244_1742.env_tcenv); - env_bindings = (uu___244_1742.env_bindings); - tydefs = (uu___244_1742.tydefs); + env_tcenv = (uu___243_1742.env_tcenv); + env_bindings = (uu___243_1742.env_bindings); + tydefs = (uu___243_1742.tydefs); type_names = (fv :: (g.type_names)); - currentModule = (uu___244_1742.currentModule) + currentModule = (uu___243_1742.currentModule) } let (is_type_name : uenv -> FStar_Syntax_Syntax.fv -> Prims.bool) = diff --git a/src/ocaml-output/FStar_Extraction_ML_Util.ml b/src/ocaml-output/FStar_Extraction_ML_Util.ml index b85bdad2fe3..c8a6309b92b 100644 --- a/src/ocaml-output/FStar_Extraction_ML_Util.ml +++ b/src/ocaml-output/FStar_Extraction_ML_Util.ml @@ -55,9 +55,9 @@ let (mlconst_of_const : = fun p -> fun c -> - try (fun uu___280_132 -> match () with | () -> mlconst_of_const' c) () + try (fun uu___279_132 -> match () with | () -> mlconst_of_const' c) () with - | uu___279_135 -> + | uu___278_135 -> let uu____136 = let uu____138 = FStar_Range.string_of_range p in let uu____140 = FStar_Syntax_Print.const_to_string c in @@ -214,8 +214,8 @@ let (udelta_unfold : FStar_Extraction_ML_Syntax.mlty FStar_Pervasives_Native.option) = fun g -> - fun uu___272_444 -> - match uu___272_444 with + fun uu___271_444 -> + match uu___271_444 with | FStar_Extraction_ML_Syntax.MLTY_Named (args,n1) -> let uu____453 = FStar_Extraction_ML_UEnv.lookup_ty_const g n1 in (match uu____453 with @@ -257,8 +257,8 @@ let (eff_leq : | uu____498 -> false let (eff_to_string : FStar_Extraction_ML_Syntax.e_tag -> Prims.string) = - fun uu___273_510 -> - match uu___273_510 with + fun uu___272_510 -> + match uu___272_510 with | FStar_Extraction_ML_Syntax.E_PURE -> "Pure" | FStar_Extraction_ML_Syntax.E_GHOST -> "Ghost" | FStar_Extraction_ML_Syntax.E_IMPURE -> "Impure" @@ -520,8 +520,8 @@ let is_type_abstraction : (('a,'b) FStar_Util.either,'c) FStar_Pervasives_Native.tuple2 Prims.list -> Prims.bool = - fun uu___274_1243 -> - match uu___274_1243 with + fun uu___273_1243 -> + match uu___273_1243 with | (FStar_Util.Inl uu____1255,uu____1256)::uu____1257 -> true | uu____1281 -> false @@ -561,8 +561,8 @@ let (resugar_exp : let (record_field_path : FStar_Ident.lident Prims.list -> Prims.string Prims.list) = - fun uu___275_1386 -> - match uu___275_1386 with + fun uu___274_1386 -> + match uu___274_1386 with | f::uu____1393 -> let uu____1396 = FStar_Util.prefix f.FStar_Ident.ns in (match uu____1396 with @@ -908,8 +908,8 @@ let (interpret_plugin_as_term_fun : (FStar_Extraction_ML_Syntax.with_ty FStar_Extraction_ML_Syntax.MLTY_Top) uu____2232 in - let emb_prefix uu___276_2263 = - match uu___276_2263 with + let emb_prefix uu___275_2263 = + match uu___275_2263 with | Syntax_term -> fstar_syn_emb_prefix | Refl_emb -> fstar_refl_emb_prefix | NBE_t -> fstar_tc_nbe_prefix @@ -1063,14 +1063,14 @@ let (interpret_plugin_as_term_fun : in let nbe_cs = FStar_List.map - (fun uu___277_3133 -> - match uu___277_3133 with + (fun uu___276_3133 -> + match uu___276_3133 with | (x,Syntax_term ) -> (x, NBE_t) | (x,Refl_emb ) -> (x, NBERefl_emb) | uu____3208 -> failwith "Impossible") term_cs in - fun uu___278_3234 -> - match uu___278_3234 with + fun uu___277_3234 -> + match uu___277_3234 with | Syntax_term -> term_cs | Refl_emb -> term_cs | uu____3249 -> nbe_cs @@ -1708,7 +1708,7 @@ let (interpret_plugin_as_term_fun : aux loc uu____5569 bs4 in (try - (fun uu___282_5594 -> + (fun uu___281_5594 -> match () with | () -> let uu____5607 = aux Syntax_term [] bs2 diff --git a/src/ocaml-output/FStar_Interactive_Ide.ml b/src/ocaml-output/FStar_Interactive_Ide.ml index dd07d37eea8..02ee35ff6cd 100644 --- a/src/ocaml-output/FStar_Interactive_Ide.ml +++ b/src/ocaml-output/FStar_Interactive_Ide.ml @@ -56,95 +56,95 @@ let (set_check_kind : FStar_TypeChecker_Env.env -> push_kind -> FStar_TypeChecker_Env.env) = fun env -> fun check_kind -> - let uu___494_218 = env in + let uu___493_218 = env in let uu____219 = FStar_Syntax_DsEnv.set_syntax_only env.FStar_TypeChecker_Env.dsenv (check_kind = SyntaxCheck) in { FStar_TypeChecker_Env.solver = - (uu___494_218.FStar_TypeChecker_Env.solver); + (uu___493_218.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___494_218.FStar_TypeChecker_Env.range); + (uu___493_218.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___494_218.FStar_TypeChecker_Env.curmodule); + (uu___493_218.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___494_218.FStar_TypeChecker_Env.gamma); + (uu___493_218.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___494_218.FStar_TypeChecker_Env.gamma_sig); + (uu___493_218.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___494_218.FStar_TypeChecker_Env.gamma_cache); + (uu___493_218.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___494_218.FStar_TypeChecker_Env.modules); + (uu___493_218.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___494_218.FStar_TypeChecker_Env.expected_typ); + (uu___493_218.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___494_218.FStar_TypeChecker_Env.sigtab); + (uu___493_218.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___494_218.FStar_TypeChecker_Env.attrtab); + (uu___493_218.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___494_218.FStar_TypeChecker_Env.is_pattern); + (uu___493_218.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___494_218.FStar_TypeChecker_Env.instantiate_imp); + (uu___493_218.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___494_218.FStar_TypeChecker_Env.effects); + (uu___493_218.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___494_218.FStar_TypeChecker_Env.generalize); + (uu___493_218.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___494_218.FStar_TypeChecker_Env.letrecs); + (uu___493_218.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___494_218.FStar_TypeChecker_Env.top_level); + (uu___493_218.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___494_218.FStar_TypeChecker_Env.check_uvars); + (uu___493_218.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___494_218.FStar_TypeChecker_Env.use_eq); + (uu___493_218.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___494_218.FStar_TypeChecker_Env.is_iface); + (uu___493_218.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___494_218.FStar_TypeChecker_Env.admit); + (uu___493_218.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = (check_kind = LaxCheck); FStar_TypeChecker_Env.lax_universes = - (uu___494_218.FStar_TypeChecker_Env.lax_universes); + (uu___493_218.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___494_218.FStar_TypeChecker_Env.phase1); + (uu___493_218.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___494_218.FStar_TypeChecker_Env.failhard); + (uu___493_218.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___494_218.FStar_TypeChecker_Env.nosynth); + (uu___493_218.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___494_218.FStar_TypeChecker_Env.uvar_subtyping); + (uu___493_218.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___494_218.FStar_TypeChecker_Env.tc_term); + (uu___493_218.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___494_218.FStar_TypeChecker_Env.type_of); + (uu___493_218.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___494_218.FStar_TypeChecker_Env.universe_of); + (uu___493_218.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___494_218.FStar_TypeChecker_Env.check_type_of); + (uu___493_218.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___494_218.FStar_TypeChecker_Env.use_bv_sorts); + (uu___493_218.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___494_218.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___493_218.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___494_218.FStar_TypeChecker_Env.normalized_eff_names); + (uu___493_218.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___494_218.FStar_TypeChecker_Env.fv_delta_depths); + (uu___493_218.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___494_218.FStar_TypeChecker_Env.proof_ns); + (uu___493_218.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___494_218.FStar_TypeChecker_Env.synth_hook); + (uu___493_218.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___494_218.FStar_TypeChecker_Env.splice); + (uu___493_218.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___494_218.FStar_TypeChecker_Env.postprocess); + (uu___493_218.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___494_218.FStar_TypeChecker_Env.is_native_tactic); + (uu___493_218.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___494_218.FStar_TypeChecker_Env.identifier_info); + (uu___493_218.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___494_218.FStar_TypeChecker_Env.tc_hooks); + (uu___493_218.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = uu____219; - FStar_TypeChecker_Env.nbe = (uu___494_218.FStar_TypeChecker_Env.nbe) + FStar_TypeChecker_Env.nbe = (uu___493_218.FStar_TypeChecker_Env.nbe) } let with_captured_errors' : @@ -159,7 +159,7 @@ let with_captured_errors' : fun sigint_handler -> fun f -> try - (fun uu___496_259 -> + (fun uu___495_259 -> match () with | () -> FStar_Util.with_sigint_handler sigint_handler @@ -424,17 +424,17 @@ let (push_repl : let uu____1184 = FStar_ST.op_Bang repl_stack in (depth, (task, st)) :: uu____1184 in FStar_ST.op_Colon_Equals repl_stack uu____1183); - (let uu___497_1245 = st in + (let uu___496_1245 = st in let uu____1246 = set_check_kind env push_kind in { - repl_line = (uu___497_1245.repl_line); - repl_column = (uu___497_1245.repl_column); - repl_fname = (uu___497_1245.repl_fname); - repl_deps_stack = (uu___497_1245.repl_deps_stack); - repl_curmod = (uu___497_1245.repl_curmod); + repl_line = (uu___496_1245.repl_line); + repl_column = (uu___496_1245.repl_column); + repl_fname = (uu___496_1245.repl_fname); + repl_deps_stack = (uu___496_1245.repl_deps_stack); + repl_curmod = (uu___496_1245.repl_curmod); repl_env = uu____1246; - repl_stdin = (uu___497_1245.repl_stdin); - repl_names = (uu___497_1245.repl_names) + repl_stdin = (uu___496_1245.repl_stdin); + repl_names = (uu___496_1245.repl_names) })) let (nothing_left_to_pop : repl_state -> Prims.bool) = @@ -573,15 +573,15 @@ let (commit_name_tracking : fun name_events -> let names1 = commit_name_tracking' st.repl_curmod st.repl_names name_events in - let uu___498_1672 = st in + let uu___497_1672 = st in { - repl_line = (uu___498_1672.repl_line); - repl_column = (uu___498_1672.repl_column); - repl_fname = (uu___498_1672.repl_fname); - repl_deps_stack = (uu___498_1672.repl_deps_stack); - repl_curmod = (uu___498_1672.repl_curmod); - repl_env = (uu___498_1672.repl_env); - repl_stdin = (uu___498_1672.repl_stdin); + repl_line = (uu___497_1672.repl_line); + repl_column = (uu___497_1672.repl_column); + repl_fname = (uu___497_1672.repl_fname); + repl_deps_stack = (uu___497_1672.repl_deps_stack); + repl_curmod = (uu___497_1672.repl_curmod); + repl_env = (uu___497_1672.repl_env); + repl_stdin = (uu___497_1672.repl_stdin); repl_names = names1 } @@ -674,8 +674,8 @@ let (track_name_changes : (uu____2006, uu____2007))))) let (string_of_repl_task : repl_task -> Prims.string) = - fun uu___479_2066 -> - match uu___479_2066 with + fun uu___478_2066 -> + match uu___478_2066 with | LDInterleaved (intf,impl) -> let uu____2070 = string_of_timed_fname intf in let uu____2072 = string_of_timed_fname impl in @@ -817,8 +817,8 @@ let (deps_and_repl_ld_tasks_of_our_file : (real_deps, tasks, dep_graph1)) let (update_task_timestamps : repl_task -> repl_task) = - fun uu___480_2436 -> - match uu___480_2436 with + fun uu___479_2436 -> + match uu___479_2436 with | LDInterleaved (intf,impl) -> let uu____2439 = let uu____2444 = tf_of_fname intf.tf_fname in @@ -875,17 +875,17 @@ let (run_repl_transaction : if success then let st2 = - let uu___499_2629 = st1 in + let uu___498_2629 = st1 in { - repl_line = (uu___499_2629.repl_line); - repl_column = (uu___499_2629.repl_column); - repl_fname = (uu___499_2629.repl_fname); + repl_line = (uu___498_2629.repl_line); + repl_column = (uu___498_2629.repl_column); + repl_fname = (uu___498_2629.repl_fname); repl_deps_stack = - (uu___499_2629.repl_deps_stack); + (uu___498_2629.repl_deps_stack); repl_curmod = curmod; repl_env = env2; - repl_stdin = (uu___499_2629.repl_stdin); - repl_names = (uu___499_2629.repl_names) + repl_stdin = (uu___498_2629.repl_stdin); + repl_names = (uu___498_2629.repl_names) } in commit_name_tracking st2 name_events else pop_repl "run_repl_transaction" st1 in @@ -906,8 +906,8 @@ let (run_repl_ld_transactions : let uu____2679 = string_of_repl_task task in FStar_Util.print2 "%s %s" verb uu____2679 else () in - let rec revert_many st1 uu___481_2704 = - match uu___481_2704 with + let rec revert_many st1 uu___480_2704 = + match uu___480_2704 with | [] -> st1 | (_id,(task,_st'))::entries -> (debug1 "Reverting" task; @@ -915,20 +915,20 @@ let (run_repl_ld_transactions : let dep_graph1 = FStar_TypeChecker_Env.dep_graph st1.repl_env in let st'1 = - let uu___500_2757 = st' in + let uu___499_2757 = st' in let uu____2758 = FStar_TypeChecker_Env.set_dep_graph st'.repl_env dep_graph1 in { - repl_line = (uu___500_2757.repl_line); - repl_column = (uu___500_2757.repl_column); - repl_fname = (uu___500_2757.repl_fname); - repl_deps_stack = (uu___500_2757.repl_deps_stack); - repl_curmod = (uu___500_2757.repl_curmod); + repl_line = (uu___499_2757.repl_line); + repl_column = (uu___499_2757.repl_column); + repl_fname = (uu___499_2757.repl_fname); + repl_deps_stack = (uu___499_2757.repl_deps_stack); + repl_curmod = (uu___499_2757.repl_curmod); repl_env = uu____2758; - repl_stdin = (uu___500_2757.repl_stdin); - repl_names = (uu___500_2757.repl_names) + repl_stdin = (uu___499_2757.repl_stdin); + repl_names = (uu___499_2757.repl_names) } in revert_many st'1 entries)) in @@ -953,17 +953,17 @@ let (run_repl_ld_transactions : if success then let uu____2840 = - let uu___501_2841 = st2 in + let uu___500_2841 = st2 in let uu____2842 = FStar_ST.op_Bang repl_stack in { - repl_line = (uu___501_2841.repl_line); - repl_column = (uu___501_2841.repl_column); - repl_fname = (uu___501_2841.repl_fname); + repl_line = (uu___500_2841.repl_line); + repl_column = (uu___500_2841.repl_column); + repl_fname = (uu___500_2841.repl_fname); repl_deps_stack = uu____2842; - repl_curmod = (uu___501_2841.repl_curmod); - repl_env = (uu___501_2841.repl_env); - repl_stdin = (uu___501_2841.repl_stdin); - repl_names = (uu___501_2841.repl_names) + repl_curmod = (uu___500_2841.repl_curmod); + repl_env = (uu___500_2841.repl_env); + repl_stdin = (uu___500_2841.repl_stdin); + repl_names = (uu___500_2841.repl_names) } in aux uu____2840 tasks2 [] else FStar_Util.Inr st2)) @@ -979,8 +979,8 @@ let (run_repl_ld_transactions : aux st tasks (FStar_List.rev st.repl_deps_stack) let (json_debug : FStar_Util.json -> Prims.string) = - fun uu___482_2918 -> - match uu___482_2918 with + fun uu___481_2918 -> + match uu___481_2918 with | FStar_Util.JsonNull -> "null" | FStar_Util.JsonBool b -> FStar_Util.format1 "bool (%s)" (if b then "true" else "false") @@ -1011,14 +1011,14 @@ let js_fail : 'Auu____3007 . Prims.string -> FStar_Util.json -> 'Auu____3007 fun got -> FStar_Exn.raise (UnexpectedJsonType (expected, got)) let (js_int : FStar_Util.json -> Prims.int) = - fun uu___483_3027 -> - match uu___483_3027 with + fun uu___482_3027 -> + match uu___482_3027 with | FStar_Util.JsonInt i -> i | other -> js_fail "int" other let (js_str : FStar_Util.json -> Prims.string) = - fun uu___484_3040 -> - match uu___484_3040 with + fun uu___483_3040 -> + match uu___483_3040 with | FStar_Util.JsonStr s -> s | other -> js_fail "string" other @@ -1028,8 +1028,8 @@ let js_list : FStar_Util.json -> 'Auu____3054 Prims.list = fun k -> - fun uu___485_3069 -> - match uu___485_3069 with + fun uu___484_3069 -> + match uu___484_3069 with | FStar_Util.JsonList l -> FStar_List.map k l | other -> js_fail "list" other @@ -1037,8 +1037,8 @@ let (js_assoc : FStar_Util.json -> (Prims.string,FStar_Util.json) FStar_Pervasives_Native.tuple2 Prims.list) = - fun uu___486_3091 -> - match uu___486_3091 with + fun uu___485_3091 -> + match uu___485_3091 with | FStar_Util.JsonAssoc a -> a | other -> js_fail "dictionary" other @@ -1262,8 +1262,8 @@ let (__proj__Mkquery__item__qq : query -> query') = let (__proj__Mkquery__item__qid : query -> Prims.string) = fun projectee -> match projectee with | { qq; qid;_} -> qid let (query_needs_current_module : query' -> Prims.bool) = - fun uu___487_3868 -> - match uu___487_3868 with + fun uu___486_3868 -> + match uu___486_3868 with | Exit -> false | DescribeProtocol -> false | DescribeRepl -> false @@ -1382,7 +1382,7 @@ let (unpack_interactive_query : FStar_Util.json -> query) = let uu____4206 = assoc1 "query" "query-id" request in FStar_All.pipe_right uu____4206 js_str in try - (fun uu___503_4216 -> + (fun uu___502_4216 -> match () with | () -> let query = @@ -1544,7 +1544,7 @@ let (unpack_interactive_query : FStar_Util.json -> query) = let (deserialize_interactive_query : FStar_Util.json -> query) = fun js_query -> try - (fun uu___505_4581 -> + (fun uu___504_4581 -> match () with | () -> unpack_interactive_query js_query) () with | InvalidQuery msg -> { qq = (ProtocolViolation msg); qid = "?" } | UnexpectedJsonType (expected,got) -> wrap_js_failure "?" expected got @@ -1720,8 +1720,8 @@ let (uu___is_OptReadOnly : fstar_option_permission_level -> Prims.bool) = let (string_of_option_permission_level : fstar_option_permission_level -> Prims.string) = - fun uu___488_5114 -> - match uu___488_5114 with + fun uu___487_5114 -> + match uu___487_5114 with | OptSet -> "" | OptReset -> "requires #reset-options" | OptReadOnly -> "read-only" @@ -1792,8 +1792,8 @@ let (__proj__Mkfstar_option__item__opt_permission_level : let rec (kind_of_fstar_option_type : FStar_Options.opt_type -> Prims.string) = - fun uu___489_5365 -> - match uu___489_5365 with + fun uu___488_5365 -> + match uu___488_5365 with | FStar_Options.Const uu____5367 -> "flag" | FStar_Options.IntStr uu____5369 -> "int" | FStar_Options.BoolStr -> "bool" @@ -1843,8 +1843,8 @@ let rec (snippets_of_fstar_option : let rec (json_of_fstar_option_value : FStar_Options.option_val -> FStar_Util.json) = - fun uu___490_5543 -> - match uu___490_5543 with + fun uu___489_5543 -> + match uu___489_5543 with | FStar_Options.Bool b -> FStar_Util.JsonBool b | FStar_Options.String s -> FStar_Util.JsonStr s | FStar_Options.Path s -> FStar_Util.JsonStr s @@ -2032,17 +2032,17 @@ let (fstar_options_map_cache : fstar_option FStar_Util.smap) = cache let (update_option : fstar_option -> fstar_option) = fun opt -> - let uu___506_6104 = opt in + let uu___505_6104 = opt in let uu____6105 = FStar_Options.get_option opt.opt_name in { - opt_name = (uu___506_6104.opt_name); - opt_sig = (uu___506_6104.opt_sig); + opt_name = (uu___505_6104.opt_name); + opt_sig = (uu___505_6104.opt_sig); opt_value = uu____6105; - opt_default = (uu___506_6104.opt_default); - opt_type = (uu___506_6104.opt_type); - opt_snippets = (uu___506_6104.opt_snippets); - opt_documentation = (uu___506_6104.opt_documentation); - opt_permission_level = (uu___506_6104.opt_permission_level) + opt_default = (uu___505_6104.opt_default); + opt_type = (uu___505_6104.opt_type); + opt_snippets = (uu___505_6104.opt_snippets); + opt_documentation = (uu___505_6104.opt_documentation); + opt_permission_level = (uu___505_6104.opt_permission_level) } let (current_fstar_options : @@ -2325,18 +2325,18 @@ let (load_deps : | FStar_Pervasives_Native.None -> FStar_Util.Inr st | FStar_Pervasives_Native.Some (deps,tasks,dep_graph1) -> let st1 = - let uu___507_7099 = st in + let uu___506_7099 = st in let uu____7100 = FStar_TypeChecker_Env.set_dep_graph st.repl_env dep_graph1 in { - repl_line = (uu___507_7099.repl_line); - repl_column = (uu___507_7099.repl_column); - repl_fname = (uu___507_7099.repl_fname); - repl_deps_stack = (uu___507_7099.repl_deps_stack); - repl_curmod = (uu___507_7099.repl_curmod); + repl_line = (uu___506_7099.repl_line); + repl_column = (uu___506_7099.repl_column); + repl_fname = (uu___506_7099.repl_fname); + repl_deps_stack = (uu___506_7099.repl_deps_stack); + repl_curmod = (uu___506_7099.repl_curmod); repl_env = uu____7100; - repl_stdin = (uu___507_7099.repl_stdin); - repl_names = (uu___507_7099.repl_names) + repl_stdin = (uu___506_7099.repl_stdin); + repl_names = (uu___506_7099.repl_names) } in let uu____7101 = run_repl_ld_transactions st1 tasks write_repl_ld_task_progress in @@ -2350,16 +2350,16 @@ let (load_deps : let (rephrase_dependency_error : FStar_Errors.issue -> FStar_Errors.issue) = fun issue -> - let uu___508_7156 = issue in + let uu___507_7156 = issue in let uu____7157 = FStar_Util.format1 "Error while computing or loading dependencies:\n%s" issue.FStar_Errors.issue_message in { FStar_Errors.issue_message = uu____7157; - FStar_Errors.issue_level = (uu___508_7156.FStar_Errors.issue_level); - FStar_Errors.issue_range = (uu___508_7156.FStar_Errors.issue_range); - FStar_Errors.issue_number = (uu___508_7156.FStar_Errors.issue_number) + FStar_Errors.issue_level = (uu___507_7156.FStar_Errors.issue_level); + FStar_Errors.issue_range = (uu___507_7156.FStar_Errors.issue_range); + FStar_Errors.issue_number = (uu___507_7156.FStar_Errors.issue_number) } let run_push_without_deps : @@ -2373,104 +2373,104 @@ let run_push_without_deps : fun st -> fun query -> let set_nosynth_flag st1 flag = - let uu___509_7203 = st1 in + let uu___508_7203 = st1 in { - repl_line = (uu___509_7203.repl_line); - repl_column = (uu___509_7203.repl_column); - repl_fname = (uu___509_7203.repl_fname); - repl_deps_stack = (uu___509_7203.repl_deps_stack); - repl_curmod = (uu___509_7203.repl_curmod); + repl_line = (uu___508_7203.repl_line); + repl_column = (uu___508_7203.repl_column); + repl_fname = (uu___508_7203.repl_fname); + repl_deps_stack = (uu___508_7203.repl_deps_stack); + repl_curmod = (uu___508_7203.repl_curmod); repl_env = - (let uu___510_7205 = st1.repl_env in + (let uu___509_7205 = st1.repl_env in { FStar_TypeChecker_Env.solver = - (uu___510_7205.FStar_TypeChecker_Env.solver); + (uu___509_7205.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___510_7205.FStar_TypeChecker_Env.range); + (uu___509_7205.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___510_7205.FStar_TypeChecker_Env.curmodule); + (uu___509_7205.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___510_7205.FStar_TypeChecker_Env.gamma); + (uu___509_7205.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___510_7205.FStar_TypeChecker_Env.gamma_sig); + (uu___509_7205.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___510_7205.FStar_TypeChecker_Env.gamma_cache); + (uu___509_7205.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___510_7205.FStar_TypeChecker_Env.modules); + (uu___509_7205.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___510_7205.FStar_TypeChecker_Env.expected_typ); + (uu___509_7205.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___510_7205.FStar_TypeChecker_Env.sigtab); + (uu___509_7205.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___510_7205.FStar_TypeChecker_Env.attrtab); + (uu___509_7205.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___510_7205.FStar_TypeChecker_Env.is_pattern); + (uu___509_7205.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___510_7205.FStar_TypeChecker_Env.instantiate_imp); + (uu___509_7205.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___510_7205.FStar_TypeChecker_Env.effects); + (uu___509_7205.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___510_7205.FStar_TypeChecker_Env.generalize); + (uu___509_7205.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___510_7205.FStar_TypeChecker_Env.letrecs); + (uu___509_7205.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___510_7205.FStar_TypeChecker_Env.top_level); + (uu___509_7205.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___510_7205.FStar_TypeChecker_Env.check_uvars); + (uu___509_7205.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___510_7205.FStar_TypeChecker_Env.use_eq); + (uu___509_7205.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___510_7205.FStar_TypeChecker_Env.is_iface); + (uu___509_7205.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___510_7205.FStar_TypeChecker_Env.admit); + (uu___509_7205.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___510_7205.FStar_TypeChecker_Env.lax); + (uu___509_7205.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___510_7205.FStar_TypeChecker_Env.lax_universes); + (uu___509_7205.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___510_7205.FStar_TypeChecker_Env.phase1); + (uu___509_7205.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___510_7205.FStar_TypeChecker_Env.failhard); + (uu___509_7205.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = flag; FStar_TypeChecker_Env.uvar_subtyping = - (uu___510_7205.FStar_TypeChecker_Env.uvar_subtyping); + (uu___509_7205.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___510_7205.FStar_TypeChecker_Env.tc_term); + (uu___509_7205.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___510_7205.FStar_TypeChecker_Env.type_of); + (uu___509_7205.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___510_7205.FStar_TypeChecker_Env.universe_of); + (uu___509_7205.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___510_7205.FStar_TypeChecker_Env.check_type_of); + (uu___509_7205.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___510_7205.FStar_TypeChecker_Env.use_bv_sorts); + (uu___509_7205.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___510_7205.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___509_7205.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___510_7205.FStar_TypeChecker_Env.normalized_eff_names); + (uu___509_7205.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___510_7205.FStar_TypeChecker_Env.fv_delta_depths); + (uu___509_7205.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___510_7205.FStar_TypeChecker_Env.proof_ns); + (uu___509_7205.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___510_7205.FStar_TypeChecker_Env.synth_hook); + (uu___509_7205.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___510_7205.FStar_TypeChecker_Env.splice); + (uu___509_7205.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___510_7205.FStar_TypeChecker_Env.postprocess); + (uu___509_7205.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___510_7205.FStar_TypeChecker_Env.is_native_tactic); + (uu___509_7205.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___510_7205.FStar_TypeChecker_Env.identifier_info); + (uu___509_7205.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___510_7205.FStar_TypeChecker_Env.tc_hooks); + (uu___509_7205.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___510_7205.FStar_TypeChecker_Env.dsenv); + (uu___509_7205.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___510_7205.FStar_TypeChecker_Env.nbe) + (uu___509_7205.FStar_TypeChecker_Env.nbe) }); - repl_stdin = (uu___509_7203.repl_stdin); - repl_names = (uu___509_7203.repl_names) + repl_stdin = (uu___508_7203.repl_stdin); + repl_names = (uu___508_7203.repl_names) } in let uu____7206 = query in match uu____7206 with @@ -2503,16 +2503,16 @@ let run_push_without_deps : let st4 = if success then - let uu___511_7273 = st3 in + let uu___510_7273 = st3 in { repl_line = line; repl_column = column; - repl_fname = (uu___511_7273.repl_fname); - repl_deps_stack = (uu___511_7273.repl_deps_stack); - repl_curmod = (uu___511_7273.repl_curmod); - repl_env = (uu___511_7273.repl_env); - repl_stdin = (uu___511_7273.repl_stdin); - repl_names = (uu___511_7273.repl_names) + repl_fname = (uu___510_7273.repl_fname); + repl_deps_stack = (uu___510_7273.repl_deps_stack); + repl_curmod = (uu___510_7273.repl_curmod); + repl_env = (uu___510_7273.repl_env); + repl_stdin = (uu___510_7273.repl_stdin); + repl_names = (uu___510_7273.repl_names) } else st3 in ((status, json_errors), (FStar_Util.Inl st4)))) @@ -2608,15 +2608,15 @@ let run_push_with_deps : (let names1 = add_module_completions st1.repl_fname deps st1.repl_names in run_push_without_deps - (let uu___512_7544 = st1 in + (let uu___511_7544 = st1 in { - repl_line = (uu___512_7544.repl_line); - repl_column = (uu___512_7544.repl_column); - repl_fname = (uu___512_7544.repl_fname); - repl_deps_stack = (uu___512_7544.repl_deps_stack); - repl_curmod = (uu___512_7544.repl_curmod); - repl_env = (uu___512_7544.repl_env); - repl_stdin = (uu___512_7544.repl_stdin); + repl_line = (uu___511_7544.repl_line); + repl_column = (uu___511_7544.repl_column); + repl_fname = (uu___511_7544.repl_fname); + repl_deps_stack = (uu___511_7544.repl_deps_stack); + repl_curmod = (uu___511_7544.repl_curmod); + repl_env = (uu___511_7544.repl_env); + repl_stdin = (uu___511_7544.repl_stdin); repl_names = names1 }) query))) @@ -2684,8 +2684,8 @@ let (run_symbol_lookup : let def_of_lid lid = let uu____7859 = FStar_TypeChecker_Env.lookup_qname tcenv lid in FStar_Util.bind_opt uu____7859 - (fun uu___491_7904 -> - match uu___491_7904 with + (fun uu___490_7904 -> + match uu___490_7904 with | (FStar_Util.Inr (se,uu____7927),uu____7928) -> let uu____7957 = sigelt_to_string se in FStar_Pervasives_Native.Some uu____7957 @@ -2899,8 +2899,8 @@ let code_autocomplete_mod_filter : ('Auu____9236,FStar_Interactive_CompletionTable.mod_symbol) FStar_Pervasives_Native.tuple2 FStar_Pervasives_Native.option = - fun uu___492_9251 -> - match uu___492_9251 with + fun uu___491_9251 -> + match uu___491_9251 with | (uu____9256,FStar_Interactive_CompletionTable.Namespace uu____9257) -> FStar_Pervasives_Native.None | (uu____9262,FStar_Interactive_CompletionTable.Module @@ -2912,7 +2912,7 @@ let code_autocomplete_mod_filter : let uu____9274 = let uu____9279 = let uu____9280 = - let uu___513_9281 = md in + let uu___512_9281 = md in let uu____9282 = let uu____9284 = FStar_Interactive_CompletionTable.mod_name md in @@ -2920,9 +2920,9 @@ let code_autocomplete_mod_filter : { FStar_Interactive_CompletionTable.mod_name = uu____9282; FStar_Interactive_CompletionTable.mod_path = - (uu___513_9281.FStar_Interactive_CompletionTable.mod_path); + (uu___512_9281.FStar_Interactive_CompletionTable.mod_path); FStar_Interactive_CompletionTable.mod_loaded = - (uu___513_9281.FStar_Interactive_CompletionTable.mod_loaded) + (uu___512_9281.FStar_Interactive_CompletionTable.mod_loaded) } in FStar_Interactive_CompletionTable.Module uu____9280 in (pth, uu____9279) in @@ -3084,7 +3084,7 @@ let run_and_rewind : let st1 = push_repl "run_and_rewind" FullCheck Noop st in let results = try - (fun uu___515_9717 -> + (fun uu___514_9717 -> match () with | () -> FStar_Util.with_sigint_handler FStar_Util.sigint_raise @@ -3200,12 +3200,12 @@ let run_with_parsed_and_tc_term : then aux () else (try - (fun uu___517_10155 -> + (fun uu___516_10155 -> match () with | () -> aux ()) () with - | uu___516_10164 -> + | uu___515_10164 -> let uu____10169 = - FStar_Errors.issue_of_exn uu___516_10164 in + FStar_Errors.issue_of_exn uu___515_10164 in (match uu____10169 with | FStar_Pervasives_Native.Some issue -> let uu____10177 = @@ -3214,7 +3214,7 @@ let run_with_parsed_and_tc_term : FStar_Util.JsonStr uu____10178 in (QueryNOK, uu____10177) | FStar_Pervasives_Native.None -> - FStar_Exn.raise uu___516_10164))) + FStar_Exn.raise uu___515_10164))) let run_compute : 'Auu____10193 . @@ -3281,8 +3281,8 @@ let (__proj__Mksearch_term__item__st_negate : search_term -> Prims.bool) = let (__proj__Mksearch_term__item__st_term : search_term -> search_term') = fun projectee -> match projectee with | { st_negate; st_term;_} -> st_term let (st_cost : search_term' -> Prims.int) = - fun uu___493_10366 -> - match uu___493_10366 with + fun uu___492_10366 -> + match uu___492_10366 with | NameContainsStr str -> - (FStar_String.length str) | TypeContainsLid lid -> (Prims.parse_int "1") @@ -3474,7 +3474,7 @@ let run_search : Prims.strcat (if term.st_negate then "-" else "") uu____11074 in let results = try - (fun uu___519_11108 -> + (fun uu___518_11108 -> match () with | () -> let terms = parse1 search_str in @@ -3743,10 +3743,10 @@ let (interactive_mode : Prims.string -> unit) = then interactive_mode' init1 else (try - (fun uu___521_12023 -> + (fun uu___520_12023 -> match () with | () -> interactive_mode' init1) () with - | uu___520_12026 -> + | uu___519_12026 -> (FStar_Errors.set_handler FStar_Errors.default_handler; - FStar_Exn.raise uu___520_12026))) + FStar_Exn.raise uu___519_12026))) \ No newline at end of file diff --git a/src/ocaml-output/FStar_Interactive_Legacy.ml b/src/ocaml-output/FStar_Interactive_Legacy.ml index e0305761c71..9b9a1e1c74f 100644 --- a/src/ocaml-output/FStar_Interactive_Legacy.ml +++ b/src/ocaml-output/FStar_Interactive_Legacy.ml @@ -52,93 +52,93 @@ let (push_with_kind : fun restore_cmd_line_options1 -> fun msg -> let env1 = - let uu___458_296 = env in + let uu___457_296 = env in { FStar_TypeChecker_Env.solver = - (uu___458_296.FStar_TypeChecker_Env.solver); + (uu___457_296.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___458_296.FStar_TypeChecker_Env.range); + (uu___457_296.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___458_296.FStar_TypeChecker_Env.curmodule); + (uu___457_296.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___458_296.FStar_TypeChecker_Env.gamma); + (uu___457_296.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___458_296.FStar_TypeChecker_Env.gamma_sig); + (uu___457_296.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___458_296.FStar_TypeChecker_Env.gamma_cache); + (uu___457_296.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___458_296.FStar_TypeChecker_Env.modules); + (uu___457_296.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___458_296.FStar_TypeChecker_Env.expected_typ); + (uu___457_296.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___458_296.FStar_TypeChecker_Env.sigtab); + (uu___457_296.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___458_296.FStar_TypeChecker_Env.attrtab); + (uu___457_296.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___458_296.FStar_TypeChecker_Env.is_pattern); + (uu___457_296.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___458_296.FStar_TypeChecker_Env.instantiate_imp); + (uu___457_296.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___458_296.FStar_TypeChecker_Env.effects); + (uu___457_296.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___458_296.FStar_TypeChecker_Env.generalize); + (uu___457_296.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___458_296.FStar_TypeChecker_Env.letrecs); + (uu___457_296.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___458_296.FStar_TypeChecker_Env.top_level); + (uu___457_296.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___458_296.FStar_TypeChecker_Env.check_uvars); + (uu___457_296.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___458_296.FStar_TypeChecker_Env.use_eq); + (uu___457_296.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___458_296.FStar_TypeChecker_Env.is_iface); + (uu___457_296.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___458_296.FStar_TypeChecker_Env.admit); + (uu___457_296.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = lax1; FStar_TypeChecker_Env.lax_universes = - (uu___458_296.FStar_TypeChecker_Env.lax_universes); + (uu___457_296.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___458_296.FStar_TypeChecker_Env.phase1); + (uu___457_296.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___458_296.FStar_TypeChecker_Env.failhard); + (uu___457_296.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___458_296.FStar_TypeChecker_Env.nosynth); + (uu___457_296.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___458_296.FStar_TypeChecker_Env.uvar_subtyping); + (uu___457_296.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___458_296.FStar_TypeChecker_Env.tc_term); + (uu___457_296.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___458_296.FStar_TypeChecker_Env.type_of); + (uu___457_296.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___458_296.FStar_TypeChecker_Env.universe_of); + (uu___457_296.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___458_296.FStar_TypeChecker_Env.check_type_of); + (uu___457_296.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___458_296.FStar_TypeChecker_Env.use_bv_sorts); + (uu___457_296.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___458_296.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___457_296.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___458_296.FStar_TypeChecker_Env.normalized_eff_names); + (uu___457_296.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___458_296.FStar_TypeChecker_Env.fv_delta_depths); + (uu___457_296.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___458_296.FStar_TypeChecker_Env.proof_ns); + (uu___457_296.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___458_296.FStar_TypeChecker_Env.synth_hook); + (uu___457_296.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___458_296.FStar_TypeChecker_Env.splice); + (uu___457_296.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___458_296.FStar_TypeChecker_Env.postprocess); + (uu___457_296.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___458_296.FStar_TypeChecker_Env.is_native_tactic); + (uu___457_296.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___458_296.FStar_TypeChecker_Env.identifier_info); + (uu___457_296.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___458_296.FStar_TypeChecker_Env.tc_hooks); + (uu___457_296.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___458_296.FStar_TypeChecker_Env.dsenv); + (uu___457_296.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___458_296.FStar_TypeChecker_Env.nbe) + (uu___457_296.FStar_TypeChecker_Env.nbe) } in let res = FStar_TypeChecker_Tc.push_context env1 msg in FStar_Options.push (); @@ -161,7 +161,7 @@ let (check_frag : fun curmod -> fun frag -> try - (fun uu___460_352 -> + (fun uu___459_352 -> match () with | () -> let uu____364 = diff --git a/src/ocaml-output/FStar_Main.ml b/src/ocaml-output/FStar_Main.ml index 07ae2169dd5..414ed557c5d 100644 --- a/src/ocaml-output/FStar_Main.ml +++ b/src/ocaml-output/FStar_Main.ml @@ -1,5 +1,5 @@ open Prims -let (uu___479 : unit) = FStar_Version.dummy () +let (uu___478 : unit) = FStar_Version.dummy () let (process_args : unit -> (FStar_Getopt.parse_cmdline_res,Prims.string Prims.list) @@ -330,7 +330,7 @@ let (handle_error : Prims.exn -> unit) = let main : 'Auu____850 . unit -> 'Auu____850 = fun uu____855 -> try - (fun uu___481_863 -> + (fun uu___480_863 -> match () with | () -> (setup_hooks (); @@ -350,6 +350,6 @@ let main : 'Auu____850 . unit -> 'Auu____850 = cleanup (); FStar_All.exit (Prims.parse_int "0"))))) () with - | uu___480_895 -> - (handle_error uu___480_895; FStar_All.exit (Prims.parse_int "1")) + | uu___479_895 -> + (handle_error uu___479_895; FStar_All.exit (Prims.parse_int "1")) \ No newline at end of file diff --git a/src/ocaml-output/FStar_Parser_Dep.ml b/src/ocaml-output/FStar_Parser_Dep.ml index ab756fa4d67..68d3d785d71 100644 --- a/src/ocaml-output/FStar_Parser_Dep.ml +++ b/src/ocaml-output/FStar_Parser_Dep.ml @@ -80,8 +80,8 @@ let list_of_option : 'Auu____261 . 'Auu____261 FStar_Pervasives_Native.option -> 'Auu____261 Prims.list = - fun uu___116_270 -> - match uu___116_270 with + fun uu___115_270 -> + match uu___115_270 with | FStar_Pervasives_Native.Some x -> [x] | FStar_Pervasives_Native.None -> [] @@ -161,8 +161,8 @@ let (uu___is_FriendImplementation : dependence -> Prims.bool) = let (__proj__FriendImplementation__item___0 : dependence -> module_name) = fun projectee -> match projectee with | FriendImplementation _0 -> _0 let (dep_to_string : dependence -> Prims.string) = - fun uu___117_505 -> - match uu___117_505 with + fun uu___116_505 -> + match uu___116_505 with | UseInterface f -> Prims.strcat "UseInterface " f | PreferInterface f -> Prims.strcat "PreferInterface " f | UseImplementation f -> Prims.strcat "UseImplementation " f @@ -266,8 +266,8 @@ let (empty_deps : deps) = let uu____884 = FStar_Util.smap_create (Prims.parse_int "0") in mk_deps uu____883 uu____884 [] [] [] let (module_name_of_dep : dependence -> module_name) = - fun uu___118_905 -> - match uu___118_905 with + fun uu___117_905 -> + match uu___117_905 with | UseInterface m -> m | PreferInterface m -> m | UseImplementation m -> m @@ -859,8 +859,8 @@ let (collect_one : let auto_open = hard_coded_dependencies filename in FStar_List.iter record_open_module_or_namespace auto_open; (let num_of_toplevelmods = FStar_Util.mk_ref (Prims.parse_int "0") in - let rec collect_module uu___119_3413 = - match uu___119_3413 with + let rec collect_module uu___118_3413 = + match uu___118_3413 with | FStar_Parser_AST.Module (lid,decls) -> (check_module_declaration_against_filename lid filename; if @@ -973,8 +973,8 @@ let (collect_one : FStar_Errors.raise_error uu____3745 uu____3758 else ())) - and collect_tycon uu___120_3761 = - match uu___120_3761 with + and collect_tycon uu___119_3761 = + match uu___119_3761 with | FStar_Parser_AST.TyconAbstract (uu____3762,binders,k) -> (collect_binders binders; FStar_Util.iter_opt k collect_term) | FStar_Parser_AST.TyconAbbrev (uu____3774,binders,k,t) -> @@ -997,8 +997,8 @@ let (collect_one : | (uu____3926,t,uu____3928,uu____3929) -> FStar_Util.iter_opt t collect_term) identterms) - and collect_effect_decl uu___121_3940 = - match uu___121_3940 with + and collect_effect_decl uu___120_3940 = + match uu___120_3940 with | FStar_Parser_AST.DefineEffect (uu____3941,binders,t,decls) -> (collect_binders binders; collect_term t; collect_decls decls) | FStar_Parser_AST.RedefineEffect (uu____3955,binders,t) -> @@ -1024,16 +1024,16 @@ let (collect_one : FStar_Parser_AST.aqual = uu____3985;_} -> collect_term t | uu____3988 -> ()) - and collect_aqual uu___122_3989 = - match uu___122_3989 with + and collect_aqual uu___121_3989 = + match uu___121_3989 with | FStar_Pervasives_Native.Some (FStar_Parser_AST.Meta t) -> collect_term t | uu____3993 -> () and collect_term t = collect_term' t.FStar_Parser_AST.tm - and collect_constant uu___123_3997 = - match uu___123_3997 with + and collect_constant uu___122_3997 = + match uu___122_3997 with | FStar_Const.Const_int (uu____3998,FStar_Pervasives_Native.Some (signedness,width)) -> let u = @@ -1056,8 +1056,8 @@ let (collect_one : add_dep deps (dep_edge "fstar.float") | uu____4133 -> () - and collect_term' uu___125_4134 = - match uu___125_4134 with + and collect_term' uu___124_4134 = + match uu___124_4134 with | FStar_Parser_AST.Wild -> () | FStar_Parser_AST.Const c -> collect_constant c | FStar_Parser_AST.Op (s,ts) -> @@ -1135,8 +1135,8 @@ let (collect_one : (collect_binders binders; collect_term t) | FStar_Parser_AST.Sum (binders,t) -> (FStar_List.iter - (fun uu___124_4434 -> - match uu___124_4434 with + (fun uu___123_4434 -> + match uu___123_4434 with | FStar_Util.Inl b -> collect_binder b | FStar_Util.Inr t1 -> collect_term t1) binders; collect_term t) @@ -1166,8 +1166,8 @@ let (collect_one : and collect_pattern p = collect_pattern' p.FStar_Parser_AST.pat - and collect_pattern' uu___126_4519 = - match uu___126_4519 with + and collect_pattern' uu___125_4519 = + match uu___125_4519 with | FStar_Parser_AST.PatVar (uu____4520,aqual) -> collect_aqual aqual | FStar_Parser_AST.PatTvar (uu____4526,aqual) -> collect_aqual aqual | FStar_Parser_AST.PatWild aqual -> collect_aqual aqual @@ -1226,6 +1226,131 @@ let (set_collect_one_cache : (dependence Prims.list,dependence Prims.list,Prims.bool) FStar_Pervasives_Native.tuple3 FStar_Util.smap -> unit) = fun cache -> FStar_ST.op_Colon_Equals collect_one_cache cache +let (dep_graph_copy : dependence_graph -> dependence_graph) = + fun dep_graph -> + let uu____5017 = dep_graph in + match uu____5017 with + | Deps g -> let uu____5025 = FStar_Util.smap_copy g in Deps uu____5025 + +let (topological_dependences_of : + files_for_module_name -> + dependence_graph -> + module_name Prims.list -> + file_name Prims.list -> + Prims.bool -> + (file_name Prims.list,Prims.bool) FStar_Pervasives_Native.tuple2) + = + fun file_system_map -> + fun dep_graph -> + fun interfaces_needing_inlining -> + fun root_files -> + fun for_extraction -> + let rec all_friend_deps_1 dep_graph1 cycle uu____5174 filename = + match uu____5174 with + | (all_friends,all_files) -> + let uu____5210 = + let uu____5215 = deps_try_find dep_graph1 filename in + FStar_Util.must uu____5215 in + (match uu____5210 with + | (direct_deps,color) -> + (match color with + | Gray -> + failwith + "Impossible: cycle detected after cycle detection has passed" + | Black -> (all_friends, all_files) + | White -> + (deps_add_dep dep_graph1 filename + (direct_deps, Gray); + (let uu____5262 = + let uu____5272 = + dependences_of file_system_map dep_graph1 + root_files filename + in + all_friend_deps dep_graph1 cycle + (all_friends, all_files) uu____5272 + in + match uu____5262 with + | (all_friends1,all_files1) -> + (deps_add_dep dep_graph1 filename + (direct_deps, Black); + (let uu____5303 = + let uu____5306 = + FStar_List.filter + (fun uu___126_5311 -> + match uu___126_5311 with + | FriendImplementation + uu____5313 -> true + | uu____5316 -> false) + direct_deps + in + FStar_List.append uu____5306 + all_friends1 + in + (uu____5303, (filename :: all_files1)))))))) + + and all_friend_deps dep_graph1 cycle all_friends filenames = + FStar_List.fold_left + (fun all_friends1 -> + fun k -> + all_friend_deps_1 dep_graph1 (k :: cycle) all_friends1 k) + all_friends filenames + in + let uu____5368 = + let uu____5378 = dep_graph_copy dep_graph in + all_friend_deps uu____5378 [] ([], []) root_files in + match uu____5368 with + | (friends,uu____5395) -> + let widened = FStar_Util.mk_ref false in + let widen_deps friends1 deps = + FStar_All.pipe_right deps + (FStar_List.map + (fun d -> + match d with + | PreferInterface f when + (FStar_Options.cmi ()) && for_extraction -> + let uu____5444 = + (has_implementation file_system_map f) && + (FStar_List.contains f + interfaces_needing_inlining) + in + if uu____5444 + then + (FStar_ST.op_Colon_Equals widened true; + UseImplementation f) + else PreferInterface f + | PreferInterface f when + FStar_List.contains (FriendImplementation f) + friends1 + -> FriendImplementation f + | uu____5497 -> d)) + in + let uu____5498 = + let uu____5508 = dep_graph in + match uu____5508 with + | Deps dg -> + let uu____5525 = deps_empty () in + (match uu____5525 with + | Deps dg' -> + (FStar_Util.smap_fold dg + (fun filename -> + fun uu____5554 -> + fun uu____5555 -> + match uu____5554 with + | (dependences,color) -> + let uu____5563 = + let uu____5568 = + widen_deps friends dependences + in + (uu____5568, color) in + FStar_Util.smap_add dg' filename + uu____5563) (); + all_friend_deps (Deps dg') [] ([], []) root_files)) + in + (match uu____5498 with + | (uu____5588,all_files) -> + let uu____5600 = FStar_ST.op_Bang widened in + (all_files, uu____5600)) + let (collect : Prims.string Prims.list -> (Prims.string Prims.list,deps) FStar_Pervasives_Native.tuple2) @@ -1235,15 +1360,15 @@ let (collect : FStar_All.pipe_right all_cmd_line_files (FStar_List.map (fun fn -> - let uu____5054 = FStar_Options.find_file fn in - match uu____5054 with + let uu____5692 = FStar_Options.find_file fn in + match uu____5692 with | FStar_Pervasives_Native.None -> - let uu____5060 = - let uu____5066 = + let uu____5698 = + let uu____5704 = FStar_Util.format1 "File %s could not be found\n" fn in - (FStar_Errors.Fatal_ModuleOrFileNotFound, uu____5066) in - FStar_Errors.raise_err uu____5060 + (FStar_Errors.Fatal_ModuleOrFileNotFound, uu____5704) in + FStar_Errors.raise_err uu____5698 | FStar_Pervasives_Native.Some fn1 -> fn1)) in let dep_graph = deps_empty () in @@ -1251,86 +1376,80 @@ let (collect : let interfaces_needing_inlining = FStar_Util.mk_ref [] in let add_interface_for_inlining l = let l1 = lowercase_module_name l in - let uu____5096 = - let uu____5100 = FStar_ST.op_Bang interfaces_needing_inlining in l1 - :: uu____5100 + let uu____5734 = + let uu____5738 = FStar_ST.op_Bang interfaces_needing_inlining in l1 + :: uu____5738 in - FStar_ST.op_Colon_Equals interfaces_needing_inlining uu____5096 in + FStar_ST.op_Colon_Equals interfaces_needing_inlining uu____5734 in let rec discover_one file_name = - let uu____5207 = - let uu____5209 = deps_try_find dep_graph file_name in - uu____5209 = FStar_Pervasives_Native.None in - if uu____5207 + let uu____5845 = + let uu____5847 = deps_try_find dep_graph file_name in + uu____5847 = FStar_Pervasives_Native.None in + if uu____5845 then - let uu____5227 = - let uu____5239 = - let uu____5253 = FStar_ST.op_Bang collect_one_cache in - FStar_Util.smap_try_find uu____5253 file_name in - match uu____5239 with + let uu____5865 = + let uu____5877 = + let uu____5891 = FStar_ST.op_Bang collect_one_cache in + FStar_Util.smap_try_find uu____5891 file_name in + match uu____5877 with | FStar_Pervasives_Native.Some cached -> cached | FStar_Pervasives_Native.None -> collect_one file_system_map file_name in - match uu____5227 with + match uu____5865 with | (deps,mo_roots,needs_interface_inlining) -> (if needs_interface_inlining then add_interface_for_inlining file_name else (); (let deps1 = let module_name = lowercase_module_name file_name in - let uu____5390 = + let uu____6028 = (is_implementation file_name) && (has_interface file_system_map module_name) in - if uu____5390 + if uu____6028 then FStar_List.append deps [UseInterface module_name] else deps in - (let uu____5398 = - let uu____5403 = FStar_List.unique deps1 in - (uu____5403, White) in - deps_add_dep dep_graph file_name uu____5398); - (let uu____5404 = + (let uu____6036 = + let uu____6041 = FStar_List.unique deps1 in + (uu____6041, White) in + deps_add_dep dep_graph file_name uu____6036); + (let uu____6042 = FStar_List.map (file_of_dep file_system_map all_cmd_line_files1) (FStar_List.append deps1 mo_roots) in - FStar_List.iter discover_one uu____5404))) + FStar_List.iter discover_one uu____6042))) else () in FStar_List.iter discover_one all_cmd_line_files1; - (let dep_graph_copy dep_graph1 = - let uu____5420 = dep_graph1 in - match uu____5420 with - | Deps g -> - let uu____5428 = FStar_Util.smap_copy g in Deps uu____5428 - in - let cycle_detected dep_graph1 cycle filename = + (let cycle_detected dep_graph1 cycle filename = FStar_Util.print1 "The cycle contains a subset of the modules in:\n%s \n" (FStar_String.concat "\n`used by` " cycle); print_graph dep_graph1; FStar_Util.print_string "\n"; - (let uu____5469 = - let uu____5475 = + (let uu____6082 = + let uu____6088 = FStar_Util.format1 "Recursive dependency on module %s\n" filename in - (FStar_Errors.Fatal_CyclicDependence, uu____5475) in - FStar_Errors.raise_err uu____5469) + (FStar_Errors.Fatal_CyclicDependence, uu____6088) in + FStar_Errors.raise_err uu____6082) in let full_cycle_detection all_command_line_files = let dep_graph1 = dep_graph_copy dep_graph in let rec aux cycle filename = - let uu____5511 = - let uu____5518 = deps_try_find dep_graph1 filename in - match uu____5518 with + let uu____6124 = + let uu____6131 = deps_try_find dep_graph1 filename in + match uu____6131 with | FStar_Pervasives_Native.Some (d,c) -> (d, c) | FStar_Pervasives_Native.None -> - let uu____5543 = + let uu____6156 = FStar_Util.format1 "Failed to find dependences of %s" filename in - failwith uu____5543 + failwith uu____6156 in - match uu____5511 with + match uu____6124 with | (direct_deps,color) -> let direct_deps1 = FStar_All.pipe_right direct_deps @@ -1338,33 +1457,33 @@ let (collect : (fun x -> match x with | UseInterface f -> - let uu____5569 = + let uu____6182 = implementation_of file_system_map f in - (match uu____5569 with + (match uu____6182 with | FStar_Pervasives_Native.None -> [x] | FStar_Pervasives_Native.Some fn when fn = filename -> [x] - | uu____5580 -> [x; UseImplementation f]) + | uu____6193 -> [x; UseImplementation f]) | PreferInterface f -> - let uu____5586 = + let uu____6199 = implementation_of file_system_map f in - (match uu____5586 with + (match uu____6199 with | FStar_Pervasives_Native.None -> [x] | FStar_Pervasives_Native.Some fn when fn = filename -> [x] - | uu____5597 -> [x; UseImplementation f]) - | uu____5601 -> [x])) + | uu____6210 -> [x; UseImplementation f]) + | uu____6214 -> [x])) in (match color with | Gray -> cycle_detected dep_graph1 cycle filename | Black -> () | White -> (deps_add_dep dep_graph1 filename (direct_deps1, Gray); - (let uu____5604 = + (let uu____6217 = dependences_of file_system_map dep_graph1 all_command_line_files filename in - FStar_List.iter (fun k -> aux (k :: cycle) k) uu____5604); + FStar_List.iter (fun k -> aux (k :: cycle) k) uu____6217); deps_add_dep dep_graph1 filename (direct_deps1, Black))) in FStar_List.iter (aux []) all_command_line_files in @@ -1374,116 +1493,19 @@ let (collect : (fun f -> let m = lowercase_module_name f in FStar_Options.add_verify_module m)); - (let topological_dependences_of all_command_line_files = - let rec all_friend_deps_1 dep_graph1 cycle uu____5724 filename = - match uu____5724 with - | (all_friends,all_files) -> - let uu____5760 = - let uu____5765 = deps_try_find dep_graph1 filename in - FStar_Util.must uu____5765 in - (match uu____5760 with - | (direct_deps,color) -> - (match color with - | Gray -> - (cycle_detected dep_graph1 cycle filename; - (all_friends, all_files)) - | Black -> (all_friends, all_files) - | White -> - (deps_add_dep dep_graph1 filename (direct_deps, Gray); - (let uu____5808 = - let uu____5818 = - dependences_of file_system_map dep_graph1 - all_command_line_files filename - in - all_friend_deps dep_graph1 cycle - (all_friends, all_files) uu____5818 - in - match uu____5808 with - | (all_friends1,all_files1) -> - (deps_add_dep dep_graph1 filename - (direct_deps, Black); - (let uu____5849 = - let uu____5852 = - FStar_List.filter - (fun uu___127_5857 -> - match uu___127_5857 with - | FriendImplementation uu____5859 -> - true - | uu____5862 -> false) direct_deps - in - FStar_List.append uu____5852 all_friends1 - in - (uu____5849, (filename :: all_files1)))))))) - - and all_friend_deps dep_graph1 cycle all_friends filenames = - FStar_List.fold_left - (fun all_friends1 -> - fun k -> - all_friend_deps_1 dep_graph1 (k :: cycle) all_friends1 k) - all_friends filenames - in - let uu____5914 = - let uu____5924 = dep_graph_copy dep_graph in - all_friend_deps uu____5924 [] ([], []) all_command_line_files in - match uu____5914 with - | (friends,uu____5936) -> - let widen_deps friends1 deps = - FStar_All.pipe_right deps - (FStar_List.map - (fun d -> - match d with - | PreferInterface f when - (FStar_Options.cmi ()) && - (let uu____5979 = FStar_Options.codegen () in - uu____5979 <> FStar_Pervasives_Native.None) - -> - let uu____5984 = - (has_implementation file_system_map f) && - (let uu____5987 = - FStar_ST.op_Bang interfaces_needing_inlining - in - FStar_List.contains f uu____5987) - in - if uu____5984 - then UseImplementation f - else PreferInterface f - | PreferInterface f when - FStar_List.contains (FriendImplementation f) - friends1 - -> FriendImplementation f - | uu____6044 -> d)) - in - let uu____6045 = - let uu____6055 = dep_graph in - match uu____6055 with - | Deps dg -> - let uu____6072 = deps_empty () in - (match uu____6072 with - | Deps dg' -> - (FStar_Util.smap_fold dg - (fun filename -> - fun uu____6101 -> - fun uu____6102 -> - match uu____6101 with - | (dependences,color) -> - let uu____6110 = - let uu____6115 = - widen_deps friends dependences in - (uu____6115, color) in - FStar_Util.smap_add dg' filename - uu____6110) (); - all_friend_deps (Deps dg') [] ([], []) - all_command_line_files)) - in - (match uu____6045 with | (uu____6130,all_files) -> all_files) + (let inlining_ifaces = FStar_ST.op_Bang interfaces_needing_inlining in + let uu____6291 = + let uu____6300 = + let uu____6302 = FStar_Options.codegen () in + uu____6302 <> FStar_Pervasives_Native.None in + topological_dependences_of file_system_map dep_graph inlining_ifaces + all_cmd_line_files1 uu____6300 in - let all_files = topological_dependences_of all_cmd_line_files1 in - let uu____6146 = - let uu____6147 = FStar_ST.op_Bang interfaces_needing_inlining in - mk_deps dep_graph file_system_map all_cmd_line_files1 all_files - uu____6147 - in - (all_files, uu____6146))) + match uu____6291 with + | (all_files,uu____6315) -> + (all_files, + (mk_deps dep_graph file_system_map all_cmd_line_files1 all_files + inlining_ifaces)))) let (deps_of : deps -> Prims.string -> Prims.string Prims.list) = fun deps -> @@ -1503,58 +1525,58 @@ let (hash_dependences : let all_cmd_line_files = deps.cmd_line_files in let deps1 = deps.dep_graph in let fn1 = - let uu____6251 = FStar_Options.find_file fn in - match uu____6251 with + let uu____6377 = FStar_Options.find_file fn in + match uu____6377 with | FStar_Pervasives_Native.Some fn1 -> fn1 - | uu____6259 -> fn in + | uu____6385 -> fn in let cache_file = cache_file_name fn1 in let digest_of_file1 fn2 = - (let uu____6275 = FStar_Options.debug_any () in - if uu____6275 + (let uu____6401 = FStar_Options.debug_any () in + if uu____6401 then FStar_Util.print2 "%s: contains digest of %s\n" cache_file fn2 else ()); FStar_Util.digest_of_file fn2 in let module_name = lowercase_module_name fn1 in let source_hash = digest_of_file1 fn1 in let interface_hash = - let uu____6294 = + let uu____6420 = (is_implementation fn1) && (has_interface file_system_map module_name) in - if uu____6294 + if uu____6420 then - let uu____6305 = - let uu____6312 = - let uu____6314 = - let uu____6316 = interface_of file_system_map module_name in - FStar_Option.get uu____6316 in - digest_of_file1 uu____6314 in - ("interface", uu____6312) in - [uu____6305] + let uu____6431 = + let uu____6438 = + let uu____6440 = + let uu____6442 = interface_of file_system_map module_name in + FStar_Option.get uu____6442 in + digest_of_file1 uu____6440 in + ("interface", uu____6438) in + [uu____6431] else [] in let binary_deps = - let uu____6348 = + let uu____6474 = dependences_of file_system_map deps1 all_cmd_line_files fn1 in - FStar_All.pipe_right uu____6348 + FStar_All.pipe_right uu____6474 (FStar_List.filter (fun fn2 -> - let uu____6363 = + let uu____6489 = (is_interface fn2) && - (let uu____6366 = lowercase_module_name fn2 in - uu____6366 = module_name) + (let uu____6492 = lowercase_module_name fn2 in + uu____6492 = module_name) in - Prims.op_Negation uu____6363)) + Prims.op_Negation uu____6489)) in let binary_deps1 = FStar_List.sortWith (fun fn11 -> fun fn2 -> - let uu____6382 = lowercase_module_name fn11 in - let uu____6384 = lowercase_module_name fn2 in - FStar_String.compare uu____6382 uu____6384) binary_deps + let uu____6508 = lowercase_module_name fn11 in + let uu____6510 = lowercase_module_name fn2 in + FStar_String.compare uu____6508 uu____6510) binary_deps in - let rec hash_deps out uu___128_6417 = - match uu___128_6417 with + let rec hash_deps out uu___127_6543 = + match uu___127_6543 with | [] -> FStar_Pervasives_Native.Some (FStar_List.append (("source", source_hash) :: interface_hash) @@ -1564,36 +1586,36 @@ let (hash_dependences : let fn3 = cache_file_name fn2 in if FStar_Util.file_exists fn3 then - let uu____6480 = digest_of_file1 fn3 in - FStar_Pervasives_Native.Some uu____6480 + let uu____6606 = digest_of_file1 fn3 in + FStar_Pervasives_Native.Some uu____6606 else - (let uu____6485 = - let uu____6489 = FStar_Util.basename fn3 in - FStar_Options.find_file uu____6489 in - match uu____6485 with + (let uu____6611 = + let uu____6615 = FStar_Util.basename fn3 in + FStar_Options.find_file uu____6615 in + match uu____6611 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some fn4 -> - let uu____6499 = digest_of_file1 fn4 in - FStar_Pervasives_Native.Some uu____6499) + let uu____6625 = digest_of_file1 fn4 in + FStar_Pervasives_Native.Some uu____6625) in (match digest with | FStar_Pervasives_Native.None -> - ((let uu____6514 = FStar_Options.debug_any () in - if uu____6514 + ((let uu____6640 = FStar_Options.debug_any () in + if uu____6640 then - let uu____6517 = cache_file_name fn2 in + let uu____6643 = cache_file_name fn2 in FStar_Util.print2 "%s: missed digest of file %s\n" - cache_file uu____6517 + cache_file uu____6643 else ()); FStar_Pervasives_Native.None) | FStar_Pervasives_Native.Some dig -> - let uu____6533 = - let uu____6542 = - let uu____6549 = lowercase_module_name fn2 in - (uu____6549, dig) in - uu____6542 :: out in - hash_deps uu____6533 deps2) + let uu____6659 = + let uu____6668 = + let uu____6675 = lowercase_module_name fn2 in + (uu____6675, dig) in + uu____6668 :: out in + hash_deps uu____6659 deps2) in hash_deps [] binary_deps1 @@ -1602,16 +1624,16 @@ let (print_digest : Prims.string) = fun dig -> - let uu____6589 = + let uu____6715 = FStar_All.pipe_right dig (FStar_List.map - (fun uu____6615 -> - match uu____6615 with + (fun uu____6741 -> + match uu____6741 with | (m,d) -> - let uu____6629 = FStar_Util.base64_encode d in - FStar_Util.format2 "%s:%s" m uu____6629)) + let uu____6755 = FStar_Util.base64_encode d in + FStar_Util.format2 "%s:%s" m uu____6755)) in - FStar_All.pipe_right uu____6589 (FStar_String.concat "\n") + FStar_All.pipe_right uu____6715 (FStar_String.concat "\n") let (print_make : deps -> unit) = fun deps -> @@ -1622,11 +1644,11 @@ let (print_make : deps -> unit) = FStar_All.pipe_right keys (FStar_List.iter (fun f -> - let uu____6665 = - let uu____6670 = deps_try_find deps1 f in - FStar_All.pipe_right uu____6670 FStar_Option.get in - match uu____6665 with - | (f_deps,uu____6692) -> + let uu____6791 = + let uu____6796 = deps_try_find deps1 f in + FStar_All.pipe_right uu____6796 FStar_Option.get in + match uu____6791 with + | (f_deps,uu____6818) -> let files = FStar_List.map (file_of_dep file_system_map all_cmd_line_files) f_deps @@ -1640,31 +1662,31 @@ let (print_make : deps -> unit) = let (print_raw : deps -> unit) = fun deps -> - let uu____6717 = deps.dep_graph in - match uu____6717 with + let uu____6843 = deps.dep_graph in + match uu____6843 with | Deps deps1 -> - let uu____6725 = - let uu____6727 = + let uu____6851 = + let uu____6853 = FStar_Util.smap_fold deps1 (fun k -> - fun uu____6745 -> + fun uu____6871 -> fun out -> - match uu____6745 with - | (dep1,uu____6759) -> - let uu____6760 = - let uu____6762 = - let uu____6764 = + match uu____6871 with + | (dep1,uu____6885) -> + let uu____6886 = + let uu____6888 = + let uu____6890 = FStar_List.map dep_to_string dep1 in - FStar_All.pipe_right uu____6764 + FStar_All.pipe_right uu____6890 (FStar_String.concat ";\n\t") in FStar_Util.format2 "%s -> [\n\t%s\n] " k - uu____6762 + uu____6888 in - uu____6760 :: out) [] + uu____6886 :: out) [] in - FStar_All.pipe_right uu____6727 (FStar_String.concat ";;\n") in - FStar_All.pipe_right uu____6725 FStar_Util.print_endline + FStar_All.pipe_right uu____6853 (FStar_String.concat ";;\n") in + FStar_All.pipe_right uu____6851 FStar_Util.print_endline let (print_full : deps -> unit) = fun deps -> @@ -1675,13 +1697,13 @@ let (print_full : deps -> unit) = let visited_other_modules = FStar_Util.smap_create (Prims.parse_int "41") in let should_visit lc_module_name = - (let uu____6836 = + (let uu____6962 = FStar_Util.smap_try_find remaining_output_files lc_module_name in - FStar_Option.isSome uu____6836) || - (let uu____6843 = + FStar_Option.isSome uu____6962) || + (let uu____6969 = FStar_Util.smap_try_find visited_other_modules lc_module_name in - FStar_Option.isNone uu____6843) + FStar_Option.isNone uu____6969) in let mark_visiting lc_module_name = let ml_file_opt = @@ -1693,30 +1715,30 @@ let (print_full : deps -> unit) = match ml_file_opt with | FStar_Pervasives_Native.None -> () | FStar_Pervasives_Native.Some ml_file -> - let uu____6886 = - let uu____6890 = FStar_ST.op_Bang order in ml_file :: - uu____6890 + let uu____7012 = + let uu____7016 = FStar_ST.op_Bang order in ml_file :: + uu____7016 in - FStar_ST.op_Colon_Equals order uu____6886 + FStar_ST.op_Colon_Equals order uu____7012 in - let rec aux uu___129_6997 = - match uu___129_6997 with + let rec aux uu___128_7123 = + match uu___128_7123 with | [] -> () | lc_module_name::modules_to_extract -> let visit_file file_opt = match file_opt with | FStar_Pervasives_Native.None -> () | FStar_Pervasives_Native.Some file_name -> - let uu____7025 = deps_try_find deps.dep_graph file_name in - (match uu____7025 with + let uu____7151 = deps_try_find deps.dep_graph file_name in + (match uu____7151 with | FStar_Pervasives_Native.None -> - let uu____7036 = + let uu____7162 = FStar_Util.format2 "Impossible: module %s: %s not found" lc_module_name file_name in - failwith uu____7036 - | FStar_Pervasives_Native.Some (immediate_deps,uu____7040) + failwith uu____7162 + | FStar_Pervasives_Native.Some (immediate_deps,uu____7166) -> let immediate_deps1 = FStar_List.map @@ -1726,16 +1748,16 @@ let (print_full : deps -> unit) = in aux immediate_deps1) in - ((let uu____7053 = should_visit lc_module_name in - if uu____7053 + ((let uu____7179 = should_visit lc_module_name in + if uu____7179 then let ml_file_opt = mark_visiting lc_module_name in - ((let uu____7061 = + ((let uu____7187 = implementation_of deps.file_system_map lc_module_name in - visit_file uu____7061); - (let uu____7066 = + visit_file uu____7187); + (let uu____7192 = interface_of deps.file_system_map lc_module_name in - visit_file uu____7066); + visit_file uu____7192); emit_output_file_opt ml_file_opt) else ()); aux modules_to_extract) @@ -1743,67 +1765,67 @@ let (print_full : deps -> unit) = let all_extracted_modules = FStar_Util.smap_keys orig_output_file_map in aux all_extracted_modules; - (let uu____7078 = FStar_ST.op_Bang order in FStar_List.rev uu____7078) + (let uu____7204 = FStar_ST.op_Bang order in FStar_List.rev uu____7204) in let keys = deps_keys deps.dep_graph in let output_file ext fst_file = let ml_base_name = - let uu____7152 = - let uu____7154 = - let uu____7158 = FStar_Util.basename fst_file in - check_and_strip_suffix uu____7158 in - FStar_Option.get uu____7154 in - FStar_Util.replace_chars uu____7152 46 "_" in + let uu____7278 = + let uu____7280 = + let uu____7284 = FStar_Util.basename fst_file in + check_and_strip_suffix uu____7284 in + FStar_Option.get uu____7280 in + FStar_Util.replace_chars uu____7278 46 "_" in FStar_Options.prepend_output_dir (Prims.strcat ml_base_name ext) in let norm_path s = FStar_Util.replace_chars s 92 "/" in let output_ml_file f = - let uu____7183 = output_file ".ml" f in norm_path uu____7183 in + let uu____7309 = output_file ".ml" f in norm_path uu____7309 in let output_krml_file f = - let uu____7195 = output_file ".krml" f in norm_path uu____7195 in + let uu____7321 = output_file ".krml" f in norm_path uu____7321 in let output_cmx_file f = - let uu____7207 = output_file ".cmx" f in norm_path uu____7207 in + let uu____7333 = output_file ".cmx" f in norm_path uu____7333 in let cache_file f = - let uu____7219 = cache_file_name f in norm_path uu____7219 in + let uu____7345 = cache_file_name f in norm_path uu____7345 in let transitive_krml = FStar_Util.smap_create (Prims.parse_int "41") in FStar_All.pipe_right keys (FStar_List.iter - (fun f -> - let uu____7279 = - let uu____7286 = deps_try_find deps.dep_graph f in - FStar_All.pipe_right uu____7286 FStar_Option.get in - match uu____7279 with - | (f_deps,uu____7310) -> + (fun file_name -> + let uu____7405 = + let uu____7412 = deps_try_find deps.dep_graph file_name in + FStar_All.pipe_right uu____7412 FStar_Option.get in + match uu____7405 with + | (f_deps,uu____7436) -> let iface_deps = - let uu____7320 = is_interface f in - if uu____7320 + let uu____7446 = is_interface file_name in + if uu____7446 then FStar_Pervasives_Native.None else - (let uu____7331 = - let uu____7335 = lowercase_module_name f in - interface_of deps.file_system_map uu____7335 in - match uu____7331 with + (let uu____7457 = + let uu____7461 = lowercase_module_name file_name in + interface_of deps.file_system_map uu____7461 in + match uu____7457 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some iface -> - let uu____7347 = - let uu____7350 = - let uu____7355 = + let uu____7473 = + let uu____7476 = + let uu____7481 = deps_try_find deps.dep_graph iface in - FStar_Option.get uu____7355 in - FStar_Pervasives_Native.fst uu____7350 in - FStar_Pervasives_Native.Some uu____7347) + FStar_Option.get uu____7481 in + FStar_Pervasives_Native.fst uu____7476 in + FStar_Pervasives_Native.Some uu____7473) in let iface_deps1 = FStar_Util.map_opt iface_deps (FStar_List.filter (fun iface_dep -> - let uu____7380 = + let uu____7506 = FStar_Util.for_some (dep_subsumed_by iface_dep) f_deps in - Prims.op_Negation uu____7380)) + Prims.op_Negation uu____7506)) in - let norm_f = norm_path f in + let norm_f = norm_path file_name in let files = FStar_List.map (file_of_dep_aux true deps.file_system_map @@ -1827,184 +1849,166 @@ let (print_full : deps -> unit) = (fun s -> FStar_Util.replace_chars s 32 "\\ ") files2 in let files4 = FStar_String.concat "\\\n\t" files3 in - ((let uu____7440 = cache_file f in - FStar_Util.print3 "%s: %s \\\n\t%s\n\n" uu____7440 norm_f + ((let uu____7566 = cache_file file_name in + FStar_Util.print3 "%s: %s \\\n\t%s\n\n" uu____7566 norm_f files4); (let already_there = - let uu____7447 = - let uu____7461 = - let uu____7463 = output_file ".krml" f in - norm_path uu____7463 in - FStar_Util.smap_try_find transitive_krml uu____7461 in - match uu____7447 with + let uu____7573 = + let uu____7587 = + let uu____7589 = output_file ".krml" file_name in + norm_path uu____7589 in + FStar_Util.smap_try_find transitive_krml uu____7587 in + match uu____7573 with | FStar_Pervasives_Native.Some - (uu____7480,already_there,uu____7482) -> + (uu____7606,already_there,uu____7608) -> already_there | FStar_Pervasives_Native.None -> [] in - (let uu____7517 = - let uu____7519 = output_file ".krml" f in - norm_path uu____7519 in - let uu____7522 = - let uu____7534 = - let uu____7536 = output_file ".exe" f in - norm_path uu____7536 in - let uu____7539 = - let uu____7543 = - let uu____7547 = - let uu____7551 = deps_of deps f in + (let uu____7643 = + let uu____7645 = output_file ".krml" file_name in + norm_path uu____7645 in + let uu____7648 = + let uu____7660 = + let uu____7662 = output_file ".exe" file_name in + norm_path uu____7662 in + let uu____7665 = + let uu____7669 = + let uu____7673 = + let uu____7677 = deps_of deps file_name in FStar_List.map (fun x -> - let uu____7561 = output_file ".krml" x in - norm_path uu____7561) uu____7551 + let uu____7687 = output_file ".krml" x in + norm_path uu____7687) uu____7677 in - FStar_List.append already_there uu____7547 in - FStar_List.unique uu____7543 in - (uu____7534, uu____7539, false) in - FStar_Util.smap_add transitive_krml uu____7517 uu____7522); - (let uu____7583 = - let impl_dep uu___130_7602 = - match uu___130_7602 with - | PreferInterface f1 when FStar_Options.cmi () -> - let uu____7610 = - (has_implementation deps.file_system_map f1) && - (FStar_List.contains f1 - deps.interfaces_with_inlining) - in - if uu____7610 - then ((UseImplementation f1), true) - else ((PreferInterface f1), false) - | d -> (d, false) in - let maybe_widen_deps f_deps1 = - FStar_List.fold_right - (fun dep1 -> - fun uu____7659 -> - match uu____7659 with - | (out,widened) -> - let uu____7686 = impl_dep dep1 in - (match uu____7686 with - | (dep2,widened') -> - let uu____7704 = - let uu____7708 = - file_of_dep_aux false - deps.file_system_map - deps.cmd_line_files dep2 - in - uu____7708 :: out in - (uu____7704, (widened || widened')))) - f_deps1 ([], false) - in - let uu____7722 = maybe_widen_deps f_deps in - match uu____7722 with - | (fst_files,widened) -> - let uu____7749 = - match iface_deps1 with - | FStar_Pervasives_Native.None -> ([], false) - | FStar_Pervasives_Native.Some iface_deps2 -> - maybe_widen_deps iface_deps2 - in - (match uu____7749 with - | (fst_files_from_iface,widened_iface) -> - let uu____7797 = - FStar_Util.remove_dups - (fun x -> fun y -> x = y) - (FStar_List.append fst_files - fst_files_from_iface) - in - (uu____7797, (widened || widened_iface))) + FStar_List.append already_there uu____7673 in + FStar_List.unique uu____7669 in + (uu____7660, uu____7665, false) in + FStar_Util.smap_add transitive_krml uu____7643 uu____7648); + (let uu____7709 = + let uu____7718 = FStar_Options.cmi () in + if uu____7718 + then + topological_dependences_of deps.file_system_map + deps.dep_graph deps.interfaces_with_inlining + [file_name] true + else + (let maybe_widen_deps f_deps1 = + FStar_List.map + (fun dep1 -> + file_of_dep_aux false deps.file_system_map + deps.cmd_line_files dep1) f_deps1 + in + let fst_files = maybe_widen_deps f_deps in + let fst_files_from_iface = + match iface_deps1 with + | FStar_Pervasives_Native.None -> [] + | FStar_Pervasives_Native.Some iface_deps2 -> + maybe_widen_deps iface_deps2 + in + let uu____7766 = + FStar_Util.remove_dups (fun x -> fun y -> x = y) + (FStar_List.append fst_files fst_files_from_iface) + in + (uu____7766, false)) in - match uu____7583 with + match uu____7709 with | (all_fst_files_dep,widened) -> let all_checked_fst_files = FStar_List.map cache_file all_fst_files_dep in - let uu____7830 = is_implementation f in - if uu____7830 + let uu____7800 = is_implementation file_name in + if uu____7800 then - ((let uu____7834 = (FStar_Options.cmi ()) && widened + ((let uu____7804 = (FStar_Options.cmi ()) && widened in - if uu____7834 + if uu____7804 then - ((let uu____7838 = output_ml_file f in - let uu____7840 = cache_file f in + ((let uu____7808 = output_ml_file file_name in + let uu____7810 = cache_file file_name in FStar_Util.print3 "%s: %s \\\n\t%s\n\n" - uu____7838 uu____7840 + uu____7808 uu____7810 (FStar_String.concat " \\\n\t" all_checked_fst_files)); - (let uu____7844 = output_krml_file f in - let uu____7846 = cache_file f in + (let uu____7814 = output_krml_file file_name + in + let uu____7816 = cache_file file_name in FStar_Util.print3 "%s: %s \\\n\t%s\n\n" - uu____7844 uu____7846 + uu____7814 uu____7816 (FStar_String.concat " \\\n\t" all_checked_fst_files))) else - ((let uu____7853 = output_ml_file f in - let uu____7855 = cache_file f in - FStar_Util.print2 "%s: %s \n\n" uu____7853 - uu____7855); - (let uu____7858 = output_krml_file f in - let uu____7860 = cache_file f in - FStar_Util.print2 "%s: %s\n\n" uu____7858 - uu____7860))); + ((let uu____7823 = output_ml_file file_name in + let uu____7825 = cache_file file_name in + FStar_Util.print2 "%s: %s \n\n" uu____7823 + uu____7825); + (let uu____7828 = output_krml_file file_name + in + let uu____7830 = cache_file file_name in + FStar_Util.print2 "%s: %s\n\n" uu____7828 + uu____7830))); (let cmx_files = let extracted_fst_files = FStar_All.pipe_right all_fst_files_dep (FStar_List.filter (fun df -> - (let uu____7885 = + (let uu____7855 = lowercase_module_name df in - let uu____7887 = - lowercase_module_name f in - uu____7885 <> uu____7887) && - (let uu____7891 = + let uu____7857 = + lowercase_module_name file_name in + uu____7855 <> uu____7857) && + (let uu____7861 = lowercase_module_name df in FStar_Options.should_extract - uu____7891))) + uu____7861))) in FStar_All.pipe_right extracted_fst_files (FStar_List.map output_cmx_file) in - let uu____7901 = - let uu____7903 = lowercase_module_name f in - FStar_Options.should_extract uu____7903 in - if uu____7901 + let uu____7871 = + let uu____7873 = lowercase_module_name file_name + in + FStar_Options.should_extract uu____7873 in + if uu____7871 then - let uu____7906 = output_cmx_file f in - let uu____7908 = output_ml_file f in + let uu____7876 = output_cmx_file file_name in + let uu____7878 = output_ml_file file_name in FStar_Util.print3 "%s: %s \\\n\t%s\n\n" - uu____7906 uu____7908 + uu____7876 uu____7878 (FStar_String.concat "\\\n\t" cmx_files) else ())) else - (let uu____7916 = - (let uu____7920 = - let uu____7922 = lowercase_module_name f in + (let uu____7886 = + (let uu____7890 = + let uu____7892 = + lowercase_module_name file_name in has_implementation deps.file_system_map - uu____7922 + uu____7892 in - Prims.op_Negation uu____7920) && - (is_interface f) + Prims.op_Negation uu____7890) && + (is_interface file_name) in - if uu____7916 + if uu____7886 then - let uu____7925 = + let uu____7895 = (FStar_Options.cmi ()) && widened in - (if uu____7925 + (if uu____7895 then - let uu____7928 = output_krml_file f in - let uu____7930 = cache_file f in + let uu____7898 = output_krml_file file_name + in + let uu____7900 = cache_file file_name in FStar_Util.print3 "%s: %s \\\n\t%s\n\n" - uu____7928 uu____7930 + uu____7898 uu____7900 (FStar_String.concat " \\\n\t" all_checked_fst_files) else - (let uu____7936 = output_krml_file f in - let uu____7938 = cache_file f in - FStar_Util.print2 "%s: %s \n\n" uu____7936 - uu____7938)) + (let uu____7906 = output_krml_file file_name + in + let uu____7908 = cache_file file_name in + FStar_Util.print2 "%s: %s \n\n" uu____7906 + uu____7908)) else ())))))); (let all_fst_files = - let uu____7947 = + let uu____7917 = FStar_All.pipe_right keys (FStar_List.filter is_implementation) in - FStar_All.pipe_right uu____7947 + FStar_All.pipe_right uu____7917 (FStar_Util.sort_with FStar_String.compare) in let all_ml_files = @@ -2013,11 +2017,11 @@ let (print_full : deps -> unit) = (FStar_List.iter (fun fst_file -> let mname = lowercase_module_name fst_file in - let uu____7988 = FStar_Options.should_extract mname in - if uu____7988 + let uu____7958 = FStar_Options.should_extract mname in + if uu____7958 then - let uu____7991 = output_ml_file fst_file in - FStar_Util.smap_add ml_file_map mname uu____7991 + let uu____7961 = output_ml_file fst_file in + FStar_Util.smap_add ml_file_map mname uu____7961 else ())); sort_output_files ml_file_map in let all_krml_files = @@ -2026,75 +2030,75 @@ let (print_full : deps -> unit) = (FStar_List.iter (fun fst_file -> let mname = lowercase_module_name fst_file in - let uu____8018 = output_krml_file fst_file in - FStar_Util.smap_add krml_file_map mname uu____8018)); + let uu____7988 = output_krml_file fst_file in + FStar_Util.smap_add krml_file_map mname uu____7988)); sort_output_files krml_file_map in let rec make_transitive f = - let uu____8037 = - let uu____8049 = FStar_Util.smap_try_find transitive_krml f in - FStar_Util.must uu____8049 in - match uu____8037 with + let uu____8007 = + let uu____8019 = FStar_Util.smap_try_find transitive_krml f in + FStar_Util.must uu____8019 in + match uu____8007 with | (exe,deps1,seen) -> if seen then (exe, deps1) else (FStar_Util.smap_add transitive_krml f (exe, deps1, true); (let deps2 = - let uu____8143 = - let uu____8147 = + let uu____8113 = + let uu____8117 = FStar_List.map (fun dep1 -> - let uu____8163 = make_transitive dep1 in - match uu____8163 with - | (uu____8175,deps2) -> dep1 :: deps2) deps1 + let uu____8133 = make_transitive dep1 in + match uu____8133 with + | (uu____8145,deps2) -> dep1 :: deps2) deps1 in - FStar_List.flatten uu____8147 in - FStar_List.unique uu____8143 in + FStar_List.flatten uu____8117 in + FStar_List.unique uu____8113 in FStar_Util.smap_add transitive_krml f (exe, deps2, true); (exe, deps2))) in - (let uu____8211 = FStar_Util.smap_keys transitive_krml in + (let uu____8181 = FStar_Util.smap_keys transitive_krml in FStar_List.iter (fun f -> - let uu____8236 = make_transitive f in - match uu____8236 with + let uu____8206 = make_transitive f in + match uu____8206 with | (exe,deps1) -> let deps2 = - let uu____8257 = FStar_List.unique (f :: deps1) in - FStar_String.concat " " uu____8257 in + let uu____8227 = FStar_List.unique (f :: deps1) in + FStar_String.concat " " uu____8227 in let wasm = - let uu____8266 = + let uu____8236 = FStar_Util.substring exe (Prims.parse_int "0") ((FStar_String.length exe) - (Prims.parse_int "4")) in - Prims.strcat uu____8266 ".wasm" in + Prims.strcat uu____8236 ".wasm" in (FStar_Util.print2 "%s: %s\n\n" exe deps2; - FStar_Util.print2 "%s: %s\n\n" wasm deps2)) uu____8211); - (let uu____8275 = - let uu____8277 = + FStar_Util.print2 "%s: %s\n\n" wasm deps2)) uu____8181); + (let uu____8245 = + let uu____8247 = FStar_All.pipe_right all_fst_files (FStar_List.map norm_path) in - FStar_All.pipe_right uu____8277 (FStar_String.concat " \\\n\t") in - FStar_Util.print1 "ALL_FST_FILES=\\\n\t%s\n\n" uu____8275); - (let uu____8296 = - let uu____8298 = + FStar_All.pipe_right uu____8247 (FStar_String.concat " \\\n\t") in + FStar_Util.print1 "ALL_FST_FILES=\\\n\t%s\n\n" uu____8245); + (let uu____8266 = + let uu____8268 = FStar_All.pipe_right all_ml_files (FStar_List.map norm_path) in - FStar_All.pipe_right uu____8298 (FStar_String.concat " \\\n\t") in - FStar_Util.print1 "ALL_ML_FILES=\\\n\t%s\n\n" uu____8296); - (let uu____8316 = - let uu____8318 = + FStar_All.pipe_right uu____8268 (FStar_String.concat " \\\n\t") in + FStar_Util.print1 "ALL_ML_FILES=\\\n\t%s\n\n" uu____8266); + (let uu____8286 = + let uu____8288 = FStar_All.pipe_right all_krml_files (FStar_List.map norm_path) in - FStar_All.pipe_right uu____8318 (FStar_String.concat " \\\n\t") in - FStar_Util.print1 "ALL_KRML_FILES=\\\n\t%s\n" uu____8316)) + FStar_All.pipe_right uu____8288 (FStar_String.concat " \\\n\t") in + FStar_Util.print1 "ALL_KRML_FILES=\\\n\t%s\n" uu____8286)) let (print : deps -> unit) = fun deps -> - let uu____8342 = FStar_Options.dep () in - match uu____8342 with + let uu____8312 = FStar_Options.dep () in + match uu____8312 with | FStar_Pervasives_Native.Some "make" -> print_make deps | FStar_Pervasives_Native.Some "full" -> print_full deps | FStar_Pervasives_Native.Some "graph" -> print_graph deps.dep_graph | FStar_Pervasives_Native.Some "raw" -> print_raw deps - | FStar_Pervasives_Native.Some uu____8354 -> + | FStar_Pervasives_Native.Some uu____8324 -> FStar_Errors.raise_err (FStar_Errors.Fatal_UnknownToolForDep, "unknown tool for --dep\n") | FStar_Pervasives_Native.None -> () @@ -2107,38 +2111,38 @@ let (print_fsmap : fun fsmap -> FStar_Util.smap_fold fsmap (fun k -> - fun uu____8409 -> + fun uu____8379 -> fun s -> - match uu____8409 with + match uu____8379 with | (v0,v1) -> - let uu____8438 = - let uu____8440 = + let uu____8408 = + let uu____8410 = FStar_Util.format3 "%s -> (%s, %s)" k (FStar_Util.dflt "_" v0) (FStar_Util.dflt "_" v1) in - Prims.strcat "; " uu____8440 in - Prims.strcat s uu____8438) "" + Prims.strcat "; " uu____8410 in + Prims.strcat s uu____8408) "" let (module_has_interface : deps -> FStar_Ident.lident -> Prims.bool) = fun deps -> fun module_name -> - let uu____8461 = - let uu____8463 = FStar_Ident.string_of_lid module_name in - FStar_String.lowercase uu____8463 in - has_interface deps.file_system_map uu____8461 + let uu____8431 = + let uu____8433 = FStar_Ident.string_of_lid module_name in + FStar_String.lowercase uu____8433 in + has_interface deps.file_system_map uu____8431 let (deps_has_implementation : deps -> FStar_Ident.lident -> Prims.bool) = fun deps -> fun module_name -> let m = - let uu____8479 = FStar_Ident.string_of_lid module_name in - FStar_String.lowercase uu____8479 in + let uu____8449 = FStar_Ident.string_of_lid module_name in + FStar_String.lowercase uu____8449 in FStar_All.pipe_right deps.all_files (FStar_Util.for_some (fun f -> (is_implementation f) && - (let uu____8490 = - let uu____8492 = module_name_of_file f in - FStar_String.lowercase uu____8492 in - uu____8490 = m))) + (let uu____8460 = + let uu____8462 = module_name_of_file f in + FStar_String.lowercase uu____8462 in + uu____8460 = m))) \ No newline at end of file diff --git a/src/ocaml-output/FStar_Reflection_Basic.ml b/src/ocaml-output/FStar_Reflection_Basic.ml index bd5dd261e6b..e35934eb1e7 100644 --- a/src/ocaml-output/FStar_Reflection_Basic.ml +++ b/src/ocaml-output/FStar_Reflection_Basic.ml @@ -216,8 +216,8 @@ let rec (inspect_ln : in let brs1 = FStar_List.map - (fun uu___237_792 -> - match uu___237_792 with + (fun uu___236_792 -> + match uu___236_792 with | (pat,uu____814,t5) -> let uu____832 = inspect_pat pat in (uu____832, t5)) brs in @@ -263,8 +263,8 @@ let (inspect_comp : then let maybe_dec = FStar_List.tryFind - (fun uu___238_944 -> - match uu___238_944 with + (fun uu___237_944 -> + match uu___237_944 with | FStar_Syntax_Syntax.DECREASES uu____946 -> true | uu____950 -> false) ct.FStar_Syntax_Syntax.flags in @@ -397,8 +397,8 @@ let (pack_ln : FStar_Reflection_Data.term_view -> FStar_Syntax_Syntax.term) = in let brs1 = FStar_List.map - (fun uu___239_1329 -> - match uu___239_1329 with + (fun uu___238_1329 -> + match uu___238_1329 with | (pat,t1) -> let uu____1346 = pack_pat pat in (uu____1346, FStar_Pervasives_Native.None, t1)) brs @@ -482,15 +482,15 @@ let (set_sigelt_attrs : = fun attrs -> fun se -> - let uu___240_1579 = se in + let uu___239_1579 = se in { - FStar_Syntax_Syntax.sigel = (uu___240_1579.FStar_Syntax_Syntax.sigel); + FStar_Syntax_Syntax.sigel = (uu___239_1579.FStar_Syntax_Syntax.sigel); FStar_Syntax_Syntax.sigrng = - (uu___240_1579.FStar_Syntax_Syntax.sigrng); + (uu___239_1579.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___240_1579.FStar_Syntax_Syntax.sigquals); + (uu___239_1579.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___240_1579.FStar_Syntax_Syntax.sigmeta); + (uu___239_1579.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = attrs } diff --git a/src/ocaml-output/FStar_Reflection_Embeddings.ml b/src/ocaml-output/FStar_Reflection_Embeddings.ml index 362415562ee..78b16fdf085 100644 --- a/src/ocaml-output/FStar_Reflection_Embeddings.ml +++ b/src/ocaml-output/FStar_Reflection_Embeddings.ml @@ -198,11 +198,11 @@ let (e_aqualv : in uu____536 FStar_Pervasives_Native.None FStar_Range.dummyRange in - let uu___239_570 = r in + let uu___238_570 = r in { - FStar_Syntax_Syntax.n = (uu___239_570.FStar_Syntax_Syntax.n); + FStar_Syntax_Syntax.n = (uu___238_570.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = rng; - FStar_Syntax_Syntax.vars = (uu___239_570.FStar_Syntax_Syntax.vars) + FStar_Syntax_Syntax.vars = (uu___238_570.FStar_Syntax_Syntax.vars) } in let unembed_aqualv w t = let t1 = FStar_Syntax_Util.unascribe t in @@ -395,11 +395,11 @@ let (e_const : in uu____1055 FStar_Pervasives_Native.None FStar_Range.dummyRange in - let uu___240_1089 = r in + let uu___239_1089 = r in { - FStar_Syntax_Syntax.n = (uu___240_1089.FStar_Syntax_Syntax.n); + FStar_Syntax_Syntax.n = (uu___239_1089.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = rng; - FStar_Syntax_Syntax.vars = (uu___240_1089.FStar_Syntax_Syntax.vars) + FStar_Syntax_Syntax.vars = (uu___239_1089.FStar_Syntax_Syntax.vars) } in let unembed_const w t = let t1 = FStar_Syntax_Util.unascribe t in @@ -951,13 +951,13 @@ let (e_term_view_aq : in uu____2957 FStar_Pervasives_Native.None rng | FStar_Reflection_Data.Tv_Unknown -> - let uu___241_3062 = + let uu___240_3062 = FStar_Reflection_Data.ref_Tv_Unknown.FStar_Reflection_Data.t in { - FStar_Syntax_Syntax.n = (uu___241_3062.FStar_Syntax_Syntax.n); + FStar_Syntax_Syntax.n = (uu___240_3062.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = rng; FStar_Syntax_Syntax.vars = - (uu___241_3062.FStar_Syntax_Syntax.vars) + (uu___240_3062.FStar_Syntax_Syntax.vars) } in let unembed_term_view w t = @@ -1335,12 +1335,12 @@ let (e_comp_view : in uu____4358 FStar_Pervasives_Native.None rng | FStar_Reflection_Data.C_Unknown -> - let uu___242_4421 = + let uu___241_4421 = FStar_Reflection_Data.ref_C_Unknown.FStar_Reflection_Data.t in { - FStar_Syntax_Syntax.n = (uu___242_4421.FStar_Syntax_Syntax.n); + FStar_Syntax_Syntax.n = (uu___241_4421.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = rng; - FStar_Syntax_Syntax.vars = (uu___242_4421.FStar_Syntax_Syntax.vars) + FStar_Syntax_Syntax.vars = (uu___241_4421.FStar_Syntax_Syntax.vars) } in let unembed_comp_view w t = @@ -1417,11 +1417,11 @@ let (e_order : FStar_Order.order FStar_Syntax_Embeddings.embedding) = | FStar_Order.Lt -> FStar_Reflection_Data.ord_Lt | FStar_Order.Eq -> FStar_Reflection_Data.ord_Eq | FStar_Order.Gt -> FStar_Reflection_Data.ord_Gt in - let uu___243_4696 = r in + let uu___242_4696 = r in { - FStar_Syntax_Syntax.n = (uu___243_4696.FStar_Syntax_Syntax.n); + FStar_Syntax_Syntax.n = (uu___242_4696.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = rng; - FStar_Syntax_Syntax.vars = (uu___243_4696.FStar_Syntax_Syntax.vars) + FStar_Syntax_Syntax.vars = (uu___242_4696.FStar_Syntax_Syntax.vars) } in let unembed_order w t = let t1 = FStar_Syntax_Util.unascribe t in @@ -1618,12 +1618,12 @@ let (e_sigelt_view : in uu____5367 FStar_Pervasives_Native.None rng | FStar_Reflection_Data.Unk -> - let uu___244_5538 = + let uu___243_5538 = FStar_Reflection_Data.ref_Unk.FStar_Reflection_Data.t in { - FStar_Syntax_Syntax.n = (uu___244_5538.FStar_Syntax_Syntax.n); + FStar_Syntax_Syntax.n = (uu___243_5538.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = rng; - FStar_Syntax_Syntax.vars = (uu___244_5538.FStar_Syntax_Syntax.vars) + FStar_Syntax_Syntax.vars = (uu___243_5538.FStar_Syntax_Syntax.vars) } in let unembed_sigelt_view w t = @@ -1755,11 +1755,11 @@ let (e_exp : FStar_Reflection_Data.exp FStar_Syntax_Embeddings.embedding) = in uu____6015 FStar_Pervasives_Native.None FStar_Range.dummyRange in - let uu___245_6078 = r in + let uu___244_6078 = r in { - FStar_Syntax_Syntax.n = (uu___245_6078.FStar_Syntax_Syntax.n); + FStar_Syntax_Syntax.n = (uu___244_6078.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = rng; - FStar_Syntax_Syntax.vars = (uu___245_6078.FStar_Syntax_Syntax.vars) + FStar_Syntax_Syntax.vars = (uu___244_6078.FStar_Syntax_Syntax.vars) } in let rec unembed_exp w t = let t1 = FStar_Syntax_Util.unascribe t in diff --git a/src/ocaml-output/FStar_SMTEncoding_Encode.ml b/src/ocaml-output/FStar_SMTEncoding_Encode.ml index 93da493ef9e..1c5e80e2cda 100644 --- a/src/ocaml-output/FStar_SMTEncoding_Encode.ml +++ b/src/ocaml-output/FStar_SMTEncoding_Encode.ml @@ -1239,96 +1239,96 @@ let (encode_free_var : then let uu____5429 = FStar_TypeChecker_Env.reify_comp - (let uu___383_5432 = + (let uu___382_5432 = env.FStar_SMTEncoding_Env.tcenv in { FStar_TypeChecker_Env.solver = - (uu___383_5432.FStar_TypeChecker_Env.solver); + (uu___382_5432.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___383_5432.FStar_TypeChecker_Env.range); + (uu___382_5432.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___383_5432.FStar_TypeChecker_Env.curmodule); + (uu___382_5432.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___383_5432.FStar_TypeChecker_Env.gamma); + (uu___382_5432.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___383_5432.FStar_TypeChecker_Env.gamma_sig); + (uu___382_5432.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___383_5432.FStar_TypeChecker_Env.gamma_cache); + (uu___382_5432.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___383_5432.FStar_TypeChecker_Env.modules); + (uu___382_5432.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___383_5432.FStar_TypeChecker_Env.expected_typ); + (uu___382_5432.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___383_5432.FStar_TypeChecker_Env.sigtab); + (uu___382_5432.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___383_5432.FStar_TypeChecker_Env.attrtab); + (uu___382_5432.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___383_5432.FStar_TypeChecker_Env.is_pattern); + (uu___382_5432.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___383_5432.FStar_TypeChecker_Env.instantiate_imp); + (uu___382_5432.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___383_5432.FStar_TypeChecker_Env.effects); + (uu___382_5432.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___383_5432.FStar_TypeChecker_Env.generalize); + (uu___382_5432.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___383_5432.FStar_TypeChecker_Env.letrecs); + (uu___382_5432.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___383_5432.FStar_TypeChecker_Env.top_level); + (uu___382_5432.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___383_5432.FStar_TypeChecker_Env.check_uvars); + (uu___382_5432.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___383_5432.FStar_TypeChecker_Env.use_eq); + (uu___382_5432.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___383_5432.FStar_TypeChecker_Env.is_iface); + (uu___382_5432.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___383_5432.FStar_TypeChecker_Env.admit); + (uu___382_5432.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___383_5432.FStar_TypeChecker_Env.lax_universes); + (uu___382_5432.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___383_5432.FStar_TypeChecker_Env.phase1); + (uu___382_5432.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___383_5432.FStar_TypeChecker_Env.failhard); + (uu___382_5432.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___383_5432.FStar_TypeChecker_Env.nosynth); + (uu___382_5432.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___383_5432.FStar_TypeChecker_Env.uvar_subtyping); + (uu___382_5432.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___383_5432.FStar_TypeChecker_Env.tc_term); + (uu___382_5432.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___383_5432.FStar_TypeChecker_Env.type_of); + (uu___382_5432.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___383_5432.FStar_TypeChecker_Env.universe_of); + (uu___382_5432.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___383_5432.FStar_TypeChecker_Env.check_type_of); + (uu___382_5432.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___383_5432.FStar_TypeChecker_Env.use_bv_sorts); + (uu___382_5432.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___383_5432.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___382_5432.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___383_5432.FStar_TypeChecker_Env.normalized_eff_names); + (uu___382_5432.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___383_5432.FStar_TypeChecker_Env.fv_delta_depths); + (uu___382_5432.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___383_5432.FStar_TypeChecker_Env.proof_ns); + (uu___382_5432.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___383_5432.FStar_TypeChecker_Env.synth_hook); + (uu___382_5432.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___383_5432.FStar_TypeChecker_Env.splice); + (uu___382_5432.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___383_5432.FStar_TypeChecker_Env.postprocess); + (uu___382_5432.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___383_5432.FStar_TypeChecker_Env.is_native_tactic); + (uu___382_5432.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___383_5432.FStar_TypeChecker_Env.identifier_info); + (uu___382_5432.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___383_5432.FStar_TypeChecker_Env.tc_hooks); + (uu___382_5432.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___383_5432.FStar_TypeChecker_Env.dsenv); + (uu___382_5432.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___383_5432.FStar_TypeChecker_Env.nbe) + (uu___382_5432.FStar_TypeChecker_Env.nbe) }) comp FStar_Syntax_Syntax.U_unknown in FStar_Syntax_Syntax.mk_Total uu____5429 @@ -1367,8 +1367,8 @@ let (encode_free_var : vars = FStar_All.pipe_right quals (FStar_List.collect - (fun uu___373_5631 -> - match uu___373_5631 with + (fun uu___372_5631 -> + match uu___372_5631 with | FStar_Syntax_Syntax.Discriminator d -> let uu____5635 = @@ -1551,37 +1551,37 @@ let (encode_free_var : in let uu____5975 = let env2 = - let uu___384_5981 = env1 in + let uu___383_5981 = env1 in { FStar_SMTEncoding_Env.bvar_bindings = - (uu___384_5981.FStar_SMTEncoding_Env.bvar_bindings); + (uu___383_5981.FStar_SMTEncoding_Env.bvar_bindings); FStar_SMTEncoding_Env.fvar_bindings = - (uu___384_5981.FStar_SMTEncoding_Env.fvar_bindings); + (uu___383_5981.FStar_SMTEncoding_Env.fvar_bindings); FStar_SMTEncoding_Env.depth = - (uu___384_5981.FStar_SMTEncoding_Env.depth); + (uu___383_5981.FStar_SMTEncoding_Env.depth); FStar_SMTEncoding_Env.tcenv = - (uu___384_5981.FStar_SMTEncoding_Env.tcenv); + (uu___383_5981.FStar_SMTEncoding_Env.tcenv); FStar_SMTEncoding_Env.warn = - (uu___384_5981.FStar_SMTEncoding_Env.warn); + (uu___383_5981.FStar_SMTEncoding_Env.warn); FStar_SMTEncoding_Env.cache = - (uu___384_5981.FStar_SMTEncoding_Env.cache); + (uu___383_5981.FStar_SMTEncoding_Env.cache); FStar_SMTEncoding_Env.nolabels = - (uu___384_5981.FStar_SMTEncoding_Env.nolabels); + (uu___383_5981.FStar_SMTEncoding_Env.nolabels); FStar_SMTEncoding_Env.use_zfuel_name = - (uu___384_5981.FStar_SMTEncoding_Env.use_zfuel_name); + (uu___383_5981.FStar_SMTEncoding_Env.use_zfuel_name); FStar_SMTEncoding_Env.encode_non_total_function_typ = encode_non_total_function_typ; FStar_SMTEncoding_Env.current_module_name = - (uu___384_5981.FStar_SMTEncoding_Env.current_module_name); + (uu___383_5981.FStar_SMTEncoding_Env.current_module_name); FStar_SMTEncoding_Env.encoding_quantifier = - (uu___384_5981.FStar_SMTEncoding_Env.encoding_quantifier) + (uu___383_5981.FStar_SMTEncoding_Env.encoding_quantifier) } in let uu____5982 = let uu____5984 = @@ -1987,29 +1987,29 @@ let (uu___is_Let_rec_unencodeable : Prims.exn -> Prims.bool) = let (copy_env : FStar_SMTEncoding_Env.env_t -> FStar_SMTEncoding_Env.env_t) = fun en -> - let uu___385_6740 = en in + let uu___384_6740 = en in let uu____6741 = FStar_Util.smap_copy en.FStar_SMTEncoding_Env.cache in { FStar_SMTEncoding_Env.bvar_bindings = - (uu___385_6740.FStar_SMTEncoding_Env.bvar_bindings); + (uu___384_6740.FStar_SMTEncoding_Env.bvar_bindings); FStar_SMTEncoding_Env.fvar_bindings = - (uu___385_6740.FStar_SMTEncoding_Env.fvar_bindings); + (uu___384_6740.FStar_SMTEncoding_Env.fvar_bindings); FStar_SMTEncoding_Env.depth = - (uu___385_6740.FStar_SMTEncoding_Env.depth); + (uu___384_6740.FStar_SMTEncoding_Env.depth); FStar_SMTEncoding_Env.tcenv = - (uu___385_6740.FStar_SMTEncoding_Env.tcenv); - FStar_SMTEncoding_Env.warn = (uu___385_6740.FStar_SMTEncoding_Env.warn); + (uu___384_6740.FStar_SMTEncoding_Env.tcenv); + FStar_SMTEncoding_Env.warn = (uu___384_6740.FStar_SMTEncoding_Env.warn); FStar_SMTEncoding_Env.cache = uu____6741; FStar_SMTEncoding_Env.nolabels = - (uu___385_6740.FStar_SMTEncoding_Env.nolabels); + (uu___384_6740.FStar_SMTEncoding_Env.nolabels); FStar_SMTEncoding_Env.use_zfuel_name = - (uu___385_6740.FStar_SMTEncoding_Env.use_zfuel_name); + (uu___384_6740.FStar_SMTEncoding_Env.use_zfuel_name); FStar_SMTEncoding_Env.encode_non_total_function_typ = - (uu___385_6740.FStar_SMTEncoding_Env.encode_non_total_function_typ); + (uu___384_6740.FStar_SMTEncoding_Env.encode_non_total_function_typ); FStar_SMTEncoding_Env.current_module_name = - (uu___385_6740.FStar_SMTEncoding_Env.current_module_name); + (uu___384_6740.FStar_SMTEncoding_Env.current_module_name); FStar_SMTEncoding_Env.encoding_quantifier = - (uu___385_6740.FStar_SMTEncoding_Env.encoding_quantifier) + (uu___384_6740.FStar_SMTEncoding_Env.encoding_quantifier) } let (encode_top_level_let : @@ -2051,16 +2051,16 @@ let (encode_top_level_let : match uu____7093 with | (x,i) -> let uu____7112 = - let uu___386_7113 = x in + let uu___385_7113 = x in let uu____7114 = FStar_Syntax_Subst.subst subst1 x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___386_7113.FStar_Syntax_Syntax.ppname); + (uu___385_7113.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___386_7113.FStar_Syntax_Syntax.index); + (uu___385_7113.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____7114 } in (uu____7112, i))) @@ -2094,93 +2094,93 @@ let (encode_top_level_let : if uu____7230 then FStar_TypeChecker_Env.reify_comp - (let uu___387_7237 = env.FStar_SMTEncoding_Env.tcenv in + (let uu___386_7237 = env.FStar_SMTEncoding_Env.tcenv in { FStar_TypeChecker_Env.solver = - (uu___387_7237.FStar_TypeChecker_Env.solver); + (uu___386_7237.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___387_7237.FStar_TypeChecker_Env.range); + (uu___386_7237.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___387_7237.FStar_TypeChecker_Env.curmodule); + (uu___386_7237.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___387_7237.FStar_TypeChecker_Env.gamma); + (uu___386_7237.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___387_7237.FStar_TypeChecker_Env.gamma_sig); + (uu___386_7237.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___387_7237.FStar_TypeChecker_Env.gamma_cache); + (uu___386_7237.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___387_7237.FStar_TypeChecker_Env.modules); + (uu___386_7237.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___387_7237.FStar_TypeChecker_Env.expected_typ); + (uu___386_7237.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___387_7237.FStar_TypeChecker_Env.sigtab); + (uu___386_7237.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___387_7237.FStar_TypeChecker_Env.attrtab); + (uu___386_7237.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___387_7237.FStar_TypeChecker_Env.is_pattern); + (uu___386_7237.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___387_7237.FStar_TypeChecker_Env.instantiate_imp); + (uu___386_7237.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___387_7237.FStar_TypeChecker_Env.effects); + (uu___386_7237.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___387_7237.FStar_TypeChecker_Env.generalize); + (uu___386_7237.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___387_7237.FStar_TypeChecker_Env.letrecs); + (uu___386_7237.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___387_7237.FStar_TypeChecker_Env.top_level); + (uu___386_7237.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___387_7237.FStar_TypeChecker_Env.check_uvars); + (uu___386_7237.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___387_7237.FStar_TypeChecker_Env.use_eq); + (uu___386_7237.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___387_7237.FStar_TypeChecker_Env.is_iface); + (uu___386_7237.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___387_7237.FStar_TypeChecker_Env.admit); + (uu___386_7237.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___387_7237.FStar_TypeChecker_Env.lax_universes); + (uu___386_7237.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___387_7237.FStar_TypeChecker_Env.phase1); + (uu___386_7237.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___387_7237.FStar_TypeChecker_Env.failhard); + (uu___386_7237.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___387_7237.FStar_TypeChecker_Env.nosynth); + (uu___386_7237.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___387_7237.FStar_TypeChecker_Env.uvar_subtyping); + (uu___386_7237.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___387_7237.FStar_TypeChecker_Env.tc_term); + (uu___386_7237.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___387_7237.FStar_TypeChecker_Env.type_of); + (uu___386_7237.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___387_7237.FStar_TypeChecker_Env.universe_of); + (uu___386_7237.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___387_7237.FStar_TypeChecker_Env.check_type_of); + (uu___386_7237.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___387_7237.FStar_TypeChecker_Env.use_bv_sorts); + (uu___386_7237.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___387_7237.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___386_7237.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___387_7237.FStar_TypeChecker_Env.normalized_eff_names); + (uu___386_7237.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___387_7237.FStar_TypeChecker_Env.fv_delta_depths); + (uu___386_7237.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___387_7237.FStar_TypeChecker_Env.proof_ns); + (uu___386_7237.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___387_7237.FStar_TypeChecker_Env.synth_hook); + (uu___386_7237.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___387_7237.FStar_TypeChecker_Env.splice); + (uu___386_7237.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___387_7237.FStar_TypeChecker_Env.postprocess); + (uu___386_7237.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___387_7237.FStar_TypeChecker_Env.is_native_tactic); + (uu___386_7237.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___387_7237.FStar_TypeChecker_Env.identifier_info); + (uu___386_7237.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___387_7237.FStar_TypeChecker_Env.tc_hooks); + (uu___386_7237.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___387_7237.FStar_TypeChecker_Env.dsenv); + (uu___386_7237.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___387_7237.FStar_TypeChecker_Env.nbe) + (uu___386_7237.FStar_TypeChecker_Env.nbe) }) c FStar_Syntax_Syntax.U_unknown else FStar_Syntax_Util.comp_result c in let rec aux norm1 t_norm1 = @@ -2325,7 +2325,7 @@ let (encode_top_level_let : in aux false t_norm in (try - (fun uu___389_8560 -> + (fun uu___388_8560 -> match () with | () -> let uu____8567 = @@ -2455,40 +2455,40 @@ let (encode_top_level_let : in (match uu____8994 with | (e1,t_norm1) -> - ((let uu___390_9038 = env2 in + ((let uu___389_9038 = env2 in { FStar_SMTEncoding_Env.bvar_bindings = - (uu___390_9038.FStar_SMTEncoding_Env.bvar_bindings); + (uu___389_9038.FStar_SMTEncoding_Env.bvar_bindings); FStar_SMTEncoding_Env.fvar_bindings = - (uu___390_9038.FStar_SMTEncoding_Env.fvar_bindings); + (uu___389_9038.FStar_SMTEncoding_Env.fvar_bindings); FStar_SMTEncoding_Env.depth = - (uu___390_9038.FStar_SMTEncoding_Env.depth); + (uu___389_9038.FStar_SMTEncoding_Env.depth); FStar_SMTEncoding_Env.tcenv = tcenv'; FStar_SMTEncoding_Env.warn = - (uu___390_9038.FStar_SMTEncoding_Env.warn); + (uu___389_9038.FStar_SMTEncoding_Env.warn); FStar_SMTEncoding_Env.cache = - (uu___390_9038.FStar_SMTEncoding_Env.cache); + (uu___389_9038.FStar_SMTEncoding_Env.cache); FStar_SMTEncoding_Env.nolabels = - (uu___390_9038.FStar_SMTEncoding_Env.nolabels); + (uu___389_9038.FStar_SMTEncoding_Env.nolabels); FStar_SMTEncoding_Env.use_zfuel_name = - (uu___390_9038.FStar_SMTEncoding_Env.use_zfuel_name); + (uu___389_9038.FStar_SMTEncoding_Env.use_zfuel_name); FStar_SMTEncoding_Env.encode_non_total_function_typ = - (uu___390_9038.FStar_SMTEncoding_Env.encode_non_total_function_typ); + (uu___389_9038.FStar_SMTEncoding_Env.encode_non_total_function_typ); FStar_SMTEncoding_Env.current_module_name = - (uu___390_9038.FStar_SMTEncoding_Env.current_module_name); + (uu___389_9038.FStar_SMTEncoding_Env.current_module_name); FStar_SMTEncoding_Env.encoding_quantifier = - (uu___390_9038.FStar_SMTEncoding_Env.encoding_quantifier) + (uu___389_9038.FStar_SMTEncoding_Env.encoding_quantifier) }), e1, t_norm1)) in (match uu____8961 with @@ -2799,41 +2799,41 @@ let (encode_top_level_let : in (match uu____9722 with | (e1,t_norm1) -> - ((let uu___391_9766 = + ((let uu___390_9766 = env3 in { FStar_SMTEncoding_Env.bvar_bindings = - (uu___391_9766.FStar_SMTEncoding_Env.bvar_bindings); + (uu___390_9766.FStar_SMTEncoding_Env.bvar_bindings); FStar_SMTEncoding_Env.fvar_bindings = - (uu___391_9766.FStar_SMTEncoding_Env.fvar_bindings); + (uu___390_9766.FStar_SMTEncoding_Env.fvar_bindings); FStar_SMTEncoding_Env.depth = - (uu___391_9766.FStar_SMTEncoding_Env.depth); + (uu___390_9766.FStar_SMTEncoding_Env.depth); FStar_SMTEncoding_Env.tcenv = tcenv'; FStar_SMTEncoding_Env.warn = - (uu___391_9766.FStar_SMTEncoding_Env.warn); + (uu___390_9766.FStar_SMTEncoding_Env.warn); FStar_SMTEncoding_Env.cache = - (uu___391_9766.FStar_SMTEncoding_Env.cache); + (uu___390_9766.FStar_SMTEncoding_Env.cache); FStar_SMTEncoding_Env.nolabels = - (uu___391_9766.FStar_SMTEncoding_Env.nolabels); + (uu___390_9766.FStar_SMTEncoding_Env.nolabels); FStar_SMTEncoding_Env.use_zfuel_name = - (uu___391_9766.FStar_SMTEncoding_Env.use_zfuel_name); + (uu___390_9766.FStar_SMTEncoding_Env.use_zfuel_name); FStar_SMTEncoding_Env.encode_non_total_function_typ = - (uu___391_9766.FStar_SMTEncoding_Env.encode_non_total_function_typ); + (uu___390_9766.FStar_SMTEncoding_Env.encode_non_total_function_typ); FStar_SMTEncoding_Env.current_module_name = - (uu___391_9766.FStar_SMTEncoding_Env.current_module_name); + (uu___390_9766.FStar_SMTEncoding_Env.current_module_name); FStar_SMTEncoding_Env.encoding_quantifier = - (uu___391_9766.FStar_SMTEncoding_Env.encoding_quantifier) + (uu___390_9766.FStar_SMTEncoding_Env.encoding_quantifier) }), e1, t_norm1)) in (match uu____9689 with @@ -3369,8 +3369,8 @@ let (encode_top_level_let : (match uu____10373 with | (decls2,eqns,env01) -> let uu____10648 = - let isDeclFun uu___374_10663 = - match uu___374_10663 with + let isDeclFun uu___373_10663 = + match uu___373_10663 with | FStar_SMTEncoding_Term.DeclFun uu____10665 -> true | uu____10678 -> false in @@ -3392,8 +3392,8 @@ let (encode_top_level_let : let uu____10720 = (FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___375_10726 -> - match uu___375_10726 with + (fun uu___374_10726 -> + match uu___374_10726 with | FStar_Syntax_Syntax.HasMaskedEffect -> true | uu____10729 -> false))) @@ -3416,7 +3416,7 @@ let (encode_top_level_let : then (decls1, env_decls) else (try - (fun uu___393_10759 -> + (fun uu___392_10759 -> match () with | () -> if Prims.op_Negation is_rec @@ -3705,8 +3705,8 @@ and (encode_sigelt' : let uu____11604 = FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___376_11610 -> - match uu___376_11610 with + (fun uu___375_11610 -> + match uu___375_11610 with | FStar_Syntax_Syntax.Assumption -> true | FStar_Syntax_Syntax.Projector uu____11613 -> true | FStar_Syntax_Syntax.Discriminator uu____11619 -> true @@ -3747,33 +3747,33 @@ and (encode_sigelt' : (match uu____11665 with | (uvs,f1) -> let env1 = - let uu___394_11677 = env in + let uu___393_11677 = env in let uu____11678 = FStar_TypeChecker_Env.push_univ_vars env.FStar_SMTEncoding_Env.tcenv uvs in { FStar_SMTEncoding_Env.bvar_bindings = - (uu___394_11677.FStar_SMTEncoding_Env.bvar_bindings); + (uu___393_11677.FStar_SMTEncoding_Env.bvar_bindings); FStar_SMTEncoding_Env.fvar_bindings = - (uu___394_11677.FStar_SMTEncoding_Env.fvar_bindings); + (uu___393_11677.FStar_SMTEncoding_Env.fvar_bindings); FStar_SMTEncoding_Env.depth = - (uu___394_11677.FStar_SMTEncoding_Env.depth); + (uu___393_11677.FStar_SMTEncoding_Env.depth); FStar_SMTEncoding_Env.tcenv = uu____11678; FStar_SMTEncoding_Env.warn = - (uu___394_11677.FStar_SMTEncoding_Env.warn); + (uu___393_11677.FStar_SMTEncoding_Env.warn); FStar_SMTEncoding_Env.cache = - (uu___394_11677.FStar_SMTEncoding_Env.cache); + (uu___393_11677.FStar_SMTEncoding_Env.cache); FStar_SMTEncoding_Env.nolabels = - (uu___394_11677.FStar_SMTEncoding_Env.nolabels); + (uu___393_11677.FStar_SMTEncoding_Env.nolabels); FStar_SMTEncoding_Env.use_zfuel_name = - (uu___394_11677.FStar_SMTEncoding_Env.use_zfuel_name); + (uu___393_11677.FStar_SMTEncoding_Env.use_zfuel_name); FStar_SMTEncoding_Env.encode_non_total_function_typ = - (uu___394_11677.FStar_SMTEncoding_Env.encode_non_total_function_typ); + (uu___393_11677.FStar_SMTEncoding_Env.encode_non_total_function_typ); FStar_SMTEncoding_Env.current_module_name = - (uu___394_11677.FStar_SMTEncoding_Env.current_module_name); + (uu___393_11677.FStar_SMTEncoding_Env.current_module_name); FStar_SMTEncoding_Env.encoding_quantifier = - (uu___394_11677.FStar_SMTEncoding_Env.encoding_quantifier) + (uu___393_11677.FStar_SMTEncoding_Env.encoding_quantifier) } in let f2 = FStar_TypeChecker_Normalize.normalize @@ -3830,21 +3830,21 @@ and (encode_sigelt' : if uu____11755 then let val_decl = - let uu___395_11789 = se in + let uu___394_11789 = se in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_declare_typ (lid, (lb.FStar_Syntax_Syntax.lbunivs), (lb.FStar_Syntax_Syntax.lbtyp))); FStar_Syntax_Syntax.sigrng = - (uu___395_11789.FStar_Syntax_Syntax.sigrng); + (uu___394_11789.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = (FStar_Syntax_Syntax.Irreducible :: (se.FStar_Syntax_Syntax.sigquals)); FStar_Syntax_Syntax.sigmeta = - (uu___395_11789.FStar_Syntax_Syntax.sigmeta); + (uu___394_11789.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___395_11789.FStar_Syntax_Syntax.sigattrs) + (uu___394_11789.FStar_Syntax_Syntax.sigattrs) } in let uu____11790 = encode_sigelt' env1 val_decl in match uu____11790 with | (decls,env2) -> (env2, decls) @@ -3912,8 +3912,8 @@ and (encode_sigelt' : | FStar_Syntax_Syntax.Sig_let (uu____11959,uu____11960) when FStar_All.pipe_right se.FStar_Syntax_Syntax.sigquals (FStar_Util.for_some - (fun uu___377_11970 -> - match uu___377_11970 with + (fun uu___376_11970 -> + match uu___376_11970 with | FStar_Syntax_Syntax.Discriminator uu____11972 -> true | uu____11974 -> false)) -> ([], env) @@ -3928,8 +3928,8 @@ and (encode_sigelt' : && (FStar_All.pipe_right se.FStar_Syntax_Syntax.sigquals (FStar_Util.for_some - (fun uu___378_11997 -> - match uu___378_11997 with + (fun uu___377_11997 -> + match uu___377_11997 with | FStar_Syntax_Syntax.Unfold_for_unification_and_vcgen -> true | uu____12000 -> false))) @@ -3937,8 +3937,8 @@ and (encode_sigelt' : | FStar_Syntax_Syntax.Sig_let ((false ,lb::[]),uu____12003) when FStar_All.pipe_right se.FStar_Syntax_Syntax.sigquals (FStar_Util.for_some - (fun uu___379_12017 -> - match uu___379_12017 with + (fun uu___378_12017 -> + match uu___378_12017 with | FStar_Syntax_Syntax.Projector uu____12019 -> true | uu____12025 -> false)) -> @@ -3950,7 +3950,7 @@ and (encode_sigelt' : | FStar_Pervasives_Native.Some uu____12036 -> ([], env) | FStar_Pervasives_Native.None -> let se1 = - let uu___396_12038 = se in + let uu___395_12038 = se in let uu____12039 = FStar_Ident.range_of_lid l in { FStar_Syntax_Syntax.sigel = @@ -3959,11 +3959,11 @@ and (encode_sigelt' : (lb.FStar_Syntax_Syntax.lbtyp))); FStar_Syntax_Syntax.sigrng = uu____12039; FStar_Syntax_Syntax.sigquals = - (uu___396_12038.FStar_Syntax_Syntax.sigquals); + (uu___395_12038.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___396_12038.FStar_Syntax_Syntax.sigmeta); + (uu___395_12038.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___396_12038.FStar_Syntax_Syntax.sigattrs) + (uu___395_12038.FStar_Syntax_Syntax.sigattrs) } in encode_sigelt env se1) | FStar_Syntax_Syntax.Sig_let ((is_rec,bindings),uu____12042) -> @@ -3976,8 +3976,8 @@ and (encode_sigelt' : let uu____12083 = FStar_All.pipe_right g (FStar_List.partition - (fun uu___380_12106 -> - match uu___380_12106 with + (fun uu___379_12106 -> + match uu___379_12106 with | FStar_SMTEncoding_Term.Assume { FStar_SMTEncoding_Term.assumption_term = @@ -3997,8 +3997,8 @@ and (encode_sigelt' : let uu____12133 = FStar_All.pipe_right g' (FStar_List.partition - (fun uu___381_12154 -> - match uu___381_12154 with + (fun uu___380_12154 -> + match uu___380_12154 with | FStar_SMTEncoding_Term.DeclFun uu____12156 -> true | uu____12169 -> false)) @@ -4013,8 +4013,8 @@ and (encode_sigelt' : let is_logical = FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___382_12208 -> - match uu___382_12208 with + (fun uu___381_12208 -> + match uu___381_12208 with | FStar_Syntax_Syntax.Logic -> true | FStar_Syntax_Syntax.Assumption -> true | uu____12212 -> false)) @@ -5994,29 +5994,29 @@ let (get_env : match uu____15753 with | [] -> failwith "No env; call init first!" | e::uu____15781 -> - let uu___397_15784 = e in + let uu___396_15784 = e in let uu____15785 = FStar_Ident.string_of_lid cmn in { FStar_SMTEncoding_Env.bvar_bindings = - (uu___397_15784.FStar_SMTEncoding_Env.bvar_bindings); + (uu___396_15784.FStar_SMTEncoding_Env.bvar_bindings); FStar_SMTEncoding_Env.fvar_bindings = - (uu___397_15784.FStar_SMTEncoding_Env.fvar_bindings); + (uu___396_15784.FStar_SMTEncoding_Env.fvar_bindings); FStar_SMTEncoding_Env.depth = - (uu___397_15784.FStar_SMTEncoding_Env.depth); + (uu___396_15784.FStar_SMTEncoding_Env.depth); FStar_SMTEncoding_Env.tcenv = tcenv; FStar_SMTEncoding_Env.warn = - (uu___397_15784.FStar_SMTEncoding_Env.warn); + (uu___396_15784.FStar_SMTEncoding_Env.warn); FStar_SMTEncoding_Env.cache = - (uu___397_15784.FStar_SMTEncoding_Env.cache); + (uu___396_15784.FStar_SMTEncoding_Env.cache); FStar_SMTEncoding_Env.nolabels = - (uu___397_15784.FStar_SMTEncoding_Env.nolabels); + (uu___396_15784.FStar_SMTEncoding_Env.nolabels); FStar_SMTEncoding_Env.use_zfuel_name = - (uu___397_15784.FStar_SMTEncoding_Env.use_zfuel_name); + (uu___396_15784.FStar_SMTEncoding_Env.use_zfuel_name); FStar_SMTEncoding_Env.encode_non_total_function_typ = - (uu___397_15784.FStar_SMTEncoding_Env.encode_non_total_function_typ); + (uu___396_15784.FStar_SMTEncoding_Env.encode_non_total_function_typ); FStar_SMTEncoding_Env.current_module_name = uu____15785; FStar_SMTEncoding_Env.encoding_quantifier = - (uu___397_15784.FStar_SMTEncoding_Env.encoding_quantifier) + (uu___396_15784.FStar_SMTEncoding_Env.encoding_quantifier) } let (set_env : FStar_SMTEncoding_Env.env_t -> unit) = @@ -6117,14 +6117,14 @@ let (place_decl_in_fact_dbs : match (fact_db_ids, d) with | (uu____16276::uu____16277,FStar_SMTEncoding_Term.Assume a) -> FStar_SMTEncoding_Term.Assume - (let uu___398_16285 = a in + (let uu___397_16285 = a in { FStar_SMTEncoding_Term.assumption_term = - (uu___398_16285.FStar_SMTEncoding_Term.assumption_term); + (uu___397_16285.FStar_SMTEncoding_Term.assumption_term); FStar_SMTEncoding_Term.assumption_caption = - (uu___398_16285.FStar_SMTEncoding_Term.assumption_caption); + (uu___397_16285.FStar_SMTEncoding_Term.assumption_caption); FStar_SMTEncoding_Term.assumption_name = - (uu___398_16285.FStar_SMTEncoding_Term.assumption_name); + (uu___397_16285.FStar_SMTEncoding_Term.assumption_name); FStar_SMTEncoding_Term.assumption_fact_ids = fact_db_ids }) | uu____16286 -> d @@ -6247,29 +6247,29 @@ let (encode_modul : in let uu____16557 = encode_signature - (let uu___399_16566 = env in + (let uu___398_16566 = env in { FStar_SMTEncoding_Env.bvar_bindings = - (uu___399_16566.FStar_SMTEncoding_Env.bvar_bindings); + (uu___398_16566.FStar_SMTEncoding_Env.bvar_bindings); FStar_SMTEncoding_Env.fvar_bindings = - (uu___399_16566.FStar_SMTEncoding_Env.fvar_bindings); + (uu___398_16566.FStar_SMTEncoding_Env.fvar_bindings); FStar_SMTEncoding_Env.depth = - (uu___399_16566.FStar_SMTEncoding_Env.depth); + (uu___398_16566.FStar_SMTEncoding_Env.depth); FStar_SMTEncoding_Env.tcenv = - (uu___399_16566.FStar_SMTEncoding_Env.tcenv); + (uu___398_16566.FStar_SMTEncoding_Env.tcenv); FStar_SMTEncoding_Env.warn = false; FStar_SMTEncoding_Env.cache = - (uu___399_16566.FStar_SMTEncoding_Env.cache); + (uu___398_16566.FStar_SMTEncoding_Env.cache); FStar_SMTEncoding_Env.nolabels = - (uu___399_16566.FStar_SMTEncoding_Env.nolabels); + (uu___398_16566.FStar_SMTEncoding_Env.nolabels); FStar_SMTEncoding_Env.use_zfuel_name = - (uu___399_16566.FStar_SMTEncoding_Env.use_zfuel_name); + (uu___398_16566.FStar_SMTEncoding_Env.use_zfuel_name); FStar_SMTEncoding_Env.encode_non_total_function_typ = - (uu___399_16566.FStar_SMTEncoding_Env.encode_non_total_function_typ); + (uu___398_16566.FStar_SMTEncoding_Env.encode_non_total_function_typ); FStar_SMTEncoding_Env.current_module_name = - (uu___399_16566.FStar_SMTEncoding_Env.current_module_name); + (uu___398_16566.FStar_SMTEncoding_Env.current_module_name); FStar_SMTEncoding_Env.encoding_quantifier = - (uu___399_16566.FStar_SMTEncoding_Env.encoding_quantifier) + (uu___398_16566.FStar_SMTEncoding_Env.encoding_quantifier) }) modul.FStar_Syntax_Syntax.exports in match uu____16557 with @@ -6284,29 +6284,29 @@ let (encode_modul : [FStar_SMTEncoding_Term.Caption (Prims.strcat "End " msg)] else decls1 in (set_env - (let uu___400_16600 = env1 in + (let uu___399_16600 = env1 in { FStar_SMTEncoding_Env.bvar_bindings = - (uu___400_16600.FStar_SMTEncoding_Env.bvar_bindings); + (uu___399_16600.FStar_SMTEncoding_Env.bvar_bindings); FStar_SMTEncoding_Env.fvar_bindings = - (uu___400_16600.FStar_SMTEncoding_Env.fvar_bindings); + (uu___399_16600.FStar_SMTEncoding_Env.fvar_bindings); FStar_SMTEncoding_Env.depth = - (uu___400_16600.FStar_SMTEncoding_Env.depth); + (uu___399_16600.FStar_SMTEncoding_Env.depth); FStar_SMTEncoding_Env.tcenv = - (uu___400_16600.FStar_SMTEncoding_Env.tcenv); + (uu___399_16600.FStar_SMTEncoding_Env.tcenv); FStar_SMTEncoding_Env.warn = true; FStar_SMTEncoding_Env.cache = - (uu___400_16600.FStar_SMTEncoding_Env.cache); + (uu___399_16600.FStar_SMTEncoding_Env.cache); FStar_SMTEncoding_Env.nolabels = - (uu___400_16600.FStar_SMTEncoding_Env.nolabels); + (uu___399_16600.FStar_SMTEncoding_Env.nolabels); FStar_SMTEncoding_Env.use_zfuel_name = - (uu___400_16600.FStar_SMTEncoding_Env.use_zfuel_name); + (uu___399_16600.FStar_SMTEncoding_Env.use_zfuel_name); FStar_SMTEncoding_Env.encode_non_total_function_typ = - (uu___400_16600.FStar_SMTEncoding_Env.encode_non_total_function_typ); + (uu___399_16600.FStar_SMTEncoding_Env.encode_non_total_function_typ); FStar_SMTEncoding_Env.current_module_name = - (uu___400_16600.FStar_SMTEncoding_Env.current_module_name); + (uu___399_16600.FStar_SMTEncoding_Env.current_module_name); FStar_SMTEncoding_Env.encoding_quantifier = - (uu___400_16600.FStar_SMTEncoding_Env.encoding_quantifier) + (uu___399_16600.FStar_SMTEncoding_Env.encoding_quantifier) }); (let uu____16603 = FStar_TypeChecker_Env.debug tcenv FStar_Options.Low in @@ -6371,12 +6371,12 @@ let (encode_query : let uu____16749 = let uu____16752 = FStar_Syntax_Syntax.mk_binder - (let uu___401_16755 = x in + (let uu___400_16755 = x in { FStar_Syntax_Syntax.ppname = - (uu___401_16755.FStar_Syntax_Syntax.ppname); + (uu___400_16755.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___401_16755.FStar_Syntax_Syntax.index); + (uu___400_16755.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t1 }) in diff --git a/src/ocaml-output/FStar_SMTEncoding_EncodeTerm.ml b/src/ocaml-output/FStar_SMTEncoding_EncodeTerm.ml index 3780cec1839..787ea8cdc7c 100644 --- a/src/ocaml-output/FStar_SMTEncoding_EncodeTerm.ml +++ b/src/ocaml-output/FStar_SMTEncoding_EncodeTerm.ml @@ -114,8 +114,8 @@ let (head_redex : FStar_Parser_Const.effect_GTot_lid)) || (FStar_List.existsb - (fun uu___358_367 -> - match uu___358_367 with + (fun uu___357_367 -> + match uu___357_367 with | FStar_Syntax_Syntax.TOTAL -> true | uu____370 -> false) rc.FStar_Syntax_Syntax.residual_flags) | FStar_Syntax_Syntax.Tm_fvar fv -> @@ -242,8 +242,8 @@ let (maybe_curry_app : raise_arity_mismatch uu____639 arity n_args rng) let (is_app : FStar_SMTEncoding_Term.op -> Prims.bool) = - fun uu___359_651 -> - match uu___359_651 with + fun uu___358_651 -> + match uu___358_651 with | FStar_SMTEncoding_Term.Var "ApplyTT" -> true | FStar_SMTEncoding_Term.Var "ApplyTF" -> true | uu____657 -> false @@ -1033,28 +1033,28 @@ and (encode_deeply_embedded_quantifier : fun t -> fun env -> let env1 = - let uu___363_3813 = env in + let uu___362_3813 = env in { FStar_SMTEncoding_Env.bvar_bindings = - (uu___363_3813.FStar_SMTEncoding_Env.bvar_bindings); + (uu___362_3813.FStar_SMTEncoding_Env.bvar_bindings); FStar_SMTEncoding_Env.fvar_bindings = - (uu___363_3813.FStar_SMTEncoding_Env.fvar_bindings); + (uu___362_3813.FStar_SMTEncoding_Env.fvar_bindings); FStar_SMTEncoding_Env.depth = - (uu___363_3813.FStar_SMTEncoding_Env.depth); + (uu___362_3813.FStar_SMTEncoding_Env.depth); FStar_SMTEncoding_Env.tcenv = - (uu___363_3813.FStar_SMTEncoding_Env.tcenv); + (uu___362_3813.FStar_SMTEncoding_Env.tcenv); FStar_SMTEncoding_Env.warn = - (uu___363_3813.FStar_SMTEncoding_Env.warn); + (uu___362_3813.FStar_SMTEncoding_Env.warn); FStar_SMTEncoding_Env.cache = - (uu___363_3813.FStar_SMTEncoding_Env.cache); + (uu___362_3813.FStar_SMTEncoding_Env.cache); FStar_SMTEncoding_Env.nolabels = - (uu___363_3813.FStar_SMTEncoding_Env.nolabels); + (uu___362_3813.FStar_SMTEncoding_Env.nolabels); FStar_SMTEncoding_Env.use_zfuel_name = - (uu___363_3813.FStar_SMTEncoding_Env.use_zfuel_name); + (uu___362_3813.FStar_SMTEncoding_Env.use_zfuel_name); FStar_SMTEncoding_Env.encode_non_total_function_typ = - (uu___363_3813.FStar_SMTEncoding_Env.encode_non_total_function_typ); + (uu___362_3813.FStar_SMTEncoding_Env.encode_non_total_function_typ); FStar_SMTEncoding_Env.current_module_name = - (uu___363_3813.FStar_SMTEncoding_Env.current_module_name); + (uu___362_3813.FStar_SMTEncoding_Env.current_module_name); FStar_SMTEncoding_Env.encoding_quantifier = true } in let uu____3815 = encode_term t env1 in @@ -1254,28 +1254,28 @@ and (encode_term : | FStar_Syntax_Syntax.Tm_meta (t1,FStar_Syntax_Syntax.Meta_pattern uu____4239) -> encode_term t1 - (let uu___364_4257 = env in + (let uu___363_4257 = env in { FStar_SMTEncoding_Env.bvar_bindings = - (uu___364_4257.FStar_SMTEncoding_Env.bvar_bindings); + (uu___363_4257.FStar_SMTEncoding_Env.bvar_bindings); FStar_SMTEncoding_Env.fvar_bindings = - (uu___364_4257.FStar_SMTEncoding_Env.fvar_bindings); + (uu___363_4257.FStar_SMTEncoding_Env.fvar_bindings); FStar_SMTEncoding_Env.depth = - (uu___364_4257.FStar_SMTEncoding_Env.depth); + (uu___363_4257.FStar_SMTEncoding_Env.depth); FStar_SMTEncoding_Env.tcenv = - (uu___364_4257.FStar_SMTEncoding_Env.tcenv); + (uu___363_4257.FStar_SMTEncoding_Env.tcenv); FStar_SMTEncoding_Env.warn = - (uu___364_4257.FStar_SMTEncoding_Env.warn); + (uu___363_4257.FStar_SMTEncoding_Env.warn); FStar_SMTEncoding_Env.cache = - (uu___364_4257.FStar_SMTEncoding_Env.cache); + (uu___363_4257.FStar_SMTEncoding_Env.cache); FStar_SMTEncoding_Env.nolabels = - (uu___364_4257.FStar_SMTEncoding_Env.nolabels); + (uu___363_4257.FStar_SMTEncoding_Env.nolabels); FStar_SMTEncoding_Env.use_zfuel_name = - (uu___364_4257.FStar_SMTEncoding_Env.use_zfuel_name); + (uu___363_4257.FStar_SMTEncoding_Env.use_zfuel_name); FStar_SMTEncoding_Env.encode_non_total_function_typ = - (uu___364_4257.FStar_SMTEncoding_Env.encode_non_total_function_typ); + (uu___363_4257.FStar_SMTEncoding_Env.encode_non_total_function_typ); FStar_SMTEncoding_Env.current_module_name = - (uu___364_4257.FStar_SMTEncoding_Env.current_module_name); + (uu___363_4257.FStar_SMTEncoding_Env.current_module_name); FStar_SMTEncoding_Env.encoding_quantifier = false }) | FStar_Syntax_Syntax.Tm_meta (t1,uu____4260) -> encode_term t1 env @@ -1367,94 +1367,94 @@ and (encode_term : let app = mk_Apply f vars in let uu____4443 = FStar_TypeChecker_Util.pure_or_ghost_pre_and_post - (let uu___365_4452 = + (let uu___364_4452 = env.FStar_SMTEncoding_Env.tcenv in { FStar_TypeChecker_Env.solver = - (uu___365_4452.FStar_TypeChecker_Env.solver); + (uu___364_4452.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___365_4452.FStar_TypeChecker_Env.range); + (uu___364_4452.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___365_4452.FStar_TypeChecker_Env.curmodule); + (uu___364_4452.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___365_4452.FStar_TypeChecker_Env.gamma); + (uu___364_4452.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___365_4452.FStar_TypeChecker_Env.gamma_sig); + (uu___364_4452.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___365_4452.FStar_TypeChecker_Env.gamma_cache); + (uu___364_4452.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___365_4452.FStar_TypeChecker_Env.modules); + (uu___364_4452.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___365_4452.FStar_TypeChecker_Env.expected_typ); + (uu___364_4452.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___365_4452.FStar_TypeChecker_Env.sigtab); + (uu___364_4452.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___365_4452.FStar_TypeChecker_Env.attrtab); + (uu___364_4452.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___365_4452.FStar_TypeChecker_Env.is_pattern); + (uu___364_4452.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___365_4452.FStar_TypeChecker_Env.instantiate_imp); + (uu___364_4452.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___365_4452.FStar_TypeChecker_Env.effects); + (uu___364_4452.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___365_4452.FStar_TypeChecker_Env.generalize); + (uu___364_4452.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___365_4452.FStar_TypeChecker_Env.letrecs); + (uu___364_4452.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___365_4452.FStar_TypeChecker_Env.top_level); + (uu___364_4452.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___365_4452.FStar_TypeChecker_Env.check_uvars); + (uu___364_4452.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___365_4452.FStar_TypeChecker_Env.use_eq); + (uu___364_4452.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___365_4452.FStar_TypeChecker_Env.is_iface); + (uu___364_4452.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___365_4452.FStar_TypeChecker_Env.admit); + (uu___364_4452.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___365_4452.FStar_TypeChecker_Env.lax_universes); + (uu___364_4452.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___365_4452.FStar_TypeChecker_Env.phase1); + (uu___364_4452.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___365_4452.FStar_TypeChecker_Env.failhard); + (uu___364_4452.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___365_4452.FStar_TypeChecker_Env.nosynth); + (uu___364_4452.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___365_4452.FStar_TypeChecker_Env.uvar_subtyping); + (uu___364_4452.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___365_4452.FStar_TypeChecker_Env.tc_term); + (uu___364_4452.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___365_4452.FStar_TypeChecker_Env.type_of); + (uu___364_4452.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___365_4452.FStar_TypeChecker_Env.universe_of); + (uu___364_4452.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___365_4452.FStar_TypeChecker_Env.check_type_of); + (uu___364_4452.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___365_4452.FStar_TypeChecker_Env.use_bv_sorts); + (uu___364_4452.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___365_4452.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___364_4452.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___365_4452.FStar_TypeChecker_Env.normalized_eff_names); + (uu___364_4452.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___365_4452.FStar_TypeChecker_Env.fv_delta_depths); + (uu___364_4452.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___365_4452.FStar_TypeChecker_Env.proof_ns); + (uu___364_4452.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___365_4452.FStar_TypeChecker_Env.synth_hook); + (uu___364_4452.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___365_4452.FStar_TypeChecker_Env.splice); + (uu___364_4452.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___365_4452.FStar_TypeChecker_Env.postprocess); + (uu___364_4452.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___365_4452.FStar_TypeChecker_Env.is_native_tactic); + (uu___364_4452.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___365_4452.FStar_TypeChecker_Env.identifier_info); + (uu___364_4452.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___365_4452.FStar_TypeChecker_Env.tc_hooks); + (uu___364_4452.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___365_4452.FStar_TypeChecker_Env.dsenv); + (uu___364_4452.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___365_4452.FStar_TypeChecker_Env.nbe) + (uu___364_4452.FStar_TypeChecker_Env.nbe) }) res in (match uu____4443 with @@ -3226,29 +3226,29 @@ and (encode_function_type_as_formula : match uu____9140 with | (binders,pre,post,patterns) -> let env1 = - let uu___366_9364 = env in + let uu___365_9364 = env in { FStar_SMTEncoding_Env.bvar_bindings = - (uu___366_9364.FStar_SMTEncoding_Env.bvar_bindings); + (uu___365_9364.FStar_SMTEncoding_Env.bvar_bindings); FStar_SMTEncoding_Env.fvar_bindings = - (uu___366_9364.FStar_SMTEncoding_Env.fvar_bindings); + (uu___365_9364.FStar_SMTEncoding_Env.fvar_bindings); FStar_SMTEncoding_Env.depth = - (uu___366_9364.FStar_SMTEncoding_Env.depth); + (uu___365_9364.FStar_SMTEncoding_Env.depth); FStar_SMTEncoding_Env.tcenv = - (uu___366_9364.FStar_SMTEncoding_Env.tcenv); + (uu___365_9364.FStar_SMTEncoding_Env.tcenv); FStar_SMTEncoding_Env.warn = - (uu___366_9364.FStar_SMTEncoding_Env.warn); + (uu___365_9364.FStar_SMTEncoding_Env.warn); FStar_SMTEncoding_Env.cache = - (uu___366_9364.FStar_SMTEncoding_Env.cache); + (uu___365_9364.FStar_SMTEncoding_Env.cache); FStar_SMTEncoding_Env.nolabels = - (uu___366_9364.FStar_SMTEncoding_Env.nolabels); + (uu___365_9364.FStar_SMTEncoding_Env.nolabels); FStar_SMTEncoding_Env.use_zfuel_name = true; FStar_SMTEncoding_Env.encode_non_total_function_typ = - (uu___366_9364.FStar_SMTEncoding_Env.encode_non_total_function_typ); + (uu___365_9364.FStar_SMTEncoding_Env.encode_non_total_function_typ); FStar_SMTEncoding_Env.current_module_name = - (uu___366_9364.FStar_SMTEncoding_Env.current_module_name); + (uu___365_9364.FStar_SMTEncoding_Env.current_module_name); FStar_SMTEncoding_Env.encoding_quantifier = - (uu___366_9364.FStar_SMTEncoding_Env.encoding_quantifier) + (uu___365_9364.FStar_SMTEncoding_Env.encoding_quantifier) } in let uu____9366 = encode_binders FStar_Pervasives_Native.None binders env1 in @@ -3259,29 +3259,29 @@ and (encode_function_type_as_formula : | (pats,decls') -> let post1 = FStar_Syntax_Util.unthunk_lemma_post post in let env3 = - let uu___367_9437 = env2 in + let uu___366_9437 = env2 in { FStar_SMTEncoding_Env.bvar_bindings = - (uu___367_9437.FStar_SMTEncoding_Env.bvar_bindings); + (uu___366_9437.FStar_SMTEncoding_Env.bvar_bindings); FStar_SMTEncoding_Env.fvar_bindings = - (uu___367_9437.FStar_SMTEncoding_Env.fvar_bindings); + (uu___366_9437.FStar_SMTEncoding_Env.fvar_bindings); FStar_SMTEncoding_Env.depth = - (uu___367_9437.FStar_SMTEncoding_Env.depth); + (uu___366_9437.FStar_SMTEncoding_Env.depth); FStar_SMTEncoding_Env.tcenv = - (uu___367_9437.FStar_SMTEncoding_Env.tcenv); + (uu___366_9437.FStar_SMTEncoding_Env.tcenv); FStar_SMTEncoding_Env.warn = - (uu___367_9437.FStar_SMTEncoding_Env.warn); + (uu___366_9437.FStar_SMTEncoding_Env.warn); FStar_SMTEncoding_Env.cache = - (uu___367_9437.FStar_SMTEncoding_Env.cache); + (uu___366_9437.FStar_SMTEncoding_Env.cache); FStar_SMTEncoding_Env.nolabels = true; FStar_SMTEncoding_Env.use_zfuel_name = - (uu___367_9437.FStar_SMTEncoding_Env.use_zfuel_name); + (uu___366_9437.FStar_SMTEncoding_Env.use_zfuel_name); FStar_SMTEncoding_Env.encode_non_total_function_typ = - (uu___367_9437.FStar_SMTEncoding_Env.encode_non_total_function_typ); + (uu___366_9437.FStar_SMTEncoding_Env.encode_non_total_function_typ); FStar_SMTEncoding_Env.current_module_name = - (uu___367_9437.FStar_SMTEncoding_Env.current_module_name); + (uu___366_9437.FStar_SMTEncoding_Env.current_module_name); FStar_SMTEncoding_Env.encoding_quantifier = - (uu___367_9437.FStar_SMTEncoding_Env.encoding_quantifier) + (uu___366_9437.FStar_SMTEncoding_Env.encoding_quantifier) } in let uu____9439 = let uu____9444 = FStar_Syntax_Util.unmeta pre in @@ -3326,29 +3326,29 @@ and (encode_smt_patterns : fun pats_l -> fun env -> let env1 = - let uu___368_9506 = env in + let uu___367_9506 = env in { FStar_SMTEncoding_Env.bvar_bindings = - (uu___368_9506.FStar_SMTEncoding_Env.bvar_bindings); + (uu___367_9506.FStar_SMTEncoding_Env.bvar_bindings); FStar_SMTEncoding_Env.fvar_bindings = - (uu___368_9506.FStar_SMTEncoding_Env.fvar_bindings); + (uu___367_9506.FStar_SMTEncoding_Env.fvar_bindings); FStar_SMTEncoding_Env.depth = - (uu___368_9506.FStar_SMTEncoding_Env.depth); + (uu___367_9506.FStar_SMTEncoding_Env.depth); FStar_SMTEncoding_Env.tcenv = - (uu___368_9506.FStar_SMTEncoding_Env.tcenv); + (uu___367_9506.FStar_SMTEncoding_Env.tcenv); FStar_SMTEncoding_Env.warn = - (uu___368_9506.FStar_SMTEncoding_Env.warn); + (uu___367_9506.FStar_SMTEncoding_Env.warn); FStar_SMTEncoding_Env.cache = - (uu___368_9506.FStar_SMTEncoding_Env.cache); + (uu___367_9506.FStar_SMTEncoding_Env.cache); FStar_SMTEncoding_Env.nolabels = - (uu___368_9506.FStar_SMTEncoding_Env.nolabels); + (uu___367_9506.FStar_SMTEncoding_Env.nolabels); FStar_SMTEncoding_Env.use_zfuel_name = true; FStar_SMTEncoding_Env.encode_non_total_function_typ = - (uu___368_9506.FStar_SMTEncoding_Env.encode_non_total_function_typ); + (uu___367_9506.FStar_SMTEncoding_Env.encode_non_total_function_typ); FStar_SMTEncoding_Env.current_module_name = - (uu___368_9506.FStar_SMTEncoding_Env.current_module_name); + (uu___367_9506.FStar_SMTEncoding_Env.current_module_name); FStar_SMTEncoding_Env.encoding_quantifier = - (uu___368_9506.FStar_SMTEncoding_Env.encoding_quantifier) + (uu___367_9506.FStar_SMTEncoding_Env.encoding_quantifier) } in let encode_smt_pattern t = let uu____9522 = FStar_Syntax_Util.head_and_args t in @@ -3457,12 +3457,12 @@ and (encode_formula : match uu____10031 with | (decls,args) -> let uu____10094 = - let uu___369_10095 = f args in + let uu___368_10095 = f args in { FStar_SMTEncoding_Term.tm = - (uu___369_10095.FStar_SMTEncoding_Term.tm); + (uu___368_10095.FStar_SMTEncoding_Term.tm); FStar_SMTEncoding_Term.freevars = - (uu___369_10095.FStar_SMTEncoding_Term.freevars); + (uu___368_10095.FStar_SMTEncoding_Term.freevars); FStar_SMTEncoding_Term.rng = r } in (uu____10094, decls) @@ -3472,8 +3472,8 @@ and (encode_formula : let un_op f l = let uu____10166 = FStar_List.hd l in FStar_All.pipe_left f uu____10166 in - let bin_op f uu___360_10186 = - match uu___360_10186 with + let bin_op f uu___359_10186 = + match uu___359_10186 with | t1::t2::[] -> f (t1, t2) | uu____10197 -> failwith "Impossible" in let enc_prop_c f r l = @@ -3491,12 +3491,12 @@ and (encode_formula : match uu____10238 with | (decls,phis) -> let uu____10313 = - let uu___370_10314 = f phis in + let uu___369_10314 = f phis in { FStar_SMTEncoding_Term.tm = - (uu___370_10314.FStar_SMTEncoding_Term.tm); + (uu___369_10314.FStar_SMTEncoding_Term.tm); FStar_SMTEncoding_Term.freevars = - (uu___370_10314.FStar_SMTEncoding_Term.freevars); + (uu___369_10314.FStar_SMTEncoding_Term.freevars); FStar_SMTEncoding_Term.rng = r } in (uu____10313, decls) @@ -3578,8 +3578,8 @@ and (encode_formula : in failwith uu____10671) in - let mk_imp1 r uu___361_10706 = - match uu___361_10706 with + let mk_imp1 r uu___360_10706 = + match uu___360_10706 with | (lhs,uu____10712)::(rhs,uu____10714)::[] -> let uu____10755 = encode_formula rhs env in (match uu____10755 with @@ -3596,8 +3596,8 @@ and (encode_formula : FStar_SMTEncoding_Term.mkImp (l2, l1) r in (uu____10787, (FStar_List.append decls1 decls2))))) | uu____10788 -> failwith "impossible" in - let mk_ite r uu___362_10816 = - match uu___362_10816 with + let mk_ite r uu___361_10816 = + match uu___361_10816 with | (guard,uu____10822)::(_then,uu____10824)::(_else,uu____10826)::[] -> let uu____10883 = encode_formula guard env in @@ -3763,12 +3763,12 @@ and (encode_formula : if uu____12324 then tt else - (let uu___371_12331 = tt in + (let uu___370_12331 = tt in { FStar_SMTEncoding_Term.tm = - (uu___371_12331.FStar_SMTEncoding_Term.tm); + (uu___370_12331.FStar_SMTEncoding_Term.tm); FStar_SMTEncoding_Term.freevars = - (uu___371_12331.FStar_SMTEncoding_Term.freevars); + (uu___370_12331.FStar_SMTEncoding_Term.freevars); FStar_SMTEncoding_Term.rng = (phi1.FStar_Syntax_Syntax.pos) }) @@ -3791,12 +3791,12 @@ and (encode_formula : if uu____12346 then tt else - (let uu___372_12353 = tt in + (let uu___371_12353 = tt in { FStar_SMTEncoding_Term.tm = - (uu___372_12353.FStar_SMTEncoding_Term.tm); + (uu___371_12353.FStar_SMTEncoding_Term.tm); FStar_SMTEncoding_Term.freevars = - (uu___372_12353.FStar_SMTEncoding_Term.freevars); + (uu___371_12353.FStar_SMTEncoding_Term.freevars); FStar_SMTEncoding_Term.rng = (phi1.FStar_Syntax_Syntax.pos) }) diff --git a/src/ocaml-output/FStar_SMTEncoding_Env.ml b/src/ocaml-output/FStar_SMTEncoding_Env.ml index 4f236d8ce5a..8f088abcc04 100644 --- a/src/ocaml-output/FStar_SMTEncoding_Env.ml +++ b/src/ocaml-output/FStar_SMTEncoding_Env.ml @@ -26,8 +26,8 @@ let vargs : = fun args -> FStar_List.filter - (fun uu___268_140 -> - match uu___268_140 with + (fun uu___267_140 -> + match uu___267_140 with | (FStar_Util.Inl uu____150,uu____151) -> false | uu____157 -> true) args @@ -506,8 +506,8 @@ let mk_cache_entry : let names1 = FStar_All.pipe_right t_decls1 (FStar_List.collect - (fun uu___269_3334 -> - match uu___269_3334 with + (fun uu___268_3334 -> + match uu___268_3334 with | FStar_SMTEncoding_Term.Assume a -> [a.FStar_SMTEncoding_Term.assumption_name] | uu____3341 -> [])) @@ -631,21 +631,21 @@ let (gen_term_var : (ysym, FStar_SMTEncoding_Term.Term_sort) in let uu____3683 = - let uu___270_3684 = env in + let uu___269_3684 = env in let uu____3685 = add_bvar_binding (x, y) env.bvar_bindings in { bvar_bindings = uu____3685; - fvar_bindings = (uu___270_3684.fvar_bindings); + fvar_bindings = (uu___269_3684.fvar_bindings); depth = (env.depth + (Prims.parse_int "1")); - tcenv = (uu___270_3684.tcenv); - warn = (uu___270_3684.warn); - cache = (uu___270_3684.cache); - nolabels = (uu___270_3684.nolabels); - use_zfuel_name = (uu___270_3684.use_zfuel_name); + tcenv = (uu___269_3684.tcenv); + warn = (uu___269_3684.warn); + cache = (uu___269_3684.cache); + nolabels = (uu___269_3684.nolabels); + use_zfuel_name = (uu___269_3684.use_zfuel_name); encode_non_total_function_typ = - (uu___270_3684.encode_non_total_function_typ); - current_module_name = (uu___270_3684.current_module_name); - encoding_quantifier = (uu___270_3684.encoding_quantifier) + (uu___269_3684.encode_non_total_function_typ); + current_module_name = (uu___269_3684.current_module_name); + encoding_quantifier = (uu___269_3684.encoding_quantifier) } in (ysym, y, uu____3683) @@ -663,21 +663,21 @@ let (new_term_constant : in let y = FStar_SMTEncoding_Util.mkApp (ysym, []) in let uu____3720 = - let uu___271_3721 = env in + let uu___270_3721 = env in let uu____3722 = add_bvar_binding (x, y) env.bvar_bindings in { bvar_bindings = uu____3722; - fvar_bindings = (uu___271_3721.fvar_bindings); - depth = (uu___271_3721.depth); - tcenv = (uu___271_3721.tcenv); - warn = (uu___271_3721.warn); - cache = (uu___271_3721.cache); - nolabels = (uu___271_3721.nolabels); - use_zfuel_name = (uu___271_3721.use_zfuel_name); + fvar_bindings = (uu___270_3721.fvar_bindings); + depth = (uu___270_3721.depth); + tcenv = (uu___270_3721.tcenv); + warn = (uu___270_3721.warn); + cache = (uu___270_3721.cache); + nolabels = (uu___270_3721.nolabels); + use_zfuel_name = (uu___270_3721.use_zfuel_name); encode_non_total_function_typ = - (uu___271_3721.encode_non_total_function_typ); - current_module_name = (uu___271_3721.current_module_name); - encoding_quantifier = (uu___271_3721.encoding_quantifier) + (uu___270_3721.encode_non_total_function_typ); + current_module_name = (uu___270_3721.current_module_name); + encoding_quantifier = (uu___270_3721.encoding_quantifier) } in (ysym, y, uu____3720) @@ -694,21 +694,21 @@ let (new_term_constant_from_string : let ysym = varops.mk_unique str in let y = FStar_SMTEncoding_Util.mkApp (ysym, []) in let uu____3763 = - let uu___272_3764 = env in + let uu___271_3764 = env in let uu____3765 = add_bvar_binding (x, y) env.bvar_bindings in { bvar_bindings = uu____3765; - fvar_bindings = (uu___272_3764.fvar_bindings); - depth = (uu___272_3764.depth); - tcenv = (uu___272_3764.tcenv); - warn = (uu___272_3764.warn); - cache = (uu___272_3764.cache); - nolabels = (uu___272_3764.nolabels); - use_zfuel_name = (uu___272_3764.use_zfuel_name); + fvar_bindings = (uu___271_3764.fvar_bindings); + depth = (uu___271_3764.depth); + tcenv = (uu___271_3764.tcenv); + warn = (uu___271_3764.warn); + cache = (uu___271_3764.cache); + nolabels = (uu___271_3764.nolabels); + use_zfuel_name = (uu___271_3764.use_zfuel_name); encode_non_total_function_typ = - (uu___272_3764.encode_non_total_function_typ); - current_module_name = (uu___272_3764.current_module_name); - encoding_quantifier = (uu___272_3764.encoding_quantifier) + (uu___271_3764.encode_non_total_function_typ); + current_module_name = (uu___271_3764.current_module_name); + encoding_quantifier = (uu___271_3764.encoding_quantifier) } in (ysym, y, uu____3763) @@ -717,21 +717,21 @@ let (push_term_var : fun env -> fun x -> fun t -> - let uu___273_3791 = env in + let uu___272_3791 = env in let uu____3792 = add_bvar_binding (x, t) env.bvar_bindings in { bvar_bindings = uu____3792; - fvar_bindings = (uu___273_3791.fvar_bindings); - depth = (uu___273_3791.depth); - tcenv = (uu___273_3791.tcenv); - warn = (uu___273_3791.warn); - cache = (uu___273_3791.cache); - nolabels = (uu___273_3791.nolabels); - use_zfuel_name = (uu___273_3791.use_zfuel_name); + fvar_bindings = (uu___272_3791.fvar_bindings); + depth = (uu___272_3791.depth); + tcenv = (uu___272_3791.tcenv); + warn = (uu___272_3791.warn); + cache = (uu___272_3791.cache); + nolabels = (uu___272_3791.nolabels); + use_zfuel_name = (uu___272_3791.use_zfuel_name); encode_non_total_function_typ = - (uu___273_3791.encode_non_total_function_typ); - current_module_name = (uu___273_3791.current_module_name); - encoding_quantifier = (uu___273_3791.encoding_quantifier) + (uu___272_3791.encode_non_total_function_typ); + current_module_name = (uu___272_3791.current_module_name); + encoding_quantifier = (uu___272_3791.encoding_quantifier) } let (lookup_term_var : @@ -793,21 +793,21 @@ let (new_term_constant_and_tok_from_lid : FStar_Pervasives_Native.None in let uu____3927 = - let uu___274_3928 = env in + let uu___273_3928 = env in let uu____3929 = add_fvar_binding fvb env.fvar_bindings in { - bvar_bindings = (uu___274_3928.bvar_bindings); + bvar_bindings = (uu___273_3928.bvar_bindings); fvar_bindings = uu____3929; - depth = (uu___274_3928.depth); - tcenv = (uu___274_3928.tcenv); - warn = (uu___274_3928.warn); - cache = (uu___274_3928.cache); - nolabels = (uu___274_3928.nolabels); - use_zfuel_name = (uu___274_3928.use_zfuel_name); + depth = (uu___273_3928.depth); + tcenv = (uu___273_3928.tcenv); + warn = (uu___273_3928.warn); + cache = (uu___273_3928.cache); + nolabels = (uu___273_3928.nolabels); + use_zfuel_name = (uu___273_3928.use_zfuel_name); encode_non_total_function_typ = - (uu___274_3928.encode_non_total_function_typ); - current_module_name = (uu___274_3928.current_module_name); - encoding_quantifier = (uu___274_3928.encoding_quantifier) + (uu___273_3928.encode_non_total_function_typ); + current_module_name = (uu___273_3928.current_module_name); + encoding_quantifier = (uu___273_3928.encoding_quantifier) } in (fname, ftok_name, uu____3927) @@ -837,21 +837,21 @@ let (push_free_var : fun ftok -> let fvb = mk_fvb x fname arity ftok FStar_Pervasives_Native.None in - let uu___275_3989 = env in + let uu___274_3989 = env in let uu____3990 = add_fvar_binding fvb env.fvar_bindings in { - bvar_bindings = (uu___275_3989.bvar_bindings); + bvar_bindings = (uu___274_3989.bvar_bindings); fvar_bindings = uu____3990; - depth = (uu___275_3989.depth); - tcenv = (uu___275_3989.tcenv); - warn = (uu___275_3989.warn); - cache = (uu___275_3989.cache); - nolabels = (uu___275_3989.nolabels); - use_zfuel_name = (uu___275_3989.use_zfuel_name); + depth = (uu___274_3989.depth); + tcenv = (uu___274_3989.tcenv); + warn = (uu___274_3989.warn); + cache = (uu___274_3989.cache); + nolabels = (uu___274_3989.nolabels); + use_zfuel_name = (uu___274_3989.use_zfuel_name); encode_non_total_function_typ = - (uu___275_3989.encode_non_total_function_typ); - current_module_name = (uu___275_3989.current_module_name); - encoding_quantifier = (uu___275_3989.encoding_quantifier) + (uu___274_3989.encode_non_total_function_typ); + current_module_name = (uu___274_3989.current_module_name); + encoding_quantifier = (uu___274_3989.encoding_quantifier) } let (push_zfuel_name : env_t -> FStar_Ident.lident -> Prims.string -> env_t) @@ -871,21 +871,21 @@ let (push_zfuel_name : env_t -> FStar_Ident.lident -> Prims.string -> env_t) mk_fvb x fvb.smt_id fvb.smt_arity fvb.smt_token (FStar_Pervasives_Native.Some t3) in - let uu___276_4033 = env in + let uu___275_4033 = env in let uu____4034 = add_fvar_binding fvb1 env.fvar_bindings in { - bvar_bindings = (uu___276_4033.bvar_bindings); + bvar_bindings = (uu___275_4033.bvar_bindings); fvar_bindings = uu____4034; - depth = (uu___276_4033.depth); - tcenv = (uu___276_4033.tcenv); - warn = (uu___276_4033.warn); - cache = (uu___276_4033.cache); - nolabels = (uu___276_4033.nolabels); - use_zfuel_name = (uu___276_4033.use_zfuel_name); + depth = (uu___275_4033.depth); + tcenv = (uu___275_4033.tcenv); + warn = (uu___275_4033.warn); + cache = (uu___275_4033.cache); + nolabels = (uu___275_4033.nolabels); + use_zfuel_name = (uu___275_4033.use_zfuel_name); encode_non_total_function_typ = - (uu___276_4033.encode_non_total_function_typ); - current_module_name = (uu___276_4033.current_module_name); - encoding_quantifier = (uu___276_4033.encoding_quantifier) + (uu___275_4033.encode_non_total_function_typ); + current_module_name = (uu___275_4033.current_module_name); + encoding_quantifier = (uu___275_4033.encoding_quantifier) } let (try_lookup_free_var : diff --git a/src/ocaml-output/FStar_SMTEncoding_ErrorReporting.ml b/src/ocaml-output/FStar_SMTEncoding_ErrorReporting.ml index 34a0d869dd1..035367f48dd 100644 --- a/src/ocaml-output/FStar_SMTEncoding_ErrorReporting.ml +++ b/src/ocaml-output/FStar_SMTEncoding_ErrorReporting.ml @@ -153,7 +153,7 @@ let (label_goals : let fallback msg = aux default_msg ropt post_name_opt labels arg in (try - (fun uu___272_831 -> + (fun uu___271_831 -> match () with | () -> (match arg.FStar_SMTEncoding_Term.tm with diff --git a/src/ocaml-output/FStar_SMTEncoding_Solver.ml b/src/ocaml-output/FStar_SMTEncoding_Solver.ml index 10c934a567a..0c3fc4ea836 100644 --- a/src/ocaml-output/FStar_SMTEncoding_Solver.ml +++ b/src/ocaml-output/FStar_SMTEncoding_Solver.ml @@ -7,8 +7,8 @@ let z3_result_as_replay_result : ('Auu____13,('Auu____14,'Auu____15) FStar_Pervasives_Native.tuple2) FStar_Util.either -> ('Auu____13,'Auu____14) FStar_Util.either = - fun uu___375_32 -> - match uu___375_32 with + fun uu___374_32 -> + match uu___374_32 with | FStar_Util.Inl l -> FStar_Util.Inl l | FStar_Util.Inr (r,uu____47) -> FStar_Util.Inr r @@ -483,8 +483,8 @@ let (get_hint_for : match uu____1607 with | FStar_Pervasives_Native.Some hints -> FStar_Util.find_map hints - (fun uu___376_1640 -> - match uu___376_1640 with + (fun uu___375_1640 -> + match uu___375_1640 with | FStar_Pervasives_Native.Some hint when (hint.FStar_Util.hint_name = qname) && (hint.FStar_Util.hint_index = qindex) @@ -609,23 +609,23 @@ let (report_errors : query_settings -> unit) = if uu____2001 then let initial_fuel1 = - let uu___377_2010 = settings in + let uu___376_2010 = settings in let uu____2011 = FStar_Options.initial_fuel () in let uu____2013 = FStar_Options.initial_ifuel () in { - query_env = (uu___377_2010.query_env); - query_decl = (uu___377_2010.query_decl); - query_name = (uu___377_2010.query_name); - query_index = (uu___377_2010.query_index); - query_range = (uu___377_2010.query_range); + query_env = (uu___376_2010.query_env); + query_decl = (uu___376_2010.query_decl); + query_name = (uu___376_2010.query_name); + query_index = (uu___376_2010.query_index); + query_range = (uu___376_2010.query_range); query_fuel = uu____2011; query_ifuel = uu____2013; - query_rlimit = (uu___377_2010.query_rlimit); + query_rlimit = (uu___376_2010.query_rlimit); query_hint = FStar_Pervasives_Native.None; - query_errors = (uu___377_2010.query_errors); - query_all_labels = (uu___377_2010.query_all_labels); - query_suffix = (uu___377_2010.query_suffix); - query_hash = (uu___377_2010.query_hash) + query_errors = (uu___376_2010.query_errors); + query_all_labels = (uu___376_2010.query_all_labels); + query_suffix = (uu___376_2010.query_suffix); + query_hash = (uu___376_2010.query_hash) } in let ask_z3 label_assumptions = let res = FStar_Util.mk_ref FStar_Pervasives_Native.None in @@ -912,22 +912,22 @@ let (ask_and_report_errors : FStar_Util.query_elapsed_time = uu____2763; FStar_Util.hash = h;_} -> - [(let uu___378_2780 = default_settings in + [(let uu___377_2780 = default_settings in { - query_env = (uu___378_2780.query_env); - query_decl = (uu___378_2780.query_decl); - query_name = (uu___378_2780.query_name); - query_index = (uu___378_2780.query_index); - query_range = (uu___378_2780.query_range); + query_env = (uu___377_2780.query_env); + query_decl = (uu___377_2780.query_decl); + query_name = (uu___377_2780.query_name); + query_index = (uu___377_2780.query_index); + query_range = (uu___377_2780.query_range); query_fuel = i; query_ifuel = j; - query_rlimit = (uu___378_2780.query_rlimit); + query_rlimit = (uu___377_2780.query_rlimit); query_hint = (FStar_Pervasives_Native.Some core); - query_errors = (uu___378_2780.query_errors); + query_errors = (uu___377_2780.query_errors); query_all_labels = - (uu___378_2780.query_all_labels); - query_suffix = (uu___378_2780.query_suffix); - query_hash = (uu___378_2780.query_hash) + (uu___377_2780.query_all_labels); + query_suffix = (uu___377_2780.query_suffix); + query_hash = (uu___377_2780.query_hash) })] | uu____2784 -> [] in let initial_fuel_max_ifuel = @@ -938,22 +938,22 @@ let (ask_and_report_errors : if uu____2790 then let uu____2799 = - let uu___379_2800 = default_settings in + let uu___378_2800 = default_settings in let uu____2801 = FStar_Options.max_ifuel () in { - query_env = (uu___379_2800.query_env); - query_decl = (uu___379_2800.query_decl); - query_name = (uu___379_2800.query_name); - query_index = (uu___379_2800.query_index); - query_range = (uu___379_2800.query_range); - query_fuel = (uu___379_2800.query_fuel); + query_env = (uu___378_2800.query_env); + query_decl = (uu___378_2800.query_decl); + query_name = (uu___378_2800.query_name); + query_index = (uu___378_2800.query_index); + query_range = (uu___378_2800.query_range); + query_fuel = (uu___378_2800.query_fuel); query_ifuel = uu____2801; - query_rlimit = (uu___379_2800.query_rlimit); - query_hint = (uu___379_2800.query_hint); - query_errors = (uu___379_2800.query_errors); - query_all_labels = (uu___379_2800.query_all_labels); - query_suffix = (uu___379_2800.query_suffix); - query_hash = (uu___379_2800.query_hash) + query_rlimit = (uu___378_2800.query_rlimit); + query_hint = (uu___378_2800.query_hint); + query_errors = (uu___378_2800.query_errors); + query_all_labels = (uu___378_2800.query_all_labels); + query_suffix = (uu___378_2800.query_suffix); + query_hash = (uu___378_2800.query_hash) } in [uu____2799] else [] in @@ -967,25 +967,25 @@ let (ask_and_report_errors : if uu____2808 then let uu____2820 = - let uu___380_2821 = default_settings in + let uu___379_2821 = default_settings in let uu____2822 = let uu____2824 = FStar_Options.max_fuel () in uu____2824 / (Prims.parse_int "2") in let uu____2827 = FStar_Options.max_ifuel () in { - query_env = (uu___380_2821.query_env); - query_decl = (uu___380_2821.query_decl); - query_name = (uu___380_2821.query_name); - query_index = (uu___380_2821.query_index); - query_range = (uu___380_2821.query_range); + query_env = (uu___379_2821.query_env); + query_decl = (uu___379_2821.query_decl); + query_name = (uu___379_2821.query_name); + query_index = (uu___379_2821.query_index); + query_range = (uu___379_2821.query_range); query_fuel = uu____2822; query_ifuel = uu____2827; - query_rlimit = (uu___380_2821.query_rlimit); - query_hint = (uu___380_2821.query_hint); - query_errors = (uu___380_2821.query_errors); - query_all_labels = (uu___380_2821.query_all_labels); - query_suffix = (uu___380_2821.query_suffix); - query_hash = (uu___380_2821.query_hash) + query_rlimit = (uu___379_2821.query_rlimit); + query_hint = (uu___379_2821.query_hint); + query_errors = (uu___379_2821.query_errors); + query_all_labels = (uu___379_2821.query_all_labels); + query_suffix = (uu___379_2821.query_suffix); + query_hash = (uu___379_2821.query_hash) } in [uu____2820] else [] in @@ -1001,23 +1001,23 @@ let (ask_and_report_errors : if uu____2834 then let uu____2853 = - let uu___381_2854 = default_settings in + let uu___380_2854 = default_settings in let uu____2855 = FStar_Options.max_fuel () in let uu____2857 = FStar_Options.max_ifuel () in { - query_env = (uu___381_2854.query_env); - query_decl = (uu___381_2854.query_decl); - query_name = (uu___381_2854.query_name); - query_index = (uu___381_2854.query_index); - query_range = (uu___381_2854.query_range); + query_env = (uu___380_2854.query_env); + query_decl = (uu___380_2854.query_decl); + query_name = (uu___380_2854.query_name); + query_index = (uu___380_2854.query_index); + query_range = (uu___380_2854.query_range); query_fuel = uu____2855; query_ifuel = uu____2857; - query_rlimit = (uu___381_2854.query_rlimit); - query_hint = (uu___381_2854.query_hint); - query_errors = (uu___381_2854.query_errors); - query_all_labels = (uu___381_2854.query_all_labels); - query_suffix = (uu___381_2854.query_suffix); - query_hash = (uu___381_2854.query_hash) + query_rlimit = (uu___380_2854.query_rlimit); + query_hint = (uu___380_2854.query_hint); + query_errors = (uu___380_2854.query_errors); + query_all_labels = (uu___380_2854.query_all_labels); + query_suffix = (uu___380_2854.query_suffix); + query_hash = (uu___380_2854.query_hash) } in [uu____2853] else [] in @@ -1029,22 +1029,22 @@ let (ask_and_report_errors : if uu____2864 then let uu____2873 = - let uu___382_2874 = default_settings in + let uu___381_2874 = default_settings in let uu____2875 = FStar_Options.min_fuel () in { - query_env = (uu___382_2874.query_env); - query_decl = (uu___382_2874.query_decl); - query_name = (uu___382_2874.query_name); - query_index = (uu___382_2874.query_index); - query_range = (uu___382_2874.query_range); + query_env = (uu___381_2874.query_env); + query_decl = (uu___381_2874.query_decl); + query_name = (uu___381_2874.query_name); + query_index = (uu___381_2874.query_index); + query_range = (uu___381_2874.query_range); query_fuel = uu____2875; query_ifuel = (Prims.parse_int "1"); - query_rlimit = (uu___382_2874.query_rlimit); - query_hint = (uu___382_2874.query_hint); - query_errors = (uu___382_2874.query_errors); - query_all_labels = (uu___382_2874.query_all_labels); - query_suffix = (uu___382_2874.query_suffix); - query_hash = (uu___382_2874.query_hash) + query_rlimit = (uu___381_2874.query_rlimit); + query_hint = (uu___381_2874.query_hint); + query_errors = (uu___381_2874.query_errors); + query_all_labels = (uu___381_2874.query_all_labels); + query_suffix = (uu___381_2874.query_suffix); + query_hash = (uu___381_2874.query_hash) } in [uu____2873] else [] in @@ -1075,21 +1075,21 @@ let (ask_and_report_errors : let check_all_configs configs = let report1 errs = report_errors - (let uu___383_2934 = default_settings in + (let uu___382_2934 = default_settings in { - query_env = (uu___383_2934.query_env); - query_decl = (uu___383_2934.query_decl); - query_name = (uu___383_2934.query_name); - query_index = (uu___383_2934.query_index); - query_range = (uu___383_2934.query_range); - query_fuel = (uu___383_2934.query_fuel); - query_ifuel = (uu___383_2934.query_ifuel); - query_rlimit = (uu___383_2934.query_rlimit); - query_hint = (uu___383_2934.query_hint); + query_env = (uu___382_2934.query_env); + query_decl = (uu___382_2934.query_decl); + query_name = (uu___382_2934.query_name); + query_index = (uu___382_2934.query_index); + query_range = (uu___382_2934.query_range); + query_fuel = (uu___382_2934.query_fuel); + query_ifuel = (uu___382_2934.query_ifuel); + query_rlimit = (uu___382_2934.query_rlimit); + query_hint = (uu___382_2934.query_hint); query_errors = errs; - query_all_labels = (uu___383_2934.query_all_labels); - query_suffix = (uu___383_2934.query_suffix); - query_hash = (uu___383_2934.query_hash) + query_all_labels = (uu___382_2934.query_all_labels); + query_suffix = (uu___382_2934.query_suffix); + query_hash = (uu___382_2934.query_hash) }) in fold_queries configs check_one_config process_result diff --git a/src/ocaml-output/FStar_SMTEncoding_Term.ml b/src/ocaml-output/FStar_SMTEncoding_Term.ml index 8dd5f181c91..b0106c3ef7a 100644 --- a/src/ocaml-output/FStar_SMTEncoding_Term.ml +++ b/src/ocaml-output/FStar_SMTEncoding_Term.ml @@ -1186,7 +1186,7 @@ let (abstr : fv Prims.list -> term -> term) = fun fvs -> fun t -> let nvars = FStar_List.length fvs in - let index_of fv = + let index_of1 fv = let uu____4355 = FStar_Util.try_find_index (fv_eq fv) fvs in match uu____4355 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None @@ -1203,7 +1203,7 @@ let (abstr : fv Prims.list -> term -> term) = | Integer uu____4457 -> t1 | BoundV uu____4459 -> t1 | FreeV x -> - let uu____4467 = index_of x in + let uu____4467 = index_of1 x in (match uu____4467 with | FStar_Pervasives_Native.None -> t1 | FStar_Pervasives_Native.Some i -> diff --git a/src/ocaml-output/FStar_Syntax_DsEnv.ml b/src/ocaml-output/FStar_Syntax_DsEnv.ml index 0eafc2ee0c7..9175a00e9c9 100644 --- a/src/ocaml-output/FStar_Syntax_DsEnv.ml +++ b/src/ocaml-output/FStar_Syntax_DsEnv.ml @@ -379,75 +379,75 @@ let (__proj__Eff_name__item___0 : let (set_iface : env -> Prims.bool -> env) = fun env -> fun b -> - let uu___204_2132 = env in + let uu___203_2132 = env in { - curmodule = (uu___204_2132.curmodule); - curmonad = (uu___204_2132.curmonad); - modules = (uu___204_2132.modules); - scope_mods = (uu___204_2132.scope_mods); - exported_ids = (uu___204_2132.exported_ids); - trans_exported_ids = (uu___204_2132.trans_exported_ids); - includes = (uu___204_2132.includes); - sigaccum = (uu___204_2132.sigaccum); - sigmap = (uu___204_2132.sigmap); + curmodule = (uu___203_2132.curmodule); + curmonad = (uu___203_2132.curmonad); + modules = (uu___203_2132.modules); + scope_mods = (uu___203_2132.scope_mods); + exported_ids = (uu___203_2132.exported_ids); + trans_exported_ids = (uu___203_2132.trans_exported_ids); + includes = (uu___203_2132.includes); + sigaccum = (uu___203_2132.sigaccum); + sigmap = (uu___203_2132.sigmap); iface = b; - admitted_iface = (uu___204_2132.admitted_iface); - expect_typ = (uu___204_2132.expect_typ); - docs = (uu___204_2132.docs); - remaining_iface_decls = (uu___204_2132.remaining_iface_decls); - syntax_only = (uu___204_2132.syntax_only); - ds_hooks = (uu___204_2132.ds_hooks); - dep_graph = (uu___204_2132.dep_graph) + admitted_iface = (uu___203_2132.admitted_iface); + expect_typ = (uu___203_2132.expect_typ); + docs = (uu___203_2132.docs); + remaining_iface_decls = (uu___203_2132.remaining_iface_decls); + syntax_only = (uu___203_2132.syntax_only); + ds_hooks = (uu___203_2132.ds_hooks); + dep_graph = (uu___203_2132.dep_graph) } let (iface : env -> Prims.bool) = fun e -> e.iface let (set_admitted_iface : env -> Prims.bool -> env) = fun e -> fun b -> - let uu___205_2153 = e in + let uu___204_2153 = e in { - curmodule = (uu___205_2153.curmodule); - curmonad = (uu___205_2153.curmonad); - modules = (uu___205_2153.modules); - scope_mods = (uu___205_2153.scope_mods); - exported_ids = (uu___205_2153.exported_ids); - trans_exported_ids = (uu___205_2153.trans_exported_ids); - includes = (uu___205_2153.includes); - sigaccum = (uu___205_2153.sigaccum); - sigmap = (uu___205_2153.sigmap); - iface = (uu___205_2153.iface); + curmodule = (uu___204_2153.curmodule); + curmonad = (uu___204_2153.curmonad); + modules = (uu___204_2153.modules); + scope_mods = (uu___204_2153.scope_mods); + exported_ids = (uu___204_2153.exported_ids); + trans_exported_ids = (uu___204_2153.trans_exported_ids); + includes = (uu___204_2153.includes); + sigaccum = (uu___204_2153.sigaccum); + sigmap = (uu___204_2153.sigmap); + iface = (uu___204_2153.iface); admitted_iface = b; - expect_typ = (uu___205_2153.expect_typ); - docs = (uu___205_2153.docs); - remaining_iface_decls = (uu___205_2153.remaining_iface_decls); - syntax_only = (uu___205_2153.syntax_only); - ds_hooks = (uu___205_2153.ds_hooks); - dep_graph = (uu___205_2153.dep_graph) + expect_typ = (uu___204_2153.expect_typ); + docs = (uu___204_2153.docs); + remaining_iface_decls = (uu___204_2153.remaining_iface_decls); + syntax_only = (uu___204_2153.syntax_only); + ds_hooks = (uu___204_2153.ds_hooks); + dep_graph = (uu___204_2153.dep_graph) } let (admitted_iface : env -> Prims.bool) = fun e -> e.admitted_iface let (set_expect_typ : env -> Prims.bool -> env) = fun e -> fun b -> - let uu___206_2174 = e in + let uu___205_2174 = e in { - curmodule = (uu___206_2174.curmodule); - curmonad = (uu___206_2174.curmonad); - modules = (uu___206_2174.modules); - scope_mods = (uu___206_2174.scope_mods); - exported_ids = (uu___206_2174.exported_ids); - trans_exported_ids = (uu___206_2174.trans_exported_ids); - includes = (uu___206_2174.includes); - sigaccum = (uu___206_2174.sigaccum); - sigmap = (uu___206_2174.sigmap); - iface = (uu___206_2174.iface); - admitted_iface = (uu___206_2174.admitted_iface); + curmodule = (uu___205_2174.curmodule); + curmonad = (uu___205_2174.curmonad); + modules = (uu___205_2174.modules); + scope_mods = (uu___205_2174.scope_mods); + exported_ids = (uu___205_2174.exported_ids); + trans_exported_ids = (uu___205_2174.trans_exported_ids); + includes = (uu___205_2174.includes); + sigaccum = (uu___205_2174.sigaccum); + sigmap = (uu___205_2174.sigmap); + iface = (uu___205_2174.iface); + admitted_iface = (uu___205_2174.admitted_iface); expect_typ = b; - docs = (uu___206_2174.docs); - remaining_iface_decls = (uu___206_2174.remaining_iface_decls); - syntax_only = (uu___206_2174.syntax_only); - ds_hooks = (uu___206_2174.ds_hooks); - dep_graph = (uu___206_2174.dep_graph) + docs = (uu___205_2174.docs); + remaining_iface_decls = (uu___205_2174.remaining_iface_decls); + syntax_only = (uu___205_2174.syntax_only); + ds_hooks = (uu___205_2174.ds_hooks); + dep_graph = (uu___205_2174.dep_graph) } let (expect_typ : env -> Prims.bool) = fun e -> e.expect_typ @@ -476,8 +476,8 @@ let (open_modules : let (open_modules_and_namespaces : env -> FStar_Ident.lident Prims.list) = fun env -> FStar_List.filter_map - (fun uu___171_2359 -> - match uu___171_2359 with + (fun uu___170_2359 -> + match uu___170_2359 with | Open_module_or_namespace (lid,_info) -> FStar_Pervasives_Native.Some lid | uu____2364 -> FStar_Pervasives_Native.None) env.scope_mods @@ -485,25 +485,25 @@ let (open_modules_and_namespaces : env -> FStar_Ident.lident Prims.list) = let (set_current_module : env -> FStar_Ident.lident -> env) = fun e -> fun l -> - let uu___207_2376 = e in + let uu___206_2376 = e in { curmodule = (FStar_Pervasives_Native.Some l); - curmonad = (uu___207_2376.curmonad); - modules = (uu___207_2376.modules); - scope_mods = (uu___207_2376.scope_mods); - exported_ids = (uu___207_2376.exported_ids); - trans_exported_ids = (uu___207_2376.trans_exported_ids); - includes = (uu___207_2376.includes); - sigaccum = (uu___207_2376.sigaccum); - sigmap = (uu___207_2376.sigmap); - iface = (uu___207_2376.iface); - admitted_iface = (uu___207_2376.admitted_iface); - expect_typ = (uu___207_2376.expect_typ); - docs = (uu___207_2376.docs); - remaining_iface_decls = (uu___207_2376.remaining_iface_decls); - syntax_only = (uu___207_2376.syntax_only); - ds_hooks = (uu___207_2376.ds_hooks); - dep_graph = (uu___207_2376.dep_graph) + curmonad = (uu___206_2376.curmonad); + modules = (uu___206_2376.modules); + scope_mods = (uu___206_2376.scope_mods); + exported_ids = (uu___206_2376.exported_ids); + trans_exported_ids = (uu___206_2376.trans_exported_ids); + includes = (uu___206_2376.includes); + sigaccum = (uu___206_2376.sigaccum); + sigmap = (uu___206_2376.sigmap); + iface = (uu___206_2376.iface); + admitted_iface = (uu___206_2376.admitted_iface); + expect_typ = (uu___206_2376.expect_typ); + docs = (uu___206_2376.docs); + remaining_iface_decls = (uu___206_2376.remaining_iface_decls); + syntax_only = (uu___206_2376.syntax_only); + ds_hooks = (uu___206_2376.ds_hooks); + dep_graph = (uu___206_2376.dep_graph) } let (current_module : env -> FStar_Ident.lident) = @@ -545,25 +545,25 @@ let (set_iface_decls : in match uu____2494 with | (uu____2538,rest) -> - let uu___208_2572 = env in + let uu___207_2572 = env in { - curmodule = (uu___208_2572.curmodule); - curmonad = (uu___208_2572.curmonad); - modules = (uu___208_2572.modules); - scope_mods = (uu___208_2572.scope_mods); - exported_ids = (uu___208_2572.exported_ids); - trans_exported_ids = (uu___208_2572.trans_exported_ids); - includes = (uu___208_2572.includes); - sigaccum = (uu___208_2572.sigaccum); - sigmap = (uu___208_2572.sigmap); - iface = (uu___208_2572.iface); - admitted_iface = (uu___208_2572.admitted_iface); - expect_typ = (uu___208_2572.expect_typ); - docs = (uu___208_2572.docs); + curmodule = (uu___207_2572.curmodule); + curmonad = (uu___207_2572.curmonad); + modules = (uu___207_2572.modules); + scope_mods = (uu___207_2572.scope_mods); + exported_ids = (uu___207_2572.exported_ids); + trans_exported_ids = (uu___207_2572.trans_exported_ids); + includes = (uu___207_2572.includes); + sigaccum = (uu___207_2572.sigaccum); + sigmap = (uu___207_2572.sigmap); + iface = (uu___207_2572.iface); + admitted_iface = (uu___207_2572.admitted_iface); + expect_typ = (uu___207_2572.expect_typ); + docs = (uu___207_2572.docs); remaining_iface_decls = ((l, ds) :: rest); - syntax_only = (uu___208_2572.syntax_only); - ds_hooks = (uu___208_2572.ds_hooks); - dep_graph = (uu___208_2572.dep_graph) + syntax_only = (uu___207_2572.syntax_only); + ds_hooks = (uu___207_2572.ds_hooks); + dep_graph = (uu___207_2572.dep_graph) } let (qual : FStar_Ident.lident -> FStar_Ident.ident -> FStar_Ident.lident) = @@ -583,50 +583,50 @@ let (syntax_only : env -> Prims.bool) = fun env -> env.syntax_only let (set_syntax_only : env -> Prims.bool -> env) = fun env -> fun b -> - let uu___209_2625 = env in + let uu___208_2625 = env in { - curmodule = (uu___209_2625.curmodule); - curmonad = (uu___209_2625.curmonad); - modules = (uu___209_2625.modules); - scope_mods = (uu___209_2625.scope_mods); - exported_ids = (uu___209_2625.exported_ids); - trans_exported_ids = (uu___209_2625.trans_exported_ids); - includes = (uu___209_2625.includes); - sigaccum = (uu___209_2625.sigaccum); - sigmap = (uu___209_2625.sigmap); - iface = (uu___209_2625.iface); - admitted_iface = (uu___209_2625.admitted_iface); - expect_typ = (uu___209_2625.expect_typ); - docs = (uu___209_2625.docs); - remaining_iface_decls = (uu___209_2625.remaining_iface_decls); + curmodule = (uu___208_2625.curmodule); + curmonad = (uu___208_2625.curmonad); + modules = (uu___208_2625.modules); + scope_mods = (uu___208_2625.scope_mods); + exported_ids = (uu___208_2625.exported_ids); + trans_exported_ids = (uu___208_2625.trans_exported_ids); + includes = (uu___208_2625.includes); + sigaccum = (uu___208_2625.sigaccum); + sigmap = (uu___208_2625.sigmap); + iface = (uu___208_2625.iface); + admitted_iface = (uu___208_2625.admitted_iface); + expect_typ = (uu___208_2625.expect_typ); + docs = (uu___208_2625.docs); + remaining_iface_decls = (uu___208_2625.remaining_iface_decls); syntax_only = b; - ds_hooks = (uu___209_2625.ds_hooks); - dep_graph = (uu___209_2625.dep_graph) + ds_hooks = (uu___208_2625.ds_hooks); + dep_graph = (uu___208_2625.dep_graph) } let (ds_hooks : env -> dsenv_hooks) = fun env -> env.ds_hooks let (set_ds_hooks : env -> dsenv_hooks -> env) = fun env -> fun hooks -> - let uu___210_2643 = env in + let uu___209_2643 = env in { - curmodule = (uu___210_2643.curmodule); - curmonad = (uu___210_2643.curmonad); - modules = (uu___210_2643.modules); - scope_mods = (uu___210_2643.scope_mods); - exported_ids = (uu___210_2643.exported_ids); - trans_exported_ids = (uu___210_2643.trans_exported_ids); - includes = (uu___210_2643.includes); - sigaccum = (uu___210_2643.sigaccum); - sigmap = (uu___210_2643.sigmap); - iface = (uu___210_2643.iface); - admitted_iface = (uu___210_2643.admitted_iface); - expect_typ = (uu___210_2643.expect_typ); - docs = (uu___210_2643.docs); - remaining_iface_decls = (uu___210_2643.remaining_iface_decls); - syntax_only = (uu___210_2643.syntax_only); + curmodule = (uu___209_2643.curmodule); + curmonad = (uu___209_2643.curmonad); + modules = (uu___209_2643.modules); + scope_mods = (uu___209_2643.scope_mods); + exported_ids = (uu___209_2643.exported_ids); + trans_exported_ids = (uu___209_2643.trans_exported_ids); + includes = (uu___209_2643.includes); + sigaccum = (uu___209_2643.sigaccum); + sigmap = (uu___209_2643.sigmap); + iface = (uu___209_2643.iface); + admitted_iface = (uu___209_2643.admitted_iface); + expect_typ = (uu___209_2643.expect_typ); + docs = (uu___209_2643.docs); + remaining_iface_decls = (uu___209_2643.remaining_iface_decls); + syntax_only = (uu___209_2643.syntax_only); ds_hooks = hooks; - dep_graph = (uu___210_2643.dep_graph) + dep_graph = (uu___209_2643.dep_graph) } let new_sigmap : 'Auu____2649 . unit -> 'Auu____2649 FStar_Util.smap = @@ -662,24 +662,24 @@ let (dep_graph : env -> FStar_Parser_Dep.deps) = fun env -> env.dep_graph let (set_dep_graph : env -> FStar_Parser_Dep.deps -> env) = fun env -> fun ds -> - let uu___211_2732 = env in + let uu___210_2732 = env in { - curmodule = (uu___211_2732.curmodule); - curmonad = (uu___211_2732.curmonad); - modules = (uu___211_2732.modules); - scope_mods = (uu___211_2732.scope_mods); - exported_ids = (uu___211_2732.exported_ids); - trans_exported_ids = (uu___211_2732.trans_exported_ids); - includes = (uu___211_2732.includes); - sigaccum = (uu___211_2732.sigaccum); - sigmap = (uu___211_2732.sigmap); - iface = (uu___211_2732.iface); - admitted_iface = (uu___211_2732.admitted_iface); - expect_typ = (uu___211_2732.expect_typ); - docs = (uu___211_2732.docs); - remaining_iface_decls = (uu___211_2732.remaining_iface_decls); - syntax_only = (uu___211_2732.syntax_only); - ds_hooks = (uu___211_2732.ds_hooks); + curmodule = (uu___210_2732.curmodule); + curmonad = (uu___210_2732.curmonad); + modules = (uu___210_2732.modules); + scope_mods = (uu___210_2732.scope_mods); + exported_ids = (uu___210_2732.exported_ids); + trans_exported_ids = (uu___210_2732.trans_exported_ids); + includes = (uu___210_2732.includes); + sigaccum = (uu___210_2732.sigaccum); + sigmap = (uu___210_2732.sigmap); + iface = (uu___210_2732.iface); + admitted_iface = (uu___210_2732.admitted_iface); + expect_typ = (uu___210_2732.expect_typ); + docs = (uu___210_2732.docs); + remaining_iface_decls = (uu___210_2732.remaining_iface_decls); + syntax_only = (uu___210_2732.syntax_only); + ds_hooks = (uu___210_2732.ds_hooks); dep_graph = ds } @@ -701,16 +701,16 @@ let (set_bv_range : fun bv -> fun r -> let id1 = - let uu___212_2780 = bv.FStar_Syntax_Syntax.ppname in + let uu___211_2780 = bv.FStar_Syntax_Syntax.ppname in { - FStar_Ident.idText = (uu___212_2780.FStar_Ident.idText); + FStar_Ident.idText = (uu___211_2780.FStar_Ident.idText); FStar_Ident.idRange = r } in - let uu___213_2781 = bv in + let uu___212_2781 = bv in { FStar_Syntax_Syntax.ppname = id1; - FStar_Syntax_Syntax.index = (uu___213_2781.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = (uu___213_2781.FStar_Syntax_Syntax.sort) + FStar_Syntax_Syntax.index = (uu___212_2781.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = (uu___212_2781.FStar_Syntax_Syntax.sort) } let (bv_to_name : @@ -770,8 +770,8 @@ let option_of_cont : 'a cont_t -> 'a FStar_Pervasives_Native.option = fun k_ignore -> - fun uu___172_3045 -> - match uu___172_3045 with + fun uu___171_3045 -> + match uu___171_3045 with | Cont_ok a -> FStar_Pervasives_Native.Some a | Cont_fail -> FStar_Pervasives_Native.None | Cont_ignore -> k_ignore () @@ -827,8 +827,8 @@ let (get_trans_exported_id_set : = fun e -> fun mname -> FStar_Util.smap_try_find e.trans_exported_ids mname let (string_of_exported_id_kind : exported_id_kind -> Prims.string) = - fun uu___173_3199 -> - match uu___173_3199 with + fun uu___172_3199 -> + match uu___172_3199 with | Exported_id_field -> "field" | Exported_id_term_type -> "term/type" @@ -846,8 +846,8 @@ let find_in_module_with_includes : fun ns -> fun id1 -> let idstr = id1.FStar_Ident.idText in - let rec aux uu___174_3275 = - match uu___174_3275 with + let rec aux uu___173_3275 = + match uu___173_3275 with | [] -> find_in_module_default | modul::q -> let mname = modul.FStar_Ident.str in @@ -882,8 +882,8 @@ let find_in_module_with_includes : aux [ns] let (is_exported_id_field : exported_id_kind -> Prims.bool) = - fun uu___175_3521 -> - match uu___175_3521 with + fun uu___174_3521 -> + match uu___174_3521 with | Exported_id_field -> true | uu____3524 -> false @@ -907,21 +907,21 @@ let try_lookup_id'' : fun k_record -> fun find_in_module -> fun lookup_default_id -> - let check_local_binding_id uu___176_3648 = - match uu___176_3648 with + let check_local_binding_id uu___175_3648 = + match uu___175_3648 with | (id',uu____3651) -> id'.FStar_Ident.idText = id1.FStar_Ident.idText in - let check_rec_binding_id uu___177_3659 = - match uu___177_3659 with + let check_rec_binding_id uu___176_3659 = + match uu___176_3659 with | (id',uu____3662,uu____3663) -> id'.FStar_Ident.idText = id1.FStar_Ident.idText in let curmod_ns = let uu____3668 = current_module env in FStar_Ident.ids_of_lid uu____3668 in - let proc uu___178_3676 = - match uu___178_3676 with + let proc uu___177_3676 = + match uu___177_3676 with | Local_binding l when check_local_binding_id l -> k_local_binding l | Rec_binding r when check_rec_binding_id r -> @@ -940,8 +940,8 @@ let try_lookup_id'' : find_in_record lid.FStar_Ident.ns id2 r k_record) Cont_ignore env uu____3685 id1 | uu____3690 -> Cont_ignore in - let rec aux uu___179_3700 = - match uu___179_3700 with + let rec aux uu___178_3700 = + match uu___178_3700 with | a::q -> let uu____3709 = proc a in option_of_cont (fun uu____3713 -> aux q) uu____3709 @@ -1065,8 +1065,8 @@ let (resolve_module_name : fun lid -> fun honor_ns -> let nslen = FStar_List.length lid.FStar_Ident.ns in - let rec aux uu___180_4076 = - match uu___180_4076 with + let rec aux uu___179_4076 = + match uu___179_4076 with | [] -> let uu____4081 = module_is_defined env lid in if uu____4081 @@ -1140,8 +1140,8 @@ let (is_open : env -> FStar_Ident.lident -> open_kind -> Prims.bool) = fun lid -> fun open_kind -> FStar_List.existsb - (fun uu___181_4208 -> - match uu___181_4208 with + (fun uu___180_4208 -> + match uu___180_4208 with | Open_module_or_namespace (ns,k) -> (k = open_kind) && (FStar_Ident.lid_equals lid ns) | uu____4212 -> false) env.scope_mods @@ -1250,8 +1250,8 @@ let resolve_in_open_namespaces'' : let cont_of_option : 'a . 'a cont_t -> 'a FStar_Pervasives_Native.option -> 'a cont_t = fun k_none -> - fun uu___182_4705 -> - match uu___182_4705 with + fun uu___181_4705 -> + match uu___181_4705 with | FStar_Pervasives_Native.Some v1 -> Cont_ok v1 | FStar_Pervasives_Native.None -> k_none @@ -1299,8 +1299,8 @@ let (fv_qual_of_se : (uu____4883,uu____4884,uu____4885,l,uu____4887,uu____4888) -> let qopt = FStar_Util.find_map se.FStar_Syntax_Syntax.sigquals - (fun uu___183_4901 -> - match uu___183_4901 with + (fun uu___182_4901 -> + match uu___182_4901 with | FStar_Syntax_Syntax.RecordConstructor (uu____4904,fs) -> FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Record_ctor (l, fs)) @@ -1354,8 +1354,8 @@ let (delta_depth_of_declaration : (FStar_Syntax_Util.is_primop_lid lid) || (FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___184_5005 -> - match uu___184_5005 with + (fun uu___183_5005 -> + match uu___183_5005 with | FStar_Syntax_Syntax.Projector uu____5007 -> true | FStar_Syntax_Syntax.Discriminator uu____5013 -> true | uu____5015 -> false))) @@ -1366,23 +1366,23 @@ let (delta_depth_of_declaration : let uu____5020 = (FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___185_5026 -> - match uu___185_5026 with + (fun uu___184_5026 -> + match uu___184_5026 with | FStar_Syntax_Syntax.Abstract -> true | uu____5029 -> false))) || ((FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___186_5035 -> - match uu___186_5035 with + (fun uu___185_5035 -> + match uu___185_5035 with | FStar_Syntax_Syntax.Assumption -> true | uu____5038 -> false))) && (let uu____5041 = FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___187_5047 -> - match uu___187_5047 with + (fun uu___186_5047 -> + match uu___186_5047 with | FStar_Syntax_Syntax.New -> true | uu____5050 -> false)) in @@ -1400,8 +1400,8 @@ let (try_lookup_name : fun env -> fun lid -> let occurrence_range = FStar_Ident.range_of_lid lid in - let k_global_def source_lid uu___190_5102 = - match uu___190_5102 with + let k_global_def source_lid uu___189_5102 = + match uu___189_5102 with | (uu____5110,true ) when exclude_interf -> FStar_Pervasives_Native.None | (se,uu____5114) -> @@ -1448,8 +1448,8 @@ let (try_lookup_name : any_val || (FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___188_5214 -> - match uu___188_5214 with + (fun uu___187_5214 -> + match uu___187_5214 with | FStar_Syntax_Syntax.Assumption -> true | uu____5217 -> false))) in @@ -1462,8 +1462,8 @@ let (try_lookup_name : let dd = delta_depth_of_declaration lid2 quals in let uu____5225 = FStar_Util.find_map quals - (fun uu___189_5230 -> - match uu___189_5230 with + (fun uu___188_5230 -> + match uu___188_5230 with | FStar_Syntax_Syntax.Reflectable refl_monad -> FStar_Pervasives_Native.Some refl_monad | uu____5234 -> FStar_Pervasives_Native.None) @@ -1737,8 +1737,8 @@ let (lookup_letbinding_quals : env -> FStar_Ident.lident -> FStar_Syntax_Syntax.qualifier Prims.list) = fun env -> fun lid -> - let k_global_def lid1 uu___191_5824 = - match uu___191_5824 with + let k_global_def lid1 uu___190_5824 = + match uu___190_5824 with | ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_declare_typ (uu____5834,uu____5835,uu____5836); @@ -1784,8 +1784,8 @@ let (try_lookup_let : = fun env -> fun lid -> - let k_global_def lid1 uu___192_5964 = - match uu___192_5964 with + let k_global_def lid1 uu___191_5964 = + match uu___191_5964 with | ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_let ((uu____5972,lbs),uu____5974); @@ -1812,8 +1812,8 @@ let (try_lookup_definition : = fun env -> fun lid -> - let k_global_def lid1 uu___193_6040 = - match uu___193_6040 with + let k_global_def lid1 uu___192_6040 = + match uu___192_6040 with | ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_let (lbs,uu____6051); @@ -1936,25 +1936,25 @@ let (try_lookup_lid_with_attributes_no_resolve : fun env -> fun l -> let env' = - let uu___214_6413 = env in + let uu___213_6413 = env in { - curmodule = (uu___214_6413.curmodule); - curmonad = (uu___214_6413.curmonad); - modules = (uu___214_6413.modules); + curmodule = (uu___213_6413.curmodule); + curmonad = (uu___213_6413.curmonad); + modules = (uu___213_6413.modules); scope_mods = []; exported_ids = empty_exported_id_smap; - trans_exported_ids = (uu___214_6413.trans_exported_ids); + trans_exported_ids = (uu___213_6413.trans_exported_ids); includes = empty_include_smap; - sigaccum = (uu___214_6413.sigaccum); - sigmap = (uu___214_6413.sigmap); - iface = (uu___214_6413.iface); - admitted_iface = (uu___214_6413.admitted_iface); - expect_typ = (uu___214_6413.expect_typ); - docs = (uu___214_6413.docs); - remaining_iface_decls = (uu___214_6413.remaining_iface_decls); - syntax_only = (uu___214_6413.syntax_only); - ds_hooks = (uu___214_6413.ds_hooks); - dep_graph = (uu___214_6413.dep_graph) + sigaccum = (uu___213_6413.sigaccum); + sigmap = (uu___213_6413.sigmap); + iface = (uu___213_6413.iface); + admitted_iface = (uu___213_6413.admitted_iface); + expect_typ = (uu___213_6413.expect_typ); + docs = (uu___213_6413.docs); + remaining_iface_decls = (uu___213_6413.remaining_iface_decls); + syntax_only = (uu___213_6413.syntax_only); + ds_hooks = (uu___213_6413.ds_hooks); + dep_graph = (uu___213_6413.dep_graph) } in try_lookup_lid_with_attributes env' l @@ -1992,8 +1992,8 @@ let (try_lookup_datacon : let uu____6513 = FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___194_6519 -> - match uu___194_6519 with + (fun uu___193_6519 -> + match uu___193_6519 with | FStar_Syntax_Syntax.Assumption -> true | uu____6522 -> false)) in @@ -2032,8 +2032,8 @@ let (find_all_datacons : = fun env -> fun lid -> - let k_global_def lid1 uu___195_6606 = - match uu___195_6606 with + let k_global_def lid1 uu___194_6606 = + match uu___194_6606 with | ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_inductive_typ @@ -2170,8 +2170,8 @@ let (extract_record : | FStar_Syntax_Syntax.Sig_bundle (sigs,uu____8303) -> let is_record = FStar_Util.for_some - (fun uu___196_8322 -> - match uu___196_8322 with + (fun uu___195_8322 -> + match uu___195_8322 with | FStar_Syntax_Syntax.RecordType uu____8324 -> true | FStar_Syntax_Syntax.RecordConstructor uu____8334 -> true | uu____8344 -> false) @@ -2179,8 +2179,8 @@ let (extract_record : let find_dc dc = FStar_All.pipe_right sigs (FStar_Util.find_opt - (fun uu___197_8369 -> - match uu___197_8369 with + (fun uu___196_8369 -> + match uu___196_8369 with | { FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_datacon @@ -2194,8 +2194,8 @@ let (extract_record : in FStar_All.pipe_right sigs (FStar_List.iter - (fun uu___198_8427 -> - match uu___198_8427 with + (fun uu___197_8427 -> + match uu___197_8427 with | { FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_inductive_typ @@ -2440,8 +2440,8 @@ let (exported_id_set_new : fun uu____9221 -> let term_type_set = string_set_ref_new () in let field_set = string_set_ref_new () in - fun uu___199_9234 -> - match uu___199_9234 with + fun uu___198_9234 -> + match uu___198_9234 with | Exported_id_term_type -> term_type_set | Exported_id_field -> field_set @@ -2451,32 +2451,32 @@ let (unique : fun exclude_interface -> fun env -> fun lid -> - let filter_scope_mods uu___200_9294 = - match uu___200_9294 with + let filter_scope_mods uu___199_9294 = + match uu___199_9294 with | Rec_binding uu____9296 -> true | uu____9298 -> false in let this_env = - let uu___215_9301 = env in + let uu___214_9301 = env in let uu____9302 = FStar_List.filter filter_scope_mods env.scope_mods in { - curmodule = (uu___215_9301.curmodule); - curmonad = (uu___215_9301.curmonad); - modules = (uu___215_9301.modules); + curmodule = (uu___214_9301.curmodule); + curmonad = (uu___214_9301.curmonad); + modules = (uu___214_9301.modules); scope_mods = uu____9302; exported_ids = empty_exported_id_smap; - trans_exported_ids = (uu___215_9301.trans_exported_ids); + trans_exported_ids = (uu___214_9301.trans_exported_ids); includes = empty_include_smap; - sigaccum = (uu___215_9301.sigaccum); - sigmap = (uu___215_9301.sigmap); - iface = (uu___215_9301.iface); - admitted_iface = (uu___215_9301.admitted_iface); - expect_typ = (uu___215_9301.expect_typ); - docs = (uu___215_9301.docs); - remaining_iface_decls = (uu___215_9301.remaining_iface_decls); - syntax_only = (uu___215_9301.syntax_only); - ds_hooks = (uu___215_9301.ds_hooks); - dep_graph = (uu___215_9301.dep_graph) + sigaccum = (uu___214_9301.sigaccum); + sigmap = (uu___214_9301.sigmap); + iface = (uu___214_9301.iface); + admitted_iface = (uu___214_9301.admitted_iface); + expect_typ = (uu___214_9301.expect_typ); + docs = (uu___214_9301.docs); + remaining_iface_decls = (uu___214_9301.remaining_iface_decls); + syntax_only = (uu___214_9301.syntax_only); + ds_hooks = (uu___214_9301.ds_hooks); + dep_graph = (uu___214_9301.dep_graph) } in let uu____9305 = try_lookup_lid' any_val exclude_interface this_env lid in @@ -2487,25 +2487,25 @@ let (unique : let (push_scope_mod : env -> scope_mod -> env) = fun env -> fun scope_mod -> - let uu___216_9347 = env in + let uu___215_9347 = env in { - curmodule = (uu___216_9347.curmodule); - curmonad = (uu___216_9347.curmonad); - modules = (uu___216_9347.modules); + curmodule = (uu___215_9347.curmodule); + curmonad = (uu___215_9347.curmonad); + modules = (uu___215_9347.modules); scope_mods = (scope_mod :: (env.scope_mods)); - exported_ids = (uu___216_9347.exported_ids); - trans_exported_ids = (uu___216_9347.trans_exported_ids); - includes = (uu___216_9347.includes); - sigaccum = (uu___216_9347.sigaccum); - sigmap = (uu___216_9347.sigmap); - iface = (uu___216_9347.iface); - admitted_iface = (uu___216_9347.admitted_iface); - expect_typ = (uu___216_9347.expect_typ); - docs = (uu___216_9347.docs); - remaining_iface_decls = (uu___216_9347.remaining_iface_decls); - syntax_only = (uu___216_9347.syntax_only); - ds_hooks = (uu___216_9347.ds_hooks); - dep_graph = (uu___216_9347.dep_graph) + exported_ids = (uu___215_9347.exported_ids); + trans_exported_ids = (uu___215_9347.trans_exported_ids); + includes = (uu___215_9347.includes); + sigaccum = (uu___215_9347.sigaccum); + sigmap = (uu___215_9347.sigmap); + iface = (uu___215_9347.iface); + admitted_iface = (uu___215_9347.admitted_iface); + expect_typ = (uu___215_9347.expect_typ); + docs = (uu___215_9347.docs); + remaining_iface_decls = (uu___215_9347.remaining_iface_decls); + syntax_only = (uu___215_9347.syntax_only); + ds_hooks = (uu___215_9347.ds_hooks); + dep_graph = (uu___215_9347.dep_graph) } let (push_bv : @@ -2595,50 +2595,50 @@ let (push_sigelt' : Prims.bool -> env -> FStar_Syntax_Syntax.sigelt -> env) = | FStar_Pervasives_Native.Some l when fail_on_dup -> err l | uu____9542 -> (extract_record env globals s; - (let uu___217_9568 = env in + (let uu___216_9568 = env in { - curmodule = (uu___217_9568.curmodule); - curmonad = (uu___217_9568.curmonad); - modules = (uu___217_9568.modules); - scope_mods = (uu___217_9568.scope_mods); - exported_ids = (uu___217_9568.exported_ids); + curmodule = (uu___216_9568.curmodule); + curmonad = (uu___216_9568.curmonad); + modules = (uu___216_9568.modules); + scope_mods = (uu___216_9568.scope_mods); + exported_ids = (uu___216_9568.exported_ids); trans_exported_ids = - (uu___217_9568.trans_exported_ids); - includes = (uu___217_9568.includes); + (uu___216_9568.trans_exported_ids); + includes = (uu___216_9568.includes); sigaccum = (s :: (env.sigaccum)); - sigmap = (uu___217_9568.sigmap); - iface = (uu___217_9568.iface); - admitted_iface = (uu___217_9568.admitted_iface); - expect_typ = (uu___217_9568.expect_typ); - docs = (uu___217_9568.docs); + sigmap = (uu___216_9568.sigmap); + iface = (uu___216_9568.iface); + admitted_iface = (uu___216_9568.admitted_iface); + expect_typ = (uu___216_9568.expect_typ); + docs = (uu___216_9568.docs); remaining_iface_decls = - (uu___217_9568.remaining_iface_decls); - syntax_only = (uu___217_9568.syntax_only); - ds_hooks = (uu___217_9568.ds_hooks); - dep_graph = (uu___217_9568.dep_graph) + (uu___216_9568.remaining_iface_decls); + syntax_only = (uu___216_9568.syntax_only); + ds_hooks = (uu___216_9568.ds_hooks); + dep_graph = (uu___216_9568.dep_graph) }))) in let env2 = - let uu___218_9570 = env1 in + let uu___217_9570 = env1 in let uu____9571 = FStar_ST.op_Bang globals in { - curmodule = (uu___218_9570.curmodule); - curmonad = (uu___218_9570.curmonad); - modules = (uu___218_9570.modules); + curmodule = (uu___217_9570.curmodule); + curmonad = (uu___217_9570.curmonad); + modules = (uu___217_9570.modules); scope_mods = uu____9571; - exported_ids = (uu___218_9570.exported_ids); - trans_exported_ids = (uu___218_9570.trans_exported_ids); - includes = (uu___218_9570.includes); - sigaccum = (uu___218_9570.sigaccum); - sigmap = (uu___218_9570.sigmap); - iface = (uu___218_9570.iface); - admitted_iface = (uu___218_9570.admitted_iface); - expect_typ = (uu___218_9570.expect_typ); - docs = (uu___218_9570.docs); - remaining_iface_decls = (uu___218_9570.remaining_iface_decls); - syntax_only = (uu___218_9570.syntax_only); - ds_hooks = (uu___218_9570.ds_hooks); - dep_graph = (uu___218_9570.dep_graph) + exported_ids = (uu___217_9570.exported_ids); + trans_exported_ids = (uu___217_9570.trans_exported_ids); + includes = (uu___217_9570.includes); + sigaccum = (uu___217_9570.sigaccum); + sigmap = (uu___217_9570.sigmap); + iface = (uu___217_9570.iface); + admitted_iface = (uu___217_9570.admitted_iface); + expect_typ = (uu___217_9570.expect_typ); + docs = (uu___217_9570.docs); + remaining_iface_decls = (uu___217_9570.remaining_iface_decls); + syntax_only = (uu___217_9570.syntax_only); + ds_hooks = (uu___217_9570.ds_hooks); + dep_graph = (uu___217_9570.dep_graph) } in let uu____9619 = match s.FStar_Syntax_Syntax.sigel with @@ -2708,27 +2708,27 @@ let (push_sigelt' : Prims.bool -> env -> FStar_Syntax_Syntax.sigelt -> env) = (Prims.op_Negation env3.admitted_iface)))))))))); (let env4 = - let uu___219_9997 = env3 in + let uu___218_9997 = env3 in let uu____9998 = FStar_ST.op_Bang globals in { - curmodule = (uu___219_9997.curmodule); - curmonad = (uu___219_9997.curmonad); - modules = (uu___219_9997.modules); + curmodule = (uu___218_9997.curmodule); + curmonad = (uu___218_9997.curmonad); + modules = (uu___218_9997.modules); scope_mods = uu____9998; - exported_ids = (uu___219_9997.exported_ids); - trans_exported_ids = (uu___219_9997.trans_exported_ids); - includes = (uu___219_9997.includes); - sigaccum = (uu___219_9997.sigaccum); - sigmap = (uu___219_9997.sigmap); - iface = (uu___219_9997.iface); - admitted_iface = (uu___219_9997.admitted_iface); - expect_typ = (uu___219_9997.expect_typ); - docs = (uu___219_9997.docs); + exported_ids = (uu___218_9997.exported_ids); + trans_exported_ids = (uu___218_9997.trans_exported_ids); + includes = (uu___218_9997.includes); + sigaccum = (uu___218_9997.sigaccum); + sigmap = (uu___218_9997.sigmap); + iface = (uu___218_9997.iface); + admitted_iface = (uu___218_9997.admitted_iface); + expect_typ = (uu___218_9997.expect_typ); + docs = (uu___218_9997.docs); remaining_iface_decls = - (uu___219_9997.remaining_iface_decls); - syntax_only = (uu___219_9997.syntax_only); - ds_hooks = (uu___219_9997.ds_hooks); - dep_graph = (uu___219_9997.dep_graph) + (uu___218_9997.remaining_iface_decls); + syntax_only = (uu___218_9997.syntax_only); + ds_hooks = (uu___218_9997.ds_hooks); + dep_graph = (uu___218_9997.dep_graph) } in env4)) @@ -2986,24 +2986,24 @@ let (check_admits : (se.FStar_Syntax_Syntax.sigquals) in FStar_Util.smap_add (sigmap env) l.FStar_Ident.str - ((let uu___220_11767 = se in + ((let uu___219_11767 = se in { FStar_Syntax_Syntax.sigel = - (uu___220_11767.FStar_Syntax_Syntax.sigel); + (uu___219_11767.FStar_Syntax_Syntax.sigel); FStar_Syntax_Syntax.sigrng = - (uu___220_11767.FStar_Syntax_Syntax.sigrng); + (uu___219_11767.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = quals; FStar_Syntax_Syntax.sigmeta = - (uu___220_11767.FStar_Syntax_Syntax.sigmeta); + (uu___219_11767.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___220_11767.FStar_Syntax_Syntax.sigattrs) + (uu___219_11767.FStar_Syntax_Syntax.sigattrs) }), false); l :: lids))) | uu____11769 -> lids) []) in - let uu___221_11770 = m in + let uu___220_11770 = m in let uu____11771 = FStar_All.pipe_right m.FStar_Syntax_Syntax.declarations (FStar_List.map @@ -3015,29 +3015,29 @@ let (check_admits : (fun l -> FStar_Ident.lid_equals l lid) admitted_sig_lids -> - let uu___222_11785 = s in + let uu___221_11785 = s in { FStar_Syntax_Syntax.sigel = - (uu___222_11785.FStar_Syntax_Syntax.sigel); + (uu___221_11785.FStar_Syntax_Syntax.sigel); FStar_Syntax_Syntax.sigrng = - (uu___222_11785.FStar_Syntax_Syntax.sigrng); + (uu___221_11785.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = (FStar_Syntax_Syntax.Assumption :: (s.FStar_Syntax_Syntax.sigquals)); FStar_Syntax_Syntax.sigmeta = - (uu___222_11785.FStar_Syntax_Syntax.sigmeta); + (uu___221_11785.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___222_11785.FStar_Syntax_Syntax.sigattrs) + (uu___221_11785.FStar_Syntax_Syntax.sigattrs) } | uu____11786 -> s)) in { - FStar_Syntax_Syntax.name = (uu___221_11770.FStar_Syntax_Syntax.name); + FStar_Syntax_Syntax.name = (uu___220_11770.FStar_Syntax_Syntax.name); FStar_Syntax_Syntax.declarations = uu____11771; FStar_Syntax_Syntax.exports = - (uu___221_11770.FStar_Syntax_Syntax.exports); + (uu___220_11770.FStar_Syntax_Syntax.exports); FStar_Syntax_Syntax.is_interface = - (uu___221_11770.FStar_Syntax_Syntax.is_interface) + (uu___220_11770.FStar_Syntax_Syntax.is_interface) } let (finish : env -> FStar_Syntax_Syntax.modul -> env) = @@ -3101,18 +3101,18 @@ let (finish : env -> FStar_Syntax_Syntax.modul -> env) = uu____11869 in let se2 = - let uu___223_11918 = se1 in + let uu___222_11918 = se1 in { FStar_Syntax_Syntax.sigel = sigel; FStar_Syntax_Syntax.sigrng = - (uu___223_11918.FStar_Syntax_Syntax.sigrng); + (uu___222_11918.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = (FStar_Syntax_Syntax.Assumption :: quals); FStar_Syntax_Syntax.sigmeta = - (uu___223_11918.FStar_Syntax_Syntax.sigmeta); + (uu___222_11918.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___223_11918.FStar_Syntax_Syntax.sigattrs) + (uu___222_11918.FStar_Syntax_Syntax.sigattrs) } in FStar_Util.smap_add (sigmap env) lid.FStar_Ident.str (se2, false)) @@ -3170,19 +3170,19 @@ let (finish : env -> FStar_Syntax_Syntax.modul -> env) = let quals1 = FStar_Syntax_Syntax.Assumption :: quals in let decl = - let uu___224_11993 = se in + let uu___223_11993 = se in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_declare_typ (lid, (lb.FStar_Syntax_Syntax.lbunivs), (lb.FStar_Syntax_Syntax.lbtyp))); FStar_Syntax_Syntax.sigrng = - (uu___224_11993.FStar_Syntax_Syntax.sigrng); + (uu___223_11993.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = quals1; FStar_Syntax_Syntax.sigmeta = - (uu___224_11993.FStar_Syntax_Syntax.sigmeta); + (uu___223_11993.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___224_11993.FStar_Syntax_Syntax.sigattrs) + (uu___223_11993.FStar_Syntax_Syntax.sigattrs) } in FStar_Util.smap_add (sigmap env) lid.FStar_Ident.str (decl, false))) @@ -3214,27 +3214,27 @@ let (finish : env -> FStar_Syntax_Syntax.modul -> env) = (filter_record_cache (); (match () with | () -> - let uu___225_12996 = env in + let uu___224_12996 = env in { curmodule = FStar_Pervasives_Native.None; - curmonad = (uu___225_12996.curmonad); + curmonad = (uu___224_12996.curmonad); modules = (((modul.FStar_Syntax_Syntax.name), modul) :: (env.modules)); scope_mods = []; - exported_ids = (uu___225_12996.exported_ids); - trans_exported_ids = (uu___225_12996.trans_exported_ids); - includes = (uu___225_12996.includes); + exported_ids = (uu___224_12996.exported_ids); + trans_exported_ids = (uu___224_12996.trans_exported_ids); + includes = (uu___224_12996.includes); sigaccum = []; - sigmap = (uu___225_12996.sigmap); - iface = (uu___225_12996.iface); - admitted_iface = (uu___225_12996.admitted_iface); - expect_typ = (uu___225_12996.expect_typ); - docs = (uu___225_12996.docs); + sigmap = (uu___224_12996.sigmap); + iface = (uu___224_12996.iface); + admitted_iface = (uu___224_12996.admitted_iface); + expect_typ = (uu___224_12996.expect_typ); + docs = (uu___224_12996.docs); remaining_iface_decls = - (uu___225_12996.remaining_iface_decls); - syntax_only = (uu___225_12996.syntax_only); - ds_hooks = (uu___225_12996.ds_hooks); - dep_graph = (uu___225_12996.dep_graph) + (uu___224_12996.remaining_iface_decls); + syntax_only = (uu___224_12996.syntax_only); + ds_hooks = (uu___224_12996.ds_hooks); + dep_graph = (uu___224_12996.dep_graph) })))) let (stack : env Prims.list FStar_ST.ref) = FStar_Util.mk_ref [] @@ -3247,30 +3247,30 @@ let (push : env -> env) = let uu____13040 = FStar_ST.op_Bang stack in env :: uu____13040 in FStar_ST.op_Colon_Equals stack uu____13037); - (let uu___226_13089 = env in + (let uu___225_13089 = env in let uu____13090 = FStar_Util.smap_copy env.exported_ids in let uu____13095 = FStar_Util.smap_copy env.trans_exported_ids in let uu____13100 = FStar_Util.smap_copy env.includes in let uu____13111 = FStar_Util.smap_copy env.sigmap in let uu____13124 = FStar_Util.smap_copy env.docs in { - curmodule = (uu___226_13089.curmodule); - curmonad = (uu___226_13089.curmonad); - modules = (uu___226_13089.modules); - scope_mods = (uu___226_13089.scope_mods); + curmodule = (uu___225_13089.curmodule); + curmonad = (uu___225_13089.curmonad); + modules = (uu___225_13089.modules); + scope_mods = (uu___225_13089.scope_mods); exported_ids = uu____13090; trans_exported_ids = uu____13095; includes = uu____13100; - sigaccum = (uu___226_13089.sigaccum); + sigaccum = (uu___225_13089.sigaccum); sigmap = uu____13111; - iface = (uu___226_13089.iface); - admitted_iface = (uu___226_13089.admitted_iface); - expect_typ = (uu___226_13089.expect_typ); + iface = (uu___225_13089.iface); + admitted_iface = (uu___225_13089.admitted_iface); + expect_typ = (uu___225_13089.expect_typ); docs = uu____13124; - remaining_iface_decls = (uu___226_13089.remaining_iface_decls); - syntax_only = (uu___226_13089.syntax_only); - ds_hooks = (uu___226_13089.ds_hooks); - dep_graph = (uu___226_13089.dep_graph) + remaining_iface_decls = (uu___225_13089.remaining_iface_decls); + syntax_only = (uu___225_13089.syntax_only); + ds_hooks = (uu___225_13089.ds_hooks); + dep_graph = (uu___225_13089.dep_graph) })) let (pop : unit -> env) = @@ -3309,19 +3309,19 @@ let (export_interface : FStar_Ident.lident -> env -> env) = (let se1 = match se.FStar_Syntax_Syntax.sigel with | FStar_Syntax_Syntax.Sig_declare_typ (l,u,t) -> - let uu___227_13319 = se in + let uu___226_13319 = se in { FStar_Syntax_Syntax.sigel = - (uu___227_13319.FStar_Syntax_Syntax.sigel); + (uu___226_13319.FStar_Syntax_Syntax.sigel); FStar_Syntax_Syntax.sigrng = - (uu___227_13319.FStar_Syntax_Syntax.sigrng); + (uu___226_13319.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = (FStar_Syntax_Syntax.Assumption :: (se.FStar_Syntax_Syntax.sigquals)); FStar_Syntax_Syntax.sigmeta = - (uu___227_13319.FStar_Syntax_Syntax.sigmeta); + (uu___226_13319.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___227_13319.FStar_Syntax_Syntax.sigattrs) + (uu___226_13319.FStar_Syntax_Syntax.sigattrs) } | uu____13320 -> se in FStar_Util.smap_add sm' k (se1, false))) @@ -3387,8 +3387,8 @@ let (as_exported_id_set : let uu____13751 = FStar_Util.as_set e1.exported_id_fields FStar_Util.compare in FStar_Util.mk_ref uu____13751 in - (fun uu___201_13759 -> - match uu___201_13759 with + (fun uu___200_13759 -> + match uu___200_13759 with | Exported_id_term_type -> terms | Exported_id_field -> fields) @@ -3431,8 +3431,8 @@ let as_includes : 'Auu____13896 Prims.list FStar_Pervasives_Native.option -> 'Auu____13896 Prims.list FStar_ST.ref = - fun uu___202_13909 -> - match uu___202_13909 with + fun uu___201_13909 -> + match uu___201_13909 with | FStar_Pervasives_Native.None -> FStar_Util.mk_ref [] | FStar_Pervasives_Native.Some l -> FStar_Util.mk_ref l @@ -3474,8 +3474,8 @@ let (prepare_module_or_interface : let auto_open = FStar_Parser_Dep.hard_coded_dependencies filename in let auto_open1 = - let convert_kind uu___203_14113 = - match uu___203_14113 with + let convert_kind uu___202_14113 = + match uu___202_14113 with | FStar_Parser_Dep.Open_namespace -> Open_namespace | FStar_Parser_Dep.Open_module -> Open_module in FStar_List.map @@ -3515,7 +3515,7 @@ let (prepare_module_or_interface : (match () with | () -> let env' = - let uu___228_14273 = env1 in + let uu___227_14273 = env1 in let uu____14274 = FStar_List.map (fun x -> Open_module_or_namespace x) @@ -3524,25 +3524,25 @@ let (prepare_module_or_interface : { curmodule = (FStar_Pervasives_Native.Some mname); - curmonad = (uu___228_14273.curmonad); - modules = (uu___228_14273.modules); + curmonad = (uu___227_14273.curmonad); + modules = (uu___227_14273.modules); scope_mods = uu____14274; exported_ids = - (uu___228_14273.exported_ids); + (uu___227_14273.exported_ids); trans_exported_ids = - (uu___228_14273.trans_exported_ids); - includes = (uu___228_14273.includes); - sigaccum = (uu___228_14273.sigaccum); + (uu___227_14273.trans_exported_ids); + includes = (uu___227_14273.includes); + sigaccum = (uu___227_14273.sigaccum); sigmap = (env1.sigmap); iface = intf; admitted_iface = admitted; - expect_typ = (uu___228_14273.expect_typ); - docs = (uu___228_14273.docs); + expect_typ = (uu___227_14273.expect_typ); + docs = (uu___227_14273.docs); remaining_iface_decls = - (uu___228_14273.remaining_iface_decls); - syntax_only = (uu___228_14273.syntax_only); - ds_hooks = (uu___228_14273.ds_hooks); - dep_graph = (uu___228_14273.dep_graph) + (uu___227_14273.remaining_iface_decls); + syntax_only = (uu___227_14273.syntax_only); + ds_hooks = (uu___227_14273.ds_hooks); + dep_graph = (uu___227_14273.dep_graph) } in (FStar_List.iter (fun op -> @@ -3598,25 +3598,25 @@ let (enter_monad_scope : env -> FStar_Ident.ident -> env) = mname'.FStar_Ident.idText)))) mname.FStar_Ident.idRange | FStar_Pervasives_Native.None -> - let uu___229_14378 = env in + let uu___228_14378 = env in { - curmodule = (uu___229_14378.curmodule); + curmodule = (uu___228_14378.curmodule); curmonad = (FStar_Pervasives_Native.Some mname); - modules = (uu___229_14378.modules); - scope_mods = (uu___229_14378.scope_mods); - exported_ids = (uu___229_14378.exported_ids); - trans_exported_ids = (uu___229_14378.trans_exported_ids); - includes = (uu___229_14378.includes); - sigaccum = (uu___229_14378.sigaccum); - sigmap = (uu___229_14378.sigmap); - iface = (uu___229_14378.iface); - admitted_iface = (uu___229_14378.admitted_iface); - expect_typ = (uu___229_14378.expect_typ); - docs = (uu___229_14378.docs); - remaining_iface_decls = (uu___229_14378.remaining_iface_decls); - syntax_only = (uu___229_14378.syntax_only); - ds_hooks = (uu___229_14378.ds_hooks); - dep_graph = (uu___229_14378.dep_graph) + modules = (uu___228_14378.modules); + scope_mods = (uu___228_14378.scope_mods); + exported_ids = (uu___228_14378.exported_ids); + trans_exported_ids = (uu___228_14378.trans_exported_ids); + includes = (uu___228_14378.includes); + sigaccum = (uu___228_14378.sigaccum); + sigmap = (uu___228_14378.sigmap); + iface = (uu___228_14378.iface); + admitted_iface = (uu___228_14378.admitted_iface); + expect_typ = (uu___228_14378.expect_typ); + docs = (uu___228_14378.docs); + remaining_iface_decls = (uu___228_14378.remaining_iface_decls); + syntax_only = (uu___228_14378.syntax_only); + ds_hooks = (uu___228_14378.ds_hooks); + dep_graph = (uu___228_14378.dep_graph) } let fail_or : diff --git a/src/ocaml-output/FStar_Syntax_Embeddings.ml b/src/ocaml-output/FStar_Syntax_Embeddings.ml index 8fe4e294c54..7da143bf981 100644 --- a/src/ocaml-output/FStar_Syntax_Embeddings.ml +++ b/src/ocaml-output/FStar_Syntax_Embeddings.ml @@ -3,8 +3,8 @@ type norm_cb = (FStar_Ident.lid,FStar_Syntax_Syntax.term) FStar_Util.either -> FStar_Syntax_Syntax.term let (id_norm_cb : norm_cb) = - fun uu___215_13 -> - match uu___215_13 with + fun uu___214_13 -> + match uu___214_13 with | FStar_Util.Inr x -> x | FStar_Util.Inl l -> let uu____20 = @@ -158,13 +158,13 @@ let type_of : 'a . 'a embedding -> FStar_Syntax_Syntax.typ = fun e -> e.typ let set_type : 'a . FStar_Syntax_Syntax.typ -> 'a embedding -> 'a embedding = fun ty -> fun e -> - let uu___217_1522 = e in + let uu___216_1522 = e in { - em = (uu___217_1522.em); - un = (uu___217_1522.un); + em = (uu___216_1522.em); + un = (uu___216_1522.un); typ = ty; - print = (uu___217_1522.print); - emb_typ = (uu___217_1522.emb_typ) + print = (uu___216_1522.print); + emb_typ = (uu___216_1522.emb_typ) } let lazy_embed : @@ -341,11 +341,11 @@ let (e_any : FStar_Syntax_Syntax.term embedding) = let (e_unit : unit embedding) = let em u rng _topt _norm = - let uu___218_2321 = FStar_Syntax_Util.exp_unit in + let uu___217_2321 = FStar_Syntax_Util.exp_unit in { - FStar_Syntax_Syntax.n = (uu___218_2321.FStar_Syntax_Syntax.n); + FStar_Syntax_Syntax.n = (uu___217_2321.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = rng; - FStar_Syntax_Syntax.vars = (uu___218_2321.FStar_Syntax_Syntax.vars) + FStar_Syntax_Syntax.vars = (uu___217_2321.FStar_Syntax_Syntax.vars) } in let un t0 w _norm = let t = FStar_Syntax_Util.unascribe t0 in @@ -381,11 +381,11 @@ let (e_bool : Prims.bool embedding) = if b then FStar_Syntax_Util.exp_true_bool else FStar_Syntax_Util.exp_false_bool in - let uu___219_2463 = t in + let uu___218_2463 = t in { - FStar_Syntax_Syntax.n = (uu___219_2463.FStar_Syntax_Syntax.n); + FStar_Syntax_Syntax.n = (uu___218_2463.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = rng; - FStar_Syntax_Syntax.vars = (uu___219_2463.FStar_Syntax_Syntax.vars) + FStar_Syntax_Syntax.vars = (uu___218_2463.FStar_Syntax_Syntax.vars) } in let un t0 w _norm = let t = FStar_Syntax_Util.unmeta_safe t0 in @@ -418,11 +418,11 @@ let (e_bool : Prims.bool embedding) = let (e_char : FStar_Char.char embedding) = let em c rng _topt _norm = let t = FStar_Syntax_Util.exp_char c in - let uu___220_2605 = t in + let uu___219_2605 = t in { - FStar_Syntax_Syntax.n = (uu___220_2605.FStar_Syntax_Syntax.n); + FStar_Syntax_Syntax.n = (uu___219_2605.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = rng; - FStar_Syntax_Syntax.vars = (uu___220_2605.FStar_Syntax_Syntax.vars) + FStar_Syntax_Syntax.vars = (uu___219_2605.FStar_Syntax_Syntax.vars) } in let un t0 w _norm = let t = FStar_Syntax_Util.unmeta_safe t0 in @@ -549,8 +549,8 @@ let e_option : in (uu____3041, [ea.emb_typ]) in FStar_Syntax_Syntax.ET_app uu____3033 in - let printer uu___216_3055 = - match uu___216_3055 with + let printer uu___215_3055 = + match uu___215_3055 with | FStar_Pervasives_Native.None -> "None" | FStar_Pervasives_Native.Some x -> let uu____3061 = diff --git a/src/ocaml-output/FStar_Syntax_Print.ml b/src/ocaml-output/FStar_Syntax_Print.ml index d46e2293397..76c8173ffe5 100644 --- a/src/ocaml-output/FStar_Syntax_Print.ml +++ b/src/ocaml-output/FStar_Syntax_Print.ml @@ -1,8 +1,8 @@ open Prims let rec (delta_depth_to_string : FStar_Syntax_Syntax.delta_depth -> Prims.string) = - fun uu___213_6 -> - match uu___213_6 with + fun uu___212_6 -> + match uu___212_6 with | FStar_Syntax_Syntax.Delta_constant_at_level i -> let uu____10 = FStar_Util.string_of_int i in Prims.strcat "Delta_constant_at_level " uu____10 @@ -133,8 +133,8 @@ let is_inr : 'Auu____425 'Auu____426 . ('Auu____425,'Auu____426) FStar_Util.either -> Prims.bool = - fun uu___214_436 -> - match uu___214_436 with + fun uu___213_436 -> + match uu___213_436 with | FStar_Util.Inl uu____441 -> false | FStar_Util.Inr uu____443 -> true @@ -150,8 +150,8 @@ let filter_imp : fun a -> FStar_All.pipe_right a (FStar_List.filter - (fun uu___215_505 -> - match uu___215_505 with + (fun uu___214_505 -> + match uu___214_505 with | (uu____513,FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Meta t)) when FStar_Syntax_Util.is_fvar FStar_Parser_Const.tcresolve_lid t @@ -230,8 +230,8 @@ let (quant_to_string : let (const_to_string : FStar_Const.sconst -> Prims.string) = fun x -> FStar_Parser_Const.const_to_string x let (lbname_to_string : FStar_Syntax_Syntax.lbname -> Prims.string) = - fun uu___216_803 -> - match uu___216_803 with + fun uu___215_803 -> + match uu___215_803 with | FStar_Util.Inl l -> bv_to_string l | FStar_Util.Inr l -> lid_to_string (l.FStar_Syntax_Syntax.fv_name).FStar_Syntax_Syntax.v @@ -328,8 +328,8 @@ let (univ_names_to_string : FStar_Syntax_Syntax.univ_names -> Prims.string) = FStar_All.pipe_right uu____1022 (FStar_String.concat ", ") let (qual_to_string : FStar_Syntax_Syntax.qualifier -> Prims.string) = - fun uu___217_1040 -> - match uu___217_1040 with + fun uu___216_1040 -> + match uu___216_1040 with | FStar_Syntax_Syntax.Assumption -> "assume" | FStar_Syntax_Syntax.New -> "new" | FStar_Syntax_Syntax.Private -> "private" @@ -406,56 +406,56 @@ let rec (tag_of_term : FStar_Syntax_Syntax.term -> Prims.string) = fun t -> match t.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_bvar x -> - let uu____1387 = db_to_string x in - Prims.strcat "Tm_bvar: " uu____1387 + let uu____1380 = db_to_string x in + Prims.strcat "Tm_bvar: " uu____1380 | FStar_Syntax_Syntax.Tm_name x -> - let uu____1391 = nm_to_string x in - Prims.strcat "Tm_name: " uu____1391 + let uu____1384 = nm_to_string x in + Prims.strcat "Tm_name: " uu____1384 | FStar_Syntax_Syntax.Tm_fvar x -> - let uu____1395 = + let uu____1388 = lid_to_string (x.FStar_Syntax_Syntax.fv_name).FStar_Syntax_Syntax.v in - Prims.strcat "Tm_fvar: " uu____1395 - | FStar_Syntax_Syntax.Tm_uinst uu____1398 -> "Tm_uinst" - | FStar_Syntax_Syntax.Tm_constant uu____1406 -> "Tm_constant" - | FStar_Syntax_Syntax.Tm_type uu____1408 -> "Tm_type" + Prims.strcat "Tm_fvar: " uu____1388 + | FStar_Syntax_Syntax.Tm_uinst uu____1391 -> "Tm_uinst" + | FStar_Syntax_Syntax.Tm_constant uu____1399 -> "Tm_constant" + | FStar_Syntax_Syntax.Tm_type uu____1401 -> "Tm_type" | FStar_Syntax_Syntax.Tm_quoted - (uu____1410,{ + (uu____1403,{ FStar_Syntax_Syntax.qkind = FStar_Syntax_Syntax.Quote_static ; - FStar_Syntax_Syntax.antiquotes = uu____1411;_}) + FStar_Syntax_Syntax.antiquotes = uu____1404;_}) -> "Tm_quoted (static)" | FStar_Syntax_Syntax.Tm_quoted - (uu____1425,{ + (uu____1418,{ FStar_Syntax_Syntax.qkind = FStar_Syntax_Syntax.Quote_dynamic ; - FStar_Syntax_Syntax.antiquotes = uu____1426;_}) + FStar_Syntax_Syntax.antiquotes = uu____1419;_}) -> "Tm_quoted (dynamic)" - | FStar_Syntax_Syntax.Tm_abs uu____1440 -> "Tm_abs" - | FStar_Syntax_Syntax.Tm_arrow uu____1460 -> "Tm_arrow" - | FStar_Syntax_Syntax.Tm_refine uu____1476 -> "Tm_refine" - | FStar_Syntax_Syntax.Tm_app uu____1484 -> "Tm_app" - | FStar_Syntax_Syntax.Tm_match uu____1502 -> "Tm_match" - | FStar_Syntax_Syntax.Tm_ascribed uu____1526 -> "Tm_ascribed" - | FStar_Syntax_Syntax.Tm_let uu____1554 -> "Tm_let" - | FStar_Syntax_Syntax.Tm_uvar uu____1569 -> "Tm_uvar" - | FStar_Syntax_Syntax.Tm_delayed (uu____1583,m) -> - let uu____1621 = FStar_ST.op_Bang m in - (match uu____1621 with + | FStar_Syntax_Syntax.Tm_abs uu____1433 -> "Tm_abs" + | FStar_Syntax_Syntax.Tm_arrow uu____1453 -> "Tm_arrow" + | FStar_Syntax_Syntax.Tm_refine uu____1469 -> "Tm_refine" + | FStar_Syntax_Syntax.Tm_app uu____1477 -> "Tm_app" + | FStar_Syntax_Syntax.Tm_match uu____1495 -> "Tm_match" + | FStar_Syntax_Syntax.Tm_ascribed uu____1519 -> "Tm_ascribed" + | FStar_Syntax_Syntax.Tm_let uu____1547 -> "Tm_let" + | FStar_Syntax_Syntax.Tm_uvar uu____1562 -> "Tm_uvar" + | FStar_Syntax_Syntax.Tm_delayed (uu____1576,m) -> + let uu____1614 = FStar_ST.op_Bang m in + (match uu____1614 with | FStar_Pervasives_Native.None -> "Tm_delayed" - | FStar_Pervasives_Native.Some uu____1679 -> "Tm_delayed-resolved") - | FStar_Syntax_Syntax.Tm_meta (uu____1685,m) -> - let uu____1691 = metadata_to_string m in - Prims.strcat "Tm_meta:" uu____1691 + | FStar_Pervasives_Native.Some uu____1672 -> "Tm_delayed-resolved") + | FStar_Syntax_Syntax.Tm_meta (uu____1678,m) -> + let uu____1684 = metadata_to_string m in + Prims.strcat "Tm_meta:" uu____1684 | FStar_Syntax_Syntax.Tm_unknown -> "Tm_unknown" - | FStar_Syntax_Syntax.Tm_lazy uu____1695 -> "Tm_lazy" + | FStar_Syntax_Syntax.Tm_lazy uu____1688 -> "Tm_lazy" and (term_to_string : FStar_Syntax_Syntax.term -> Prims.string) = fun x -> - let uu____1698 = - let uu____1700 = FStar_Options.ugly () in Prims.op_Negation uu____1700 + let uu____1691 = + let uu____1693 = FStar_Options.ugly () in Prims.op_Negation uu____1693 in - if uu____1698 + if uu____1691 then let e = FStar_Syntax_Resugar.resugar_term x in let d = FStar_Parser_ToDocument.term_to_document e in @@ -464,430 +464,429 @@ and (term_to_string : FStar_Syntax_Syntax.term -> Prims.string) = else (let x1 = FStar_Syntax_Subst.compress x in let x2 = - let uu____1714 = FStar_Options.print_implicits () in - if uu____1714 then x1 else FStar_Syntax_Util.unmeta x1 in + let uu____1707 = FStar_Options.print_implicits () in + if uu____1707 then x1 else FStar_Syntax_Util.unmeta x1 in match x2.FStar_Syntax_Syntax.n with - | FStar_Syntax_Syntax.Tm_delayed uu____1722 -> failwith "impossible" - | FStar_Syntax_Syntax.Tm_app (uu____1747,[]) -> failwith "Empty args!" + | FStar_Syntax_Syntax.Tm_delayed uu____1715 -> failwith "impossible" + | FStar_Syntax_Syntax.Tm_app (uu____1740,[]) -> failwith "Empty args!" | FStar_Syntax_Syntax.Tm_lazy { FStar_Syntax_Syntax.blob = b; FStar_Syntax_Syntax.lkind = FStar_Syntax_Syntax.Lazy_embedding - (uu____1773,thunk); - FStar_Syntax_Syntax.ltyp = uu____1775; - FStar_Syntax_Syntax.rng = uu____1776;_} + (uu____1766,thunk); + FStar_Syntax_Syntax.ltyp = uu____1768; + FStar_Syntax_Syntax.rng = uu____1769;_} -> - let uu____1787 = - let uu____1789 = - let uu____1791 = FStar_Common.force_thunk thunk in - term_to_string uu____1791 in - Prims.strcat uu____1789 "]" in - Prims.strcat "[LAZYEMB:" uu____1787 + let uu____1780 = + let uu____1782 = + let uu____1784 = FStar_Common.force_thunk thunk in + term_to_string uu____1784 in + Prims.strcat uu____1782 "]" in + Prims.strcat "[LAZYEMB:" uu____1780 | FStar_Syntax_Syntax.Tm_lazy i -> - let uu____1837 = - let uu____1839 = - let uu____1841 = - let uu____1842 = - let uu____1851 = + let uu____1830 = + let uu____1832 = + let uu____1834 = + let uu____1835 = + let uu____1844 = FStar_ST.op_Bang FStar_Syntax_Syntax.lazy_chooser in - FStar_Util.must uu____1851 in - uu____1842 i.FStar_Syntax_Syntax.lkind i in - term_to_string uu____1841 in - Prims.strcat uu____1839 "]" in - Prims.strcat "[lazy:" uu____1837 + FStar_Util.must uu____1844 in + uu____1835 i.FStar_Syntax_Syntax.lkind i in + term_to_string uu____1834 in + Prims.strcat uu____1832 "]" in + Prims.strcat "[lazy:" uu____1830 | FStar_Syntax_Syntax.Tm_quoted (tm,qi) -> (match qi.FStar_Syntax_Syntax.qkind with | FStar_Syntax_Syntax.Quote_static -> - let print_aq uu____1920 = - match uu____1920 with + let print_aq uu____1913 = + match uu____1913 with | (bv,t) -> - let uu____1928 = bv_to_string bv in - let uu____1930 = term_to_string t in - FStar_Util.format2 "%s -> %s" uu____1928 uu____1930 + let uu____1921 = bv_to_string bv in + let uu____1923 = term_to_string t in + FStar_Util.format2 "%s -> %s" uu____1921 uu____1923 in - let uu____1933 = term_to_string tm in - let uu____1935 = + let uu____1926 = term_to_string tm in + let uu____1928 = FStar_Common.string_of_list print_aq qi.FStar_Syntax_Syntax.antiquotes in - FStar_Util.format2 "`(%s)%s" uu____1933 uu____1935 + FStar_Util.format2 "`(%s)%s" uu____1926 uu____1928 | FStar_Syntax_Syntax.Quote_dynamic -> - let uu____1944 = term_to_string tm in - FStar_Util.format1 "quote (%s)" uu____1944) + let uu____1937 = term_to_string tm in + FStar_Util.format1 "quote (%s)" uu____1937) | FStar_Syntax_Syntax.Tm_meta (t,FStar_Syntax_Syntax.Meta_pattern ps) -> let pats = - let uu____1967 = + let uu____1960 = FStar_All.pipe_right ps (FStar_List.map (fun args -> - let uu____2004 = + let uu____1997 = FStar_All.pipe_right args (FStar_List.map - (fun uu____2029 -> - match uu____2029 with - | (t1,uu____2038) -> term_to_string t1)) + (fun uu____2022 -> + match uu____2022 with + | (t1,uu____2031) -> term_to_string t1)) in - FStar_All.pipe_right uu____2004 + FStar_All.pipe_right uu____1997 (FStar_String.concat "; "))) in - FStar_All.pipe_right uu____1967 (FStar_String.concat "\\/") in - let uu____2053 = term_to_string t in - FStar_Util.format2 "{:pattern %s} %s" pats uu____2053 + FStar_All.pipe_right uu____1960 (FStar_String.concat "\\/") in + let uu____2046 = term_to_string t in + FStar_Util.format2 "{:pattern %s} %s" pats uu____2046 | FStar_Syntax_Syntax.Tm_meta (t,FStar_Syntax_Syntax.Meta_monadic (m,t')) -> - let uu____2067 = tag_of_term t in - let uu____2069 = sli m in - let uu____2071 = term_to_string t' in - let uu____2073 = term_to_string t in - FStar_Util.format4 "(Monadic-%s{%s %s} %s)" uu____2067 uu____2069 - uu____2071 uu____2073 + let uu____2060 = tag_of_term t in + let uu____2062 = sli m in + let uu____2064 = term_to_string t' in + let uu____2066 = term_to_string t in + FStar_Util.format4 "(Monadic-%s{%s %s} %s)" uu____2060 uu____2062 + uu____2064 uu____2066 | FStar_Syntax_Syntax.Tm_meta (t,FStar_Syntax_Syntax.Meta_monadic_lift (m0,m1,t')) -> - let uu____2088 = tag_of_term t in - let uu____2090 = term_to_string t' in - let uu____2092 = sli m0 in - let uu____2094 = sli m1 in - let uu____2096 = term_to_string t in - FStar_Util.format5 "(MonadicLift-%s{%s : %s -> %s} %s)" uu____2088 - uu____2090 uu____2092 uu____2094 uu____2096 + let uu____2081 = tag_of_term t in + let uu____2083 = term_to_string t' in + let uu____2085 = sli m0 in + let uu____2087 = sli m1 in + let uu____2089 = term_to_string t in + FStar_Util.format5 "(MonadicLift-%s{%s : %s -> %s} %s)" uu____2081 + uu____2083 uu____2085 uu____2087 uu____2089 | FStar_Syntax_Syntax.Tm_meta (t,FStar_Syntax_Syntax.Meta_labeled (l,r,b)) -> - let uu____2111 = FStar_Range.string_of_range r in - let uu____2113 = term_to_string t in - FStar_Util.format3 "Meta_labeled(%s, %s){%s}" l uu____2111 - uu____2113 + let uu____2104 = FStar_Range.string_of_range r in + let uu____2106 = term_to_string t in + FStar_Util.format3 "Meta_labeled(%s, %s){%s}" l uu____2104 + uu____2106 | FStar_Syntax_Syntax.Tm_meta (t,FStar_Syntax_Syntax.Meta_named l) -> - let uu____2122 = lid_to_string l in - let uu____2124 = + let uu____2115 = lid_to_string l in + let uu____2117 = FStar_Range.string_of_range t.FStar_Syntax_Syntax.pos in - let uu____2126 = term_to_string t in - FStar_Util.format3 "Meta_named(%s, %s){%s}" uu____2122 uu____2124 - uu____2126 + let uu____2119 = term_to_string t in + FStar_Util.format3 "Meta_named(%s, %s){%s}" uu____2115 uu____2117 + uu____2119 | FStar_Syntax_Syntax.Tm_meta - (t,FStar_Syntax_Syntax.Meta_desugared uu____2130) -> - let uu____2135 = term_to_string t in - FStar_Util.format1 "Meta_desugared{%s}" uu____2135 + (t,FStar_Syntax_Syntax.Meta_desugared uu____2123) -> + let uu____2128 = term_to_string t in + FStar_Util.format1 "Meta_desugared{%s}" uu____2128 | FStar_Syntax_Syntax.Tm_bvar x3 -> - let uu____2139 = db_to_string x3 in - let uu____2141 = - let uu____2143 = - let uu____2145 = tag_of_term x3.FStar_Syntax_Syntax.sort in - Prims.strcat uu____2145 ")" in - Prims.strcat ":(" uu____2143 in - Prims.strcat uu____2139 uu____2141 + let uu____2132 = db_to_string x3 in + let uu____2134 = + let uu____2136 = + let uu____2138 = tag_of_term x3.FStar_Syntax_Syntax.sort in + Prims.strcat uu____2138 ")" in + Prims.strcat ":(" uu____2136 in + Prims.strcat uu____2132 uu____2134 | FStar_Syntax_Syntax.Tm_name x3 -> nm_to_string x3 | FStar_Syntax_Syntax.Tm_fvar f -> fv_to_string f - | FStar_Syntax_Syntax.Tm_uvar (u,([],uu____2152)) -> - let uu____2167 = + | FStar_Syntax_Syntax.Tm_uvar (u,([],uu____2145)) -> + let uu____2160 = (FStar_Options.print_bound_var_types ()) && (FStar_Options.print_effect_args ()) in - if uu____2167 + if uu____2160 then ctx_uvar_to_string u else - (let uu____2173 = - let uu____2175 = + (let uu____2166 = + let uu____2168 = FStar_Syntax_Unionfind.uvar_id u.FStar_Syntax_Syntax.ctx_uvar_head in - FStar_All.pipe_left FStar_Util.string_of_int uu____2175 in - Prims.strcat "?" uu____2173) + FStar_All.pipe_left FStar_Util.string_of_int uu____2168 in + Prims.strcat "?" uu____2166) | FStar_Syntax_Syntax.Tm_uvar (u,s) -> - let uu____2198 = + let uu____2191 = (FStar_Options.print_bound_var_types ()) && (FStar_Options.print_effect_args ()) in - if uu____2198 + if uu____2191 then - let uu____2202 = ctx_uvar_to_string u in - let uu____2204 = - let uu____2206 = + let uu____2195 = ctx_uvar_to_string u in + let uu____2197 = + let uu____2199 = FStar_List.map subst_to_string (FStar_Pervasives_Native.fst s) in - FStar_All.pipe_right uu____2206 (FStar_String.concat "; ") in - FStar_Util.format2 "(%s @ %s)" uu____2202 uu____2204 + FStar_All.pipe_right uu____2199 (FStar_String.concat "; ") in + FStar_Util.format2 "(%s @ %s)" uu____2195 uu____2197 else - (let uu____2225 = - let uu____2227 = + (let uu____2218 = + let uu____2220 = FStar_Syntax_Unionfind.uvar_id u.FStar_Syntax_Syntax.ctx_uvar_head in - FStar_All.pipe_left FStar_Util.string_of_int uu____2227 in - Prims.strcat "?" uu____2225) + FStar_All.pipe_left FStar_Util.string_of_int uu____2220 in + Prims.strcat "?" uu____2218) | FStar_Syntax_Syntax.Tm_constant c -> const_to_string c | FStar_Syntax_Syntax.Tm_type u -> - let uu____2234 = FStar_Options.print_universes () in - if uu____2234 + let uu____2227 = FStar_Options.print_universes () in + if uu____2227 then - let uu____2238 = univ_to_string u in - FStar_Util.format1 "Type u#(%s)" uu____2238 + let uu____2231 = univ_to_string u in + FStar_Util.format1 "Type u#(%s)" uu____2231 else "Type" | FStar_Syntax_Syntax.Tm_arrow (bs,c) -> - let uu____2266 = binders_to_string " -> " bs in - let uu____2269 = comp_to_string c in - FStar_Util.format2 "(%s -> %s)" uu____2266 uu____2269 + let uu____2259 = binders_to_string " -> " bs in + let uu____2262 = comp_to_string c in + FStar_Util.format2 "(%s -> %s)" uu____2259 uu____2262 | FStar_Syntax_Syntax.Tm_abs (bs,t2,lc) -> (match lc with | FStar_Pervasives_Native.Some rc when FStar_Options.print_implicits () -> - let uu____2301 = binders_to_string " " bs in - let uu____2304 = term_to_string t2 in - let uu____2306 = + let uu____2294 = binders_to_string " " bs in + let uu____2297 = term_to_string t2 in + let uu____2299 = if FStar_Option.isNone rc.FStar_Syntax_Syntax.residual_typ then "None" else - (let uu____2315 = + (let uu____2308 = FStar_Option.get rc.FStar_Syntax_Syntax.residual_typ in - term_to_string uu____2315) + term_to_string uu____2308) in FStar_Util.format4 "(fun %s -> (%s $$ (residual) %s %s))" - uu____2301 uu____2304 + uu____2294 uu____2297 (rc.FStar_Syntax_Syntax.residual_effect).FStar_Ident.str - uu____2306 - | uu____2319 -> - let uu____2322 = binders_to_string " " bs in - let uu____2325 = term_to_string t2 in - FStar_Util.format2 "(fun %s -> %s)" uu____2322 uu____2325) + uu____2299 + | uu____2312 -> + let uu____2315 = binders_to_string " " bs in + let uu____2318 = term_to_string t2 in + FStar_Util.format2 "(fun %s -> %s)" uu____2315 uu____2318) | FStar_Syntax_Syntax.Tm_refine (xt,f) -> - let uu____2334 = bv_to_string xt in - let uu____2336 = + let uu____2327 = bv_to_string xt in + let uu____2329 = FStar_All.pipe_right xt.FStar_Syntax_Syntax.sort term_to_string in - let uu____2339 = FStar_All.pipe_right f formula_to_string in - FStar_Util.format3 "(%s:%s{%s})" uu____2334 uu____2336 uu____2339 + let uu____2332 = FStar_All.pipe_right f formula_to_string in + FStar_Util.format3 "(%s:%s{%s})" uu____2327 uu____2329 uu____2332 | FStar_Syntax_Syntax.Tm_app (t,args) -> - let uu____2371 = term_to_string t in - let uu____2373 = args_to_string args in - FStar_Util.format2 "(%s %s)" uu____2371 uu____2373 + let uu____2364 = term_to_string t in + let uu____2366 = args_to_string args in + FStar_Util.format2 "(%s %s)" uu____2364 uu____2366 | FStar_Syntax_Syntax.Tm_let (lbs,e) -> - let uu____2396 = lbs_to_string [] lbs in - let uu____2398 = term_to_string e in - FStar_Util.format2 "%s\nin\n%s" uu____2396 uu____2398 + let uu____2389 = lbs_to_string [] lbs in + let uu____2391 = term_to_string e in + FStar_Util.format2 "%s\nin\n%s" uu____2389 uu____2391 | FStar_Syntax_Syntax.Tm_ascribed (e,(annot,topt),eff_name) -> let annot1 = match annot with | FStar_Util.Inl t -> - let uu____2463 = - let uu____2465 = + let uu____2456 = + let uu____2458 = FStar_Util.map_opt eff_name FStar_Ident.text_of_lid in - FStar_All.pipe_right uu____2465 + FStar_All.pipe_right uu____2458 (FStar_Util.dflt "default") in - let uu____2476 = term_to_string t in - FStar_Util.format2 "[%s] %s" uu____2463 uu____2476 + let uu____2469 = term_to_string t in + FStar_Util.format2 "[%s] %s" uu____2456 uu____2469 | FStar_Util.Inr c -> comp_to_string c in let topt1 = match topt with | FStar_Pervasives_Native.None -> "" | FStar_Pervasives_Native.Some t -> - let uu____2497 = term_to_string t in - FStar_Util.format1 "by %s" uu____2497 + let uu____2490 = term_to_string t in + FStar_Util.format1 "by %s" uu____2490 in - let uu____2500 = term_to_string e in - FStar_Util.format3 "(%s - let uu____2541 = term_to_string head1 in - let uu____2543 = - let uu____2545 = + let uu____2534 = term_to_string head1 in + let uu____2536 = + let uu____2538 = FStar_All.pipe_right branches (FStar_List.map - (fun uu____2578 -> - match uu____2578 with + (fun uu____2571 -> + match uu____2571 with | (p,wopt,e) -> - let uu____2595 = + let uu____2588 = FStar_All.pipe_right p pat_to_string in - let uu____2598 = + let uu____2591 = match wopt with | FStar_Pervasives_Native.None -> "" | FStar_Pervasives_Native.Some w -> - let uu____2603 = + let uu____2596 = FStar_All.pipe_right w term_to_string in - FStar_Util.format1 "when %s" uu____2603 + FStar_Util.format1 "when %s" uu____2596 in - let uu____2607 = + let uu____2600 = FStar_All.pipe_right e term_to_string in - FStar_Util.format3 "%s %s -> %s" uu____2595 - uu____2598 uu____2607)) + FStar_Util.format3 "%s %s -> %s" uu____2588 + uu____2591 uu____2600)) in - FStar_Util.concat_l "\n\t|" uu____2545 in - FStar_Util.format2 "(match %s with\n\t| %s)" uu____2541 uu____2543 + FStar_Util.concat_l "\n\t|" uu____2538 in + FStar_Util.format2 "(match %s with\n\t| %s)" uu____2534 uu____2536 | FStar_Syntax_Syntax.Tm_uinst (t,us) -> - let uu____2619 = FStar_Options.print_universes () in - if uu____2619 + let uu____2612 = FStar_Options.print_universes () in + if uu____2612 then - let uu____2623 = term_to_string t in - let uu____2625 = univs_to_string us in - FStar_Util.format2 "%s<%s>" uu____2623 uu____2625 + let uu____2616 = term_to_string t in + let uu____2618 = univs_to_string us in + FStar_Util.format2 "%s<%s>" uu____2616 uu____2618 else term_to_string t | FStar_Syntax_Syntax.Tm_unknown -> "_") and (ctx_uvar_to_string : FStar_Syntax_Syntax.ctx_uvar -> Prims.string) = fun ctx_uvar -> - let uu____2632 = + let uu____2625 = binders_to_string ", " ctx_uvar.FStar_Syntax_Syntax.ctx_uvar_binders in - let uu____2635 = + let uu____2628 = uvar_to_string ctx_uvar.FStar_Syntax_Syntax.ctx_uvar_head in - let uu____2637 = term_to_string ctx_uvar.FStar_Syntax_Syntax.ctx_uvar_typ + let uu____2630 = term_to_string ctx_uvar.FStar_Syntax_Syntax.ctx_uvar_typ in FStar_Util.format4 "(* %s *)\n(%s |- %s : %s)" - ctx_uvar.FStar_Syntax_Syntax.ctx_uvar_reason uu____2632 uu____2635 - uu____2637 + ctx_uvar.FStar_Syntax_Syntax.ctx_uvar_reason uu____2625 uu____2628 + uu____2630 and (subst_elt_to_string : FStar_Syntax_Syntax.subst_elt -> Prims.string) = - fun uu___218_2640 -> - match uu___218_2640 with + fun uu___217_2633 -> + match uu___217_2633 with | FStar_Syntax_Syntax.DB (i,x) -> - let uu____2646 = FStar_Util.string_of_int i in - let uu____2648 = bv_to_string x in - FStar_Util.format2 "DB (%s, %s)" uu____2646 uu____2648 + let uu____2639 = FStar_Util.string_of_int i in + let uu____2641 = bv_to_string x in + FStar_Util.format2 "DB (%s, %s)" uu____2639 uu____2641 | FStar_Syntax_Syntax.NM (x,i) -> - let uu____2655 = bv_to_string x in - let uu____2657 = FStar_Util.string_of_int i in - FStar_Util.format2 "NM (%s, %s)" uu____2655 uu____2657 + let uu____2648 = bv_to_string x in + let uu____2650 = FStar_Util.string_of_int i in + FStar_Util.format2 "NM (%s, %s)" uu____2648 uu____2650 | FStar_Syntax_Syntax.NT (x,t) -> - let uu____2666 = bv_to_string x in - let uu____2668 = term_to_string t in - FStar_Util.format2 "NT (%s, %s)" uu____2666 uu____2668 + let uu____2659 = bv_to_string x in + let uu____2661 = term_to_string t in + FStar_Util.format2 "NT (%s, %s)" uu____2659 uu____2661 | FStar_Syntax_Syntax.UN (i,u) -> - let uu____2675 = FStar_Util.string_of_int i in - let uu____2677 = univ_to_string u in - FStar_Util.format2 "UN (%s, %s)" uu____2675 uu____2677 + let uu____2668 = FStar_Util.string_of_int i in + let uu____2670 = univ_to_string u in + FStar_Util.format2 "UN (%s, %s)" uu____2668 uu____2670 | FStar_Syntax_Syntax.UD (u,i) -> - let uu____2684 = FStar_Util.string_of_int i in - FStar_Util.format2 "UD (%s, %s)" u.FStar_Ident.idText uu____2684 + let uu____2677 = FStar_Util.string_of_int i in + FStar_Util.format2 "UD (%s, %s)" u.FStar_Ident.idText uu____2677 and (subst_to_string : FStar_Syntax_Syntax.subst_t -> Prims.string) = fun s -> - let uu____2688 = + let uu____2681 = FStar_All.pipe_right s (FStar_List.map subst_elt_to_string) in - FStar_All.pipe_right uu____2688 (FStar_String.concat "; ") + FStar_All.pipe_right uu____2681 (FStar_String.concat "; ") and (pat_to_string : FStar_Syntax_Syntax.pat -> Prims.string) = fun x -> - let uu____2704 = - let uu____2706 = FStar_Options.ugly () in Prims.op_Negation uu____2706 + let uu____2697 = + let uu____2699 = FStar_Options.ugly () in Prims.op_Negation uu____2699 in - if uu____2704 + if uu____2697 then let e = - let uu____2711 = FStar_Syntax_Syntax.new_bv_set () in - FStar_Syntax_Resugar.resugar_pat x uu____2711 in + let uu____2704 = FStar_Syntax_Syntax.new_bv_set () in + FStar_Syntax_Resugar.resugar_pat x uu____2704 in let d = FStar_Parser_ToDocument.pat_to_document e in FStar_Pprint.pretty_string (FStar_Util.float_of_string "1.0") (Prims.parse_int "100") d else (match x.FStar_Syntax_Syntax.v with | FStar_Syntax_Syntax.Pat_cons (l,pats) -> - let uu____2740 = fv_to_string l in - let uu____2742 = - let uu____2744 = + let uu____2733 = fv_to_string l in + let uu____2735 = + let uu____2737 = FStar_List.map - (fun uu____2758 -> - match uu____2758 with + (fun uu____2751 -> + match uu____2751 with | (x1,b) -> let p = pat_to_string x1 in if b then Prims.strcat "#" p else p) pats in - FStar_All.pipe_right uu____2744 (FStar_String.concat " ") in - FStar_Util.format2 "(%s %s)" uu____2740 uu____2742 - | FStar_Syntax_Syntax.Pat_dot_term (x1,uu____2783) -> - let uu____2788 = FStar_Options.print_bound_var_types () in - if uu____2788 + FStar_All.pipe_right uu____2737 (FStar_String.concat " ") in + FStar_Util.format2 "(%s %s)" uu____2733 uu____2735 + | FStar_Syntax_Syntax.Pat_dot_term (x1,uu____2776) -> + let uu____2781 = FStar_Options.print_bound_var_types () in + if uu____2781 then - let uu____2792 = bv_to_string x1 in - let uu____2794 = term_to_string x1.FStar_Syntax_Syntax.sort in - FStar_Util.format2 ".%s:%s" uu____2792 uu____2794 + let uu____2785 = bv_to_string x1 in + let uu____2787 = term_to_string x1.FStar_Syntax_Syntax.sort in + FStar_Util.format2 ".%s:%s" uu____2785 uu____2787 else - (let uu____2799 = bv_to_string x1 in - FStar_Util.format1 ".%s" uu____2799) + (let uu____2792 = bv_to_string x1 in + FStar_Util.format1 ".%s" uu____2792) | FStar_Syntax_Syntax.Pat_var x1 -> - let uu____2803 = FStar_Options.print_bound_var_types () in - if uu____2803 + let uu____2796 = FStar_Options.print_bound_var_types () in + if uu____2796 then - let uu____2807 = bv_to_string x1 in - let uu____2809 = term_to_string x1.FStar_Syntax_Syntax.sort in - FStar_Util.format2 "%s:%s" uu____2807 uu____2809 + let uu____2800 = bv_to_string x1 in + let uu____2802 = term_to_string x1.FStar_Syntax_Syntax.sort in + FStar_Util.format2 "%s:%s" uu____2800 uu____2802 else bv_to_string x1 | FStar_Syntax_Syntax.Pat_constant c -> const_to_string c | FStar_Syntax_Syntax.Pat_wild x1 -> - let uu____2816 = FStar_Options.print_bound_var_types () in - if uu____2816 + let uu____2809 = FStar_Options.print_bound_var_types () in + if uu____2809 then - let uu____2820 = bv_to_string x1 in - let uu____2822 = term_to_string x1.FStar_Syntax_Syntax.sort in - FStar_Util.format2 "_wild_%s:%s" uu____2820 uu____2822 + let uu____2813 = bv_to_string x1 in + let uu____2815 = term_to_string x1.FStar_Syntax_Syntax.sort in + FStar_Util.format2 "_wild_%s:%s" uu____2813 uu____2815 else bv_to_string x1) and (lbs_to_string : FStar_Syntax_Syntax.qualifier Prims.list -> - (Prims.bool,FStar_Syntax_Syntax.letbinding Prims.list) - FStar_Pervasives_Native.tuple2 -> Prims.string) + FStar_Syntax_Syntax.letbindings -> Prims.string) = fun quals -> fun lbs -> - let uu____2838 = quals_to_string' quals in - let uu____2840 = - let uu____2842 = + let uu____2824 = quals_to_string' quals in + let uu____2826 = + let uu____2828 = FStar_All.pipe_right (FStar_Pervasives_Native.snd lbs) (FStar_List.map (fun lb -> - let uu____2862 = + let uu____2848 = attrs_to_string lb.FStar_Syntax_Syntax.lbattrs in - let uu____2864 = + let uu____2850 = lbname_to_string lb.FStar_Syntax_Syntax.lbname in - let uu____2866 = - let uu____2868 = FStar_Options.print_universes () in - if uu____2868 + let uu____2852 = + let uu____2854 = FStar_Options.print_universes () in + if uu____2854 then - let uu____2872 = - let uu____2874 = + let uu____2858 = + let uu____2860 = univ_names_to_string lb.FStar_Syntax_Syntax.lbunivs in - Prims.strcat uu____2874 ">" in - Prims.strcat "<" uu____2872 + Prims.strcat uu____2860 ">" in + Prims.strcat "<" uu____2858 else "" in - let uu____2881 = + let uu____2867 = term_to_string lb.FStar_Syntax_Syntax.lbtyp in - let uu____2883 = + let uu____2869 = FStar_All.pipe_right lb.FStar_Syntax_Syntax.lbdef term_to_string in - FStar_Util.format5 "%s%s %s : %s = %s" uu____2862 - uu____2864 uu____2866 uu____2881 uu____2883)) + FStar_Util.format5 "%s%s %s : %s = %s" uu____2848 + uu____2850 uu____2852 uu____2867 uu____2869)) in - FStar_Util.concat_l "\n and " uu____2842 in - FStar_Util.format3 "%slet %s %s" uu____2838 - (if FStar_Pervasives_Native.fst lbs then "rec" else "") uu____2840 + FStar_Util.concat_l "\n and " uu____2828 in + FStar_Util.format3 "%slet %s %s" uu____2824 + (if FStar_Pervasives_Native.fst lbs then "rec" else "") uu____2826 and (attrs_to_string : FStar_Syntax_Syntax.attribute Prims.list -> Prims.string) = - fun uu___219_2898 -> - match uu___219_2898 with + fun uu___218_2884 -> + match uu___218_2884 with | [] -> "" | tms -> - let uu____2906 = - let uu____2908 = + let uu____2892 = + let uu____2894 = FStar_List.map (fun t -> - let uu____2916 = term_to_string t in paren uu____2916) tms + let uu____2902 = term_to_string t in paren uu____2902) tms in - FStar_All.pipe_right uu____2908 (FStar_String.concat "; ") in - FStar_Util.format1 "[@ %s]" uu____2906 + FStar_All.pipe_right uu____2894 (FStar_String.concat "; ") in + FStar_Util.format1 "[@ %s]" uu____2892 and (lcomp_to_string : FStar_Syntax_Syntax.lcomp -> Prims.string) = fun lc -> - let uu____2925 = FStar_Options.print_effect_args () in - if uu____2925 + let uu____2911 = FStar_Options.print_effect_args () in + if uu____2911 then - let uu____2929 = FStar_Syntax_Syntax.lcomp_comp lc in - comp_to_string uu____2929 + let uu____2915 = FStar_Syntax_Syntax.lcomp_comp lc in + comp_to_string uu____2915 else - (let uu____2932 = sli lc.FStar_Syntax_Syntax.eff_name in - let uu____2934 = term_to_string lc.FStar_Syntax_Syntax.res_typ in - FStar_Util.format2 "%s %s" uu____2932 uu____2934) + (let uu____2918 = sli lc.FStar_Syntax_Syntax.eff_name in + let uu____2920 = term_to_string lc.FStar_Syntax_Syntax.res_typ in + FStar_Util.format2 "%s %s" uu____2918 uu____2920) and (aqual_to_string' : Prims.string -> @@ -895,8 +894,8 @@ and (aqual_to_string' : Prims.string) = fun s -> - fun uu___220_2938 -> - match uu___220_2938 with + fun uu___219_2924 -> + match uu___219_2924 with | FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Implicit (false )) -> Prims.strcat "#" s | FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Implicit (true )) @@ -907,10 +906,10 @@ and (aqual_to_string' : FStar_Syntax_Util.is_fvar FStar_Parser_Const.tcresolve_lid t -> Prims.strcat "[|" (Prims.strcat s "|]") | FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Meta t) -> - let uu____2956 = - let uu____2958 = term_to_string t in - Prims.strcat uu____2958 (Prims.strcat "]" s) in - Prims.strcat "#[" uu____2956 + let uu____2942 = + let uu____2944 = term_to_string t in + Prims.strcat uu____2944 (Prims.strcat "]" s) in + Prims.strcat "#[" uu____2942 | FStar_Pervasives_Native.None -> s and (aqual_to_string : FStar_Syntax_Syntax.aqual -> Prims.string) = @@ -930,48 +929,48 @@ and (binder_to_string' : = fun is_arrow -> fun b -> - let uu____2978 = - let uu____2980 = FStar_Options.ugly () in - Prims.op_Negation uu____2980 in - if uu____2978 + let uu____2964 = + let uu____2966 = FStar_Options.ugly () in + Prims.op_Negation uu____2966 in + if uu____2964 then - let uu____2984 = + let uu____2970 = FStar_Syntax_Resugar.resugar_binder b FStar_Range.dummyRange in - match uu____2984 with + match uu____2970 with | FStar_Pervasives_Native.None -> "" | FStar_Pervasives_Native.Some e -> let d = FStar_Parser_ToDocument.binder_to_document e in FStar_Pprint.pretty_string (FStar_Util.float_of_string "1.0") (Prims.parse_int "100") d else - (let uu____2995 = b in - match uu____2995 with + (let uu____2981 = b in + match uu____2981 with | (a,imp) -> - let uu____3009 = FStar_Syntax_Syntax.is_null_binder b in - if uu____3009 + let uu____2995 = FStar_Syntax_Syntax.is_null_binder b in + if uu____2995 then - let uu____3013 = term_to_string a.FStar_Syntax_Syntax.sort in - Prims.strcat "_:" uu____3013 + let uu____2999 = term_to_string a.FStar_Syntax_Syntax.sort in + Prims.strcat "_:" uu____2999 else - (let uu____3018 = + (let uu____3004 = (Prims.op_Negation is_arrow) && - (let uu____3021 = FStar_Options.print_bound_var_types () + (let uu____3007 = FStar_Options.print_bound_var_types () in - Prims.op_Negation uu____3021) + Prims.op_Negation uu____3007) in - if uu____3018 + if uu____3004 then - let uu____3025 = nm_to_string a in - imp_to_string uu____3025 imp + let uu____3011 = nm_to_string a in + imp_to_string uu____3011 imp else - (let uu____3029 = - let uu____3031 = nm_to_string a in - let uu____3033 = - let uu____3035 = + (let uu____3015 = + let uu____3017 = nm_to_string a in + let uu____3019 = + let uu____3021 = term_to_string a.FStar_Syntax_Syntax.sort in - Prims.strcat ":" uu____3035 in - Prims.strcat uu____3031 uu____3033 in - imp_to_string uu____3029 imp))) + Prims.strcat ":" uu____3021 in + Prims.strcat uu____3017 uu____3019 in + imp_to_string uu____3015 imp))) and (binder_to_string : FStar_Syntax_Syntax.binder -> Prims.string) = fun b -> binder_to_string' false b @@ -987,44 +986,44 @@ and (binders_to_string : fun sep -> fun bs -> let bs1 = - let uu____3054 = FStar_Options.print_implicits () in - if uu____3054 then bs else filter_imp bs in + let uu____3040 = FStar_Options.print_implicits () in + if uu____3040 then bs else filter_imp bs in if sep = " -> " then - let uu____3065 = + let uu____3051 = FStar_All.pipe_right bs1 (FStar_List.map arrow_binder_to_string) in - FStar_All.pipe_right uu____3065 (FStar_String.concat sep) + FStar_All.pipe_right uu____3051 (FStar_String.concat sep) else - (let uu____3093 = + (let uu____3079 = FStar_All.pipe_right bs1 (FStar_List.map binder_to_string) in - FStar_All.pipe_right uu____3093 (FStar_String.concat sep)) + FStar_All.pipe_right uu____3079 (FStar_String.concat sep)) and (arg_to_string : (FStar_Syntax_Syntax.term,FStar_Syntax_Syntax.arg_qualifier FStar_Pervasives_Native.option) FStar_Pervasives_Native.tuple2 -> Prims.string) = - fun uu___221_3107 -> - match uu___221_3107 with + fun uu___220_3093 -> + match uu___220_3093 with | (a,imp) -> - let uu____3121 = term_to_string a in imp_to_string uu____3121 imp + let uu____3107 = term_to_string a in imp_to_string uu____3107 imp and (args_to_string : FStar_Syntax_Syntax.args -> Prims.string) = fun args -> let args1 = - let uu____3133 = FStar_Options.print_implicits () in - if uu____3133 then args else filter_imp args in - let uu____3148 = + let uu____3119 = FStar_Options.print_implicits () in + if uu____3119 then args else filter_imp args in + let uu____3134 = FStar_All.pipe_right args1 (FStar_List.map arg_to_string) in - FStar_All.pipe_right uu____3148 (FStar_String.concat " ") + FStar_All.pipe_right uu____3134 (FStar_String.concat " ") and (comp_to_string' : FStar_Syntax_DsEnv.env -> FStar_Syntax_Syntax.comp -> Prims.string) = fun env -> fun c -> - let uu____3177 = FStar_Options.ugly () in - if uu____3177 + let uu____3163 = FStar_Options.ugly () in + if uu____3163 then comp_to_string c else (let e = FStar_Syntax_Resugar.resugar_comp' env c in @@ -1034,10 +1033,10 @@ and (comp_to_string' : and (comp_to_string : FStar_Syntax_Syntax.comp -> Prims.string) = fun c -> - let uu____3188 = - let uu____3190 = FStar_Options.ugly () in Prims.op_Negation uu____3190 + let uu____3174 = + let uu____3176 = FStar_Options.ugly () in Prims.op_Negation uu____3176 in - if uu____3188 + if uu____3174 then let e = FStar_Syntax_Resugar.resugar_comp c in let d = FStar_Parser_ToDocument.term_to_document e in @@ -1046,146 +1045,146 @@ and (comp_to_string : FStar_Syntax_Syntax.comp -> Prims.string) = else (match c.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Total (t,uopt) -> - let uu____3211 = - let uu____3212 = FStar_Syntax_Subst.compress t in - uu____3212.FStar_Syntax_Syntax.n in - (match uu____3211 with - | FStar_Syntax_Syntax.Tm_type uu____3216 when - let uu____3217 = + let uu____3197 = + let uu____3198 = FStar_Syntax_Subst.compress t in + uu____3198.FStar_Syntax_Syntax.n in + (match uu____3197 with + | FStar_Syntax_Syntax.Tm_type uu____3202 when + let uu____3203 = (FStar_Options.print_implicits ()) || (FStar_Options.print_universes ()) in - Prims.op_Negation uu____3217 -> term_to_string t - | uu____3219 -> + Prims.op_Negation uu____3203 -> term_to_string t + | uu____3205 -> (match uopt with | FStar_Pervasives_Native.Some u when FStar_Options.print_universes () -> - let uu____3222 = univ_to_string u in - let uu____3224 = term_to_string t in - FStar_Util.format2 "Tot<%s> %s" uu____3222 uu____3224 - | uu____3227 -> - let uu____3230 = term_to_string t in - FStar_Util.format1 "Tot %s" uu____3230)) + let uu____3208 = univ_to_string u in + let uu____3210 = term_to_string t in + FStar_Util.format2 "Tot<%s> %s" uu____3208 uu____3210 + | uu____3213 -> + let uu____3216 = term_to_string t in + FStar_Util.format1 "Tot %s" uu____3216)) | FStar_Syntax_Syntax.GTotal (t,uopt) -> - let uu____3243 = - let uu____3244 = FStar_Syntax_Subst.compress t in - uu____3244.FStar_Syntax_Syntax.n in - (match uu____3243 with - | FStar_Syntax_Syntax.Tm_type uu____3248 when - let uu____3249 = + let uu____3229 = + let uu____3230 = FStar_Syntax_Subst.compress t in + uu____3230.FStar_Syntax_Syntax.n in + (match uu____3229 with + | FStar_Syntax_Syntax.Tm_type uu____3234 when + let uu____3235 = (FStar_Options.print_implicits ()) || (FStar_Options.print_universes ()) in - Prims.op_Negation uu____3249 -> term_to_string t - | uu____3251 -> + Prims.op_Negation uu____3235 -> term_to_string t + | uu____3237 -> (match uopt with | FStar_Pervasives_Native.Some u when FStar_Options.print_universes () -> - let uu____3254 = univ_to_string u in - let uu____3256 = term_to_string t in - FStar_Util.format2 "GTot<%s> %s" uu____3254 uu____3256 - | uu____3259 -> - let uu____3262 = term_to_string t in - FStar_Util.format1 "GTot %s" uu____3262)) + let uu____3240 = univ_to_string u in + let uu____3242 = term_to_string t in + FStar_Util.format2 "GTot<%s> %s" uu____3240 uu____3242 + | uu____3245 -> + let uu____3248 = term_to_string t in + FStar_Util.format1 "GTot %s" uu____3248)) | FStar_Syntax_Syntax.Comp c1 -> let basic = - let uu____3268 = FStar_Options.print_effect_args () in - if uu____3268 + let uu____3254 = FStar_Options.print_effect_args () in + if uu____3254 then - let uu____3272 = sli c1.FStar_Syntax_Syntax.effect_name in - let uu____3274 = - let uu____3276 = + let uu____3258 = sli c1.FStar_Syntax_Syntax.effect_name in + let uu____3260 = + let uu____3262 = FStar_All.pipe_right c1.FStar_Syntax_Syntax.comp_univs (FStar_List.map univ_to_string) in - FStar_All.pipe_right uu____3276 (FStar_String.concat ", ") + FStar_All.pipe_right uu____3262 (FStar_String.concat ", ") in - let uu____3291 = + let uu____3277 = term_to_string c1.FStar_Syntax_Syntax.result_typ in - let uu____3293 = - let uu____3295 = + let uu____3279 = + let uu____3281 = FStar_All.pipe_right c1.FStar_Syntax_Syntax.effect_args (FStar_List.map arg_to_string) in - FStar_All.pipe_right uu____3295 (FStar_String.concat ", ") + FStar_All.pipe_right uu____3281 (FStar_String.concat ", ") in - let uu____3322 = cflags_to_string c1.FStar_Syntax_Syntax.flags + let uu____3308 = cflags_to_string c1.FStar_Syntax_Syntax.flags in - FStar_Util.format5 "%s<%s> (%s) %s (attributes %s)" uu____3272 - uu____3274 uu____3291 uu____3293 uu____3322 + FStar_Util.format5 "%s<%s> (%s) %s (attributes %s)" uu____3258 + uu____3260 uu____3277 uu____3279 uu____3308 else - (let uu____3327 = + (let uu____3313 = (FStar_All.pipe_right c1.FStar_Syntax_Syntax.flags (FStar_Util.for_some - (fun uu___222_3333 -> - match uu___222_3333 with + (fun uu___221_3319 -> + match uu___221_3319 with | FStar_Syntax_Syntax.TOTAL -> true - | uu____3336 -> false))) + | uu____3322 -> false))) && - (let uu____3339 = FStar_Options.print_effect_args () in - Prims.op_Negation uu____3339) + (let uu____3325 = FStar_Options.print_effect_args () in + Prims.op_Negation uu____3325) in - if uu____3327 + if uu____3313 then - let uu____3343 = + let uu____3329 = term_to_string c1.FStar_Syntax_Syntax.result_typ in - FStar_Util.format1 "Tot %s" uu____3343 + FStar_Util.format1 "Tot %s" uu____3329 else - (let uu____3348 = - ((let uu____3352 = FStar_Options.print_effect_args () + (let uu____3334 = + ((let uu____3338 = FStar_Options.print_effect_args () in - Prims.op_Negation uu____3352) && - (let uu____3355 = FStar_Options.print_implicits () + Prims.op_Negation uu____3338) && + (let uu____3341 = FStar_Options.print_implicits () in - Prims.op_Negation uu____3355)) + Prims.op_Negation uu____3341)) && (FStar_Ident.lid_equals c1.FStar_Syntax_Syntax.effect_name FStar_Parser_Const.effect_ML_lid) in - if uu____3348 + if uu____3334 then term_to_string c1.FStar_Syntax_Syntax.result_typ else - (let uu____3361 = - (let uu____3365 = FStar_Options.print_effect_args () + (let uu____3347 = + (let uu____3351 = FStar_Options.print_effect_args () in - Prims.op_Negation uu____3365) && + Prims.op_Negation uu____3351) && (FStar_All.pipe_right c1.FStar_Syntax_Syntax.flags (FStar_Util.for_some - (fun uu___223_3371 -> - match uu___223_3371 with + (fun uu___222_3357 -> + match uu___222_3357 with | FStar_Syntax_Syntax.MLEFFECT -> true - | uu____3374 -> false))) + | uu____3360 -> false))) in - if uu____3361 + if uu____3347 then - let uu____3378 = + let uu____3364 = term_to_string c1.FStar_Syntax_Syntax.result_typ in - FStar_Util.format1 "ALL %s" uu____3378 + FStar_Util.format1 "ALL %s" uu____3364 else - (let uu____3383 = + (let uu____3369 = sli c1.FStar_Syntax_Syntax.effect_name in - let uu____3385 = + let uu____3371 = term_to_string c1.FStar_Syntax_Syntax.result_typ in - FStar_Util.format2 "%s (%s)" uu____3383 uu____3385)))) + FStar_Util.format2 "%s (%s)" uu____3369 uu____3371)))) in let dec = - let uu____3390 = + let uu____3376 = FStar_All.pipe_right c1.FStar_Syntax_Syntax.flags (FStar_List.collect - (fun uu___224_3403 -> - match uu___224_3403 with + (fun uu___223_3389 -> + match uu___223_3389 with | FStar_Syntax_Syntax.DECREASES e -> - let uu____3410 = - let uu____3412 = term_to_string e in - FStar_Util.format1 " (decreases %s)" uu____3412 + let uu____3396 = + let uu____3398 = term_to_string e in + FStar_Util.format1 " (decreases %s)" uu____3398 in - [uu____3410] - | uu____3417 -> [])) + [uu____3396] + | uu____3403 -> [])) in - FStar_All.pipe_right uu____3390 (FStar_String.concat " ") in + FStar_All.pipe_right uu____3376 (FStar_String.concat " ") in FStar_Util.format2 "%s%s" basic dec) and (cflag_to_string : FStar_Syntax_Syntax.cflag -> Prims.string) = @@ -1200,7 +1199,7 @@ and (cflag_to_string : FStar_Syntax_Syntax.cflag -> Prims.string) = | FStar_Syntax_Syntax.SHOULD_NOT_INLINE -> "should_not_inline" | FStar_Syntax_Syntax.LEMMA -> "lemma" | FStar_Syntax_Syntax.CPS -> "cps" - | FStar_Syntax_Syntax.DECREASES uu____3436 -> "" + | FStar_Syntax_Syntax.DECREASES uu____3422 -> "" and (cflags_to_string : FStar_Syntax_Syntax.cflag Prims.list -> Prims.string) = fun fs -> FStar_Common.string_of_list cflag_to_string fs @@ -1210,50 +1209,50 @@ and (formula_to_string : fun phi -> term_to_string phi and (metadata_to_string : FStar_Syntax_Syntax.metadata -> Prims.string) = - fun uu___225_3446 -> - match uu___225_3446 with + fun uu___224_3432 -> + match uu___224_3432 with | FStar_Syntax_Syntax.Meta_pattern ps -> let pats = - let uu____3463 = + let uu____3449 = FStar_All.pipe_right ps (FStar_List.map (fun args -> - let uu____3500 = + let uu____3486 = FStar_All.pipe_right args (FStar_List.map - (fun uu____3525 -> - match uu____3525 with - | (t,uu____3534) -> term_to_string t)) + (fun uu____3511 -> + match uu____3511 with + | (t,uu____3520) -> term_to_string t)) in - FStar_All.pipe_right uu____3500 + FStar_All.pipe_right uu____3486 (FStar_String.concat "; "))) in - FStar_All.pipe_right uu____3463 (FStar_String.concat "\\/") in + FStar_All.pipe_right uu____3449 (FStar_String.concat "\\/") in FStar_Util.format1 "{Meta_pattern %s}" pats | FStar_Syntax_Syntax.Meta_named lid -> - let uu____3551 = sli lid in - FStar_Util.format1 "{Meta_named %s}" uu____3551 - | FStar_Syntax_Syntax.Meta_labeled (l,r,uu____3556) -> - let uu____3561 = FStar_Range.string_of_range r in - FStar_Util.format2 "{Meta_labeled (%s, %s)}" l uu____3561 + let uu____3537 = sli lid in + FStar_Util.format1 "{Meta_named %s}" uu____3537 + | FStar_Syntax_Syntax.Meta_labeled (l,r,uu____3542) -> + let uu____3547 = FStar_Range.string_of_range r in + FStar_Util.format2 "{Meta_labeled (%s, %s)}" l uu____3547 | FStar_Syntax_Syntax.Meta_desugared msi -> "{Meta_desugared}" | FStar_Syntax_Syntax.Meta_monadic (m,t) -> - let uu____3572 = sli m in - let uu____3574 = term_to_string t in - FStar_Util.format2 "{Meta_monadic(%s @ %s)}" uu____3572 uu____3574 + let uu____3558 = sli m in + let uu____3560 = term_to_string t in + FStar_Util.format2 "{Meta_monadic(%s @ %s)}" uu____3558 uu____3560 | FStar_Syntax_Syntax.Meta_monadic_lift (m,m',t) -> - let uu____3584 = sli m in - let uu____3586 = sli m' in - let uu____3588 = term_to_string t in - FStar_Util.format3 "{Meta_monadic_lift(%s -> %s @ %s)}" uu____3584 - uu____3586 uu____3588 + let uu____3570 = sli m in + let uu____3572 = sli m' in + let uu____3574 = term_to_string t in + FStar_Util.format3 "{Meta_monadic_lift(%s -> %s @ %s)}" uu____3570 + uu____3572 uu____3574 let (term_to_string' : FStar_Syntax_DsEnv.env -> FStar_Syntax_Syntax.term -> Prims.string) = fun env -> fun x -> - let uu____3603 = FStar_Options.ugly () in - if uu____3603 + let uu____3589 = FStar_Options.ugly () in + if uu____3589 then term_to_string x else (let e = FStar_Syntax_Resugar.resugar_term' env x in @@ -1265,71 +1264,71 @@ let (binder_to_json : FStar_Syntax_DsEnv.env -> FStar_Syntax_Syntax.binder -> FStar_Util.json) = fun env -> fun b -> - let uu____3624 = b in - match uu____3624 with + let uu____3610 = b in + match uu____3610 with | (a,imp) -> let n1 = - let uu____3632 = FStar_Syntax_Syntax.is_null_binder b in - if uu____3632 + let uu____3618 = FStar_Syntax_Syntax.is_null_binder b in + if uu____3618 then FStar_Util.JsonNull else - (let uu____3637 = - let uu____3639 = nm_to_string a in - imp_to_string uu____3639 imp in - FStar_Util.JsonStr uu____3637) + (let uu____3623 = + let uu____3625 = nm_to_string a in + imp_to_string uu____3625 imp in + FStar_Util.JsonStr uu____3623) in let t = - let uu____3642 = term_to_string' env a.FStar_Syntax_Syntax.sort + let uu____3628 = term_to_string' env a.FStar_Syntax_Syntax.sort in - FStar_Util.JsonStr uu____3642 in + FStar_Util.JsonStr uu____3628 in FStar_Util.JsonAssoc [("name", n1); ("type", t)] let (binders_to_json : FStar_Syntax_DsEnv.env -> FStar_Syntax_Syntax.binders -> FStar_Util.json) = fun env -> fun bs -> - let uu____3674 = FStar_List.map (binder_to_json env) bs in - FStar_Util.JsonList uu____3674 + let uu____3660 = FStar_List.map (binder_to_json env) bs in + FStar_Util.JsonList uu____3660 let (enclose_universes : Prims.string -> Prims.string) = fun s -> - let uu____3692 = FStar_Options.print_universes () in - if uu____3692 then Prims.strcat "<" (Prims.strcat s ">") else "" + let uu____3678 = FStar_Options.print_universes () in + if uu____3678 then Prims.strcat "<" (Prims.strcat s ">") else "" let (tscheme_to_string : FStar_Syntax_Syntax.tscheme -> Prims.string) = fun s -> - let uu____3708 = - let uu____3710 = FStar_Options.ugly () in Prims.op_Negation uu____3710 + let uu____3694 = + let uu____3696 = FStar_Options.ugly () in Prims.op_Negation uu____3696 in - if uu____3708 + if uu____3694 then let d = FStar_Syntax_Resugar.resugar_tscheme s in let d1 = FStar_Parser_ToDocument.decl_to_document d in FStar_Pprint.pretty_string (FStar_Util.float_of_string "1.0") (Prims.parse_int "100") d1 else - (let uu____3720 = s in - match uu____3720 with + (let uu____3706 = s in + match uu____3706 with | (us,t) -> - let uu____3732 = - let uu____3734 = univ_names_to_string us in - FStar_All.pipe_left enclose_universes uu____3734 in - let uu____3738 = term_to_string t in - FStar_Util.format2 "%s%s" uu____3732 uu____3738) + let uu____3718 = + let uu____3720 = univ_names_to_string us in + FStar_All.pipe_left enclose_universes uu____3720 in + let uu____3724 = term_to_string t in + FStar_Util.format2 "%s%s" uu____3718 uu____3724) let (action_to_string : FStar_Syntax_Syntax.action -> Prims.string) = fun a -> - let uu____3748 = sli a.FStar_Syntax_Syntax.action_name in - let uu____3750 = + let uu____3734 = sli a.FStar_Syntax_Syntax.action_name in + let uu____3736 = binders_to_string " " a.FStar_Syntax_Syntax.action_params in - let uu____3753 = - let uu____3755 = + let uu____3739 = + let uu____3741 = univ_names_to_string a.FStar_Syntax_Syntax.action_univs in - FStar_All.pipe_left enclose_universes uu____3755 in - let uu____3759 = term_to_string a.FStar_Syntax_Syntax.action_typ in - let uu____3761 = term_to_string a.FStar_Syntax_Syntax.action_defn in - FStar_Util.format5 "%s%s %s : %s = %s" uu____3748 uu____3750 uu____3753 - uu____3759 uu____3761 + FStar_All.pipe_left enclose_universes uu____3741 in + let uu____3745 = term_to_string a.FStar_Syntax_Syntax.action_typ in + let uu____3747 = term_to_string a.FStar_Syntax_Syntax.action_defn in + FStar_Util.format5 "%s%s %s : %s = %s" uu____3734 uu____3736 uu____3739 + uu____3745 uu____3747 let (eff_decl_to_string' : Prims.bool -> @@ -1341,10 +1340,10 @@ let (eff_decl_to_string' : fun r -> fun q -> fun ed -> - let uu____3792 = - let uu____3794 = FStar_Options.ugly () in - Prims.op_Negation uu____3794 in - if uu____3792 + let uu____3778 = + let uu____3780 = FStar_Options.ugly () in + Prims.op_Negation uu____3780 in + if uu____3778 then let d = FStar_Syntax_Resugar.resugar_eff_decl for_free r q ed in let d1 = FStar_Parser_ToDocument.decl_to_document d in @@ -1352,118 +1351,118 @@ let (eff_decl_to_string' : (Prims.parse_int "100") d1 else (let actions_to_string actions = - let uu____3815 = + let uu____3801 = FStar_All.pipe_right actions (FStar_List.map action_to_string) in - FStar_All.pipe_right uu____3815 (FStar_String.concat ",\n\t") + FStar_All.pipe_right uu____3801 (FStar_String.concat ",\n\t") in - let uu____3830 = - let uu____3834 = - let uu____3838 = lid_to_string ed.FStar_Syntax_Syntax.mname + let uu____3816 = + let uu____3820 = + let uu____3824 = lid_to_string ed.FStar_Syntax_Syntax.mname in - let uu____3840 = - let uu____3844 = - let uu____3846 = + let uu____3826 = + let uu____3830 = + let uu____3832 = univ_names_to_string ed.FStar_Syntax_Syntax.univs in - FStar_All.pipe_left enclose_universes uu____3846 in - let uu____3850 = - let uu____3854 = + FStar_All.pipe_left enclose_universes uu____3832 in + let uu____3836 = + let uu____3840 = binders_to_string " " ed.FStar_Syntax_Syntax.binders in - let uu____3857 = - let uu____3861 = + let uu____3843 = + let uu____3847 = term_to_string ed.FStar_Syntax_Syntax.signature in - let uu____3863 = - let uu____3867 = + let uu____3849 = + let uu____3853 = tscheme_to_string ed.FStar_Syntax_Syntax.ret_wp in - let uu____3869 = - let uu____3873 = + let uu____3855 = + let uu____3859 = tscheme_to_string ed.FStar_Syntax_Syntax.bind_wp in - let uu____3875 = - let uu____3879 = + let uu____3861 = + let uu____3865 = tscheme_to_string ed.FStar_Syntax_Syntax.if_then_else in - let uu____3881 = - let uu____3885 = + let uu____3867 = + let uu____3871 = tscheme_to_string ed.FStar_Syntax_Syntax.ite_wp in - let uu____3887 = - let uu____3891 = + let uu____3873 = + let uu____3877 = tscheme_to_string ed.FStar_Syntax_Syntax.stronger in - let uu____3893 = - let uu____3897 = + let uu____3879 = + let uu____3883 = tscheme_to_string ed.FStar_Syntax_Syntax.close_wp in - let uu____3899 = - let uu____3903 = + let uu____3885 = + let uu____3889 = tscheme_to_string ed.FStar_Syntax_Syntax.assert_p in - let uu____3905 = - let uu____3909 = + let uu____3891 = + let uu____3895 = tscheme_to_string ed.FStar_Syntax_Syntax.assume_p in - let uu____3911 = - let uu____3915 = + let uu____3897 = + let uu____3901 = tscheme_to_string ed.FStar_Syntax_Syntax.null_wp in - let uu____3917 = - let uu____3921 = + let uu____3903 = + let uu____3907 = tscheme_to_string ed.FStar_Syntax_Syntax.trivial in - let uu____3923 = - let uu____3927 = + let uu____3909 = + let uu____3913 = term_to_string ed.FStar_Syntax_Syntax.repr in - let uu____3929 = - let uu____3933 = + let uu____3915 = + let uu____3919 = tscheme_to_string ed.FStar_Syntax_Syntax.bind_repr in - let uu____3935 = - let uu____3939 = + let uu____3921 = + let uu____3925 = tscheme_to_string ed.FStar_Syntax_Syntax.return_repr in - let uu____3941 = - let uu____3945 = + let uu____3927 = + let uu____3931 = actions_to_string ed.FStar_Syntax_Syntax.actions in - [uu____3945] in - uu____3939 :: uu____3941 in - uu____3933 :: uu____3935 in - uu____3927 :: uu____3929 in - uu____3921 :: uu____3923 in - uu____3915 :: uu____3917 in - uu____3909 :: uu____3911 in - uu____3903 :: uu____3905 in - uu____3897 :: uu____3899 in - uu____3891 :: uu____3893 in - uu____3885 :: uu____3887 in - uu____3879 :: uu____3881 in - uu____3873 :: uu____3875 in - uu____3867 :: uu____3869 in - uu____3861 :: uu____3863 in - uu____3854 :: uu____3857 in - uu____3844 :: uu____3850 in - uu____3838 :: uu____3840 in - (if for_free then "_for_free " else "") :: uu____3834 in + [uu____3931] in + uu____3925 :: uu____3927 in + uu____3919 :: uu____3921 in + uu____3913 :: uu____3915 in + uu____3907 :: uu____3909 in + uu____3901 :: uu____3903 in + uu____3895 :: uu____3897 in + uu____3889 :: uu____3891 in + uu____3883 :: uu____3885 in + uu____3877 :: uu____3879 in + uu____3871 :: uu____3873 in + uu____3865 :: uu____3867 in + uu____3859 :: uu____3861 in + uu____3853 :: uu____3855 in + uu____3847 :: uu____3849 in + uu____3840 :: uu____3843 in + uu____3830 :: uu____3836 in + uu____3824 :: uu____3826 in + (if for_free then "_for_free " else "") :: uu____3820 in FStar_Util.format "new_effect%s { %s%s %s : %s \n return_wp = %s\n; bind_wp = %s\n; if_then_else= %s\n; ite_wp = %s\n; stronger = %s\n; close_wp = %s\n; assert_p = %s\n; assume_p = %s\n; null_wp = %s\n; trivial = %s\n; repr = %s\n; bind_repr = %s\n; return_repr = %s\nand effect_actions\n\t%s\n}\n" - uu____3830) + uu____3816) let (eff_decl_to_string : Prims.bool -> FStar_Syntax_Syntax.eff_decl -> Prims.string) = @@ -1491,66 +1490,66 @@ let rec (sigelt_to_string : FStar_Syntax_Syntax.sigelt -> Prims.string) = | FStar_Syntax_Syntax.Sig_pragma (FStar_Syntax_Syntax.PopOptions ) -> "#pop-options" | FStar_Syntax_Syntax.Sig_inductive_typ - (lid,univs1,tps,k,uu____4019,uu____4020) -> + (lid,univs1,tps,k,uu____4005,uu____4006) -> let quals_str = quals_to_string' x.FStar_Syntax_Syntax.sigquals in let binders_str = binders_to_string " " tps in let term_str = term_to_string k in - let uu____4036 = FStar_Options.print_universes () in - if uu____4036 + let uu____4022 = FStar_Options.print_universes () in + if uu____4022 then - let uu____4040 = univ_names_to_string univs1 in + let uu____4026 = univ_names_to_string univs1 in FStar_Util.format5 "%stype %s<%s> %s : %s" quals_str - lid.FStar_Ident.str uu____4040 binders_str term_str + lid.FStar_Ident.str uu____4026 binders_str term_str else FStar_Util.format4 "%stype %s %s : %s" quals_str lid.FStar_Ident.str binders_str term_str | FStar_Syntax_Syntax.Sig_datacon - (lid,univs1,t,uu____4049,uu____4050,uu____4051) -> - let uu____4058 = FStar_Options.print_universes () in - if uu____4058 + (lid,univs1,t,uu____4035,uu____4036,uu____4037) -> + let uu____4044 = FStar_Options.print_universes () in + if uu____4044 then - let uu____4062 = univ_names_to_string univs1 in - let uu____4064 = term_to_string t in - FStar_Util.format3 "datacon<%s> %s : %s" uu____4062 - lid.FStar_Ident.str uu____4064 + let uu____4048 = univ_names_to_string univs1 in + let uu____4050 = term_to_string t in + FStar_Util.format3 "datacon<%s> %s : %s" uu____4048 + lid.FStar_Ident.str uu____4050 else - (let uu____4069 = term_to_string t in + (let uu____4055 = term_to_string t in FStar_Util.format2 "datacon %s : %s" lid.FStar_Ident.str - uu____4069) + uu____4055) | FStar_Syntax_Syntax.Sig_declare_typ (lid,univs1,t) -> - let uu____4075 = quals_to_string' x.FStar_Syntax_Syntax.sigquals + let uu____4061 = quals_to_string' x.FStar_Syntax_Syntax.sigquals in - let uu____4077 = - let uu____4079 = FStar_Options.print_universes () in - if uu____4079 + let uu____4063 = + let uu____4065 = FStar_Options.print_universes () in + if uu____4065 then - let uu____4083 = univ_names_to_string univs1 in - FStar_Util.format1 "<%s>" uu____4083 + let uu____4069 = univ_names_to_string univs1 in + FStar_Util.format1 "<%s>" uu____4069 else "" in - let uu____4089 = term_to_string t in - FStar_Util.format4 "%sval %s %s : %s" uu____4075 - lid.FStar_Ident.str uu____4077 uu____4089 + let uu____4075 = term_to_string t in + FStar_Util.format4 "%sval %s %s : %s" uu____4061 + lid.FStar_Ident.str uu____4063 uu____4075 | FStar_Syntax_Syntax.Sig_assume (lid,us,f) -> - let uu____4095 = FStar_Options.print_universes () in - if uu____4095 + let uu____4081 = FStar_Options.print_universes () in + if uu____4081 then - let uu____4099 = univ_names_to_string us in - let uu____4101 = term_to_string f in + let uu____4085 = univ_names_to_string us in + let uu____4087 = term_to_string f in FStar_Util.format3 "val %s<%s> : %s" lid.FStar_Ident.str - uu____4099 uu____4101 + uu____4085 uu____4087 else - (let uu____4106 = term_to_string f in - FStar_Util.format2 "val %s : %s" lid.FStar_Ident.str uu____4106) - | FStar_Syntax_Syntax.Sig_let (lbs,uu____4110) -> + (let uu____4092 = term_to_string f in + FStar_Util.format2 "val %s : %s" lid.FStar_Ident.str uu____4092) + | FStar_Syntax_Syntax.Sig_let (lbs,uu____4096) -> lbs_to_string x.FStar_Syntax_Syntax.sigquals lbs | FStar_Syntax_Syntax.Sig_main e -> - let uu____4116 = term_to_string e in - FStar_Util.format1 "let _ = %s" uu____4116 - | FStar_Syntax_Syntax.Sig_bundle (ses,uu____4120) -> - let uu____4129 = - let uu____4131 = FStar_List.map sigelt_to_string ses in - FStar_All.pipe_right uu____4131 (FStar_String.concat "\n") in - Prims.strcat "(* Sig_bundle *)" uu____4129 + let uu____4102 = term_to_string e in + FStar_Util.format1 "let _ = %s" uu____4102 + | FStar_Syntax_Syntax.Sig_bundle (ses,uu____4106) -> + let uu____4115 = + let uu____4117 = FStar_List.map sigelt_to_string ses in + FStar_All.pipe_right uu____4117 (FStar_String.concat "\n") in + Prims.strcat "(* Sig_bundle *)" uu____4115 | FStar_Syntax_Syntax.Sig_new_effect ed -> eff_decl_to_string' false x.FStar_Syntax_Syntax.sigrng x.FStar_Syntax_Syntax.sigquals ed @@ -1564,115 +1563,115 @@ let rec (sigelt_to_string : FStar_Syntax_Syntax.sigelt -> Prims.string) = with | (FStar_Pervasives_Native.None ,FStar_Pervasives_Native.None ) -> failwith "impossible" - | (FStar_Pervasives_Native.Some lift_wp,uu____4176) -> lift_wp - | (uu____4183,FStar_Pervasives_Native.Some lift) -> lift in - let uu____4191 = + | (FStar_Pervasives_Native.Some lift_wp,uu____4162) -> lift_wp + | (uu____4169,FStar_Pervasives_Native.Some lift) -> lift in + let uu____4177 = FStar_Syntax_Subst.open_univ_vars (FStar_Pervasives_Native.fst lift_wp) (FStar_Pervasives_Native.snd lift_wp) in - (match uu____4191 with + (match uu____4177 with | (us,t) -> - let uu____4203 = lid_to_string se.FStar_Syntax_Syntax.source + let uu____4189 = lid_to_string se.FStar_Syntax_Syntax.source in - let uu____4205 = lid_to_string se.FStar_Syntax_Syntax.target + let uu____4191 = lid_to_string se.FStar_Syntax_Syntax.target in - let uu____4207 = univ_names_to_string us in - let uu____4209 = term_to_string t in - FStar_Util.format4 "sub_effect %s ~> %s : <%s> %s" uu____4203 - uu____4205 uu____4207 uu____4209) + let uu____4193 = univ_names_to_string us in + let uu____4195 = term_to_string t in + FStar_Util.format4 "sub_effect %s ~> %s : <%s> %s" uu____4189 + uu____4191 uu____4193 uu____4195) | FStar_Syntax_Syntax.Sig_effect_abbrev (l,univs1,tps,c,flags1) -> - let uu____4221 = FStar_Options.print_universes () in - if uu____4221 + let uu____4207 = FStar_Options.print_universes () in + if uu____4207 then - let uu____4225 = - let uu____4230 = + let uu____4211 = + let uu____4216 = FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_arrow (tps, c)) FStar_Pervasives_Native.None FStar_Range.dummyRange in - FStar_Syntax_Subst.open_univ_vars univs1 uu____4230 in - (match uu____4225 with + FStar_Syntax_Subst.open_univ_vars univs1 uu____4216 in + (match uu____4211 with | (univs2,t) -> - let uu____4244 = - let uu____4249 = - let uu____4250 = FStar_Syntax_Subst.compress t in - uu____4250.FStar_Syntax_Syntax.n in - match uu____4249 with + let uu____4230 = + let uu____4235 = + let uu____4236 = FStar_Syntax_Subst.compress t in + uu____4236.FStar_Syntax_Syntax.n in + match uu____4235 with | FStar_Syntax_Syntax.Tm_arrow (bs,c1) -> (bs, c1) - | uu____4279 -> failwith "impossible" in - (match uu____4244 with + | uu____4265 -> failwith "impossible" in + (match uu____4230 with | (tps1,c1) -> - let uu____4288 = sli l in - let uu____4290 = univ_names_to_string univs2 in - let uu____4292 = binders_to_string " " tps1 in - let uu____4295 = comp_to_string c1 in - FStar_Util.format4 "effect %s<%s> %s = %s" uu____4288 - uu____4290 uu____4292 uu____4295)) + let uu____4274 = sli l in + let uu____4276 = univ_names_to_string univs2 in + let uu____4278 = binders_to_string " " tps1 in + let uu____4281 = comp_to_string c1 in + FStar_Util.format4 "effect %s<%s> %s = %s" uu____4274 + uu____4276 uu____4278 uu____4281)) else - (let uu____4300 = sli l in - let uu____4302 = binders_to_string " " tps in - let uu____4305 = comp_to_string c in - FStar_Util.format3 "effect %s %s = %s" uu____4300 uu____4302 - uu____4305) + (let uu____4286 = sli l in + let uu____4288 = binders_to_string " " tps in + let uu____4291 = comp_to_string c in + FStar_Util.format3 "effect %s %s = %s" uu____4286 uu____4288 + uu____4291) | FStar_Syntax_Syntax.Sig_splice (lids,t) -> - let uu____4314 = - let uu____4316 = FStar_List.map FStar_Ident.string_of_lid lids + let uu____4300 = + let uu____4302 = FStar_List.map FStar_Ident.string_of_lid lids in - FStar_All.pipe_left (FStar_String.concat "; ") uu____4316 in - let uu____4326 = term_to_string t in - FStar_Util.format2 "splice[%s] (%s)" uu____4314 uu____4326 + FStar_All.pipe_left (FStar_String.concat "; ") uu____4302 in + let uu____4312 = term_to_string t in + FStar_Util.format2 "splice[%s] (%s)" uu____4300 uu____4312 in match x.FStar_Syntax_Syntax.sigattrs with | [] -> basic - | uu____4330 -> - let uu____4333 = attrs_to_string x.FStar_Syntax_Syntax.sigattrs in - Prims.strcat uu____4333 (Prims.strcat "\n" basic) + | uu____4316 -> + let uu____4319 = attrs_to_string x.FStar_Syntax_Syntax.sigattrs in + Prims.strcat uu____4319 (Prims.strcat "\n" basic) let (format_error : FStar_Range.range -> Prims.string -> Prims.string) = fun r -> fun msg -> - let uu____4350 = FStar_Range.string_of_range r in - FStar_Util.format2 "%s: %s\n" uu____4350 msg + let uu____4336 = FStar_Range.string_of_range r in + FStar_Util.format2 "%s: %s\n" uu____4336 msg let rec (sigelt_to_string_short : FStar_Syntax_Syntax.sigelt -> Prims.string) = fun x -> match x.FStar_Syntax_Syntax.sigel with | FStar_Syntax_Syntax.Sig_let - ((uu____4361,{ FStar_Syntax_Syntax.lbname = lb; - FStar_Syntax_Syntax.lbunivs = uu____4363; + ((uu____4347,{ FStar_Syntax_Syntax.lbname = lb; + FStar_Syntax_Syntax.lbunivs = uu____4349; FStar_Syntax_Syntax.lbtyp = t; - FStar_Syntax_Syntax.lbeff = uu____4365; - FStar_Syntax_Syntax.lbdef = uu____4366; - FStar_Syntax_Syntax.lbattrs = uu____4367; - FStar_Syntax_Syntax.lbpos = uu____4368;_}::[]),uu____4369) + FStar_Syntax_Syntax.lbeff = uu____4351; + FStar_Syntax_Syntax.lbdef = uu____4352; + FStar_Syntax_Syntax.lbattrs = uu____4353; + FStar_Syntax_Syntax.lbpos = uu____4354;_}::[]),uu____4355) -> - let uu____4392 = lbname_to_string lb in - let uu____4394 = term_to_string t in - FStar_Util.format2 "let %s : %s" uu____4392 uu____4394 - | uu____4397 -> - let uu____4398 = + let uu____4378 = lbname_to_string lb in + let uu____4380 = term_to_string t in + FStar_Util.format2 "let %s : %s" uu____4378 uu____4380 + | uu____4383 -> + let uu____4384 = FStar_All.pipe_right (FStar_Syntax_Util.lids_of_sigelt x) (FStar_List.map (fun l -> l.FStar_Ident.str)) in - FStar_All.pipe_right uu____4398 (FStar_String.concat ", ") + FStar_All.pipe_right uu____4384 (FStar_String.concat ", ") let rec (modul_to_string : FStar_Syntax_Syntax.modul -> Prims.string) = fun m -> - let uu____4422 = sli m.FStar_Syntax_Syntax.name in - let uu____4424 = - let uu____4426 = + let uu____4408 = sli m.FStar_Syntax_Syntax.name in + let uu____4410 = + let uu____4412 = FStar_List.map sigelt_to_string m.FStar_Syntax_Syntax.declarations in - FStar_All.pipe_right uu____4426 (FStar_String.concat "\n") in - let uu____4436 = - let uu____4438 = + FStar_All.pipe_right uu____4412 (FStar_String.concat "\n") in + let uu____4422 = + let uu____4424 = FStar_List.map sigelt_to_string m.FStar_Syntax_Syntax.exports in - FStar_All.pipe_right uu____4438 (FStar_String.concat "\n") in + FStar_All.pipe_right uu____4424 (FStar_String.concat "\n") in FStar_Util.format3 - "module %s\nDeclarations: [\n%s\n]\nExports: [\n%s\n]\n" uu____4422 - uu____4424 uu____4436 + "module %s\nDeclarations: [\n%s\n]\nExports: [\n%s\n]\n" uu____4408 + uu____4410 uu____4422 let (abs_ascription_to_string : (FStar_Syntax_Syntax.lcomp,FStar_Ident.lident) FStar_Util.either @@ -1685,13 +1684,13 @@ let (abs_ascription_to_string : FStar_Util.string_builder_append strb "None" | FStar_Pervasives_Native.Some (FStar_Util.Inl lc) -> (FStar_Util.string_builder_append strb "Some Inr "; - (let uu____4482 = + (let uu____4468 = FStar_Ident.text_of_lid lc.FStar_Syntax_Syntax.eff_name in - FStar_Util.string_builder_append strb uu____4482)) + FStar_Util.string_builder_append strb uu____4468)) | FStar_Pervasives_Native.Some (FStar_Util.Inr lid) -> (FStar_Util.string_builder_append strb "Some Inr "; - (let uu____4491 = FStar_Ident.text_of_lid lid in - FStar_Util.string_builder_append strb uu____4491))); + (let uu____4477 = FStar_Ident.text_of_lid lid in + FStar_Util.string_builder_append strb uu____4477))); FStar_Util.string_of_string_builder strb let list_to_string : @@ -1703,13 +1702,13 @@ let list_to_string : | x::xs -> let strb = FStar_Util.new_string_builder () in (FStar_Util.string_builder_append strb "["; - (let uu____4532 = f x in - FStar_Util.string_builder_append strb uu____4532); + (let uu____4518 = f x in + FStar_Util.string_builder_append strb uu____4518); FStar_List.iter (fun x1 -> FStar_Util.string_builder_append strb "; "; - (let uu____4541 = f x1 in - FStar_Util.string_builder_append strb uu____4541)) xs; + (let uu____4527 = f x1 in + FStar_Util.string_builder_append strb uu____4527)) xs; FStar_Util.string_builder_append strb "]"; FStar_Util.string_of_string_builder strb) @@ -1723,13 +1722,13 @@ let set_to_string : | x::xs -> let strb = FStar_Util.new_string_builder () in (FStar_Util.string_builder_append strb "{"; - (let uu____4588 = f x in - FStar_Util.string_builder_append strb uu____4588); + (let uu____4574 = f x in + FStar_Util.string_builder_append strb uu____4574); FStar_List.iter (fun x1 -> FStar_Util.string_builder_append strb ", "; - (let uu____4597 = f x1 in - FStar_Util.string_builder_append strb uu____4597)) xs; + (let uu____4583 = f x1 in + FStar_Util.string_builder_append strb uu____4583)) xs; FStar_Util.string_builder_append strb "}"; FStar_Util.string_of_string_builder strb) @@ -1737,31 +1736,31 @@ let (bvs_to_string : Prims.string -> FStar_Syntax_Syntax.bv Prims.list -> Prims.string) = fun sep -> fun bvs -> - let uu____4619 = FStar_List.map FStar_Syntax_Syntax.mk_binder bvs in - binders_to_string sep uu____4619 + let uu____4605 = FStar_List.map FStar_Syntax_Syntax.mk_binder bvs in + binders_to_string sep uu____4605 let rec (emb_typ_to_string : FStar_Syntax_Syntax.emb_typ -> Prims.string) = - fun uu___226_4632 -> - match uu___226_4632 with + fun uu___225_4618 -> + match uu___225_4618 with | FStar_Syntax_Syntax.ET_abstract -> "abstract" | FStar_Syntax_Syntax.ET_app (h,[]) -> h | FStar_Syntax_Syntax.ET_app (h,args) -> - let uu____4648 = - let uu____4650 = - let uu____4652 = - let uu____4654 = - let uu____4656 = FStar_List.map emb_typ_to_string args in - FStar_All.pipe_right uu____4656 (FStar_String.concat " ") in - Prims.strcat uu____4654 ")" in - Prims.strcat " " uu____4652 in - Prims.strcat h uu____4650 in - Prims.strcat "(" uu____4648 + let uu____4634 = + let uu____4636 = + let uu____4638 = + let uu____4640 = + let uu____4642 = FStar_List.map emb_typ_to_string args in + FStar_All.pipe_right uu____4642 (FStar_String.concat " ") in + Prims.strcat uu____4640 ")" in + Prims.strcat " " uu____4638 in + Prims.strcat h uu____4636 in + Prims.strcat "(" uu____4634 | FStar_Syntax_Syntax.ET_fun (a,b) -> - let uu____4671 = - let uu____4673 = emb_typ_to_string a in - let uu____4675 = - let uu____4677 = emb_typ_to_string b in - Prims.strcat ") -> " uu____4677 in - Prims.strcat uu____4673 uu____4675 in - Prims.strcat "(" uu____4671 + let uu____4657 = + let uu____4659 = emb_typ_to_string a in + let uu____4661 = + let uu____4663 = emb_typ_to_string b in + Prims.strcat ") -> " uu____4663 in + Prims.strcat uu____4659 uu____4661 in + Prims.strcat "(" uu____4657 \ No newline at end of file diff --git a/src/ocaml-output/FStar_Syntax_Resugar.ml b/src/ocaml-output/FStar_Syntax_Resugar.ml index abd2215ddb1..667ecdddab0 100644 --- a/src/ocaml-output/FStar_Syntax_Resugar.ml +++ b/src/ocaml-output/FStar_Syntax_Resugar.ml @@ -50,8 +50,8 @@ let filter_imp : fun a -> FStar_All.pipe_right a (FStar_List.filter - (fun uu___199_129 -> - match uu___199_129 with + (fun uu___198_129 -> + match uu___198_129 with | (uu____137,FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Meta t)) when FStar_Syntax_Util.is_fvar FStar_Parser_Const.tcresolve_lid t @@ -190,8 +190,8 @@ let (string_to_op : FStar_Pervasives_Native.tuple2 FStar_Pervasives_Native.option) = fun s -> - let name_of_op uu___200_510 = - match uu___200_510 with + let name_of_op uu___199_510 = + match uu___199_510 with | "Amp" -> FStar_Pervasives_Native.Some ("&", FStar_Pervasives_Native.None) | "At" -> @@ -621,8 +621,8 @@ let rec (resugar_term' : resugar_binder' env b t.FStar_Syntax_Syntax.pos)) in FStar_All.pipe_right uu____2280 FStar_List.rev in - let rec aux body3 uu___201_2305 = - match uu___201_2305 with + let rec aux body3 uu___200_2305 = + match uu___200_2305 with | [] -> body3 | hd1::tl1 -> let body4 = @@ -660,13 +660,13 @@ let rec (resugar_term' : (FStar_Syntax_Syntax.fv_eq_lid fv FStar_Parser_Const.b2t_lid) -> resugar_term' env e | FStar_Syntax_Syntax.Tm_app (e,args) -> - let rec last1 uu___202_2460 = - match uu___202_2460 with + let rec last1 uu___201_2460 = + match uu___201_2460 with | hd1::[] -> [hd1] | hd1::tl1 -> last1 tl1 | uu____2530 -> failwith "last of an empty list" in - let rec last_two uu___203_2569 = - match uu___203_2569 with + let rec last_two uu___202_2569 = + match uu___202_2569 with | [] -> failwith "last two elements of a list with less than two elements " @@ -1290,8 +1290,8 @@ let rec (resugar_term' : FStar_Parser_AST.Quote uu____5660 in mk1 uu____5659 | FStar_Syntax_Syntax.Tm_meta (e,m) -> - let resugar_meta_desugared uu___204_5677 = - match uu___204_5677 with + let resugar_meta_desugared uu___203_5677 = + match uu___203_5677 with | FStar_Syntax_Syntax.Sequence -> let term = resugar_term' env e in let rec resugar_seq t1 = @@ -1473,8 +1473,8 @@ and (resugar_comp' : let uu____6381 = resugar_term' env e in (uu____6381, FStar_Parser_AST.Nothing)) args in - let rec aux l uu___205_6406 = - match uu___205_6406 with + let rec aux l uu___204_6406 = + match uu___204_6406 with | [] -> l | hd1::tl1 -> (match hd1 with @@ -1868,8 +1868,8 @@ let (resugar_qualifier : FStar_Syntax_Syntax.qualifier -> FStar_Parser_AST.qualifier FStar_Pervasives_Native.option) = - fun uu___206_7447 -> - match uu___206_7447 with + fun uu___205_7447 -> + match uu___205_7447 with | FStar_Syntax_Syntax.Assumption -> FStar_Pervasives_Native.Some FStar_Parser_AST.Assumption | FStar_Syntax_Syntax.New -> @@ -1917,8 +1917,8 @@ let (resugar_qualifier : let (resugar_pragma : FStar_Syntax_Syntax.pragma -> FStar_Parser_AST.pragma) = - fun uu___207_7485 -> - match uu___207_7485 with + fun uu___206_7485 -> + match uu___206_7485 with | FStar_Syntax_Syntax.SetOptions s -> FStar_Parser_AST.SetOptions s | FStar_Syntax_Syntax.ResetOptions s -> FStar_Parser_AST.ResetOptions s | FStar_Syntax_Syntax.PushOptions s -> FStar_Parser_AST.PushOptions s @@ -1963,8 +1963,8 @@ let (resugar_typ : let uu____7616 = FStar_All.pipe_right se.FStar_Syntax_Syntax.sigquals (FStar_Util.for_some - (fun uu___208_7623 -> - match uu___208_7623 with + (fun uu___207_7623 -> + match uu___207_7623 with | FStar_Syntax_Syntax.RecordType uu____7625 -> true | uu____7635 -> false)) @@ -2342,8 +2342,8 @@ let (resugar_sigelt' : let uu____8810 = FStar_All.pipe_right se.FStar_Syntax_Syntax.sigquals (FStar_Util.for_some - (fun uu___209_8818 -> - match uu___209_8818 with + (fun uu___208_8818 -> + match uu___208_8818 with | FStar_Syntax_Syntax.Projector (uu____8820,uu____8821) -> true | FStar_Syntax_Syntax.Discriminator uu____8823 -> true @@ -2466,8 +2466,8 @@ let (resugar_sigelt' : let uu____9155 = FStar_All.pipe_right se.FStar_Syntax_Syntax.sigquals (FStar_Util.for_some - (fun uu___210_9163 -> - match uu___210_9163 with + (fun uu___209_9163 -> + match uu___209_9163 with | FStar_Syntax_Syntax.Projector (uu____9165,uu____9166) -> true | FStar_Syntax_Syntax.Discriminator uu____9168 -> true diff --git a/src/ocaml-output/FStar_Syntax_Subst.ml b/src/ocaml-output/FStar_Syntax_Subst.ml index 1ace7649022..127d30bc6ce 100644 --- a/src/ocaml-output/FStar_Syntax_Subst.ml +++ b/src/ocaml-output/FStar_Syntax_Subst.ml @@ -111,18 +111,19 @@ let rec (force_uvar' : FStar_Syntax_Syntax.ctx_uvar_typ = uu____449; FStar_Syntax_Syntax.ctx_uvar_reason = uu____450; FStar_Syntax_Syntax.ctx_uvar_should_check = uu____451; - FStar_Syntax_Syntax.ctx_uvar_range = uu____452;_},s) + FStar_Syntax_Syntax.ctx_uvar_range = uu____452; + FStar_Syntax_Syntax.ctx_uvar_meta = uu____453;_},s) -> - let uu____493 = FStar_Syntax_Unionfind.find uv in - (match uu____493 with + let uu____502 = FStar_Syntax_Unionfind.find uv in + (match uu____502 with | FStar_Pervasives_Native.Some t' -> - let uu____504 = - let uu____507 = - let uu____515 = delay t' s in force_uvar' uu____515 in - FStar_Pervasives_Native.fst uu____507 in - (uu____504, true) - | uu____525 -> (t, false)) - | uu____532 -> (t, false) + let uu____513 = + let uu____516 = + let uu____524 = delay t' s in force_uvar' uu____524 in + FStar_Pervasives_Native.fst uu____516 in + (uu____513, true) + | uu____534 -> (t, false)) + | uu____541 -> (t, false) let (force_uvar : FStar_Syntax_Syntax.term' FStar_Syntax_Syntax.syntax -> @@ -130,19 +131,19 @@ let (force_uvar : FStar_Pervasives_Native.tuple2) = fun t -> - let uu____554 = force_uvar' t in - match uu____554 with + let uu____563 = force_uvar' t in + match uu____563 with | (t',forced) -> if Prims.op_Negation forced then (t, forced) else - (let uu____590 = + (let uu____599 = delay t' ([], (FStar_Syntax_Syntax.SomeUseRange (t.FStar_Syntax_Syntax.pos))) in - (uu____590, forced)) + (uu____599, forced)) let rec (try_read_memo_aux : FStar_Syntax_Syntax.term' FStar_Syntax_Syntax.syntax -> @@ -152,12 +153,12 @@ let rec (try_read_memo_aux : fun t -> match t.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_delayed (f,m) -> - let uu____664 = FStar_ST.op_Bang m in - (match uu____664 with + let uu____673 = FStar_ST.op_Bang m in + (match uu____673 with | FStar_Pervasives_Native.None -> (t, false) | FStar_Pervasives_Native.Some t' -> - let uu____736 = try_read_memo_aux t' in - (match uu____736 with + let uu____745 = try_read_memo_aux t' in + (match uu____745 with | (t'1,shorten) -> (if shorten then @@ -165,26 +166,26 @@ let rec (try_read_memo_aux : (FStar_Pervasives_Native.Some t'1) else (); (t'1, true)))) - | uu____818 -> (t, false) + | uu____827 -> (t, false) let (try_read_memo : FStar_Syntax_Syntax.term' FStar_Syntax_Syntax.syntax -> FStar_Syntax_Syntax.term' FStar_Syntax_Syntax.syntax) = fun t -> - let uu____835 = try_read_memo_aux t in - FStar_Pervasives_Native.fst uu____835 + let uu____844 = try_read_memo_aux t in + FStar_Pervasives_Native.fst uu____844 let rec (compress_univ : FStar_Syntax_Syntax.universe -> FStar_Syntax_Syntax.universe) = fun u -> match u with | FStar_Syntax_Syntax.U_unif u' -> - let uu____861 = FStar_Syntax_Unionfind.univ_find u' in - (match uu____861 with + let uu____870 = FStar_Syntax_Unionfind.univ_find u' in + (match uu____870 with | FStar_Pervasives_Native.Some u1 -> compress_univ u1 - | uu____865 -> u) - | uu____868 -> u + | uu____874 -> u) + | uu____877 -> u let (subst_bv : FStar_Syntax_Syntax.bv -> @@ -194,17 +195,17 @@ let (subst_bv : fun a -> fun s -> FStar_Util.find_map s - (fun uu___96_890 -> - match uu___96_890 with + (fun uu___96_899 -> + match uu___96_899 with | FStar_Syntax_Syntax.DB (i,x) when i = a.FStar_Syntax_Syntax.index -> - let uu____898 = - let uu____899 = - let uu____900 = FStar_Syntax_Syntax.range_of_bv a in - FStar_Syntax_Syntax.set_range_of_bv x uu____900 in - FStar_Syntax_Syntax.bv_to_name uu____899 in - FStar_Pervasives_Native.Some uu____898 - | uu____901 -> FStar_Pervasives_Native.None) + let uu____907 = + let uu____908 = + let uu____909 = FStar_Syntax_Syntax.range_of_bv a in + FStar_Syntax_Syntax.set_range_of_bv x uu____909 in + FStar_Syntax_Syntax.bv_to_name uu____908 in + FStar_Pervasives_Native.Some uu____907 + | uu____910 -> FStar_Pervasives_Native.None) let (subst_nm : FStar_Syntax_Syntax.bv -> @@ -215,25 +216,25 @@ let (subst_nm : fun a -> fun s -> FStar_Util.find_map s - (fun uu___97_927 -> - match uu___97_927 with + (fun uu___97_936 -> + match uu___97_936 with | FStar_Syntax_Syntax.NM (x,i) when FStar_Syntax_Syntax.bv_eq a x -> - let uu____936 = + let uu____945 = FStar_Syntax_Syntax.bv_to_tm - (let uu___103_941 = a in + (let uu___103_950 = a in { FStar_Syntax_Syntax.ppname = - (uu___103_941.FStar_Syntax_Syntax.ppname); + (uu___103_950.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = i; FStar_Syntax_Syntax.sort = - (uu___103_941.FStar_Syntax_Syntax.sort) + (uu___103_950.FStar_Syntax_Syntax.sort) }) in - FStar_Pervasives_Native.Some uu____936 + FStar_Pervasives_Native.Some uu____945 | FStar_Syntax_Syntax.NT (x,t) when FStar_Syntax_Syntax.bv_eq a x -> FStar_Pervasives_Native.Some t - | uu____952 -> FStar_Pervasives_Native.None) + | uu____961 -> FStar_Pervasives_Native.None) let (subst_univ_bv : Prims.int -> @@ -243,11 +244,11 @@ let (subst_univ_bv : fun x -> fun s -> FStar_Util.find_map s - (fun uu___98_977 -> - match uu___98_977 with + (fun uu___98_986 -> + match uu___98_986 with | FStar_Syntax_Syntax.UN (y,t) when x = y -> FStar_Pervasives_Native.Some t - | uu____985 -> FStar_Pervasives_Native.None) + | uu____994 -> FStar_Pervasives_Native.None) let (subst_univ_nm : FStar_Syntax_Syntax.univ_name -> @@ -257,12 +258,12 @@ let (subst_univ_nm : fun x -> fun s -> FStar_Util.find_map s - (fun uu___99_1006 -> - match uu___99_1006 with + (fun uu___99_1015 -> + match uu___99_1015 with | FStar_Syntax_Syntax.UD (y,i) when x.FStar_Ident.idText = y.FStar_Ident.idText -> FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.U_bvar i) - | uu____1014 -> FStar_Pervasives_Native.None) + | uu____1023 -> FStar_Pervasives_Native.None) let rec (subst_univ : FStar_Syntax_Syntax.subst_elt Prims.list Prims.list -> @@ -278,18 +279,18 @@ let rec (subst_univ : apply_until_some_then_map (subst_univ_nm x) s subst_univ u1 | FStar_Syntax_Syntax.U_zero -> u1 | FStar_Syntax_Syntax.U_unknown -> u1 - | FStar_Syntax_Syntax.U_unif uu____1042 -> u1 + | FStar_Syntax_Syntax.U_unif uu____1051 -> u1 | FStar_Syntax_Syntax.U_succ u2 -> - let uu____1052 = subst_univ s u2 in - FStar_Syntax_Syntax.U_succ uu____1052 + let uu____1061 = subst_univ s u2 in + FStar_Syntax_Syntax.U_succ uu____1061 | FStar_Syntax_Syntax.U_max us -> - let uu____1056 = FStar_List.map (subst_univ s) us in - FStar_Syntax_Syntax.U_max uu____1056 + let uu____1065 = FStar_List.map (subst_univ s) us in + FStar_Syntax_Syntax.U_max uu____1065 let tag_with_range : - 'Auu____1066 . + 'Auu____1075 . FStar_Syntax_Syntax.term' FStar_Syntax_Syntax.syntax -> - ('Auu____1066,FStar_Syntax_Syntax.maybe_set_use_range) + ('Auu____1075,FStar_Syntax_Syntax.maybe_set_use_range) FStar_Pervasives_Native.tuple2 -> FStar_Syntax_Syntax.term' FStar_Syntax_Syntax.syntax = @@ -298,61 +299,61 @@ let tag_with_range : match FStar_Pervasives_Native.snd s with | FStar_Syntax_Syntax.NoUseRange -> t | FStar_Syntax_Syntax.SomeUseRange r -> - let uu____1092 = - let uu____1094 = FStar_Range.use_range t.FStar_Syntax_Syntax.pos + let uu____1101 = + let uu____1103 = FStar_Range.use_range t.FStar_Syntax_Syntax.pos in - let uu____1095 = FStar_Range.use_range r in - FStar_Range.rng_included uu____1094 uu____1095 in - if uu____1092 + let uu____1104 = FStar_Range.use_range r in + FStar_Range.rng_included uu____1103 uu____1104 in + if uu____1101 then t else (let r1 = - let uu____1102 = FStar_Range.use_range r in - FStar_Range.set_use_range t.FStar_Syntax_Syntax.pos uu____1102 + let uu____1111 = FStar_Range.use_range r in + FStar_Range.set_use_range t.FStar_Syntax_Syntax.pos uu____1111 in let t' = match t.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_bvar bv -> - let uu____1105 = FStar_Syntax_Syntax.set_range_of_bv bv r1 + let uu____1114 = FStar_Syntax_Syntax.set_range_of_bv bv r1 in - FStar_Syntax_Syntax.Tm_bvar uu____1105 + FStar_Syntax_Syntax.Tm_bvar uu____1114 | FStar_Syntax_Syntax.Tm_name bv -> - let uu____1107 = FStar_Syntax_Syntax.set_range_of_bv bv r1 + let uu____1116 = FStar_Syntax_Syntax.set_range_of_bv bv r1 in - FStar_Syntax_Syntax.Tm_name uu____1107 + FStar_Syntax_Syntax.Tm_name uu____1116 | FStar_Syntax_Syntax.Tm_fvar fv -> let l = FStar_Syntax_Syntax.lid_of_fv fv in let v1 = - let uu___104_1113 = fv.FStar_Syntax_Syntax.fv_name in - let uu____1114 = FStar_Ident.set_lid_range l r1 in + let uu___104_1122 = fv.FStar_Syntax_Syntax.fv_name in + let uu____1123 = FStar_Ident.set_lid_range l r1 in { - FStar_Syntax_Syntax.v = uu____1114; + FStar_Syntax_Syntax.v = uu____1123; FStar_Syntax_Syntax.p = - (uu___104_1113.FStar_Syntax_Syntax.p) + (uu___104_1122.FStar_Syntax_Syntax.p) } in let fv1 = - let uu___105_1116 = fv in + let uu___105_1125 = fv in { FStar_Syntax_Syntax.fv_name = v1; FStar_Syntax_Syntax.fv_delta = - (uu___105_1116.FStar_Syntax_Syntax.fv_delta); + (uu___105_1125.FStar_Syntax_Syntax.fv_delta); FStar_Syntax_Syntax.fv_qual = - (uu___105_1116.FStar_Syntax_Syntax.fv_qual) + (uu___105_1125.FStar_Syntax_Syntax.fv_qual) } in FStar_Syntax_Syntax.Tm_fvar fv1 | t' -> t' in - let uu___106_1118 = t in + let uu___106_1127 = t in { FStar_Syntax_Syntax.n = t'; FStar_Syntax_Syntax.pos = r1; FStar_Syntax_Syntax.vars = - (uu___106_1118.FStar_Syntax_Syntax.vars) + (uu___106_1127.FStar_Syntax_Syntax.vars) }) let tag_lid_with_range : - 'Auu____1128 . + 'Auu____1137 . FStar_Ident.lident -> - ('Auu____1128,FStar_Syntax_Syntax.maybe_set_use_range) + ('Auu____1137,FStar_Syntax_Syntax.maybe_set_use_range) FStar_Pervasives_Native.tuple2 -> FStar_Ident.lident = fun l -> @@ -360,20 +361,20 @@ let tag_lid_with_range : match FStar_Pervasives_Native.snd s with | FStar_Syntax_Syntax.NoUseRange -> l | FStar_Syntax_Syntax.SomeUseRange r -> - let uu____1148 = - let uu____1150 = - let uu____1151 = FStar_Ident.range_of_lid l in - FStar_Range.use_range uu____1151 in - let uu____1152 = FStar_Range.use_range r in - FStar_Range.rng_included uu____1150 uu____1152 in - if uu____1148 + let uu____1157 = + let uu____1159 = + let uu____1160 = FStar_Ident.range_of_lid l in + FStar_Range.use_range uu____1160 in + let uu____1161 = FStar_Range.use_range r in + FStar_Range.rng_included uu____1159 uu____1161 in + if uu____1157 then l else - (let uu____1156 = - let uu____1157 = FStar_Ident.range_of_lid l in - let uu____1158 = FStar_Range.use_range r in - FStar_Range.set_use_range uu____1157 uu____1158 in - FStar_Ident.set_lid_range l uu____1156) + (let uu____1165 = + let uu____1166 = FStar_Ident.range_of_lid l in + let uu____1167 = FStar_Range.use_range r in + FStar_Range.set_use_range uu____1166 uu____1167 in + FStar_Ident.set_lid_range l uu____1165) let (mk_range : FStar_Range.range -> FStar_Syntax_Syntax.subst_ts -> FStar_Range.range) = @@ -382,15 +383,15 @@ let (mk_range : match FStar_Pervasives_Native.snd s with | FStar_Syntax_Syntax.NoUseRange -> r | FStar_Syntax_Syntax.SomeUseRange r' -> - let uu____1175 = - let uu____1177 = FStar_Range.use_range r in - let uu____1178 = FStar_Range.use_range r' in - FStar_Range.rng_included uu____1177 uu____1178 in - if uu____1175 + let uu____1184 = + let uu____1186 = FStar_Range.use_range r in + let uu____1187 = FStar_Range.use_range r' in + FStar_Range.rng_included uu____1186 uu____1187 in + if uu____1184 then r else - (let uu____1182 = FStar_Range.use_range r' in - FStar_Range.set_use_range r uu____1182) + (let uu____1191 = FStar_Range.use_range r' in + FStar_Range.set_use_range r uu____1191) let rec (subst' : FStar_Syntax_Syntax.subst_ts -> @@ -402,13 +403,13 @@ let rec (subst' : match s with | ([],FStar_Syntax_Syntax.NoUseRange ) -> t | ([]::[],FStar_Syntax_Syntax.NoUseRange ) -> t - | uu____1303 -> + | uu____1312 -> let t0 = try_read_memo t in (match t0.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_unknown -> tag_with_range t0 s - | FStar_Syntax_Syntax.Tm_constant uu____1311 -> + | FStar_Syntax_Syntax.Tm_constant uu____1320 -> tag_with_range t0 s - | FStar_Syntax_Syntax.Tm_fvar uu____1316 -> tag_with_range t0 s + | FStar_Syntax_Syntax.Tm_fvar uu____1325 -> tag_with_range t0 s | FStar_Syntax_Syntax.Tm_delayed ((t',s'),m) -> FStar_Syntax_Syntax.mk_Tm_delayed (t', (compose_subst s' s)) t.FStar_Syntax_Syntax.pos @@ -419,17 +420,17 @@ let rec (subst' : apply_until_some_then_map (subst_nm a) (FStar_Pervasives_Native.fst s) subst_tail t0 | FStar_Syntax_Syntax.Tm_type u -> - let uu____1385 = mk_range t0.FStar_Syntax_Syntax.pos s in - let uu____1386 = - let uu____1393 = - let uu____1394 = + let uu____1394 = mk_range t0.FStar_Syntax_Syntax.pos s in + let uu____1395 = + let uu____1402 = + let uu____1403 = subst_univ (FStar_Pervasives_Native.fst s) u in - FStar_Syntax_Syntax.Tm_type uu____1394 in - FStar_Syntax_Syntax.mk uu____1393 in - uu____1386 FStar_Pervasives_Native.None uu____1385 - | uu____1402 -> - let uu____1403 = mk_range t.FStar_Syntax_Syntax.pos s in - FStar_Syntax_Syntax.mk_Tm_delayed (t0, s) uu____1403) + FStar_Syntax_Syntax.Tm_type uu____1403 in + FStar_Syntax_Syntax.mk uu____1402 in + uu____1395 FStar_Pervasives_Native.None uu____1394 + | uu____1411 -> + let uu____1412 = mk_range t.FStar_Syntax_Syntax.pos s in + FStar_Syntax_Syntax.mk_Tm_delayed (t0, s) uu____1412) and (subst_flags' : FStar_Syntax_Syntax.subst_ts -> @@ -440,11 +441,11 @@ and (subst_flags' : fun flags -> FStar_All.pipe_right flags (FStar_List.map - (fun uu___100_1415 -> - match uu___100_1415 with + (fun uu___100_1424 -> + match uu___100_1424 with | FStar_Syntax_Syntax.DECREASES a -> - let uu____1419 = subst' s a in - FStar_Syntax_Syntax.DECREASES uu____1419 + let uu____1428 = subst' s a in + FStar_Syntax_Syntax.DECREASES uu____1428 | f -> f)) and (subst_comp_typ' : @@ -457,32 +458,32 @@ and (subst_comp_typ' : match s with | ([],FStar_Syntax_Syntax.NoUseRange ) -> t | ([]::[],FStar_Syntax_Syntax.NoUseRange ) -> t - | uu____1447 -> - let uu___107_1456 = t in - let uu____1457 = + | uu____1456 -> + let uu___107_1465 = t in + let uu____1466 = FStar_List.map (subst_univ (FStar_Pervasives_Native.fst s)) t.FStar_Syntax_Syntax.comp_univs in - let uu____1462 = + let uu____1471 = tag_lid_with_range t.FStar_Syntax_Syntax.effect_name s in - let uu____1467 = subst' s t.FStar_Syntax_Syntax.result_typ in - let uu____1470 = + let uu____1476 = subst' s t.FStar_Syntax_Syntax.result_typ in + let uu____1479 = FStar_List.map - (fun uu____1498 -> - match uu____1498 with + (fun uu____1507 -> + match uu____1507 with | (t1,imp) -> - let uu____1517 = subst' s t1 in - let uu____1518 = subst_imp' s imp in - (uu____1517, uu____1518)) + let uu____1526 = subst' s t1 in + let uu____1527 = subst_imp' s imp in + (uu____1526, uu____1527)) t.FStar_Syntax_Syntax.effect_args in - let uu____1523 = subst_flags' s t.FStar_Syntax_Syntax.flags in + let uu____1532 = subst_flags' s t.FStar_Syntax_Syntax.flags in { - FStar_Syntax_Syntax.comp_univs = uu____1457; - FStar_Syntax_Syntax.effect_name = uu____1462; - FStar_Syntax_Syntax.result_typ = uu____1467; - FStar_Syntax_Syntax.effect_args = uu____1470; - FStar_Syntax_Syntax.flags = uu____1523 + FStar_Syntax_Syntax.comp_univs = uu____1466; + FStar_Syntax_Syntax.effect_name = uu____1471; + FStar_Syntax_Syntax.result_typ = uu____1476; + FStar_Syntax_Syntax.effect_args = uu____1479; + FStar_Syntax_Syntax.flags = uu____1532 } and (subst_comp' : @@ -496,25 +497,25 @@ and (subst_comp' : match s with | ([],FStar_Syntax_Syntax.NoUseRange ) -> t | ([]::[],FStar_Syntax_Syntax.NoUseRange ) -> t - | uu____1554 -> + | uu____1563 -> (match t.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Total (t1,uopt) -> - let uu____1575 = subst' s t1 in - let uu____1576 = + let uu____1584 = subst' s t1 in + let uu____1585 = FStar_Option.map (subst_univ (FStar_Pervasives_Native.fst s)) uopt in - FStar_Syntax_Syntax.mk_Total' uu____1575 uu____1576 + FStar_Syntax_Syntax.mk_Total' uu____1584 uu____1585 | FStar_Syntax_Syntax.GTotal (t1,uopt) -> - let uu____1593 = subst' s t1 in - let uu____1594 = + let uu____1602 = subst' s t1 in + let uu____1603 = FStar_Option.map (subst_univ (FStar_Pervasives_Native.fst s)) uopt in - FStar_Syntax_Syntax.mk_GTotal' uu____1593 uu____1594 + FStar_Syntax_Syntax.mk_GTotal' uu____1602 uu____1603 | FStar_Syntax_Syntax.Comp ct -> - let uu____1602 = subst_comp_typ' s ct in - FStar_Syntax_Syntax.mk_Comp uu____1602) + let uu____1611 = subst_comp_typ' s ct in + FStar_Syntax_Syntax.mk_Comp uu____1611) and (subst_imp' : (FStar_Syntax_Syntax.subst_elt Prims.list Prims.list,FStar_Syntax_Syntax.maybe_set_use_range) @@ -526,10 +527,10 @@ and (subst_imp' : fun i -> match i with | FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Meta t) -> - let uu____1620 = - let uu____1621 = subst' s t in - FStar_Syntax_Syntax.Meta uu____1621 in - FStar_Pervasives_Native.Some uu____1620 + let uu____1629 = + let uu____1630 = subst' s t in + FStar_Syntax_Syntax.Meta uu____1630 in + FStar_Pervasives_Native.Some uu____1629 | i1 -> i1 let (shift : @@ -542,26 +543,26 @@ let (shift : | FStar_Syntax_Syntax.UN (i,t) -> FStar_Syntax_Syntax.UN ((i + n1), t) | FStar_Syntax_Syntax.NM (x,i) -> FStar_Syntax_Syntax.NM (x, (i + n1)) | FStar_Syntax_Syntax.UD (x,i) -> FStar_Syntax_Syntax.UD (x, (i + n1)) - | FStar_Syntax_Syntax.NT uu____1660 -> s + | FStar_Syntax_Syntax.NT uu____1669 -> s let (shift_subst : Prims.int -> FStar_Syntax_Syntax.subst_t -> FStar_Syntax_Syntax.subst_t) = fun n1 -> fun s -> FStar_List.map (shift n1) s let shift_subst' : - 'Auu____1687 . + 'Auu____1696 . Prims.int -> - (FStar_Syntax_Syntax.subst_t Prims.list,'Auu____1687) + (FStar_Syntax_Syntax.subst_t Prims.list,'Auu____1696) FStar_Pervasives_Native.tuple2 -> - (FStar_Syntax_Syntax.subst_t Prims.list,'Auu____1687) + (FStar_Syntax_Syntax.subst_t Prims.list,'Auu____1696) FStar_Pervasives_Native.tuple2 = fun n1 -> fun s -> - let uu____1718 = + let uu____1727 = FStar_All.pipe_right (FStar_Pervasives_Native.fst s) (FStar_List.map (shift_subst n1)) in - (uu____1718, (FStar_Pervasives_Native.snd s)) + (uu____1727, (FStar_Pervasives_Native.snd s)) let (subst_binder' : (FStar_Syntax_Syntax.subst_elt Prims.list Prims.list,FStar_Syntax_Syntax.maybe_set_use_range) @@ -574,20 +575,20 @@ let (subst_binder' : FStar_Pervasives_Native.tuple2) = fun s -> - fun uu____1761 -> - match uu____1761 with + fun uu____1770 -> + match uu____1770 with | (x,imp) -> - let uu____1788 = - let uu___108_1789 = x in - let uu____1790 = subst' s x.FStar_Syntax_Syntax.sort in + let uu____1797 = + let uu___108_1798 = x in + let uu____1799 = subst' s x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___108_1789.FStar_Syntax_Syntax.ppname); + (uu___108_1798.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___108_1789.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____1790 + (uu___108_1798.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____1799 } in - let uu____1793 = subst_imp' s imp in (uu____1788, uu____1793) + let uu____1802 = subst_imp' s imp in (uu____1797, uu____1802) let (subst_binders' : (FStar_Syntax_Syntax.subst_elt Prims.list Prims.list,FStar_Syntax_Syntax.maybe_set_use_range) @@ -608,8 +609,8 @@ let (subst_binders' : if i = (Prims.parse_int "0") then subst_binder' s b else - (let uu____1899 = shift_subst' i s in - subst_binder' uu____1899 b))) + (let uu____1908 = shift_subst' i s in + subst_binder' uu____1908 b))) let (subst_binders : FStar_Syntax_Syntax.subst_elt Prims.list -> @@ -619,24 +620,24 @@ let (subst_binders : fun bs -> subst_binders' ([s], FStar_Syntax_Syntax.NoUseRange) bs let subst_arg' : - 'Auu____1938 . + 'Auu____1947 . FStar_Syntax_Syntax.subst_ts -> - (FStar_Syntax_Syntax.term,'Auu____1938) FStar_Pervasives_Native.tuple2 + (FStar_Syntax_Syntax.term,'Auu____1947) FStar_Pervasives_Native.tuple2 -> - (FStar_Syntax_Syntax.term,'Auu____1938) + (FStar_Syntax_Syntax.term,'Auu____1947) FStar_Pervasives_Native.tuple2 = fun s -> - fun uu____1956 -> - match uu____1956 with - | (t,imp) -> let uu____1963 = subst' s t in (uu____1963, imp) + fun uu____1965 -> + match uu____1965 with + | (t,imp) -> let uu____1972 = subst' s t in (uu____1972, imp) let subst_args' : - 'Auu____1970 . + 'Auu____1979 . FStar_Syntax_Syntax.subst_ts -> - (FStar_Syntax_Syntax.term,'Auu____1970) FStar_Pervasives_Native.tuple2 + (FStar_Syntax_Syntax.term,'Auu____1979) FStar_Pervasives_Native.tuple2 Prims.list -> - (FStar_Syntax_Syntax.term,'Auu____1970) + (FStar_Syntax_Syntax.term,'Auu____1979) FStar_Pervasives_Native.tuple2 Prims.list = fun s -> FStar_List.map (subst_arg' s) let (subst_pat' : @@ -649,82 +650,82 @@ let (subst_pat' : fun p -> let rec aux n1 p1 = match p1.FStar_Syntax_Syntax.v with - | FStar_Syntax_Syntax.Pat_constant uu____2064 -> (p1, n1) + | FStar_Syntax_Syntax.Pat_constant uu____2073 -> (p1, n1) | FStar_Syntax_Syntax.Pat_cons (fv,pats) -> - let uu____2086 = + let uu____2095 = FStar_All.pipe_right pats (FStar_List.fold_left - (fun uu____2148 -> - fun uu____2149 -> - match (uu____2148, uu____2149) with + (fun uu____2157 -> + fun uu____2158 -> + match (uu____2157, uu____2158) with | ((pats1,n2),(p2,imp)) -> - let uu____2245 = aux n2 p2 in - (match uu____2245 with + let uu____2254 = aux n2 p2 in + (match uu____2254 with | (p3,m) -> (((p3, imp) :: pats1), m))) ([], n1)) in - (match uu____2086 with + (match uu____2095 with | (pats1,n2) -> - ((let uu___109_2319 = p1 in + ((let uu___109_2328 = p1 in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_cons (fv, (FStar_List.rev pats1))); FStar_Syntax_Syntax.p = - (uu___109_2319.FStar_Syntax_Syntax.p) + (uu___109_2328.FStar_Syntax_Syntax.p) }), n2)) | FStar_Syntax_Syntax.Pat_var x -> let s1 = shift_subst' n1 s in let x1 = - let uu___110_2345 = x in - let uu____2346 = subst' s1 x.FStar_Syntax_Syntax.sort in + let uu___110_2354 = x in + let uu____2355 = subst' s1 x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___110_2345.FStar_Syntax_Syntax.ppname); + (uu___110_2354.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___110_2345.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____2346 + (uu___110_2354.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____2355 } in - ((let uu___111_2351 = p1 in + ((let uu___111_2360 = p1 in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_var x1); - FStar_Syntax_Syntax.p = (uu___111_2351.FStar_Syntax_Syntax.p) + FStar_Syntax_Syntax.p = (uu___111_2360.FStar_Syntax_Syntax.p) }), (n1 + (Prims.parse_int "1"))) | FStar_Syntax_Syntax.Pat_wild x -> let s1 = shift_subst' n1 s in let x1 = - let uu___112_2364 = x in - let uu____2365 = subst' s1 x.FStar_Syntax_Syntax.sort in + let uu___112_2373 = x in + let uu____2374 = subst' s1 x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___112_2364.FStar_Syntax_Syntax.ppname); + (uu___112_2373.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___112_2364.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____2365 + (uu___112_2373.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____2374 } in - ((let uu___113_2370 = p1 in + ((let uu___113_2379 = p1 in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_wild x1); - FStar_Syntax_Syntax.p = (uu___113_2370.FStar_Syntax_Syntax.p) + FStar_Syntax_Syntax.p = (uu___113_2379.FStar_Syntax_Syntax.p) }), (n1 + (Prims.parse_int "1"))) | FStar_Syntax_Syntax.Pat_dot_term (x,t0) -> let s1 = shift_subst' n1 s in let x1 = - let uu___114_2388 = x in - let uu____2389 = subst' s1 x.FStar_Syntax_Syntax.sort in + let uu___114_2397 = x in + let uu____2398 = subst' s1 x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___114_2388.FStar_Syntax_Syntax.ppname); + (uu___114_2397.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___114_2388.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____2389 + (uu___114_2397.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____2398 } in let t01 = subst' s1 t0 in - ((let uu___115_2395 = p1 in + ((let uu___115_2404 = p1 in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_dot_term (x1, t01)); - FStar_Syntax_Syntax.p = (uu___115_2395.FStar_Syntax_Syntax.p) + FStar_Syntax_Syntax.p = (uu___115_2404.FStar_Syntax_Syntax.p) }), n1) in aux (Prims.parse_int "0") p @@ -739,20 +740,20 @@ let (push_subst_lcomp : match lopt with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some rc -> - let uu____2421 = - let uu___116_2422 = rc in - let uu____2423 = + let uu____2430 = + let uu___116_2431 = rc in + let uu____2432 = FStar_Util.map_opt rc.FStar_Syntax_Syntax.residual_typ (subst' s) in { FStar_Syntax_Syntax.residual_effect = - (uu___116_2422.FStar_Syntax_Syntax.residual_effect); - FStar_Syntax_Syntax.residual_typ = uu____2423; + (uu___116_2431.FStar_Syntax_Syntax.residual_effect); + FStar_Syntax_Syntax.residual_typ = uu____2432; FStar_Syntax_Syntax.residual_flags = - (uu___116_2422.FStar_Syntax_Syntax.residual_flags) + (uu___116_2431.FStar_Syntax_Syntax.residual_flags) } in - FStar_Pervasives_Native.Some uu____2421 + FStar_Pervasives_Native.Some uu____2430 let (compose_uvar_subst : FStar_Syntax_Syntax.ctx_uvar -> @@ -765,46 +766,46 @@ let (compose_uvar_subst : let should_retain x = FStar_All.pipe_right u.FStar_Syntax_Syntax.ctx_uvar_binders (FStar_Util.for_some - (fun uu____2473 -> - match uu____2473 with - | (x',uu____2482) -> FStar_Syntax_Syntax.bv_eq x x')) + (fun uu____2482 -> + match uu____2482 with + | (x',uu____2491) -> FStar_Syntax_Syntax.bv_eq x x')) in - let rec aux uu___102_2498 = - match uu___102_2498 with + let rec aux uu___102_2507 = + match uu___102_2507 with | [] -> [] | hd_subst::rest -> let hd1 = FStar_All.pipe_right hd_subst (FStar_List.collect - (fun uu___101_2529 -> - match uu___101_2529 with + (fun uu___101_2538 -> + match uu___101_2538 with | FStar_Syntax_Syntax.NT (x,t) -> - let uu____2538 = should_retain x in - if uu____2538 + let uu____2547 = should_retain x in + if uu____2547 then - let uu____2543 = - let uu____2544 = - let uu____2551 = + let uu____2552 = + let uu____2553 = + let uu____2560 = delay t (rest, FStar_Syntax_Syntax.NoUseRange) in - (x, uu____2551) in - FStar_Syntax_Syntax.NT uu____2544 in - [uu____2543] + (x, uu____2560) in + FStar_Syntax_Syntax.NT uu____2553 in + [uu____2552] else [] | FStar_Syntax_Syntax.NM (x,i) -> - let uu____2566 = should_retain x in - if uu____2566 + let uu____2575 = should_retain x in + if uu____2575 then let x_i = FStar_Syntax_Syntax.bv_to_tm - (let uu___117_2574 = x in + (let uu___117_2583 = x in { FStar_Syntax_Syntax.ppname = - (uu___117_2574.FStar_Syntax_Syntax.ppname); + (uu___117_2583.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = i; FStar_Syntax_Syntax.sort = - (uu___117_2574.FStar_Syntax_Syntax.sort) + (uu___117_2583.FStar_Syntax_Syntax.sort) }) in let t = @@ -815,19 +816,19 @@ let (compose_uvar_subst : | FStar_Syntax_Syntax.Tm_bvar x_j -> [FStar_Syntax_Syntax.NM (x, (x_j.FStar_Syntax_Syntax.index))] - | uu____2584 -> + | uu____2593 -> [FStar_Syntax_Syntax.NT (x, t)]) else [] - | uu____2589 -> [])) + | uu____2598 -> [])) in - let uu____2590 = aux rest in FStar_List.append hd1 uu____2590 + let uu____2599 = aux rest in FStar_List.append hd1 uu____2599 in - let uu____2593 = + let uu____2602 = aux (FStar_List.append (FStar_Pervasives_Native.fst s0) (FStar_Pervasives_Native.fst s)) in - match uu____2593 with + match uu____2602 with | [] -> ([], (FStar_Pervasives_Native.snd s)) | s' -> ([s'], (FStar_Pervasives_Native.snd s)) @@ -839,129 +840,129 @@ let rec (push_subst : fun s -> fun t -> let mk1 t' = - let uu____2656 = mk_range t.FStar_Syntax_Syntax.pos s in - FStar_Syntax_Syntax.mk t' FStar_Pervasives_Native.None uu____2656 in + let uu____2665 = mk_range t.FStar_Syntax_Syntax.pos s in + FStar_Syntax_Syntax.mk t' FStar_Pervasives_Native.None uu____2665 in match t.FStar_Syntax_Syntax.n with - | FStar_Syntax_Syntax.Tm_delayed uu____2659 -> failwith "Impossible" + | FStar_Syntax_Syntax.Tm_delayed uu____2668 -> failwith "Impossible" | FStar_Syntax_Syntax.Tm_lazy i -> (match i.FStar_Syntax_Syntax.lkind with - | FStar_Syntax_Syntax.Lazy_embedding uu____2688 -> + | FStar_Syntax_Syntax.Lazy_embedding uu____2697 -> let t1 = - let uu____2698 = - let uu____2707 = + let uu____2707 = + let uu____2716 = FStar_ST.op_Bang FStar_Syntax_Syntax.lazy_chooser in - FStar_Util.must uu____2707 in - uu____2698 i.FStar_Syntax_Syntax.lkind i in + FStar_Util.must uu____2716 in + uu____2707 i.FStar_Syntax_Syntax.lkind i in push_subst s t1 - | uu____2757 -> t) - | FStar_Syntax_Syntax.Tm_constant uu____2758 -> tag_with_range t s - | FStar_Syntax_Syntax.Tm_fvar uu____2763 -> tag_with_range t s + | uu____2766 -> t) + | FStar_Syntax_Syntax.Tm_constant uu____2767 -> tag_with_range t s + | FStar_Syntax_Syntax.Tm_fvar uu____2772 -> tag_with_range t s | FStar_Syntax_Syntax.Tm_unknown -> tag_with_range t s | FStar_Syntax_Syntax.Tm_uvar (uv,s0) -> - let uu____2790 = + let uu____2799 = FStar_Syntax_Unionfind.find uv.FStar_Syntax_Syntax.ctx_uvar_head in - (match uu____2790 with + (match uu____2799 with | FStar_Pervasives_Native.None -> - let uu____2795 = - let uu___118_2798 = t in - let uu____2801 = - let uu____2802 = - let uu____2815 = compose_uvar_subst uv s0 s in - (uv, uu____2815) in - FStar_Syntax_Syntax.Tm_uvar uu____2802 in + let uu____2804 = + let uu___118_2807 = t in + let uu____2810 = + let uu____2811 = + let uu____2824 = compose_uvar_subst uv s0 s in + (uv, uu____2824) in + FStar_Syntax_Syntax.Tm_uvar uu____2811 in { - FStar_Syntax_Syntax.n = uu____2801; + FStar_Syntax_Syntax.n = uu____2810; FStar_Syntax_Syntax.pos = - (uu___118_2798.FStar_Syntax_Syntax.pos); + (uu___118_2807.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___118_2798.FStar_Syntax_Syntax.vars) + (uu___118_2807.FStar_Syntax_Syntax.vars) } in - tag_with_range uu____2795 s + tag_with_range uu____2804 s | FStar_Pervasives_Native.Some t1 -> push_subst (compose_subst s0 s) t1) - | FStar_Syntax_Syntax.Tm_type uu____2839 -> subst' s t - | FStar_Syntax_Syntax.Tm_bvar uu____2840 -> subst' s t - | FStar_Syntax_Syntax.Tm_name uu____2841 -> subst' s t + | FStar_Syntax_Syntax.Tm_type uu____2848 -> subst' s t + | FStar_Syntax_Syntax.Tm_bvar uu____2849 -> subst' s t + | FStar_Syntax_Syntax.Tm_name uu____2850 -> subst' s t | FStar_Syntax_Syntax.Tm_uinst (t',us) -> let us1 = FStar_List.map (subst_univ (FStar_Pervasives_Native.fst s)) us in - let uu____2855 = FStar_Syntax_Syntax.mk_Tm_uinst t' us1 in - tag_with_range uu____2855 s + let uu____2864 = FStar_Syntax_Syntax.mk_Tm_uinst t' us1 in + tag_with_range uu____2864 s | FStar_Syntax_Syntax.Tm_app (t0,args) -> - let uu____2888 = - let uu____2889 = - let uu____2906 = subst' s t0 in - let uu____2909 = subst_args' s args in - (uu____2906, uu____2909) in - FStar_Syntax_Syntax.Tm_app uu____2889 in - mk1 uu____2888 + let uu____2897 = + let uu____2898 = + let uu____2915 = subst' s t0 in + let uu____2918 = subst_args' s args in + (uu____2915, uu____2918) in + FStar_Syntax_Syntax.Tm_app uu____2898 in + mk1 uu____2897 | FStar_Syntax_Syntax.Tm_ascribed (t0,(annot,topt),lopt) -> let annot1 = match annot with | FStar_Util.Inl t1 -> - let uu____3010 = subst' s t1 in FStar_Util.Inl uu____3010 + let uu____3019 = subst' s t1 in FStar_Util.Inl uu____3019 | FStar_Util.Inr c -> - let uu____3024 = subst_comp' s c in - FStar_Util.Inr uu____3024 + let uu____3033 = subst_comp' s c in + FStar_Util.Inr uu____3033 in - let uu____3031 = - let uu____3032 = - let uu____3059 = subst' s t0 in - let uu____3062 = - let uu____3079 = FStar_Util.map_opt topt (subst' s) in - (annot1, uu____3079) in - (uu____3059, uu____3062, lopt) in - FStar_Syntax_Syntax.Tm_ascribed uu____3032 in - mk1 uu____3031 + let uu____3040 = + let uu____3041 = + let uu____3068 = subst' s t0 in + let uu____3071 = + let uu____3088 = FStar_Util.map_opt topt (subst' s) in + (annot1, uu____3088) in + (uu____3068, uu____3071, lopt) in + FStar_Syntax_Syntax.Tm_ascribed uu____3041 in + mk1 uu____3040 | FStar_Syntax_Syntax.Tm_abs (bs,body,lopt) -> let n1 = FStar_List.length bs in let s' = shift_subst' n1 s in - let uu____3165 = - let uu____3166 = - let uu____3185 = subst_binders' s bs in - let uu____3194 = subst' s' body in - let uu____3197 = push_subst_lcomp s' lopt in - (uu____3185, uu____3194, uu____3197) in - FStar_Syntax_Syntax.Tm_abs uu____3166 in - mk1 uu____3165 + let uu____3174 = + let uu____3175 = + let uu____3194 = subst_binders' s bs in + let uu____3203 = subst' s' body in + let uu____3206 = push_subst_lcomp s' lopt in + (uu____3194, uu____3203, uu____3206) in + FStar_Syntax_Syntax.Tm_abs uu____3175 in + mk1 uu____3174 | FStar_Syntax_Syntax.Tm_arrow (bs,comp) -> let n1 = FStar_List.length bs in - let uu____3241 = - let uu____3242 = - let uu____3257 = subst_binders' s bs in - let uu____3266 = - let uu____3269 = shift_subst' n1 s in - subst_comp' uu____3269 comp in - (uu____3257, uu____3266) in - FStar_Syntax_Syntax.Tm_arrow uu____3242 in - mk1 uu____3241 + let uu____3250 = + let uu____3251 = + let uu____3266 = subst_binders' s bs in + let uu____3275 = + let uu____3278 = shift_subst' n1 s in + subst_comp' uu____3278 comp in + (uu____3266, uu____3275) in + FStar_Syntax_Syntax.Tm_arrow uu____3251 in + mk1 uu____3250 | FStar_Syntax_Syntax.Tm_refine (x,phi) -> let x1 = - let uu___119_3299 = x in - let uu____3300 = subst' s x.FStar_Syntax_Syntax.sort in + let uu___119_3308 = x in + let uu____3309 = subst' s x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___119_3299.FStar_Syntax_Syntax.ppname); + (uu___119_3308.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___119_3299.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____3300 + (uu___119_3308.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____3309 } in let phi1 = - let uu____3304 = shift_subst' (Prims.parse_int "1") s in - subst' uu____3304 phi in + let uu____3313 = shift_subst' (Prims.parse_int "1") s in + subst' uu____3313 phi in mk1 (FStar_Syntax_Syntax.Tm_refine (x1, phi1)) | FStar_Syntax_Syntax.Tm_match (t0,pats) -> let t01 = subst' s t0 in let pats1 = FStar_All.pipe_right pats (FStar_List.map - (fun uu____3420 -> - match uu____3420 with + (fun uu____3429 -> + match uu____3429 with | (pat,wopt,branch) -> - let uu____3450 = subst_pat' s pat in - (match uu____3450 with + let uu____3459 = subst_pat' s pat in + (match uu____3459 with | (pat1,n1) -> let s1 = shift_subst' n1 s in let wopt1 = @@ -969,8 +970,8 @@ let rec (push_subst : | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some w -> - let uu____3481 = subst' s1 w in - FStar_Pervasives_Native.Some uu____3481 + let uu____3490 = subst' s1 w in + FStar_Pervasives_Native.Some uu____3490 in let branch1 = subst' s1 branch in (pat1, wopt1, branch1)))) @@ -986,111 +987,111 @@ let rec (push_subst : (fun lb -> let lbt = subst' s lb.FStar_Syntax_Syntax.lbtyp in let lbd = - let uu____3553 = + let uu____3562 = is_rec && (FStar_Util.is_left lb.FStar_Syntax_Syntax.lbname) in - if uu____3553 + if uu____3562 then subst' sn lb.FStar_Syntax_Syntax.lbdef else subst' s lb.FStar_Syntax_Syntax.lbdef in let lbname = match lb.FStar_Syntax_Syntax.lbname with | FStar_Util.Inl x -> FStar_Util.Inl - (let uu___120_3571 = x in + (let uu___120_3580 = x in { FStar_Syntax_Syntax.ppname = - (uu___120_3571.FStar_Syntax_Syntax.ppname); + (uu___120_3580.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___120_3571.FStar_Syntax_Syntax.index); + (uu___120_3580.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = lbt }) | FStar_Util.Inr fv -> FStar_Util.Inr fv in - let uu___121_3573 = lb in + let uu___121_3582 = lb in { FStar_Syntax_Syntax.lbname = lbname; FStar_Syntax_Syntax.lbunivs = - (uu___121_3573.FStar_Syntax_Syntax.lbunivs); + (uu___121_3582.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = lbt; FStar_Syntax_Syntax.lbeff = - (uu___121_3573.FStar_Syntax_Syntax.lbeff); + (uu___121_3582.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = lbd; FStar_Syntax_Syntax.lbattrs = - (uu___121_3573.FStar_Syntax_Syntax.lbattrs); + (uu___121_3582.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___121_3573.FStar_Syntax_Syntax.lbpos) + (uu___121_3582.FStar_Syntax_Syntax.lbpos) })) in mk1 (FStar_Syntax_Syntax.Tm_let ((is_rec, lbs1), body1)) | FStar_Syntax_Syntax.Tm_meta (t0,FStar_Syntax_Syntax.Meta_pattern ps) -> - let uu____3604 = - let uu____3605 = - let uu____3612 = subst' s t0 in - let uu____3615 = - let uu____3616 = + let uu____3613 = + let uu____3614 = + let uu____3621 = subst' s t0 in + let uu____3624 = + let uu____3625 = FStar_All.pipe_right ps (FStar_List.map (subst_args' s)) in - FStar_Syntax_Syntax.Meta_pattern uu____3616 in - (uu____3612, uu____3615) in - FStar_Syntax_Syntax.Tm_meta uu____3605 in - mk1 uu____3604 + FStar_Syntax_Syntax.Meta_pattern uu____3625 in + (uu____3621, uu____3624) in + FStar_Syntax_Syntax.Tm_meta uu____3614 in + mk1 uu____3613 | FStar_Syntax_Syntax.Tm_meta (t0,FStar_Syntax_Syntax.Meta_monadic (m,t1)) -> - let uu____3682 = - let uu____3683 = - let uu____3690 = subst' s t0 in - let uu____3693 = - let uu____3694 = - let uu____3701 = subst' s t1 in (m, uu____3701) in - FStar_Syntax_Syntax.Meta_monadic uu____3694 in - (uu____3690, uu____3693) in - FStar_Syntax_Syntax.Tm_meta uu____3683 in - mk1 uu____3682 + let uu____3691 = + let uu____3692 = + let uu____3699 = subst' s t0 in + let uu____3702 = + let uu____3703 = + let uu____3710 = subst' s t1 in (m, uu____3710) in + FStar_Syntax_Syntax.Meta_monadic uu____3703 in + (uu____3699, uu____3702) in + FStar_Syntax_Syntax.Tm_meta uu____3692 in + mk1 uu____3691 | FStar_Syntax_Syntax.Tm_meta (t0,FStar_Syntax_Syntax.Meta_monadic_lift (m1,m2,t1)) -> - let uu____3720 = - let uu____3721 = - let uu____3728 = subst' s t0 in - let uu____3731 = - let uu____3732 = - let uu____3741 = subst' s t1 in (m1, m2, uu____3741) in - FStar_Syntax_Syntax.Meta_monadic_lift uu____3732 in - (uu____3728, uu____3731) in - FStar_Syntax_Syntax.Tm_meta uu____3721 in - mk1 uu____3720 + let uu____3729 = + let uu____3730 = + let uu____3737 = subst' s t0 in + let uu____3740 = + let uu____3741 = + let uu____3750 = subst' s t1 in (m1, m2, uu____3750) in + FStar_Syntax_Syntax.Meta_monadic_lift uu____3741 in + (uu____3737, uu____3740) in + FStar_Syntax_Syntax.Tm_meta uu____3730 in + mk1 uu____3729 | FStar_Syntax_Syntax.Tm_quoted (tm,qi) -> (match qi.FStar_Syntax_Syntax.qkind with | FStar_Syntax_Syntax.Quote_dynamic -> - let uu____3756 = - let uu____3757 = - let uu____3764 = subst' s tm in (uu____3764, qi) in - FStar_Syntax_Syntax.Tm_quoted uu____3757 in - mk1 uu____3756 + let uu____3765 = + let uu____3766 = + let uu____3773 = subst' s tm in (uu____3773, qi) in + FStar_Syntax_Syntax.Tm_quoted uu____3766 in + mk1 uu____3765 | FStar_Syntax_Syntax.Quote_static -> let qi1 = FStar_Syntax_Syntax.on_antiquoted (subst' s) qi in mk1 (FStar_Syntax_Syntax.Tm_quoted (tm, qi1))) | FStar_Syntax_Syntax.Tm_meta (t1,m) -> - let uu____3778 = - let uu____3779 = let uu____3786 = subst' s t1 in (uu____3786, m) + let uu____3787 = + let uu____3788 = let uu____3795 = subst' s t1 in (uu____3795, m) in - FStar_Syntax_Syntax.Tm_meta uu____3779 in - mk1 uu____3778 + FStar_Syntax_Syntax.Tm_meta uu____3788 in + mk1 uu____3787 let rec (compress : FStar_Syntax_Syntax.term -> FStar_Syntax_Syntax.term) = fun t -> let t1 = try_read_memo t in - let uu____3800 = force_uvar t1 in - match uu____3800 with - | (t2,uu____3809) -> + let uu____3809 = force_uvar t1 in + match uu____3809 with + | (t2,uu____3818) -> (match t2.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_delayed ((t',s),memo) -> - ((let uu____3862 = - let uu____3867 = push_subst s t' in - FStar_Pervasives_Native.Some uu____3867 in - FStar_ST.op_Colon_Equals memo uu____3862); + ((let uu____3871 = + let uu____3876 = push_subst s t' in + FStar_Pervasives_Native.Some uu____3876 in + FStar_ST.op_Colon_Equals memo uu____3871); compress t2) - | uu____3921 -> t2) + | uu____3930 -> t2) let (subst : FStar_Syntax_Syntax.subst_elt Prims.list -> @@ -1101,14 +1102,14 @@ let (set_use_range : = fun r -> fun t -> - let uu____3956 = - let uu____3957 = - let uu____3958 = - let uu____3959 = FStar_Range.use_range r in - FStar_Range.set_def_range r uu____3959 in - FStar_Syntax_Syntax.SomeUseRange uu____3958 in - ([], uu____3957) in - subst' uu____3956 t + let uu____3965 = + let uu____3966 = + let uu____3967 = + let uu____3968 = FStar_Range.use_range r in + FStar_Range.set_def_range r uu____3968 in + FStar_Syntax_Syntax.SomeUseRange uu____3967 in + ([], uu____3966) in + subst' uu____3965 t let (subst_comp : FStar_Syntax_Syntax.subst_elt Prims.list -> @@ -1122,17 +1123,17 @@ let (subst_imp : let (closing_subst : FStar_Syntax_Syntax.binders -> FStar_Syntax_Syntax.subst_elt Prims.list) = fun bs -> - let uu____4020 = + let uu____4029 = FStar_List.fold_right - (fun uu____4047 -> - fun uu____4048 -> - match (uu____4047, uu____4048) with - | ((x,uu____4083),(subst1,n1)) -> + (fun uu____4056 -> + fun uu____4057 -> + match (uu____4056, uu____4057) with + | ((x,uu____4092),(subst1,n1)) -> (((FStar_Syntax_Syntax.NM (x, n1)) :: subst1), (n1 + (Prims.parse_int "1")))) bs ([], (Prims.parse_int "0")) in - FStar_All.pipe_right uu____4020 FStar_Pervasives_Native.fst + FStar_All.pipe_right uu____4029 FStar_Pervasives_Native.fst let (open_binders' : (FStar_Syntax_Syntax.bv,FStar_Syntax_Syntax.aqual) @@ -1148,31 +1149,31 @@ let (open_binders' : | [] -> ([], o) | (x,imp)::bs' -> let x' = - let uu___122_4241 = FStar_Syntax_Syntax.freshen_bv x in - let uu____4242 = subst o x.FStar_Syntax_Syntax.sort in + let uu___122_4250 = FStar_Syntax_Syntax.freshen_bv x in + let uu____4251 = subst o x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___122_4241.FStar_Syntax_Syntax.ppname); + (uu___122_4250.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___122_4241.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____4242 + (uu___122_4250.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____4251 } in let imp1 = subst_imp o imp in let o1 = - let uu____4249 = shift_subst (Prims.parse_int "1") o in + let uu____4258 = shift_subst (Prims.parse_int "1") o in (FStar_Syntax_Syntax.DB ((Prims.parse_int "0"), x')) :: - uu____4249 + uu____4258 in - let uu____4255 = aux bs' o1 in - (match uu____4255 with | (bs'1,o2) -> (((x', imp1) :: bs'1), o2)) + let uu____4264 = aux bs' o1 in + (match uu____4264 with | (bs'1,o2) -> (((x', imp1) :: bs'1), o2)) in aux bs [] let (open_binders : FStar_Syntax_Syntax.binders -> FStar_Syntax_Syntax.binders) = fun bs -> - let uu____4316 = open_binders' bs in - FStar_Pervasives_Native.fst uu____4316 + let uu____4325 = open_binders' bs in + FStar_Pervasives_Native.fst uu____4325 let (open_term' : FStar_Syntax_Syntax.binders -> @@ -1182,10 +1183,10 @@ let (open_term' : = fun bs -> fun t -> - let uu____4354 = open_binders' bs in - match uu____4354 with + let uu____4363 = open_binders' bs in + match uu____4363 with | (bs',opening) -> - let uu____4391 = subst opening t in (bs', uu____4391, opening) + let uu____4400 = subst opening t in (bs', uu____4400, opening) let (open_term : FStar_Syntax_Syntax.binders -> @@ -1195,8 +1196,8 @@ let (open_term : = fun bs -> fun t -> - let uu____4407 = open_term' bs t in - match uu____4407 with | (b,t1,uu____4420) -> (b, t1) + let uu____4416 = open_term' bs t in + match uu____4416 with | (b,t1,uu____4429) -> (b, t1) let (open_comp : FStar_Syntax_Syntax.binders -> @@ -1206,10 +1207,10 @@ let (open_comp : = fun bs -> fun t -> - let uu____4436 = open_binders' bs in - match uu____4436 with + let uu____4445 = open_binders' bs in + match uu____4445 with | (bs',opening) -> - let uu____4471 = subst_comp opening t in (bs', uu____4471) + let uu____4480 = subst_comp opening t in (bs', uu____4480) let (open_pat : FStar_Syntax_Syntax.pat -> @@ -1219,89 +1220,89 @@ let (open_pat : fun p -> let rec open_pat_aux sub1 p1 = match p1.FStar_Syntax_Syntax.v with - | FStar_Syntax_Syntax.Pat_constant uu____4521 -> (p1, sub1) + | FStar_Syntax_Syntax.Pat_constant uu____4530 -> (p1, sub1) | FStar_Syntax_Syntax.Pat_cons (fv,pats) -> - let uu____4546 = + let uu____4555 = FStar_All.pipe_right pats (FStar_List.fold_left - (fun uu____4617 -> - fun uu____4618 -> - match (uu____4617, uu____4618) with + (fun uu____4626 -> + fun uu____4627 -> + match (uu____4626, uu____4627) with | ((pats1,sub2),(p2,imp)) -> - let uu____4732 = open_pat_aux sub2 p2 in - (match uu____4732 with + let uu____4741 = open_pat_aux sub2 p2 in + (match uu____4741 with | (p3,sub3) -> (((p3, imp) :: pats1), sub3))) ([], sub1)) in - (match uu____4546 with + (match uu____4555 with | (pats1,sub2) -> - ((let uu___123_4842 = p1 in + ((let uu___123_4851 = p1 in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_cons (fv, (FStar_List.rev pats1))); FStar_Syntax_Syntax.p = - (uu___123_4842.FStar_Syntax_Syntax.p) + (uu___123_4851.FStar_Syntax_Syntax.p) }), sub2)) | FStar_Syntax_Syntax.Pat_var x -> let x' = - let uu___124_4863 = FStar_Syntax_Syntax.freshen_bv x in - let uu____4864 = subst sub1 x.FStar_Syntax_Syntax.sort in + let uu___124_4872 = FStar_Syntax_Syntax.freshen_bv x in + let uu____4873 = subst sub1 x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___124_4863.FStar_Syntax_Syntax.ppname); + (uu___124_4872.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___124_4863.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____4864 + (uu___124_4872.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____4873 } in let sub2 = - let uu____4870 = shift_subst (Prims.parse_int "1") sub1 in + let uu____4879 = shift_subst (Prims.parse_int "1") sub1 in (FStar_Syntax_Syntax.DB ((Prims.parse_int "0"), x')) :: - uu____4870 + uu____4879 in - ((let uu___125_4881 = p1 in + ((let uu___125_4890 = p1 in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_var x'); - FStar_Syntax_Syntax.p = (uu___125_4881.FStar_Syntax_Syntax.p) + FStar_Syntax_Syntax.p = (uu___125_4890.FStar_Syntax_Syntax.p) }), sub2) | FStar_Syntax_Syntax.Pat_wild x -> let x' = - let uu___126_4886 = FStar_Syntax_Syntax.freshen_bv x in - let uu____4887 = subst sub1 x.FStar_Syntax_Syntax.sort in + let uu___126_4895 = FStar_Syntax_Syntax.freshen_bv x in + let uu____4896 = subst sub1 x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___126_4886.FStar_Syntax_Syntax.ppname); + (uu___126_4895.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___126_4886.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____4887 + (uu___126_4895.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____4896 } in let sub2 = - let uu____4893 = shift_subst (Prims.parse_int "1") sub1 in + let uu____4902 = shift_subst (Prims.parse_int "1") sub1 in (FStar_Syntax_Syntax.DB ((Prims.parse_int "0"), x')) :: - uu____4893 + uu____4902 in - ((let uu___127_4904 = p1 in + ((let uu___127_4913 = p1 in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_wild x'); - FStar_Syntax_Syntax.p = (uu___127_4904.FStar_Syntax_Syntax.p) + FStar_Syntax_Syntax.p = (uu___127_4913.FStar_Syntax_Syntax.p) }), sub2) | FStar_Syntax_Syntax.Pat_dot_term (x,t0) -> let x1 = - let uu___128_4914 = x in - let uu____4915 = subst sub1 x.FStar_Syntax_Syntax.sort in + let uu___128_4923 = x in + let uu____4924 = subst sub1 x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___128_4914.FStar_Syntax_Syntax.ppname); + (uu___128_4923.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___128_4914.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____4915 + (uu___128_4923.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____4924 } in let t01 = subst sub1 t0 in - ((let uu___129_4924 = p1 in + ((let uu___129_4933 = p1 in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_dot_term (x1, t01)); - FStar_Syntax_Syntax.p = (uu___129_4924.FStar_Syntax_Syntax.p) + FStar_Syntax_Syntax.p = (uu___129_4933.FStar_Syntax_Syntax.p) }), sub1) in open_pat_aux [] p @@ -1311,41 +1312,41 @@ let (open_branch' : (FStar_Syntax_Syntax.branch,FStar_Syntax_Syntax.subst_t) FStar_Pervasives_Native.tuple2) = - fun uu____4938 -> - match uu____4938 with + fun uu____4947 -> + match uu____4947 with | (p,wopt,e) -> - let uu____4962 = open_pat p in - (match uu____4962 with + let uu____4971 = open_pat p in + (match uu____4971 with | (p1,opening) -> let wopt1 = match wopt with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some w -> - let uu____4991 = subst opening w in - FStar_Pervasives_Native.Some uu____4991 + let uu____5000 = subst opening w in + FStar_Pervasives_Native.Some uu____5000 in let e1 = subst opening e in ((p1, wopt1, e1), opening)) let (open_branch : FStar_Syntax_Syntax.branch -> FStar_Syntax_Syntax.branch) = fun br -> - let uu____5011 = open_branch' br in - match uu____5011 with | (br1,uu____5017) -> br1 + let uu____5020 = open_branch' br in + match uu____5020 with | (br1,uu____5026) -> br1 let (close : FStar_Syntax_Syntax.binders -> FStar_Syntax_Syntax.term -> FStar_Syntax_Syntax.term) = fun bs -> - fun t -> let uu____5029 = closing_subst bs in subst uu____5029 t + fun t -> let uu____5038 = closing_subst bs in subst uu____5038 t let (close_comp : FStar_Syntax_Syntax.binders -> FStar_Syntax_Syntax.comp -> FStar_Syntax_Syntax.comp) = fun bs -> - fun c -> let uu____5043 = closing_subst bs in subst_comp uu____5043 c + fun c -> let uu____5052 = closing_subst bs in subst_comp uu____5052 c let (close_binders : FStar_Syntax_Syntax.binders -> FStar_Syntax_Syntax.binders) = @@ -1355,22 +1356,22 @@ let (close_binders : | [] -> [] | (x,imp)::tl1 -> let x1 = - let uu___130_5111 = x in - let uu____5112 = subst s x.FStar_Syntax_Syntax.sort in + let uu___130_5120 = x in + let uu____5121 = subst s x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___130_5111.FStar_Syntax_Syntax.ppname); + (uu___130_5120.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___130_5111.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____5112 + (uu___130_5120.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____5121 } in let imp1 = subst_imp s imp in let s' = - let uu____5119 = shift_subst (Prims.parse_int "1") s in + let uu____5128 = shift_subst (Prims.parse_int "1") s in (FStar_Syntax_Syntax.NM (x1, (Prims.parse_int "0"))) :: - uu____5119 + uu____5128 in - let uu____5125 = aux s' tl1 in (x1, imp1) :: uu____5125 + let uu____5134 = aux s' tl1 in (x1, imp1) :: uu____5134 in aux [] bs @@ -1383,9 +1384,9 @@ let (close_lcomp : let s = closing_subst bs in FStar_Syntax_Syntax.mk_lcomp lc.FStar_Syntax_Syntax.eff_name lc.FStar_Syntax_Syntax.res_typ lc.FStar_Syntax_Syntax.cflags - (fun uu____5152 -> - let uu____5153 = FStar_Syntax_Syntax.lcomp_comp lc in - subst_comp s uu____5153) + (fun uu____5161 -> + let uu____5162 = FStar_Syntax_Syntax.lcomp_comp lc in + subst_comp s uu____5162) let (close_pat : FStar_Syntax_Syntax.pat' FStar_Syntax_Syntax.withinfo_t -> @@ -1396,108 +1397,108 @@ let (close_pat : fun p -> let rec aux sub1 p1 = match p1.FStar_Syntax_Syntax.v with - | FStar_Syntax_Syntax.Pat_constant uu____5207 -> (p1, sub1) + | FStar_Syntax_Syntax.Pat_constant uu____5216 -> (p1, sub1) | FStar_Syntax_Syntax.Pat_cons (fv,pats) -> - let uu____5232 = + let uu____5241 = FStar_All.pipe_right pats (FStar_List.fold_left - (fun uu____5303 -> - fun uu____5304 -> - match (uu____5303, uu____5304) with + (fun uu____5312 -> + fun uu____5313 -> + match (uu____5312, uu____5313) with | ((pats1,sub2),(p2,imp)) -> - let uu____5418 = aux sub2 p2 in - (match uu____5418 with + let uu____5427 = aux sub2 p2 in + (match uu____5427 with | (p3,sub3) -> (((p3, imp) :: pats1), sub3))) ([], sub1)) in - (match uu____5232 with + (match uu____5241 with | (pats1,sub2) -> - ((let uu___131_5528 = p1 in + ((let uu___131_5537 = p1 in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_cons (fv, (FStar_List.rev pats1))); FStar_Syntax_Syntax.p = - (uu___131_5528.FStar_Syntax_Syntax.p) + (uu___131_5537.FStar_Syntax_Syntax.p) }), sub2)) | FStar_Syntax_Syntax.Pat_var x -> let x1 = - let uu___132_5549 = x in - let uu____5550 = subst sub1 x.FStar_Syntax_Syntax.sort in + let uu___132_5558 = x in + let uu____5559 = subst sub1 x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___132_5549.FStar_Syntax_Syntax.ppname); + (uu___132_5558.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___132_5549.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____5550 + (uu___132_5558.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____5559 } in let sub2 = - let uu____5556 = shift_subst (Prims.parse_int "1") sub1 in + let uu____5565 = shift_subst (Prims.parse_int "1") sub1 in (FStar_Syntax_Syntax.NM (x1, (Prims.parse_int "0"))) :: - uu____5556 + uu____5565 in - ((let uu___133_5567 = p1 in + ((let uu___133_5576 = p1 in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_var x1); - FStar_Syntax_Syntax.p = (uu___133_5567.FStar_Syntax_Syntax.p) + FStar_Syntax_Syntax.p = (uu___133_5576.FStar_Syntax_Syntax.p) }), sub2) | FStar_Syntax_Syntax.Pat_wild x -> let x1 = - let uu___134_5572 = x in - let uu____5573 = subst sub1 x.FStar_Syntax_Syntax.sort in + let uu___134_5581 = x in + let uu____5582 = subst sub1 x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___134_5572.FStar_Syntax_Syntax.ppname); + (uu___134_5581.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___134_5572.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____5573 + (uu___134_5581.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____5582 } in let sub2 = - let uu____5579 = shift_subst (Prims.parse_int "1") sub1 in + let uu____5588 = shift_subst (Prims.parse_int "1") sub1 in (FStar_Syntax_Syntax.NM (x1, (Prims.parse_int "0"))) :: - uu____5579 + uu____5588 in - ((let uu___135_5590 = p1 in + ((let uu___135_5599 = p1 in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_wild x1); - FStar_Syntax_Syntax.p = (uu___135_5590.FStar_Syntax_Syntax.p) + FStar_Syntax_Syntax.p = (uu___135_5599.FStar_Syntax_Syntax.p) }), sub2) | FStar_Syntax_Syntax.Pat_dot_term (x,t0) -> let x1 = - let uu___136_5600 = x in - let uu____5601 = subst sub1 x.FStar_Syntax_Syntax.sort in + let uu___136_5609 = x in + let uu____5610 = subst sub1 x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___136_5600.FStar_Syntax_Syntax.ppname); + (uu___136_5609.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___136_5600.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____5601 + (uu___136_5609.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____5610 } in let t01 = subst sub1 t0 in - ((let uu___137_5610 = p1 in + ((let uu___137_5619 = p1 in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_dot_term (x1, t01)); - FStar_Syntax_Syntax.p = (uu___137_5610.FStar_Syntax_Syntax.p) + FStar_Syntax_Syntax.p = (uu___137_5619.FStar_Syntax_Syntax.p) }), sub1) in aux [] p let (close_branch : FStar_Syntax_Syntax.branch -> FStar_Syntax_Syntax.branch) = - fun uu____5620 -> - match uu____5620 with + fun uu____5629 -> + match uu____5629 with | (p,wopt,e) -> - let uu____5640 = close_pat p in - (match uu____5640 with + let uu____5649 = close_pat p in + (match uu____5649 with | (p1,closing) -> let wopt1 = match wopt with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some w -> - let uu____5677 = subst closing w in - FStar_Pervasives_Native.Some uu____5677 + let uu____5686 = subst closing w in + FStar_Pervasives_Native.Some uu____5686 in let e1 = subst closing e in (p1, wopt1, e1)) @@ -1536,8 +1537,8 @@ let (open_univ_vars : = fun us -> fun t -> - let uu____5765 = univ_var_opening us in - match uu____5765 with | (s,us') -> let t1 = subst s t in (us', t1) + let uu____5774 = univ_var_opening us in + match uu____5774 with | (s,us') -> let t1 = subst s t in (us', t1) let (open_univ_vars_comp : FStar_Syntax_Syntax.univ_names -> @@ -1547,9 +1548,9 @@ let (open_univ_vars_comp : = fun us -> fun c -> - let uu____5808 = univ_var_opening us in - match uu____5808 with - | (s,us') -> let uu____5831 = subst_comp s c in (us', uu____5831) + let uu____5817 = univ_var_opening us in + match uu____5817 with + | (s,us') -> let uu____5840 = subst_comp s c in (us', uu____5840) let (close_univ_vars : FStar_Syntax_Syntax.univ_names -> @@ -1577,50 +1578,50 @@ let (open_let_rec : = fun lbs -> fun t -> - let uu____5894 = - let uu____5906 = FStar_Syntax_Syntax.is_top_level lbs in - if uu____5906 + let uu____5903 = + let uu____5915 = FStar_Syntax_Syntax.is_top_level lbs in + if uu____5915 then ((Prims.parse_int "0"), lbs, []) else FStar_List.fold_right (fun lb -> - fun uu____5946 -> - match uu____5946 with + fun uu____5955 -> + match uu____5955 with | (i,lbs1,out) -> let x = - let uu____5983 = + let uu____5992 = FStar_Util.left lb.FStar_Syntax_Syntax.lbname in - FStar_Syntax_Syntax.freshen_bv uu____5983 in + FStar_Syntax_Syntax.freshen_bv uu____5992 in ((i + (Prims.parse_int "1")), - ((let uu___138_5991 = lb in + ((let uu___138_6000 = lb in { FStar_Syntax_Syntax.lbname = (FStar_Util.Inl x); FStar_Syntax_Syntax.lbunivs = - (uu___138_5991.FStar_Syntax_Syntax.lbunivs); + (uu___138_6000.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = - (uu___138_5991.FStar_Syntax_Syntax.lbtyp); + (uu___138_6000.FStar_Syntax_Syntax.lbtyp); FStar_Syntax_Syntax.lbeff = - (uu___138_5991.FStar_Syntax_Syntax.lbeff); + (uu___138_6000.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = - (uu___138_5991.FStar_Syntax_Syntax.lbdef); + (uu___138_6000.FStar_Syntax_Syntax.lbdef); FStar_Syntax_Syntax.lbattrs = - (uu___138_5991.FStar_Syntax_Syntax.lbattrs); + (uu___138_6000.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___138_5991.FStar_Syntax_Syntax.lbpos) + (uu___138_6000.FStar_Syntax_Syntax.lbpos) }) :: lbs1), ((FStar_Syntax_Syntax.DB (i, x)) :: out))) lbs ((Prims.parse_int "0"), [], []) in - match uu____5894 with + match uu____5903 with | (n_let_recs,lbs1,let_rec_opening) -> let lbs2 = FStar_All.pipe_right lbs1 (FStar_List.map (fun lb -> - let uu____6034 = + let uu____6043 = FStar_List.fold_right (fun u -> - fun uu____6064 -> - match uu____6064 with + fun uu____6073 -> + match uu____6073 with | (i,us,out) -> let u1 = FStar_Syntax_Syntax.new_univ_name @@ -1632,29 +1633,29 @@ let (open_let_rec : :: out))) lb.FStar_Syntax_Syntax.lbunivs (n_let_recs, [], let_rec_opening) in - match uu____6034 with - | (uu____6113,us,u_let_rec_opening) -> - let uu___139_6126 = lb in - let uu____6127 = + match uu____6043 with + | (uu____6122,us,u_let_rec_opening) -> + let uu___139_6135 = lb in + let uu____6136 = subst u_let_rec_opening lb.FStar_Syntax_Syntax.lbtyp in - let uu____6130 = + let uu____6139 = subst u_let_rec_opening lb.FStar_Syntax_Syntax.lbdef in { FStar_Syntax_Syntax.lbname = - (uu___139_6126.FStar_Syntax_Syntax.lbname); + (uu___139_6135.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = us; - FStar_Syntax_Syntax.lbtyp = uu____6127; + FStar_Syntax_Syntax.lbtyp = uu____6136; FStar_Syntax_Syntax.lbeff = - (uu___139_6126.FStar_Syntax_Syntax.lbeff); - FStar_Syntax_Syntax.lbdef = uu____6130; + (uu___139_6135.FStar_Syntax_Syntax.lbeff); + FStar_Syntax_Syntax.lbdef = uu____6139; FStar_Syntax_Syntax.lbattrs = - (uu___139_6126.FStar_Syntax_Syntax.lbattrs); + (uu___139_6135.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___139_6126.FStar_Syntax_Syntax.lbpos) + (uu___139_6135.FStar_Syntax_Syntax.lbpos) })) in let t1 = subst let_rec_opening t in (lbs2, t1) @@ -1667,69 +1668,69 @@ let (close_let_rec : = fun lbs -> fun t -> - let uu____6157 = - let uu____6165 = FStar_Syntax_Syntax.is_top_level lbs in - if uu____6165 + let uu____6166 = + let uu____6174 = FStar_Syntax_Syntax.is_top_level lbs in + if uu____6174 then ((Prims.parse_int "0"), []) else FStar_List.fold_right (fun lb -> - fun uu____6194 -> - match uu____6194 with + fun uu____6203 -> + match uu____6203 with | (i,out) -> - let uu____6217 = - let uu____6220 = - let uu____6221 = - let uu____6227 = + let uu____6226 = + let uu____6229 = + let uu____6230 = + let uu____6236 = FStar_Util.left lb.FStar_Syntax_Syntax.lbname in - (uu____6227, i) in - FStar_Syntax_Syntax.NM uu____6221 in - uu____6220 :: out in - ((i + (Prims.parse_int "1")), uu____6217)) lbs + (uu____6236, i) in + FStar_Syntax_Syntax.NM uu____6230 in + uu____6229 :: out in + ((i + (Prims.parse_int "1")), uu____6226)) lbs ((Prims.parse_int "0"), []) in - match uu____6157 with + match uu____6166 with | (n_let_recs,let_rec_closing) -> let lbs1 = FStar_All.pipe_right lbs (FStar_List.map (fun lb -> - let uu____6266 = + let uu____6275 = FStar_List.fold_right (fun u -> - fun uu____6286 -> - match uu____6286 with + fun uu____6295 -> + match uu____6295 with | (i,out) -> ((i + (Prims.parse_int "1")), ((FStar_Syntax_Syntax.UD (u, i)) :: out))) lb.FStar_Syntax_Syntax.lbunivs (n_let_recs, let_rec_closing) in - match uu____6266 with - | (uu____6317,u_let_rec_closing) -> - let uu___140_6325 = lb in - let uu____6326 = + match uu____6275 with + | (uu____6326,u_let_rec_closing) -> + let uu___140_6334 = lb in + let uu____6335 = subst u_let_rec_closing lb.FStar_Syntax_Syntax.lbtyp in - let uu____6329 = + let uu____6338 = subst u_let_rec_closing lb.FStar_Syntax_Syntax.lbdef in { FStar_Syntax_Syntax.lbname = - (uu___140_6325.FStar_Syntax_Syntax.lbname); + (uu___140_6334.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___140_6325.FStar_Syntax_Syntax.lbunivs); - FStar_Syntax_Syntax.lbtyp = uu____6326; + (uu___140_6334.FStar_Syntax_Syntax.lbunivs); + FStar_Syntax_Syntax.lbtyp = uu____6335; FStar_Syntax_Syntax.lbeff = - (uu___140_6325.FStar_Syntax_Syntax.lbeff); - FStar_Syntax_Syntax.lbdef = uu____6329; + (uu___140_6334.FStar_Syntax_Syntax.lbeff); + FStar_Syntax_Syntax.lbdef = uu____6338; FStar_Syntax_Syntax.lbattrs = - (uu___140_6325.FStar_Syntax_Syntax.lbattrs); + (uu___140_6334.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___140_6325.FStar_Syntax_Syntax.lbpos) + (uu___140_6334.FStar_Syntax_Syntax.lbpos) })) in let t1 = subst let_rec_closing t in (lbs1, t1) @@ -1739,17 +1740,17 @@ let (close_tscheme : FStar_Syntax_Syntax.tscheme -> FStar_Syntax_Syntax.tscheme) = fun binders -> - fun uu____6345 -> - match uu____6345 with + fun uu____6354 -> + match uu____6354 with | (us,t) -> let n1 = (FStar_List.length binders) - (Prims.parse_int "1") in let k = FStar_List.length us in let s = FStar_List.mapi (fun i -> - fun uu____6380 -> - match uu____6380 with - | (x,uu____6389) -> + fun uu____6389 -> + match uu____6389 with + | (x,uu____6398) -> FStar_Syntax_Syntax.NM (x, (k + (n1 - i)))) binders in let t1 = subst s t in (us, t1) @@ -1759,8 +1760,8 @@ let (close_univ_vars_tscheme : FStar_Syntax_Syntax.tscheme -> FStar_Syntax_Syntax.tscheme) = fun us -> - fun uu____6416 -> - match uu____6416 with + fun uu____6425 -> + match uu____6425 with | (us',t) -> let n1 = (FStar_List.length us) - (Prims.parse_int "1") in let k = FStar_List.length us' in @@ -1769,18 +1770,18 @@ let (close_univ_vars_tscheme : (fun i -> fun x -> FStar_Syntax_Syntax.UD (x, (k + (n1 - i)))) us in - let uu____6446 = subst s t in (us', uu____6446) + let uu____6455 = subst s t in (us', uu____6455) let (subst_tscheme : FStar_Syntax_Syntax.subst_elt Prims.list -> FStar_Syntax_Syntax.tscheme -> FStar_Syntax_Syntax.tscheme) = fun s -> - fun uu____6465 -> - match uu____6465 with + fun uu____6474 -> + match uu____6474 with | (us,t) -> let s1 = shift_subst (FStar_List.length us) s in - let uu____6479 = subst s1 t in (us, uu____6479) + let uu____6488 = subst s1 t in (us, uu____6488) let (opening_of_binders : FStar_Syntax_Syntax.binders -> FStar_Syntax_Syntax.subst_t) = @@ -1789,9 +1790,9 @@ let (opening_of_binders : FStar_All.pipe_right bs (FStar_List.mapi (fun i -> - fun uu____6520 -> - match uu____6520 with - | (x,uu____6529) -> FStar_Syntax_Syntax.DB ((n1 - i), x))) + fun uu____6529 -> + match uu____6529 with + | (x,uu____6538) -> FStar_Syntax_Syntax.DB ((n1 - i), x))) let (closing_of_binders : FStar_Syntax_Syntax.binders -> FStar_Syntax_Syntax.subst_t) = @@ -1804,10 +1805,10 @@ let (open_term_1 : = fun b -> fun t -> - let uu____6556 = open_term [b] t in - match uu____6556 with + let uu____6565 = open_term [b] t in + match uu____6565 with | (b1::[],t1) -> (b1, t1) - | uu____6597 -> failwith "impossible: open_term_1" + | uu____6606 -> failwith "impossible: open_term_1" let (open_term_bvs : FStar_Syntax_Syntax.bv Prims.list -> @@ -1817,13 +1818,13 @@ let (open_term_bvs : = fun bvs -> fun t -> - let uu____6628 = - let uu____6633 = FStar_List.map FStar_Syntax_Syntax.mk_binder bvs in - open_term uu____6633 t in - match uu____6628 with + let uu____6637 = + let uu____6642 = FStar_List.map FStar_Syntax_Syntax.mk_binder bvs in + open_term uu____6642 t in + match uu____6637 with | (bs,t1) -> - let uu____6648 = FStar_List.map FStar_Pervasives_Native.fst bs in - (uu____6648, t1) + let uu____6657 = FStar_List.map FStar_Pervasives_Native.fst bs in + (uu____6657, t1) let (open_term_bv : FStar_Syntax_Syntax.bv -> @@ -1833,8 +1834,8 @@ let (open_term_bv : = fun bv -> fun t -> - let uu____6676 = open_term_bvs [bv] t in - match uu____6676 with + let uu____6685 = open_term_bvs [bv] t in + match uu____6685 with | (bv1::[],t1) -> (bv1, t1) - | uu____6691 -> failwith "impossible: open_term_bv" + | uu____6700 -> failwith "impossible: open_term_bv" \ No newline at end of file diff --git a/src/ocaml-output/FStar_Syntax_Syntax.ml b/src/ocaml-output/FStar_Syntax_Syntax.ml index 030b4c3c8c6..7ee0fb5ec5b 100644 --- a/src/ocaml-output/FStar_Syntax_Syntax.ml +++ b/src/ocaml-output/FStar_Syntax_Syntax.ml @@ -266,7 +266,11 @@ and ctx_uvar = ctx_uvar_typ: term' syntax ; ctx_uvar_reason: Prims.string ; ctx_uvar_should_check: should_check_uvar ; - ctx_uvar_range: FStar_Range.range } + ctx_uvar_range: FStar_Range.range ; + ctx_uvar_meta: + (FStar_Dyn.dyn,term' syntax) FStar_Pervasives_Native.tuple2 + FStar_Pervasives_Native.option + } and pat' = | Pat_constant of sconst | Pat_cons of @@ -400,44 +404,44 @@ and arg_qualifier = | Equality let (uu___is_Tm_bvar : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_bvar _0 -> true | uu____1610 -> false + match projectee with | Tm_bvar _0 -> true | uu____1623 -> false let (__proj__Tm_bvar__item___0 : term' -> bv) = fun projectee -> match projectee with | Tm_bvar _0 -> _0 let (uu___is_Tm_name : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_name _0 -> true | uu____1630 -> false + match projectee with | Tm_name _0 -> true | uu____1643 -> false let (__proj__Tm_name__item___0 : term' -> bv) = fun projectee -> match projectee with | Tm_name _0 -> _0 let (uu___is_Tm_fvar : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_fvar _0 -> true | uu____1650 -> false + match projectee with | Tm_fvar _0 -> true | uu____1663 -> false let (__proj__Tm_fvar__item___0 : term' -> fv) = fun projectee -> match projectee with | Tm_fvar _0 -> _0 let (uu___is_Tm_uinst : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_uinst _0 -> true | uu____1676 -> false + match projectee with | Tm_uinst _0 -> true | uu____1689 -> false let (__proj__Tm_uinst__item___0 : term' -> (term' syntax,universes) FStar_Pervasives_Native.tuple2) = fun projectee -> match projectee with | Tm_uinst _0 -> _0 let (uu___is_Tm_constant : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_constant _0 -> true | uu____1714 -> false + match projectee with | Tm_constant _0 -> true | uu____1727 -> false let (__proj__Tm_constant__item___0 : term' -> sconst) = fun projectee -> match projectee with | Tm_constant _0 -> _0 let (uu___is_Tm_type : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_type _0 -> true | uu____1734 -> false + match projectee with | Tm_type _0 -> true | uu____1747 -> false let (__proj__Tm_type__item___0 : term' -> universe) = fun projectee -> match projectee with | Tm_type _0 -> _0 let (uu___is_Tm_abs : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_abs _0 -> true | uu____1772 -> false + match projectee with | Tm_abs _0 -> true | uu____1785 -> false let (__proj__Tm_abs__item___0 : term' -> @@ -448,7 +452,7 @@ let (__proj__Tm_abs__item___0 : = fun projectee -> match projectee with | Tm_abs _0 -> _0 let (uu___is_Tm_arrow : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_arrow _0 -> true | uu____1860 -> false + match projectee with | Tm_arrow _0 -> true | uu____1873 -> false let (__proj__Tm_arrow__item___0 : term' -> @@ -458,14 +462,14 @@ let (__proj__Tm_arrow__item___0 : = fun projectee -> match projectee with | Tm_arrow _0 -> _0 let (uu___is_Tm_refine : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_refine _0 -> true | uu____1928 -> false + match projectee with | Tm_refine _0 -> true | uu____1941 -> false let (__proj__Tm_refine__item___0 : term' -> (bv,term' syntax) FStar_Pervasives_Native.tuple2) = fun projectee -> match projectee with | Tm_refine _0 -> _0 let (uu___is_Tm_app : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_app _0 -> true | uu____1982 -> false + match projectee with | Tm_app _0 -> true | uu____1995 -> false let (__proj__Tm_app__item___0 : term' -> @@ -475,7 +479,7 @@ let (__proj__Tm_app__item___0 : = fun projectee -> match projectee with | Tm_app _0 -> _0 let (uu___is_Tm_match : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_match _0 -> true | uu____2072 -> false + match projectee with | Tm_match _0 -> true | uu____2085 -> false let (__proj__Tm_match__item___0 : term' -> @@ -487,7 +491,7 @@ let (__proj__Tm_match__item___0 : = fun projectee -> match projectee with | Tm_match _0 -> _0 let (uu___is_Tm_ascribed : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_ascribed _0 -> true | uu____2184 -> false + match projectee with | Tm_ascribed _0 -> true | uu____2197 -> false let (__proj__Tm_ascribed__item___0 : term' -> @@ -499,7 +503,7 @@ let (__proj__Tm_ascribed__item___0 : = fun projectee -> match projectee with | Tm_ascribed _0 -> _0 let (uu___is_Tm_let : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_let _0 -> true | uu____2295 -> false + match projectee with | Tm_let _0 -> true | uu____2308 -> false let (__proj__Tm_let__item___0 : term' -> @@ -508,7 +512,7 @@ let (__proj__Tm_let__item___0 : = fun projectee -> match projectee with | Tm_let _0 -> _0 let (uu___is_Tm_uvar : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_uvar _0 -> true | uu____2366 -> false + match projectee with | Tm_uvar _0 -> true | uu____2379 -> false let (__proj__Tm_uvar__item___0 : term' -> @@ -518,7 +522,7 @@ let (__proj__Tm_uvar__item___0 : = fun projectee -> match projectee with | Tm_uvar _0 -> _0 let (uu___is_Tm_delayed : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_delayed _0 -> true | uu____2444 -> false + match projectee with | Tm_delayed _0 -> true | uu____2457 -> false let (__proj__Tm_delayed__item___0 : term' -> @@ -529,27 +533,27 @@ let (__proj__Tm_delayed__item___0 : = fun projectee -> match projectee with | Tm_delayed _0 -> _0 let (uu___is_Tm_meta : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_meta _0 -> true | uu____2536 -> false + match projectee with | Tm_meta _0 -> true | uu____2549 -> false let (__proj__Tm_meta__item___0 : term' -> (term' syntax,metadata) FStar_Pervasives_Native.tuple2) = fun projectee -> match projectee with | Tm_meta _0 -> _0 let (uu___is_Tm_lazy : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_lazy _0 -> true | uu____2574 -> false + match projectee with | Tm_lazy _0 -> true | uu____2587 -> false let (__proj__Tm_lazy__item___0 : term' -> lazyinfo) = fun projectee -> match projectee with | Tm_lazy _0 -> _0 let (uu___is_Tm_quoted : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_quoted _0 -> true | uu____2600 -> false + match projectee with | Tm_quoted _0 -> true | uu____2613 -> false let (__proj__Tm_quoted__item___0 : term' -> (term' syntax,quoteinfo) FStar_Pervasives_Native.tuple2) = fun projectee -> match projectee with | Tm_quoted _0 -> _0 let (uu___is_Tm_unknown : term' -> Prims.bool) = fun projectee -> - match projectee with | Tm_unknown -> true | uu____2637 -> false + match projectee with | Tm_unknown -> true | uu____2650 -> false let (__proj__Mkctx_uvar__item__ctx_uvar_head : ctx_uvar -> @@ -559,16 +563,16 @@ let (__proj__Mkctx_uvar__item__ctx_uvar_head : fun projectee -> match projectee with | { ctx_uvar_head; ctx_uvar_gamma; ctx_uvar_binders; ctx_uvar_typ; - ctx_uvar_reason; ctx_uvar_should_check; ctx_uvar_range;_} -> - ctx_uvar_head + ctx_uvar_reason; ctx_uvar_should_check; ctx_uvar_range; + ctx_uvar_meta;_} -> ctx_uvar_head let (__proj__Mkctx_uvar__item__ctx_uvar_gamma : ctx_uvar -> binding Prims.list) = fun projectee -> match projectee with | { ctx_uvar_head; ctx_uvar_gamma; ctx_uvar_binders; ctx_uvar_typ; - ctx_uvar_reason; ctx_uvar_should_check; ctx_uvar_range;_} -> - ctx_uvar_gamma + ctx_uvar_reason; ctx_uvar_should_check; ctx_uvar_range; + ctx_uvar_meta;_} -> ctx_uvar_gamma let (__proj__Mkctx_uvar__item__ctx_uvar_binders : ctx_uvar -> @@ -578,48 +582,59 @@ let (__proj__Mkctx_uvar__item__ctx_uvar_binders : fun projectee -> match projectee with | { ctx_uvar_head; ctx_uvar_gamma; ctx_uvar_binders; ctx_uvar_typ; - ctx_uvar_reason; ctx_uvar_should_check; ctx_uvar_range;_} -> - ctx_uvar_binders + ctx_uvar_reason; ctx_uvar_should_check; ctx_uvar_range; + ctx_uvar_meta;_} -> ctx_uvar_binders let (__proj__Mkctx_uvar__item__ctx_uvar_typ : ctx_uvar -> term' syntax) = fun projectee -> match projectee with | { ctx_uvar_head; ctx_uvar_gamma; ctx_uvar_binders; ctx_uvar_typ; - ctx_uvar_reason; ctx_uvar_should_check; ctx_uvar_range;_} -> - ctx_uvar_typ + ctx_uvar_reason; ctx_uvar_should_check; ctx_uvar_range; + ctx_uvar_meta;_} -> ctx_uvar_typ let (__proj__Mkctx_uvar__item__ctx_uvar_reason : ctx_uvar -> Prims.string) = fun projectee -> match projectee with | { ctx_uvar_head; ctx_uvar_gamma; ctx_uvar_binders; ctx_uvar_typ; - ctx_uvar_reason; ctx_uvar_should_check; ctx_uvar_range;_} -> - ctx_uvar_reason + ctx_uvar_reason; ctx_uvar_should_check; ctx_uvar_range; + ctx_uvar_meta;_} -> ctx_uvar_reason let (__proj__Mkctx_uvar__item__ctx_uvar_should_check : ctx_uvar -> should_check_uvar) = fun projectee -> match projectee with | { ctx_uvar_head; ctx_uvar_gamma; ctx_uvar_binders; ctx_uvar_typ; - ctx_uvar_reason; ctx_uvar_should_check; ctx_uvar_range;_} -> - ctx_uvar_should_check + ctx_uvar_reason; ctx_uvar_should_check; ctx_uvar_range; + ctx_uvar_meta;_} -> ctx_uvar_should_check let (__proj__Mkctx_uvar__item__ctx_uvar_range : ctx_uvar -> FStar_Range.range) = fun projectee -> match projectee with | { ctx_uvar_head; ctx_uvar_gamma; ctx_uvar_binders; ctx_uvar_typ; - ctx_uvar_reason; ctx_uvar_should_check; ctx_uvar_range;_} -> - ctx_uvar_range + ctx_uvar_reason; ctx_uvar_should_check; ctx_uvar_range; + ctx_uvar_meta;_} -> ctx_uvar_range + +let (__proj__Mkctx_uvar__item__ctx_uvar_meta : + ctx_uvar -> + (FStar_Dyn.dyn,term' syntax) FStar_Pervasives_Native.tuple2 + FStar_Pervasives_Native.option) + = + fun projectee -> + match projectee with + | { ctx_uvar_head; ctx_uvar_gamma; ctx_uvar_binders; ctx_uvar_typ; + ctx_uvar_reason; ctx_uvar_should_check; ctx_uvar_range; + ctx_uvar_meta;_} -> ctx_uvar_meta let (uu___is_Pat_constant : pat' -> Prims.bool) = fun projectee -> - match projectee with | Pat_constant _0 -> true | uu____2947 -> false + match projectee with | Pat_constant _0 -> true | uu____3084 -> false let (__proj__Pat_constant__item___0 : pat' -> sconst) = fun projectee -> match projectee with | Pat_constant _0 -> _0 let (uu___is_Pat_cons : pat' -> Prims.bool) = fun projectee -> - match projectee with | Pat_cons _0 -> true | uu____2980 -> false + match projectee with | Pat_cons _0 -> true | uu____3117 -> false let (__proj__Pat_cons__item___0 : pat' -> @@ -629,19 +644,19 @@ let (__proj__Pat_cons__item___0 : = fun projectee -> match projectee with | Pat_cons _0 -> _0 let (uu___is_Pat_var : pat' -> Prims.bool) = fun projectee -> - match projectee with | Pat_var _0 -> true | uu____3039 -> false + match projectee with | Pat_var _0 -> true | uu____3176 -> false let (__proj__Pat_var__item___0 : pat' -> bv) = fun projectee -> match projectee with | Pat_var _0 -> _0 let (uu___is_Pat_wild : pat' -> Prims.bool) = fun projectee -> - match projectee with | Pat_wild _0 -> true | uu____3059 -> false + match projectee with | Pat_wild _0 -> true | uu____3196 -> false let (__proj__Pat_wild__item___0 : pat' -> bv) = fun projectee -> match projectee with | Pat_wild _0 -> _0 let (uu___is_Pat_dot_term : pat' -> Prims.bool) = fun projectee -> - match projectee with | Pat_dot_term _0 -> true | uu____3085 -> false + match projectee with | Pat_dot_term _0 -> true | uu____3222 -> false let (__proj__Pat_dot_term__item___0 : pat' -> (bv,term' syntax) FStar_Pervasives_Native.tuple2) = @@ -727,7 +742,7 @@ let (__proj__Mkcomp_typ__item__flags : comp_typ -> cflag Prims.list) = let (uu___is_Total : comp' -> Prims.bool) = fun projectee -> - match projectee with | Total _0 -> true | uu____3549 -> false + match projectee with | Total _0 -> true | uu____3686 -> false let (__proj__Total__item___0 : comp' -> @@ -736,7 +751,7 @@ let (__proj__Total__item___0 : = fun projectee -> match projectee with | Total _0 -> _0 let (uu___is_GTotal : comp' -> Prims.bool) = fun projectee -> - match projectee with | GTotal _0 -> true | uu____3601 -> false + match projectee with | GTotal _0 -> true | uu____3738 -> false let (__proj__GTotal__item___0 : comp' -> @@ -745,55 +760,55 @@ let (__proj__GTotal__item___0 : = fun projectee -> match projectee with | GTotal _0 -> _0 let (uu___is_Comp : comp' -> Prims.bool) = fun projectee -> - match projectee with | Comp _0 -> true | uu____3645 -> false + match projectee with | Comp _0 -> true | uu____3782 -> false let (__proj__Comp__item___0 : comp' -> comp_typ) = fun projectee -> match projectee with | Comp _0 -> _0 let (uu___is_TOTAL : cflag -> Prims.bool) = fun projectee -> - match projectee with | TOTAL -> true | uu____3664 -> false + match projectee with | TOTAL -> true | uu____3801 -> false let (uu___is_MLEFFECT : cflag -> Prims.bool) = fun projectee -> - match projectee with | MLEFFECT -> true | uu____3675 -> false + match projectee with | MLEFFECT -> true | uu____3812 -> false let (uu___is_LEMMA : cflag -> Prims.bool) = fun projectee -> - match projectee with | LEMMA -> true | uu____3686 -> false + match projectee with | LEMMA -> true | uu____3823 -> false let (uu___is_RETURN : cflag -> Prims.bool) = fun projectee -> - match projectee with | RETURN -> true | uu____3697 -> false + match projectee with | RETURN -> true | uu____3834 -> false let (uu___is_PARTIAL_RETURN : cflag -> Prims.bool) = fun projectee -> - match projectee with | PARTIAL_RETURN -> true | uu____3708 -> false + match projectee with | PARTIAL_RETURN -> true | uu____3845 -> false let (uu___is_SOMETRIVIAL : cflag -> Prims.bool) = fun projectee -> - match projectee with | SOMETRIVIAL -> true | uu____3719 -> false + match projectee with | SOMETRIVIAL -> true | uu____3856 -> false let (uu___is_TRIVIAL_POSTCONDITION : cflag -> Prims.bool) = fun projectee -> match projectee with | TRIVIAL_POSTCONDITION -> true - | uu____3730 -> false + | uu____3867 -> false let (uu___is_SHOULD_NOT_INLINE : cflag -> Prims.bool) = fun projectee -> - match projectee with | SHOULD_NOT_INLINE -> true | uu____3741 -> false + match projectee with | SHOULD_NOT_INLINE -> true | uu____3878 -> false let (uu___is_CPS : cflag -> Prims.bool) = - fun projectee -> match projectee with | CPS -> true | uu____3752 -> false + fun projectee -> match projectee with | CPS -> true | uu____3889 -> false let (uu___is_DECREASES : cflag -> Prims.bool) = fun projectee -> - match projectee with | DECREASES _0 -> true | uu____3766 -> false + match projectee with | DECREASES _0 -> true | uu____3903 -> false let (__proj__DECREASES__item___0 : cflag -> term' syntax) = fun projectee -> match projectee with | DECREASES _0 -> _0 let (uu___is_Meta_pattern : metadata -> Prims.bool) = fun projectee -> - match projectee with | Meta_pattern _0 -> true | uu____3804 -> false + match projectee with | Meta_pattern _0 -> true | uu____3941 -> false let (__proj__Meta_pattern__item___0 : metadata -> @@ -802,13 +817,13 @@ let (__proj__Meta_pattern__item___0 : = fun projectee -> match projectee with | Meta_pattern _0 -> _0 let (uu___is_Meta_named : metadata -> Prims.bool) = fun projectee -> - match projectee with | Meta_named _0 -> true | uu____3860 -> false + match projectee with | Meta_named _0 -> true | uu____3997 -> false let (__proj__Meta_named__item___0 : metadata -> FStar_Ident.lident) = fun projectee -> match projectee with | Meta_named _0 -> _0 let (uu___is_Meta_labeled : metadata -> Prims.bool) = fun projectee -> - match projectee with | Meta_labeled _0 -> true | uu____3888 -> false + match projectee with | Meta_labeled _0 -> true | uu____4025 -> false let (__proj__Meta_labeled__item___0 : metadata -> @@ -817,20 +832,20 @@ let (__proj__Meta_labeled__item___0 : = fun projectee -> match projectee with | Meta_labeled _0 -> _0 let (uu___is_Meta_desugared : metadata -> Prims.bool) = fun projectee -> - match projectee with | Meta_desugared _0 -> true | uu____3932 -> false + match projectee with | Meta_desugared _0 -> true | uu____4069 -> false let (__proj__Meta_desugared__item___0 : metadata -> meta_source_info) = fun projectee -> match projectee with | Meta_desugared _0 -> _0 let (uu___is_Meta_monadic : metadata -> Prims.bool) = fun projectee -> - match projectee with | Meta_monadic _0 -> true | uu____3958 -> false + match projectee with | Meta_monadic _0 -> true | uu____4095 -> false let (__proj__Meta_monadic__item___0 : metadata -> (monad_name,term' syntax) FStar_Pervasives_Native.tuple2) = fun projectee -> match projectee with | Meta_monadic _0 -> _0 let (uu___is_Meta_monadic_lift : metadata -> Prims.bool) = fun projectee -> - match projectee with | Meta_monadic_lift _0 -> true | uu____4004 -> false + match projectee with | Meta_monadic_lift _0 -> true | uu____4141 -> false let (__proj__Meta_monadic_lift__item___0 : metadata -> @@ -838,27 +853,27 @@ let (__proj__Meta_monadic_lift__item___0 : = fun projectee -> match projectee with | Meta_monadic_lift _0 -> _0 let (uu___is_Sequence : meta_source_info -> Prims.bool) = fun projectee -> - match projectee with | Sequence -> true | uu____4047 -> false + match projectee with | Sequence -> true | uu____4184 -> false let (uu___is_Primop : meta_source_info -> Prims.bool) = fun projectee -> - match projectee with | Primop -> true | uu____4058 -> false + match projectee with | Primop -> true | uu____4195 -> false let (uu___is_Masked_effect : meta_source_info -> Prims.bool) = fun projectee -> - match projectee with | Masked_effect -> true | uu____4069 -> false + match projectee with | Masked_effect -> true | uu____4206 -> false let (uu___is_Meta_smt_pat : meta_source_info -> Prims.bool) = fun projectee -> - match projectee with | Meta_smt_pat -> true | uu____4080 -> false + match projectee with | Meta_smt_pat -> true | uu____4217 -> false let (uu___is_Data_ctor : fv_qual -> Prims.bool) = fun projectee -> - match projectee with | Data_ctor -> true | uu____4091 -> false + match projectee with | Data_ctor -> true | uu____4228 -> false let (uu___is_Record_projector : fv_qual -> Prims.bool) = fun projectee -> - match projectee with | Record_projector _0 -> true | uu____4107 -> false + match projectee with | Record_projector _0 -> true | uu____4244 -> false let (__proj__Record_projector__item___0 : fv_qual -> @@ -866,7 +881,7 @@ let (__proj__Record_projector__item___0 : = fun projectee -> match projectee with | Record_projector _0 -> _0 let (uu___is_Record_ctor : fv_qual -> Prims.bool) = fun projectee -> - match projectee with | Record_ctor _0 -> true | uu____4145 -> false + match projectee with | Record_ctor _0 -> true | uu____4282 -> false let (__proj__Record_ctor__item___0 : fv_qual -> @@ -875,35 +890,35 @@ let (__proj__Record_ctor__item___0 : = fun projectee -> match projectee with | Record_ctor _0 -> _0 let (uu___is_DB : subst_elt -> Prims.bool) = fun projectee -> - match projectee with | DB _0 -> true | uu____4188 -> false + match projectee with | DB _0 -> true | uu____4325 -> false let (__proj__DB__item___0 : subst_elt -> (Prims.int,bv) FStar_Pervasives_Native.tuple2) = fun projectee -> match projectee with | DB _0 -> _0 let (uu___is_NM : subst_elt -> Prims.bool) = fun projectee -> - match projectee with | NM _0 -> true | uu____4228 -> false + match projectee with | NM _0 -> true | uu____4365 -> false let (__proj__NM__item___0 : subst_elt -> (bv,Prims.int) FStar_Pervasives_Native.tuple2) = fun projectee -> match projectee with | NM _0 -> _0 let (uu___is_NT : subst_elt -> Prims.bool) = fun projectee -> - match projectee with | NT _0 -> true | uu____4269 -> false + match projectee with | NT _0 -> true | uu____4406 -> false let (__proj__NT__item___0 : subst_elt -> (bv,term' syntax) FStar_Pervasives_Native.tuple2) = fun projectee -> match projectee with | NT _0 -> _0 let (uu___is_UN : subst_elt -> Prims.bool) = fun projectee -> - match projectee with | UN _0 -> true | uu____4312 -> false + match projectee with | UN _0 -> true | uu____4449 -> false let (__proj__UN__item___0 : subst_elt -> (Prims.int,universe) FStar_Pervasives_Native.tuple2) = fun projectee -> match projectee with | UN _0 -> _0 let (uu___is_UD : subst_elt -> Prims.bool) = fun projectee -> - match projectee with | UD _0 -> true | uu____4352 -> false + match projectee with | UD _0 -> true | uu____4489 -> false let (__proj__UD__item___0 : subst_elt -> (univ_name,Prims.int) FStar_Pervasives_Native.tuple2) = @@ -997,47 +1012,47 @@ let (__proj__Mklazyinfo__item__rng : lazyinfo -> FStar_Range.range) = fun projectee -> match projectee with | { blob; lkind; ltyp; rng;_} -> rng let (uu___is_BadLazy : lazy_kind -> Prims.bool) = fun projectee -> - match projectee with | BadLazy -> true | uu____4757 -> false + match projectee with | BadLazy -> true | uu____4894 -> false let (uu___is_Lazy_bv : lazy_kind -> Prims.bool) = fun projectee -> - match projectee with | Lazy_bv -> true | uu____4768 -> false + match projectee with | Lazy_bv -> true | uu____4905 -> false let (uu___is_Lazy_binder : lazy_kind -> Prims.bool) = fun projectee -> - match projectee with | Lazy_binder -> true | uu____4779 -> false + match projectee with | Lazy_binder -> true | uu____4916 -> false let (uu___is_Lazy_fvar : lazy_kind -> Prims.bool) = fun projectee -> - match projectee with | Lazy_fvar -> true | uu____4790 -> false + match projectee with | Lazy_fvar -> true | uu____4927 -> false let (uu___is_Lazy_comp : lazy_kind -> Prims.bool) = fun projectee -> - match projectee with | Lazy_comp -> true | uu____4801 -> false + match projectee with | Lazy_comp -> true | uu____4938 -> false let (uu___is_Lazy_env : lazy_kind -> Prims.bool) = fun projectee -> - match projectee with | Lazy_env -> true | uu____4812 -> false + match projectee with | Lazy_env -> true | uu____4949 -> false let (uu___is_Lazy_proofstate : lazy_kind -> Prims.bool) = fun projectee -> - match projectee with | Lazy_proofstate -> true | uu____4823 -> false + match projectee with | Lazy_proofstate -> true | uu____4960 -> false let (uu___is_Lazy_goal : lazy_kind -> Prims.bool) = fun projectee -> - match projectee with | Lazy_goal -> true | uu____4834 -> false + match projectee with | Lazy_goal -> true | uu____4971 -> false let (uu___is_Lazy_sigelt : lazy_kind -> Prims.bool) = fun projectee -> - match projectee with | Lazy_sigelt -> true | uu____4845 -> false + match projectee with | Lazy_sigelt -> true | uu____4982 -> false let (uu___is_Lazy_uvar : lazy_kind -> Prims.bool) = fun projectee -> - match projectee with | Lazy_uvar -> true | uu____4856 -> false + match projectee with | Lazy_uvar -> true | uu____4993 -> false let (uu___is_Lazy_embedding : lazy_kind -> Prims.bool) = fun projectee -> - match projectee with | Lazy_embedding _0 -> true | uu____4876 -> false + match projectee with | Lazy_embedding _0 -> true | uu____5013 -> false let (__proj__Lazy_embedding__item___0 : lazy_kind -> @@ -1045,13 +1060,13 @@ let (__proj__Lazy_embedding__item___0 : = fun projectee -> match projectee with | Lazy_embedding _0 -> _0 let (uu___is_Binding_var : binding -> Prims.bool) = fun projectee -> - match projectee with | Binding_var _0 -> true | uu____4920 -> false + match projectee with | Binding_var _0 -> true | uu____5057 -> false let (__proj__Binding_var__item___0 : binding -> bv) = fun projectee -> match projectee with | Binding_var _0 -> _0 let (uu___is_Binding_lid : binding -> Prims.bool) = fun projectee -> - match projectee with | Binding_lid _0 -> true | uu____4952 -> false + match projectee with | Binding_lid _0 -> true | uu____5089 -> false let (__proj__Binding_lid__item___0 : binding -> @@ -1061,25 +1076,25 @@ let (__proj__Binding_lid__item___0 : = fun projectee -> match projectee with | Binding_lid _0 -> _0 let (uu___is_Binding_univ : binding -> Prims.bool) = fun projectee -> - match projectee with | Binding_univ _0 -> true | uu____5008 -> false + match projectee with | Binding_univ _0 -> true | uu____5145 -> false let (__proj__Binding_univ__item___0 : binding -> univ_name) = fun projectee -> match projectee with | Binding_univ _0 -> _0 let (uu___is_Implicit : arg_qualifier -> Prims.bool) = fun projectee -> - match projectee with | Implicit _0 -> true | uu____5029 -> false + match projectee with | Implicit _0 -> true | uu____5166 -> false let (__proj__Implicit__item___0 : arg_qualifier -> Prims.bool) = fun projectee -> match projectee with | Implicit _0 -> _0 let (uu___is_Meta : arg_qualifier -> Prims.bool) = fun projectee -> - match projectee with | Meta _0 -> true | uu____5054 -> false + match projectee with | Meta _0 -> true | uu____5191 -> false let (__proj__Meta__item___0 : arg_qualifier -> term' syntax) = fun projectee -> match projectee with | Meta _0 -> _0 let (uu___is_Equality : arg_qualifier -> Prims.bool) = fun projectee -> - match projectee with | Equality -> true | uu____5079 -> false + match projectee with | Equality -> true | uu____5216 -> false type subst_ts = (subst_elt Prims.list Prims.list,maybe_set_use_range) @@ -1162,13 +1177,13 @@ let (mk_lcomp : fun res_typ -> fun cflags -> fun comp_thunk -> - let uu____5505 = FStar_Util.mk_ref (FStar_Util.Inl comp_thunk) in - { eff_name; res_typ; cflags; comp_thunk = uu____5505 } + let uu____5642 = FStar_Util.mk_ref (FStar_Util.Inl comp_thunk) in + { eff_name; res_typ; cflags; comp_thunk = uu____5642 } let (lcomp_comp : lcomp -> comp) = fun lc -> - let uu____5553 = FStar_ST.op_Bang lc.comp_thunk in - match uu____5553 with + let uu____5690 = FStar_ST.op_Bang lc.comp_thunk in + match uu____5690 with | FStar_Util.Inl thunk -> let c = thunk () in (FStar_ST.op_Colon_Equals lc.comp_thunk (FStar_Util.Inr c); c) @@ -1208,77 +1223,77 @@ type qualifier = | OnlyName let (uu___is_Assumption : qualifier -> Prims.bool) = fun projectee -> - match projectee with | Assumption -> true | uu____5706 -> false + match projectee with | Assumption -> true | uu____5843 -> false let (uu___is_New : qualifier -> Prims.bool) = - fun projectee -> match projectee with | New -> true | uu____5717 -> false + fun projectee -> match projectee with | New -> true | uu____5854 -> false let (uu___is_Private : qualifier -> Prims.bool) = fun projectee -> - match projectee with | Private -> true | uu____5728 -> false + match projectee with | Private -> true | uu____5865 -> false let (uu___is_Unfold_for_unification_and_vcgen : qualifier -> Prims.bool) = fun projectee -> match projectee with | Unfold_for_unification_and_vcgen -> true - | uu____5739 -> false + | uu____5876 -> false let (uu___is_Visible_default : qualifier -> Prims.bool) = fun projectee -> - match projectee with | Visible_default -> true | uu____5750 -> false + match projectee with | Visible_default -> true | uu____5887 -> false let (uu___is_Irreducible : qualifier -> Prims.bool) = fun projectee -> - match projectee with | Irreducible -> true | uu____5761 -> false + match projectee with | Irreducible -> true | uu____5898 -> false let (uu___is_Abstract : qualifier -> Prims.bool) = fun projectee -> - match projectee with | Abstract -> true | uu____5772 -> false + match projectee with | Abstract -> true | uu____5909 -> false let (uu___is_Inline_for_extraction : qualifier -> Prims.bool) = fun projectee -> match projectee with | Inline_for_extraction -> true - | uu____5783 -> false + | uu____5920 -> false let (uu___is_NoExtract : qualifier -> Prims.bool) = fun projectee -> - match projectee with | NoExtract -> true | uu____5794 -> false + match projectee with | NoExtract -> true | uu____5931 -> false let (uu___is_Noeq : qualifier -> Prims.bool) = fun projectee -> - match projectee with | Noeq -> true | uu____5805 -> false + match projectee with | Noeq -> true | uu____5942 -> false let (uu___is_Unopteq : qualifier -> Prims.bool) = fun projectee -> - match projectee with | Unopteq -> true | uu____5816 -> false + match projectee with | Unopteq -> true | uu____5953 -> false let (uu___is_TotalEffect : qualifier -> Prims.bool) = fun projectee -> - match projectee with | TotalEffect -> true | uu____5827 -> false + match projectee with | TotalEffect -> true | uu____5964 -> false let (uu___is_Logic : qualifier -> Prims.bool) = fun projectee -> - match projectee with | Logic -> true | uu____5838 -> false + match projectee with | Logic -> true | uu____5975 -> false let (uu___is_Reifiable : qualifier -> Prims.bool) = fun projectee -> - match projectee with | Reifiable -> true | uu____5849 -> false + match projectee with | Reifiable -> true | uu____5986 -> false let (uu___is_Reflectable : qualifier -> Prims.bool) = fun projectee -> - match projectee with | Reflectable _0 -> true | uu____5861 -> false + match projectee with | Reflectable _0 -> true | uu____5998 -> false let (__proj__Reflectable__item___0 : qualifier -> FStar_Ident.lident) = fun projectee -> match projectee with | Reflectable _0 -> _0 let (uu___is_Discriminator : qualifier -> Prims.bool) = fun projectee -> - match projectee with | Discriminator _0 -> true | uu____5881 -> false + match projectee with | Discriminator _0 -> true | uu____6018 -> false let (__proj__Discriminator__item___0 : qualifier -> FStar_Ident.lident) = fun projectee -> match projectee with | Discriminator _0 -> _0 let (uu___is_Projector : qualifier -> Prims.bool) = fun projectee -> - match projectee with | Projector _0 -> true | uu____5905 -> false + match projectee with | Projector _0 -> true | uu____6042 -> false let (__proj__Projector__item___0 : qualifier -> @@ -1286,7 +1301,7 @@ let (__proj__Projector__item___0 : = fun projectee -> match projectee with | Projector _0 -> _0 let (uu___is_RecordType : qualifier -> Prims.bool) = fun projectee -> - match projectee with | RecordType _0 -> true | uu____5945 -> false + match projectee with | RecordType _0 -> true | uu____6082 -> false let (__proj__RecordType__item___0 : qualifier -> @@ -1295,7 +1310,7 @@ let (__proj__RecordType__item___0 : = fun projectee -> match projectee with | RecordType _0 -> _0 let (uu___is_RecordConstructor : qualifier -> Prims.bool) = fun projectee -> - match projectee with | RecordConstructor _0 -> true | uu____5997 -> false + match projectee with | RecordConstructor _0 -> true | uu____6134 -> false let (__proj__RecordConstructor__item___0 : qualifier -> @@ -1304,7 +1319,7 @@ let (__proj__RecordConstructor__item___0 : = fun projectee -> match projectee with | RecordConstructor _0 -> _0 let (uu___is_Action : qualifier -> Prims.bool) = fun projectee -> - match projectee with | Action _0 -> true | uu____6041 -> false + match projectee with | Action _0 -> true | uu____6178 -> false let (__proj__Action__item___0 : qualifier -> FStar_Ident.lident) = fun projectee -> match projectee with | Action _0 -> _0 @@ -1312,19 +1327,19 @@ let (uu___is_ExceptionConstructor : qualifier -> Prims.bool) = fun projectee -> match projectee with | ExceptionConstructor -> true - | uu____6060 -> false + | uu____6197 -> false let (uu___is_HasMaskedEffect : qualifier -> Prims.bool) = fun projectee -> - match projectee with | HasMaskedEffect -> true | uu____6071 -> false + match projectee with | HasMaskedEffect -> true | uu____6208 -> false let (uu___is_Effect : qualifier -> Prims.bool) = fun projectee -> - match projectee with | Effect -> true | uu____6082 -> false + match projectee with | Effect -> true | uu____6219 -> false let (uu___is_OnlyName : qualifier -> Prims.bool) = fun projectee -> - match projectee with | OnlyName -> true | uu____6093 -> false + match projectee with | OnlyName -> true | uu____6230 -> false type tycon = (FStar_Ident.lident,binders,typ) FStar_Pervasives_Native.tuple3 type monad_abbrev = { @@ -1643,7 +1658,7 @@ and sigelt = sigattrs: attribute Prims.list } let (uu___is_Sig_inductive_typ : sigelt' -> Prims.bool) = fun projectee -> - match projectee with | Sig_inductive_typ _0 -> true | uu____7332 -> false + match projectee with | Sig_inductive_typ _0 -> true | uu____7469 -> false let (__proj__Sig_inductive_typ__item___0 : sigelt' -> @@ -1652,7 +1667,7 @@ let (__proj__Sig_inductive_typ__item___0 : = fun projectee -> match projectee with | Sig_inductive_typ _0 -> _0 let (uu___is_Sig_bundle : sigelt' -> Prims.bool) = fun projectee -> - match projectee with | Sig_bundle _0 -> true | uu____7408 -> false + match projectee with | Sig_bundle _0 -> true | uu____7545 -> false let (__proj__Sig_bundle__item___0 : sigelt' -> @@ -1661,7 +1676,7 @@ let (__proj__Sig_bundle__item___0 : = fun projectee -> match projectee with | Sig_bundle _0 -> _0 let (uu___is_Sig_datacon : sigelt' -> Prims.bool) = fun projectee -> - match projectee with | Sig_datacon _0 -> true | uu____7467 -> false + match projectee with | Sig_datacon _0 -> true | uu____7604 -> false let (__proj__Sig_datacon__item___0 : sigelt' -> @@ -1671,7 +1686,7 @@ let (__proj__Sig_datacon__item___0 : = fun projectee -> match projectee with | Sig_datacon _0 -> _0 let (uu___is_Sig_declare_typ : sigelt' -> Prims.bool) = fun projectee -> - match projectee with | Sig_declare_typ _0 -> true | uu____7538 -> false + match projectee with | Sig_declare_typ _0 -> true | uu____7675 -> false let (__proj__Sig_declare_typ__item___0 : sigelt' -> @@ -1679,7 +1694,7 @@ let (__proj__Sig_declare_typ__item___0 : = fun projectee -> match projectee with | Sig_declare_typ _0 -> _0 let (uu___is_Sig_let : sigelt' -> Prims.bool) = fun projectee -> - match projectee with | Sig_let _0 -> true | uu____7582 -> false + match projectee with | Sig_let _0 -> true | uu____7719 -> false let (__proj__Sig_let__item___0 : sigelt' -> @@ -1688,13 +1703,13 @@ let (__proj__Sig_let__item___0 : = fun projectee -> match projectee with | Sig_let _0 -> _0 let (uu___is_Sig_main : sigelt' -> Prims.bool) = fun projectee -> - match projectee with | Sig_main _0 -> true | uu____7620 -> false + match projectee with | Sig_main _0 -> true | uu____7757 -> false let (__proj__Sig_main__item___0 : sigelt' -> term) = fun projectee -> match projectee with | Sig_main _0 -> _0 let (uu___is_Sig_assume : sigelt' -> Prims.bool) = fun projectee -> - match projectee with | Sig_assume _0 -> true | uu____7646 -> false + match projectee with | Sig_assume _0 -> true | uu____7783 -> false let (__proj__Sig_assume__item___0 : sigelt' -> @@ -1702,7 +1717,7 @@ let (__proj__Sig_assume__item___0 : = fun projectee -> match projectee with | Sig_assume _0 -> _0 let (uu___is_Sig_new_effect : sigelt' -> Prims.bool) = fun projectee -> - match projectee with | Sig_new_effect _0 -> true | uu____7684 -> false + match projectee with | Sig_new_effect _0 -> true | uu____7821 -> false let (__proj__Sig_new_effect__item___0 : sigelt' -> eff_decl) = fun projectee -> match projectee with | Sig_new_effect _0 -> _0 @@ -1710,19 +1725,19 @@ let (uu___is_Sig_new_effect_for_free : sigelt' -> Prims.bool) = fun projectee -> match projectee with | Sig_new_effect_for_free _0 -> true - | uu____7704 -> false + | uu____7841 -> false let (__proj__Sig_new_effect_for_free__item___0 : sigelt' -> eff_decl) = fun projectee -> match projectee with | Sig_new_effect_for_free _0 -> _0 let (uu___is_Sig_sub_effect : sigelt' -> Prims.bool) = fun projectee -> - match projectee with | Sig_sub_effect _0 -> true | uu____7724 -> false + match projectee with | Sig_sub_effect _0 -> true | uu____7861 -> false let (__proj__Sig_sub_effect__item___0 : sigelt' -> sub_eff) = fun projectee -> match projectee with | Sig_sub_effect _0 -> _0 let (uu___is_Sig_effect_abbrev : sigelt' -> Prims.bool) = fun projectee -> - match projectee with | Sig_effect_abbrev _0 -> true | uu____7756 -> false + match projectee with | Sig_effect_abbrev _0 -> true | uu____7893 -> false let (__proj__Sig_effect_abbrev__item___0 : sigelt' -> @@ -1731,13 +1746,13 @@ let (__proj__Sig_effect_abbrev__item___0 : = fun projectee -> match projectee with | Sig_effect_abbrev _0 -> _0 let (uu___is_Sig_pragma : sigelt' -> Prims.bool) = fun projectee -> - match projectee with | Sig_pragma _0 -> true | uu____7812 -> false + match projectee with | Sig_pragma _0 -> true | uu____7949 -> false let (__proj__Sig_pragma__item___0 : sigelt' -> pragma) = fun projectee -> match projectee with | Sig_pragma _0 -> _0 let (uu___is_Sig_splice : sigelt' -> Prims.bool) = fun projectee -> - match projectee with | Sig_splice _0 -> true | uu____7838 -> false + match projectee with | Sig_splice _0 -> true | uu____7975 -> false let (__proj__Sig_splice__item___0 : sigelt' -> @@ -1804,10 +1819,10 @@ type mk_t = term' mk_t_a let (contains_reflectable : qualifier Prims.list -> Prims.bool) = fun l -> FStar_Util.for_some - (fun uu___87_8061 -> - match uu___87_8061 with - | Reflectable uu____8063 -> true - | uu____8065 -> false) l + (fun uu___87_8198 -> + match uu___87_8198 with + | Reflectable uu____8200 -> true + | uu____8202 -> false) l let withinfo : 'a . 'a -> FStar_Range.range -> 'a withinfo_t = fun v1 -> fun r -> { v = v1; p = r } @@ -1847,13 +1862,13 @@ let (range_of_bv : bv -> FStar_Range.range) = let (set_range_of_bv : bv -> FStar_Range.range -> bv) = fun x -> fun r -> - let uu___94_8183 = x in - let uu____8184 = + let uu___94_8320 = x in + let uu____8321 = FStar_Ident.mk_ident (((x.ppname).FStar_Ident.idText), r) in { - ppname = uu____8184; - index = (uu___94_8183.index); - sort = (uu___94_8183.sort) + ppname = uu____8321; + index = (uu___94_8320.index); + sort = (uu___94_8320.sort) } let (on_antiquoted : (term -> term) -> quoteinfo -> quoteinfo) = @@ -1861,66 +1876,66 @@ let (on_antiquoted : (term -> term) -> quoteinfo -> quoteinfo) = fun qi -> let aq = FStar_List.map - (fun uu____8221 -> - match uu____8221 with - | (bv,t) -> let uu____8232 = f t in (bv, uu____8232)) + (fun uu____8358 -> + match uu____8358 with + | (bv,t) -> let uu____8369 = f t in (bv, uu____8369)) qi.antiquotes in - let uu___95_8233 = qi in - { qkind = (uu___95_8233.qkind); antiquotes = aq } + let uu___95_8370 = qi in + { qkind = (uu___95_8370.qkind); antiquotes = aq } let (lookup_aq : bv -> antiquotations -> term FStar_Pervasives_Native.option) = fun bv -> fun aq -> - let uu____8249 = + let uu____8386 = FStar_List.tryFind - (fun uu____8267 -> - match uu____8267 with | (bv',uu____8276) -> bv_eq bv bv') aq + (fun uu____8404 -> + match uu____8404 with | (bv',uu____8413) -> bv_eq bv bv') aq in - match uu____8249 with - | FStar_Pervasives_Native.Some (uu____8283,e) -> + match uu____8386 with + | FStar_Pervasives_Native.Some (uu____8420,e) -> FStar_Pervasives_Native.Some e | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None let syn : - 'Auu____8314 'Auu____8315 'Auu____8316 . - 'Auu____8314 -> - 'Auu____8315 -> - ('Auu____8315 -> 'Auu____8314 -> 'Auu____8316) -> 'Auu____8316 + 'Auu____8451 'Auu____8452 'Auu____8453 . + 'Auu____8451 -> + 'Auu____8452 -> + ('Auu____8452 -> 'Auu____8451 -> 'Auu____8453) -> 'Auu____8453 = fun p -> fun k -> fun f -> f k p let mk_fvs : - 'Auu____8358 . - unit -> 'Auu____8358 FStar_Pervasives_Native.option FStar_ST.ref - = fun uu____8367 -> FStar_Util.mk_ref FStar_Pervasives_Native.None + 'Auu____8495 . + unit -> 'Auu____8495 FStar_Pervasives_Native.option FStar_ST.ref + = fun uu____8504 -> FStar_Util.mk_ref FStar_Pervasives_Native.None let mk_uvs : - 'Auu____8386 . - unit -> 'Auu____8386 FStar_Pervasives_Native.option FStar_ST.ref - = fun uu____8395 -> FStar_Util.mk_ref FStar_Pervasives_Native.None + 'Auu____8523 . + unit -> 'Auu____8523 FStar_Pervasives_Native.option FStar_ST.ref + = fun uu____8532 -> FStar_Util.mk_ref FStar_Pervasives_Native.None let (new_bv_set : unit -> bv FStar_Util.set) = - fun uu____8405 -> FStar_Util.new_set order_bv + fun uu____8542 -> FStar_Util.new_set order_bv let (new_id_set : unit -> FStar_Ident.ident FStar_Util.set) = - fun uu____8415 -> FStar_Util.new_set order_ident + fun uu____8552 -> FStar_Util.new_set order_ident let (new_fv_set : unit -> FStar_Ident.lident FStar_Util.set) = - fun uu____8425 -> FStar_Util.new_set order_fv + fun uu____8562 -> FStar_Util.new_set order_fv let (order_univ_name : univ_name -> univ_name -> Prims.int) = fun x -> fun y -> - let uu____8440 = FStar_Ident.text_of_id x in - let uu____8442 = FStar_Ident.text_of_id y in - FStar_String.compare uu____8440 uu____8442 + let uu____8577 = FStar_Ident.text_of_id x in + let uu____8579 = FStar_Ident.text_of_id y in + FStar_String.compare uu____8577 uu____8579 let (new_universe_names_set : unit -> univ_name FStar_Util.set) = - fun uu____8451 -> FStar_Util.new_set order_univ_name + fun uu____8588 -> FStar_Util.new_set order_univ_name let (eq_binding : binding -> binding -> Prims.bool) = fun b1 -> fun b2 -> match (b1, b2) with | (Binding_var bv1,Binding_var bv2) -> bv_eq bv1 bv2 - | (Binding_lid (lid1,uu____8470),Binding_lid (lid2,uu____8472)) -> + | (Binding_lid (lid1,uu____8607),Binding_lid (lid2,uu____8609)) -> FStar_Ident.lid_equals lid1 lid2 | (Binding_univ u1,Binding_univ u2) -> FStar_Ident.ident_equals u1 u2 - | uu____8507 -> false + | uu____8644 -> false let (no_names : freenames) = new_bv_set () let (no_fvars : FStar_Ident.lident FStar_Util.set) = new_fv_set () @@ -1932,20 +1947,20 @@ let (list_of_freenames : freenames -> bv Prims.list) = fun fvs -> FStar_Util.set_elements fvs let mk : 'a . 'a -> 'a mk_t_a = fun t -> - fun uu____8567 -> + fun uu____8704 -> fun r -> - let uu____8571 = FStar_Util.mk_ref FStar_Pervasives_Native.None in - { n = t; pos = r; vars = uu____8571 } + let uu____8708 = FStar_Util.mk_ref FStar_Pervasives_Native.None in + { n = t; pos = r; vars = uu____8708 } let (bv_to_tm : bv -> term) = fun bv -> - let uu____8604 = range_of_bv bv in - mk (Tm_bvar bv) FStar_Pervasives_Native.None uu____8604 + let uu____8741 = range_of_bv bv in + mk (Tm_bvar bv) FStar_Pervasives_Native.None uu____8741 let (bv_to_name : bv -> term) = fun bv -> - let uu____8611 = range_of_bv bv in - mk (Tm_name bv) FStar_Pervasives_Native.None uu____8611 + let uu____8748 = range_of_bv bv in + mk (Tm_name bv) FStar_Pervasives_Native.None uu____8748 let (mk_Tm_app : term -> args -> mk_t) = fun t1 -> @@ -1954,19 +1969,19 @@ let (mk_Tm_app : term -> args -> mk_t) = fun p -> match args with | [] -> t1 - | uu____8641 -> + | uu____8778 -> mk (Tm_app (t1, args)) FStar_Pervasives_Native.None p let (mk_Tm_uinst : term -> universes -> term) = fun t -> - fun uu___88_8666 -> - match uu___88_8666 with + fun uu___88_8803 -> + match uu___88_8803 with | [] -> t | us -> (match t.n with - | Tm_fvar uu____8668 -> + | Tm_fvar uu____8805 -> mk (Tm_uinst (t, us)) FStar_Pervasives_Native.None t.pos - | uu____8671 -> failwith "Unexpected universe instantiation") + | uu____8808 -> failwith "Unexpected universe instantiation") let (extend_app_n : term -> args -> mk_t) = fun t -> @@ -1976,7 +1991,7 @@ let (extend_app_n : term -> args -> mk_t) = match t.n with | Tm_app (head1,args) -> mk_Tm_app head1 (FStar_List.append args args') kopt r - | uu____8734 -> mk_Tm_app t args' kopt r + | uu____8871 -> mk_Tm_app t args' kopt r let (extend_app : term -> arg -> mk_t) = fun t -> fun arg -> fun kopt -> fun r -> extend_app_n t [arg] kopt r @@ -1985,15 +2000,15 @@ let (mk_Tm_delayed : = fun lr -> fun pos -> - let uu____8795 = - let uu____8802 = - let uu____8803 = - let uu____8826 = FStar_Util.mk_ref FStar_Pervasives_Native.None + let uu____8932 = + let uu____8939 = + let uu____8940 = + let uu____8963 = FStar_Util.mk_ref FStar_Pervasives_Native.None in - (lr, uu____8826) in - Tm_delayed uu____8803 in - mk uu____8802 in - uu____8795 FStar_Pervasives_Native.None pos + (lr, uu____8963) in + Tm_delayed uu____8940 in + mk uu____8939 in + uu____8932 FStar_Pervasives_Native.None pos let (mk_Total' : typ -> universe FStar_Pervasives_Native.option -> comp) = fun t -> fun u -> mk (Total (t, u)) FStar_Pervasives_Native.None t.pos @@ -2010,8 +2025,8 @@ let (mk_lb : Prims.list, FStar_Range.range) FStar_Pervasives_Native.tuple7 -> letbinding) = - fun uu____8959 -> - match uu____8959 with + fun uu____9096 -> + match uu____9096 with | (x,univs,eff,t,e,attrs,pos) -> { lbname = x; @@ -2050,10 +2065,10 @@ let (is_teff : term -> Prims.bool) = fun t -> match t.n with | Tm_constant (FStar_Const.Const_effect ) -> true - | uu____9044 -> false + | uu____9181 -> false let (is_type : term -> Prims.bool) = - fun t -> match t.n with | Tm_type uu____9054 -> true | uu____9056 -> false + fun t -> match t.n with | Tm_type uu____9191 -> true | uu____9193 -> false let (null_id : FStar_Ident.ident) = FStar_Ident.mk_ident ("_", FStar_Range.dummyRange) let (null_bv : term -> bv) = @@ -2061,7 +2076,7 @@ let (null_bv : term -> bv) = let (mk_binder : bv -> binder) = fun a -> (a, FStar_Pervasives_Native.None) let (null_binder : term -> binder) = fun t -> - let uu____9082 = null_bv t in (uu____9082, FStar_Pervasives_Native.None) + let uu____9219 = null_bv t in (uu____9219, FStar_Pervasives_Native.None) let (imp_tag : arg_qualifier) = Implicit false let (iarg : term -> arg) = @@ -2072,19 +2087,19 @@ let (is_null_bv : bv -> Prims.bool) = let (is_null_binder : binder -> Prims.bool) = fun b -> is_null_bv (FStar_Pervasives_Native.fst b) let (is_top_level : letbinding Prims.list -> Prims.bool) = - fun uu___89_9132 -> - match uu___89_9132 with - | { lbname = FStar_Util.Inr uu____9136; lbunivs = uu____9137; - lbtyp = uu____9138; lbeff = uu____9139; lbdef = uu____9140; - lbattrs = uu____9141; lbpos = uu____9142;_}::uu____9143 -> true - | uu____9157 -> false + fun uu___89_9269 -> + match uu___89_9269 with + | { lbname = FStar_Util.Inr uu____9273; lbunivs = uu____9274; + lbtyp = uu____9275; lbeff = uu____9276; lbdef = uu____9277; + lbattrs = uu____9278; lbpos = uu____9279;_}::uu____9280 -> true + | uu____9294 -> false let (freenames_of_binders : binders -> freenames) = fun bs -> FStar_List.fold_right - (fun uu____9179 -> + (fun uu____9316 -> fun out -> - match uu____9179 with | (x,uu____9192) -> FStar_Util.set_add x out) + match uu____9316 with | (x,uu____9329) -> FStar_Util.set_add x out) bs no_names let (binders_of_list : bv Prims.list -> binders) = @@ -2094,18 +2109,18 @@ let (binders_of_list : bv Prims.list -> binders) = let (binders_of_freenames : freenames -> binders) = fun fvs -> - let uu____9225 = FStar_Util.set_elements fvs in - FStar_All.pipe_right uu____9225 binders_of_list + let uu____9362 = FStar_Util.set_elements fvs in + FStar_All.pipe_right uu____9362 binders_of_list let (is_implicit : aqual -> Prims.bool) = - fun uu___90_9236 -> - match uu___90_9236 with - | FStar_Pervasives_Native.Some (Implicit uu____9238) -> true - | uu____9241 -> false + fun uu___90_9373 -> + match uu___90_9373 with + | FStar_Pervasives_Native.Some (Implicit uu____9375) -> true + | uu____9378 -> false let (as_implicit : Prims.bool -> aqual) = - fun uu___91_9249 -> - if uu___91_9249 + fun uu___91_9386 -> + if uu___91_9386 then FStar_Pervasives_Native.Some imp_tag else FStar_Pervasives_Native.None @@ -2113,31 +2128,31 @@ let (pat_bvs : pat -> bv Prims.list) = fun p -> let rec aux b p1 = match p1.v with - | Pat_dot_term uu____9287 -> b - | Pat_constant uu____9294 -> b + | Pat_dot_term uu____9424 -> b + | Pat_constant uu____9431 -> b | Pat_wild x -> x :: b | Pat_var x -> x :: b - | Pat_cons (uu____9297,pats) -> + | Pat_cons (uu____9434,pats) -> FStar_List.fold_left (fun b1 -> - fun uu____9331 -> - match uu____9331 with | (p2,uu____9344) -> aux b1 p2) b pats + fun uu____9468 -> + match uu____9468 with | (p2,uu____9481) -> aux b1 p2) b pats in - let uu____9351 = aux [] p in - FStar_All.pipe_left FStar_List.rev uu____9351 + let uu____9488 = aux [] p in + FStar_All.pipe_left FStar_List.rev uu____9488 let (gen_reset : (unit -> Prims.int,unit -> unit) FStar_Pervasives_Native.tuple2) = let x = FStar_Util.mk_ref (Prims.parse_int "0") in - let gen1 uu____9382 = FStar_Util.incr x; FStar_ST.op_Bang x in - let reset uu____9465 = FStar_ST.op_Colon_Equals x (Prims.parse_int "0") in + let gen1 uu____9519 = FStar_Util.incr x; FStar_ST.op_Bang x in + let reset uu____9602 = FStar_ST.op_Colon_Equals x (Prims.parse_int "0") in (gen1, reset) let (next_id : unit -> Prims.int) = FStar_Pervasives_Native.fst gen_reset let (reset_gensym : unit -> unit) = FStar_Pervasives_Native.snd gen_reset let (range_of_ropt : FStar_Range.range FStar_Pervasives_Native.option -> FStar_Range.range) = - fun uu___92_9549 -> - match uu___92_9549 with + fun uu___92_9686 -> + match uu___92_9686 with | FStar_Pervasives_Native.None -> FStar_Range.dummyRange | FStar_Pervasives_Native.Some r -> r @@ -2149,45 +2164,45 @@ let (gen_bv : fun r -> fun t -> let id1 = FStar_Ident.mk_ident (s, (range_of_ropt r)) in - let uu____9589 = next_id () in - { ppname = id1; index = uu____9589; sort = t } + let uu____9726 = next_id () in + { ppname = id1; index = uu____9726; sort = t } let (new_bv : FStar_Range.range FStar_Pervasives_Native.option -> typ -> bv) = fun ropt -> fun t -> gen_bv FStar_Ident.reserved_prefix ropt t let (freshen_bv : bv -> bv) = fun bv -> - let uu____9612 = is_null_bv bv in - if uu____9612 + let uu____9749 = is_null_bv bv in + if uu____9749 then - let uu____9615 = - let uu____9618 = range_of_bv bv in - FStar_Pervasives_Native.Some uu____9618 in - new_bv uu____9615 bv.sort + let uu____9752 = + let uu____9755 = range_of_bv bv in + FStar_Pervasives_Native.Some uu____9755 in + new_bv uu____9752 bv.sort else - (let uu___96_9621 = bv in - let uu____9622 = next_id () in + (let uu___96_9758 = bv in + let uu____9759 = next_id () in { - ppname = (uu___96_9621.ppname); - index = uu____9622; - sort = (uu___96_9621.sort) + ppname = (uu___96_9758.ppname); + index = uu____9759; + sort = (uu___96_9758.sort) }) let (freshen_binder : binder -> binder) = fun b -> - let uu____9630 = b in - match uu____9630 with - | (bv,aq) -> let uu____9637 = freshen_bv bv in (uu____9637, aq) + let uu____9767 = b in + match uu____9767 with + | (bv,aq) -> let uu____9774 = freshen_bv bv in (uu____9774, aq) let (new_univ_name : FStar_Range.range FStar_Pervasives_Native.option -> univ_name) = fun ropt -> let id1 = next_id () in - let uu____9652 = - let uu____9658 = - let uu____9660 = FStar_Util.string_of_int id1 in - Prims.strcat FStar_Ident.reserved_prefix uu____9660 in - (uu____9658, (range_of_ropt ropt)) in - FStar_Ident.mk_ident uu____9652 + let uu____9789 = + let uu____9795 = + let uu____9797 = FStar_Util.string_of_int id1 in + Prims.strcat FStar_Ident.reserved_prefix uu____9797 in + (uu____9795, (range_of_ropt ropt)) in + FStar_Ident.mk_ident uu____9789 let (mkbv : FStar_Ident.ident -> Prims.int -> term' syntax -> bv) = fun x -> fun y -> fun t -> { ppname = x; index = y; sort = t } @@ -2200,7 +2215,7 @@ let (lbname_eq : match (l1, l2) with | (FStar_Util.Inl x,FStar_Util.Inl y) -> bv_eq x y | (FStar_Util.Inr l,FStar_Util.Inr m) -> FStar_Ident.lid_equals l m - | uu____9742 -> false + | uu____9879 -> false let (fv_eq : fv -> fv -> Prims.bool) = fun fv1 -> @@ -2211,13 +2226,13 @@ let (fv_eq_lid : fv -> FStar_Ident.lident -> Prims.bool) = let (set_bv_range : bv -> FStar_Range.range -> bv) = fun bv -> fun r -> - let uu___97_9791 = bv in - let uu____9792 = + let uu___97_9928 = bv in + let uu____9929 = FStar_Ident.mk_ident (((bv.ppname).FStar_Ident.idText), r) in { - ppname = uu____9792; - index = (uu___97_9791.index); - sort = (uu___97_9791.sort) + ppname = uu____9929; + index = (uu___97_9928.index); + sort = (uu___97_9928.sort) } let (lid_as_fv : @@ -2227,15 +2242,15 @@ let (lid_as_fv : fun l -> fun dd -> fun dq -> - let uu____9814 = - let uu____9815 = FStar_Ident.range_of_lid l in - withinfo l uu____9815 in - { fv_name = uu____9814; fv_delta = dd; fv_qual = dq } + let uu____9951 = + let uu____9952 = FStar_Ident.range_of_lid l in + withinfo l uu____9952 in + { fv_name = uu____9951; fv_delta = dd; fv_qual = dq } let (fv_to_tm : fv -> term) = fun fv -> - let uu____9822 = FStar_Ident.range_of_lid (fv.fv_name).v in - mk (Tm_fvar fv) FStar_Pervasives_Native.None uu____9822 + let uu____9959 = FStar_Ident.range_of_lid (fv.fv_name).v in + mk (Tm_fvar fv) FStar_Pervasives_Native.None uu____9959 let (fvar : FStar_Ident.lident -> @@ -2243,38 +2258,38 @@ let (fvar : = fun l -> fun dd -> - fun dq -> let uu____9843 = lid_as_fv l dd dq in fv_to_tm uu____9843 + fun dq -> let uu____9980 = lid_as_fv l dd dq in fv_to_tm uu____9980 let (lid_of_fv : fv -> FStar_Ident.lid) = fun fv -> (fv.fv_name).v let (range_of_fv : fv -> FStar_Range.range) = fun fv -> - let uu____9856 = lid_of_fv fv in FStar_Ident.range_of_lid uu____9856 + let uu____9993 = lid_of_fv fv in FStar_Ident.range_of_lid uu____9993 let (set_range_of_fv : fv -> FStar_Range.range -> fv) = fun fv -> fun r -> - let uu___98_9868 = fv in - let uu____9869 = - let uu___99_9870 = fv.fv_name in - let uu____9871 = - let uu____9872 = lid_of_fv fv in - FStar_Ident.set_lid_range uu____9872 r in - { v = uu____9871; p = (uu___99_9870.p) } in + let uu___98_10005 = fv in + let uu____10006 = + let uu___99_10007 = fv.fv_name in + let uu____10008 = + let uu____10009 = lid_of_fv fv in + FStar_Ident.set_lid_range uu____10009 r in + { v = uu____10008; p = (uu___99_10007.p) } in { - fv_name = uu____9869; - fv_delta = (uu___98_9868.fv_delta); - fv_qual = (uu___98_9868.fv_qual) + fv_name = uu____10006; + fv_delta = (uu___98_10005.fv_delta); + fv_qual = (uu___98_10005.fv_qual) } let (has_simple_attribute : term Prims.list -> Prims.string -> Prims.bool) = fun l -> fun s -> FStar_List.existsb - (fun uu___93_9898 -> - match uu___93_9898 with - | { n = Tm_constant (FStar_Const.Const_string (data,uu____9903)); - pos = uu____9904; vars = uu____9905;_} when data = s -> true - | uu____9912 -> false) l + (fun uu___93_10035 -> + match uu___93_10035 with + | { n = Tm_constant (FStar_Const.Const_string (data,uu____10040)); + pos = uu____10041; vars = uu____10042;_} when data = s -> true + | uu____10049 -> false) l let rec (eq_pat : pat -> pat -> Prims.bool) = fun p1 -> @@ -2282,20 +2297,20 @@ let rec (eq_pat : pat -> pat -> Prims.bool) = match ((p1.v), (p2.v)) with | (Pat_constant c1,Pat_constant c2) -> FStar_Const.eq_const c1 c2 | (Pat_cons (fv1,as1),Pat_cons (fv2,as2)) -> - let uu____9971 = fv_eq fv1 fv2 in - if uu____9971 + let uu____10108 = fv_eq fv1 fv2 in + if uu____10108 then - let uu____9976 = FStar_List.zip as1 as2 in - FStar_All.pipe_right uu____9976 + let uu____10113 = FStar_List.zip as1 as2 in + FStar_All.pipe_right uu____10113 (FStar_List.for_all - (fun uu____10043 -> - match uu____10043 with + (fun uu____10180 -> + match uu____10180 with | ((p11,b1),(p21,b2)) -> (b1 = b2) && (eq_pat p11 p21))) else false - | (Pat_var uu____10081,Pat_var uu____10082) -> true - | (Pat_wild uu____10084,Pat_wild uu____10085) -> true + | (Pat_var uu____10218,Pat_var uu____10219) -> true + | (Pat_wild uu____10221,Pat_wild uu____10222) -> true | (Pat_dot_term (bv1,t1),Pat_dot_term (bv2,t2)) -> true - | (uu____10100,uu____10101) -> false + | (uu____10237,uu____10238) -> false let (delta_constant : delta_depth) = Delta_constant_at_level (Prims.parse_int "0") @@ -2305,29 +2320,29 @@ let (fvconst : FStar_Ident.lident -> fv) = fun l -> lid_as_fv l delta_constant FStar_Pervasives_Native.None let (tconst : FStar_Ident.lident -> term) = fun l -> - let uu____10119 = - let uu____10126 = let uu____10127 = fvconst l in Tm_fvar uu____10127 + let uu____10256 = + let uu____10263 = let uu____10264 = fvconst l in Tm_fvar uu____10264 in - mk uu____10126 in - uu____10119 FStar_Pervasives_Native.None FStar_Range.dummyRange + mk uu____10263 in + uu____10256 FStar_Pervasives_Native.None FStar_Range.dummyRange let (tabbrev : FStar_Ident.lident -> term) = fun l -> - let uu____10137 = - let uu____10144 = - let uu____10145 = + let uu____10274 = + let uu____10281 = + let uu____10282 = lid_as_fv l (Delta_constant_at_level (Prims.parse_int "1")) FStar_Pervasives_Native.None in - Tm_fvar uu____10145 in - mk uu____10144 in - uu____10137 FStar_Pervasives_Native.None FStar_Range.dummyRange + Tm_fvar uu____10282 in + mk uu____10281 in + uu____10274 FStar_Pervasives_Native.None FStar_Range.dummyRange let (tdataconstr : FStar_Ident.lident -> term) = fun l -> - let uu____10156 = + let uu____10293 = lid_as_fv l delta_constant (FStar_Pervasives_Native.Some Data_ctor) in - fv_to_tm uu____10156 + fv_to_tm uu____10293 let (t_unit : term) = tconst FStar_Parser_Const.unit_lid let (t_bool : term) = tconst FStar_Parser_Const.bool_lid @@ -2346,60 +2361,60 @@ let (t_bv : term) = tconst FStar_Parser_Const.bv_lid let (t_fv : term) = tconst FStar_Parser_Const.fv_lid let (t_norm_step : term) = tconst FStar_Parser_Const.norm_step_lid let (t_tactic_unit : term) = - let uu____10174 = - let uu____10179 = - let uu____10180 = tabbrev FStar_Parser_Const.tactic_lid in - mk_Tm_uinst uu____10180 [U_zero] in - let uu____10181 = let uu____10182 = as_arg t_unit in [uu____10182] in - mk_Tm_app uu____10179 uu____10181 in - uu____10174 FStar_Pervasives_Native.None FStar_Range.dummyRange + let uu____10311 = + let uu____10316 = + let uu____10317 = tabbrev FStar_Parser_Const.tactic_lid in + mk_Tm_uinst uu____10317 [U_zero] in + let uu____10318 = let uu____10319 = as_arg t_unit in [uu____10319] in + mk_Tm_app uu____10316 uu____10318 in + uu____10311 FStar_Pervasives_Native.None FStar_Range.dummyRange let (t_list_of : term -> term) = fun t -> - let uu____10215 = - let uu____10220 = - let uu____10221 = tabbrev FStar_Parser_Const.list_lid in - mk_Tm_uinst uu____10221 [U_zero] in - let uu____10222 = let uu____10223 = as_arg t in [uu____10223] in - mk_Tm_app uu____10220 uu____10222 in - uu____10215 FStar_Pervasives_Native.None FStar_Range.dummyRange + let uu____10352 = + let uu____10357 = + let uu____10358 = tabbrev FStar_Parser_Const.list_lid in + mk_Tm_uinst uu____10358 [U_zero] in + let uu____10359 = let uu____10360 = as_arg t in [uu____10360] in + mk_Tm_app uu____10357 uu____10359 in + uu____10352 FStar_Pervasives_Native.None FStar_Range.dummyRange let (t_option_of : term -> term) = fun t -> - let uu____10256 = - let uu____10261 = - let uu____10262 = tabbrev FStar_Parser_Const.option_lid in - mk_Tm_uinst uu____10262 [U_zero] in - let uu____10263 = let uu____10264 = as_arg t in [uu____10264] in - mk_Tm_app uu____10261 uu____10263 in - uu____10256 FStar_Pervasives_Native.None FStar_Range.dummyRange + let uu____10393 = + let uu____10398 = + let uu____10399 = tabbrev FStar_Parser_Const.option_lid in + mk_Tm_uinst uu____10399 [U_zero] in + let uu____10400 = let uu____10401 = as_arg t in [uu____10401] in + mk_Tm_app uu____10398 uu____10400 in + uu____10393 FStar_Pervasives_Native.None FStar_Range.dummyRange let (t_tuple2_of : term -> term -> term) = fun t1 -> fun t2 -> - let uu____10302 = - let uu____10307 = - let uu____10308 = tabbrev FStar_Parser_Const.lid_tuple2 in - mk_Tm_uinst uu____10308 [U_zero; U_zero] in - let uu____10309 = - let uu____10310 = as_arg t1 in - let uu____10319 = let uu____10330 = as_arg t2 in [uu____10330] in - uu____10310 :: uu____10319 in - mk_Tm_app uu____10307 uu____10309 in - uu____10302 FStar_Pervasives_Native.None FStar_Range.dummyRange + let uu____10439 = + let uu____10444 = + let uu____10445 = tabbrev FStar_Parser_Const.lid_tuple2 in + mk_Tm_uinst uu____10445 [U_zero; U_zero] in + let uu____10446 = + let uu____10447 = as_arg t1 in + let uu____10456 = let uu____10467 = as_arg t2 in [uu____10467] in + uu____10447 :: uu____10456 in + mk_Tm_app uu____10444 uu____10446 in + uu____10439 FStar_Pervasives_Native.None FStar_Range.dummyRange let (t_either_of : term -> term -> term) = fun t1 -> fun t2 -> - let uu____10376 = - let uu____10381 = - let uu____10382 = tabbrev FStar_Parser_Const.either_lid in - mk_Tm_uinst uu____10382 [U_zero; U_zero] in - let uu____10383 = - let uu____10384 = as_arg t1 in - let uu____10393 = let uu____10404 = as_arg t2 in [uu____10404] in - uu____10384 :: uu____10393 in - mk_Tm_app uu____10381 uu____10383 in - uu____10376 FStar_Pervasives_Native.None FStar_Range.dummyRange + let uu____10513 = + let uu____10518 = + let uu____10519 = tabbrev FStar_Parser_Const.either_lid in + mk_Tm_uinst uu____10519 [U_zero; U_zero] in + let uu____10520 = + let uu____10521 = as_arg t1 in + let uu____10530 = let uu____10541 = as_arg t2 in [uu____10541] in + uu____10521 :: uu____10530 in + mk_Tm_app uu____10518 uu____10520 in + uu____10513 FStar_Pervasives_Native.None FStar_Range.dummyRange let (unit_const : term) = mk (Tm_constant FStar_Const.Const_unit) FStar_Pervasives_Native.None diff --git a/src/ocaml-output/FStar_Tactics_Basic.ml b/src/ocaml-output/FStar_Tactics_Basic.ml index 9eb6be00174..ad920ed1075 100644 --- a/src/ocaml-output/FStar_Tactics_Basic.ml +++ b/src/ocaml-output/FStar_Tactics_Basic.ml @@ -57,7 +57,7 @@ let run_safe : if uu____159 then run t p else - (try (fun uu___367_169 -> match () with | () -> run t p) () + (try (fun uu___366_169 -> match () with | () -> run t p) () with | FStar_Errors.Err (uu____178,msg) -> FStar_Tactics_Result.Failed @@ -489,34 +489,34 @@ let catch : 'a . 'a tac -> (Prims.exn,'a) FStar_Util.either tac = | FStar_Tactics_Result.Failed (m,q) -> (FStar_Syntax_Unionfind.rollback tx; (let ps1 = - let uu___368_1372 = ps in + let uu___367_1372 = ps in { FStar_Tactics_Types.main_context = - (uu___368_1372.FStar_Tactics_Types.main_context); + (uu___367_1372.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___368_1372.FStar_Tactics_Types.main_goal); + (uu___367_1372.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = - (uu___368_1372.FStar_Tactics_Types.all_implicits); + (uu___367_1372.FStar_Tactics_Types.all_implicits); FStar_Tactics_Types.goals = - (uu___368_1372.FStar_Tactics_Types.goals); + (uu___367_1372.FStar_Tactics_Types.goals); FStar_Tactics_Types.smt_goals = - (uu___368_1372.FStar_Tactics_Types.smt_goals); + (uu___367_1372.FStar_Tactics_Types.smt_goals); FStar_Tactics_Types.depth = - (uu___368_1372.FStar_Tactics_Types.depth); + (uu___367_1372.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___368_1372.FStar_Tactics_Types.__dump); + (uu___367_1372.FStar_Tactics_Types.__dump); FStar_Tactics_Types.psc = - (uu___368_1372.FStar_Tactics_Types.psc); + (uu___367_1372.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___368_1372.FStar_Tactics_Types.entry_range); + (uu___367_1372.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = - (uu___368_1372.FStar_Tactics_Types.guard_policy); + (uu___367_1372.FStar_Tactics_Types.guard_policy); FStar_Tactics_Types.freshness = (q.FStar_Tactics_Types.freshness); FStar_Tactics_Types.tac_verb_dbg = - (uu___368_1372.FStar_Tactics_Types.tac_verb_dbg); + (uu___367_1372.FStar_Tactics_Types.tac_verb_dbg); FStar_Tactics_Types.local_state = - (uu___368_1372.FStar_Tactics_Types.local_state) + (uu___367_1372.FStar_Tactics_Types.local_state) } in FStar_Tactics_Result.Success ((FStar_Util.Inl m), ps1)))) @@ -545,7 +545,7 @@ let trytac_exn : 'a . 'a tac -> 'a FStar_Pervasives_Native.option tac = mk_tac (fun ps -> try - (fun uu___370_1518 -> + (fun uu___369_1518 -> match () with | () -> let uu____1523 = trytac t in run uu____1523 ps) () with @@ -584,34 +584,34 @@ let (add_implicits : implicits -> unit tac) = bind get (fun p -> set - (let uu___371_1634 = p in + (let uu___370_1634 = p in { FStar_Tactics_Types.main_context = - (uu___371_1634.FStar_Tactics_Types.main_context); + (uu___370_1634.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___371_1634.FStar_Tactics_Types.main_goal); + (uu___370_1634.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = (FStar_List.append i p.FStar_Tactics_Types.all_implicits); FStar_Tactics_Types.goals = - (uu___371_1634.FStar_Tactics_Types.goals); + (uu___370_1634.FStar_Tactics_Types.goals); FStar_Tactics_Types.smt_goals = - (uu___371_1634.FStar_Tactics_Types.smt_goals); + (uu___370_1634.FStar_Tactics_Types.smt_goals); FStar_Tactics_Types.depth = - (uu___371_1634.FStar_Tactics_Types.depth); + (uu___370_1634.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___371_1634.FStar_Tactics_Types.__dump); + (uu___370_1634.FStar_Tactics_Types.__dump); FStar_Tactics_Types.psc = - (uu___371_1634.FStar_Tactics_Types.psc); + (uu___370_1634.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___371_1634.FStar_Tactics_Types.entry_range); + (uu___370_1634.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = - (uu___371_1634.FStar_Tactics_Types.guard_policy); + (uu___370_1634.FStar_Tactics_Types.guard_policy); FStar_Tactics_Types.freshness = - (uu___371_1634.FStar_Tactics_Types.freshness); + (uu___370_1634.FStar_Tactics_Types.freshness); FStar_Tactics_Types.tac_verb_dbg = - (uu___371_1634.FStar_Tactics_Types.tac_verb_dbg); + (uu___370_1634.FStar_Tactics_Types.tac_verb_dbg); FStar_Tactics_Types.local_state = - (uu___371_1634.FStar_Tactics_Types.local_state) + (uu___370_1634.FStar_Tactics_Types.local_state) })) let (__do_unify : @@ -631,7 +631,7 @@ let (__do_unify : uu____1664 else ()); (try - (fun uu___373_1675 -> + (fun uu___372_1675 -> match () with | () -> let res = FStar_TypeChecker_Rel.teq_nosmt env t1 t2 in @@ -677,14 +677,14 @@ let (compress_implicits : unit tac) = (fun ps -> let imps = ps.FStar_Tactics_Types.all_implicits in let g = - let uu___374_1756 = FStar_TypeChecker_Env.trivial_guard in + let uu___373_1756 = FStar_TypeChecker_Env.trivial_guard in { FStar_TypeChecker_Env.guard_f = - (uu___374_1756.FStar_TypeChecker_Env.guard_f); + (uu___373_1756.FStar_TypeChecker_Env.guard_f); FStar_TypeChecker_Env.deferred = - (uu___374_1756.FStar_TypeChecker_Env.deferred); + (uu___373_1756.FStar_TypeChecker_Env.deferred); FStar_TypeChecker_Env.univ_ineqs = - (uu___374_1756.FStar_TypeChecker_Env.univ_ineqs); + (uu___373_1756.FStar_TypeChecker_Env.univ_ineqs); FStar_TypeChecker_Env.implicits = imps } in let g1 = @@ -692,33 +692,33 @@ let (compress_implicits : unit tac) = ps.FStar_Tactics_Types.main_context g in let ps' = - let uu___375_1759 = ps in + let uu___374_1759 = ps in { FStar_Tactics_Types.main_context = - (uu___375_1759.FStar_Tactics_Types.main_context); + (uu___374_1759.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___375_1759.FStar_Tactics_Types.main_goal); + (uu___374_1759.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = (g1.FStar_TypeChecker_Env.implicits); FStar_Tactics_Types.goals = - (uu___375_1759.FStar_Tactics_Types.goals); + (uu___374_1759.FStar_Tactics_Types.goals); FStar_Tactics_Types.smt_goals = - (uu___375_1759.FStar_Tactics_Types.smt_goals); + (uu___374_1759.FStar_Tactics_Types.smt_goals); FStar_Tactics_Types.depth = - (uu___375_1759.FStar_Tactics_Types.depth); + (uu___374_1759.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___375_1759.FStar_Tactics_Types.__dump); - FStar_Tactics_Types.psc = (uu___375_1759.FStar_Tactics_Types.psc); + (uu___374_1759.FStar_Tactics_Types.__dump); + FStar_Tactics_Types.psc = (uu___374_1759.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___375_1759.FStar_Tactics_Types.entry_range); + (uu___374_1759.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = - (uu___375_1759.FStar_Tactics_Types.guard_policy); + (uu___374_1759.FStar_Tactics_Types.guard_policy); FStar_Tactics_Types.freshness = - (uu___375_1759.FStar_Tactics_Types.freshness); + (uu___374_1759.FStar_Tactics_Types.freshness); FStar_Tactics_Types.tac_verb_dbg = - (uu___375_1759.FStar_Tactics_Types.tac_verb_dbg); + (uu___374_1759.FStar_Tactics_Types.tac_verb_dbg); FStar_Tactics_Types.local_state = - (uu___375_1759.FStar_Tactics_Types.local_state) + (uu___374_1759.FStar_Tactics_Types.local_state) } in set ps') @@ -757,7 +757,7 @@ let (remove_solved_goals : unit tac) = bind get (fun ps -> let ps' = - let uu___376_1825 = ps in + let uu___375_1825 = ps in let uu____1826 = FStar_List.filter (fun g -> @@ -766,29 +766,29 @@ let (remove_solved_goals : unit tac) = in { FStar_Tactics_Types.main_context = - (uu___376_1825.FStar_Tactics_Types.main_context); + (uu___375_1825.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___376_1825.FStar_Tactics_Types.main_goal); + (uu___375_1825.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = - (uu___376_1825.FStar_Tactics_Types.all_implicits); + (uu___375_1825.FStar_Tactics_Types.all_implicits); FStar_Tactics_Types.goals = uu____1826; FStar_Tactics_Types.smt_goals = - (uu___376_1825.FStar_Tactics_Types.smt_goals); + (uu___375_1825.FStar_Tactics_Types.smt_goals); FStar_Tactics_Types.depth = - (uu___376_1825.FStar_Tactics_Types.depth); + (uu___375_1825.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___376_1825.FStar_Tactics_Types.__dump); - FStar_Tactics_Types.psc = (uu___376_1825.FStar_Tactics_Types.psc); + (uu___375_1825.FStar_Tactics_Types.__dump); + FStar_Tactics_Types.psc = (uu___375_1825.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___376_1825.FStar_Tactics_Types.entry_range); + (uu___375_1825.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = - (uu___376_1825.FStar_Tactics_Types.guard_policy); + (uu___375_1825.FStar_Tactics_Types.guard_policy); FStar_Tactics_Types.freshness = - (uu___376_1825.FStar_Tactics_Types.freshness); + (uu___375_1825.FStar_Tactics_Types.freshness); FStar_Tactics_Types.tac_verb_dbg = - (uu___376_1825.FStar_Tactics_Types.tac_verb_dbg); + (uu___375_1825.FStar_Tactics_Types.tac_verb_dbg); FStar_Tactics_Types.local_state = - (uu___376_1825.FStar_Tactics_Types.local_state) + (uu___375_1825.FStar_Tactics_Types.local_state) } in set ps') @@ -824,33 +824,33 @@ let (__dismiss : unit tac) = bind get (fun p -> let uu____1887 = - let uu___377_1888 = p in + let uu___376_1888 = p in let uu____1889 = FStar_List.tl p.FStar_Tactics_Types.goals in { FStar_Tactics_Types.main_context = - (uu___377_1888.FStar_Tactics_Types.main_context); + (uu___376_1888.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___377_1888.FStar_Tactics_Types.main_goal); + (uu___376_1888.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = - (uu___377_1888.FStar_Tactics_Types.all_implicits); + (uu___376_1888.FStar_Tactics_Types.all_implicits); FStar_Tactics_Types.goals = uu____1889; FStar_Tactics_Types.smt_goals = - (uu___377_1888.FStar_Tactics_Types.smt_goals); + (uu___376_1888.FStar_Tactics_Types.smt_goals); FStar_Tactics_Types.depth = - (uu___377_1888.FStar_Tactics_Types.depth); + (uu___376_1888.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___377_1888.FStar_Tactics_Types.__dump); - FStar_Tactics_Types.psc = (uu___377_1888.FStar_Tactics_Types.psc); + (uu___376_1888.FStar_Tactics_Types.__dump); + FStar_Tactics_Types.psc = (uu___376_1888.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___377_1888.FStar_Tactics_Types.entry_range); + (uu___376_1888.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = - (uu___377_1888.FStar_Tactics_Types.guard_policy); + (uu___376_1888.FStar_Tactics_Types.guard_policy); FStar_Tactics_Types.freshness = - (uu___377_1888.FStar_Tactics_Types.freshness); + (uu___376_1888.FStar_Tactics_Types.freshness); FStar_Tactics_Types.tac_verb_dbg = - (uu___377_1888.FStar_Tactics_Types.tac_verb_dbg); + (uu___376_1888.FStar_Tactics_Types.tac_verb_dbg); FStar_Tactics_Types.local_state = - (uu___377_1888.FStar_Tactics_Types.local_state) + (uu___376_1888.FStar_Tactics_Types.local_state) } in set uu____1887) @@ -906,33 +906,33 @@ let (set_goals : FStar_Tactics_Types.goal Prims.list -> unit tac) = bind get (fun ps -> set - (let uu___378_1990 = ps in + (let uu___377_1990 = ps in { FStar_Tactics_Types.main_context = - (uu___378_1990.FStar_Tactics_Types.main_context); + (uu___377_1990.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___378_1990.FStar_Tactics_Types.main_goal); + (uu___377_1990.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = - (uu___378_1990.FStar_Tactics_Types.all_implicits); + (uu___377_1990.FStar_Tactics_Types.all_implicits); FStar_Tactics_Types.goals = gs; FStar_Tactics_Types.smt_goals = - (uu___378_1990.FStar_Tactics_Types.smt_goals); + (uu___377_1990.FStar_Tactics_Types.smt_goals); FStar_Tactics_Types.depth = - (uu___378_1990.FStar_Tactics_Types.depth); + (uu___377_1990.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___378_1990.FStar_Tactics_Types.__dump); + (uu___377_1990.FStar_Tactics_Types.__dump); FStar_Tactics_Types.psc = - (uu___378_1990.FStar_Tactics_Types.psc); + (uu___377_1990.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___378_1990.FStar_Tactics_Types.entry_range); + (uu___377_1990.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = - (uu___378_1990.FStar_Tactics_Types.guard_policy); + (uu___377_1990.FStar_Tactics_Types.guard_policy); FStar_Tactics_Types.freshness = - (uu___378_1990.FStar_Tactics_Types.freshness); + (uu___377_1990.FStar_Tactics_Types.freshness); FStar_Tactics_Types.tac_verb_dbg = - (uu___378_1990.FStar_Tactics_Types.tac_verb_dbg); + (uu___377_1990.FStar_Tactics_Types.tac_verb_dbg); FStar_Tactics_Types.local_state = - (uu___378_1990.FStar_Tactics_Types.local_state) + (uu___377_1990.FStar_Tactics_Types.local_state) })) let (set_smt_goals : FStar_Tactics_Types.goal Prims.list -> unit tac) = @@ -940,33 +940,33 @@ let (set_smt_goals : FStar_Tactics_Types.goal Prims.list -> unit tac) = bind get (fun ps -> set - (let uu___379_2009 = ps in + (let uu___378_2009 = ps in { FStar_Tactics_Types.main_context = - (uu___379_2009.FStar_Tactics_Types.main_context); + (uu___378_2009.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___379_2009.FStar_Tactics_Types.main_goal); + (uu___378_2009.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = - (uu___379_2009.FStar_Tactics_Types.all_implicits); + (uu___378_2009.FStar_Tactics_Types.all_implicits); FStar_Tactics_Types.goals = - (uu___379_2009.FStar_Tactics_Types.goals); + (uu___378_2009.FStar_Tactics_Types.goals); FStar_Tactics_Types.smt_goals = gs; FStar_Tactics_Types.depth = - (uu___379_2009.FStar_Tactics_Types.depth); + (uu___378_2009.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___379_2009.FStar_Tactics_Types.__dump); + (uu___378_2009.FStar_Tactics_Types.__dump); FStar_Tactics_Types.psc = - (uu___379_2009.FStar_Tactics_Types.psc); + (uu___378_2009.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___379_2009.FStar_Tactics_Types.entry_range); + (uu___378_2009.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = - (uu___379_2009.FStar_Tactics_Types.guard_policy); + (uu___378_2009.FStar_Tactics_Types.guard_policy); FStar_Tactics_Types.freshness = - (uu___379_2009.FStar_Tactics_Types.freshness); + (uu___378_2009.FStar_Tactics_Types.freshness); FStar_Tactics_Types.tac_verb_dbg = - (uu___379_2009.FStar_Tactics_Types.tac_verb_dbg); + (uu___378_2009.FStar_Tactics_Types.tac_verb_dbg); FStar_Tactics_Types.local_state = - (uu___379_2009.FStar_Tactics_Types.local_state) + (uu___378_2009.FStar_Tactics_Types.local_state) })) let (dismiss_all : unit tac) = set_goals [] @@ -1032,34 +1032,34 @@ let (add_goals : FStar_Tactics_Types.goal Prims.list -> unit tac) = (fun p -> FStar_List.iter check_valid_goal gs; set - (let uu___380_2205 = p in + (let uu___379_2205 = p in { FStar_Tactics_Types.main_context = - (uu___380_2205.FStar_Tactics_Types.main_context); + (uu___379_2205.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___380_2205.FStar_Tactics_Types.main_goal); + (uu___379_2205.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = - (uu___380_2205.FStar_Tactics_Types.all_implicits); + (uu___379_2205.FStar_Tactics_Types.all_implicits); FStar_Tactics_Types.goals = (FStar_List.append gs p.FStar_Tactics_Types.goals); FStar_Tactics_Types.smt_goals = - (uu___380_2205.FStar_Tactics_Types.smt_goals); + (uu___379_2205.FStar_Tactics_Types.smt_goals); FStar_Tactics_Types.depth = - (uu___380_2205.FStar_Tactics_Types.depth); + (uu___379_2205.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___380_2205.FStar_Tactics_Types.__dump); + (uu___379_2205.FStar_Tactics_Types.__dump); FStar_Tactics_Types.psc = - (uu___380_2205.FStar_Tactics_Types.psc); + (uu___379_2205.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___380_2205.FStar_Tactics_Types.entry_range); + (uu___379_2205.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = - (uu___380_2205.FStar_Tactics_Types.guard_policy); + (uu___379_2205.FStar_Tactics_Types.guard_policy); FStar_Tactics_Types.freshness = - (uu___380_2205.FStar_Tactics_Types.freshness); + (uu___379_2205.FStar_Tactics_Types.freshness); FStar_Tactics_Types.tac_verb_dbg = - (uu___380_2205.FStar_Tactics_Types.tac_verb_dbg); + (uu___379_2205.FStar_Tactics_Types.tac_verb_dbg); FStar_Tactics_Types.local_state = - (uu___380_2205.FStar_Tactics_Types.local_state) + (uu___379_2205.FStar_Tactics_Types.local_state) })) let (add_smt_goals : FStar_Tactics_Types.goal Prims.list -> unit tac) = @@ -1068,34 +1068,34 @@ let (add_smt_goals : FStar_Tactics_Types.goal Prims.list -> unit tac) = (fun p -> FStar_List.iter check_valid_goal gs; set - (let uu___381_2226 = p in + (let uu___380_2226 = p in { FStar_Tactics_Types.main_context = - (uu___381_2226.FStar_Tactics_Types.main_context); + (uu___380_2226.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___381_2226.FStar_Tactics_Types.main_goal); + (uu___380_2226.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = - (uu___381_2226.FStar_Tactics_Types.all_implicits); + (uu___380_2226.FStar_Tactics_Types.all_implicits); FStar_Tactics_Types.goals = - (uu___381_2226.FStar_Tactics_Types.goals); + (uu___380_2226.FStar_Tactics_Types.goals); FStar_Tactics_Types.smt_goals = (FStar_List.append gs p.FStar_Tactics_Types.smt_goals); FStar_Tactics_Types.depth = - (uu___381_2226.FStar_Tactics_Types.depth); + (uu___380_2226.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___381_2226.FStar_Tactics_Types.__dump); + (uu___380_2226.FStar_Tactics_Types.__dump); FStar_Tactics_Types.psc = - (uu___381_2226.FStar_Tactics_Types.psc); + (uu___380_2226.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___381_2226.FStar_Tactics_Types.entry_range); + (uu___380_2226.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = - (uu___381_2226.FStar_Tactics_Types.guard_policy); + (uu___380_2226.FStar_Tactics_Types.guard_policy); FStar_Tactics_Types.freshness = - (uu___381_2226.FStar_Tactics_Types.freshness); + (uu___380_2226.FStar_Tactics_Types.freshness); FStar_Tactics_Types.tac_verb_dbg = - (uu___381_2226.FStar_Tactics_Types.tac_verb_dbg); + (uu___380_2226.FStar_Tactics_Types.tac_verb_dbg); FStar_Tactics_Types.local_state = - (uu___381_2226.FStar_Tactics_Types.local_state) + (uu___380_2226.FStar_Tactics_Types.local_state) })) let (push_goals : FStar_Tactics_Types.goal Prims.list -> unit tac) = @@ -1104,34 +1104,34 @@ let (push_goals : FStar_Tactics_Types.goal Prims.list -> unit tac) = (fun p -> FStar_List.iter check_valid_goal gs; set - (let uu___382_2247 = p in + (let uu___381_2247 = p in { FStar_Tactics_Types.main_context = - (uu___382_2247.FStar_Tactics_Types.main_context); + (uu___381_2247.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___382_2247.FStar_Tactics_Types.main_goal); + (uu___381_2247.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = - (uu___382_2247.FStar_Tactics_Types.all_implicits); + (uu___381_2247.FStar_Tactics_Types.all_implicits); FStar_Tactics_Types.goals = (FStar_List.append p.FStar_Tactics_Types.goals gs); FStar_Tactics_Types.smt_goals = - (uu___382_2247.FStar_Tactics_Types.smt_goals); + (uu___381_2247.FStar_Tactics_Types.smt_goals); FStar_Tactics_Types.depth = - (uu___382_2247.FStar_Tactics_Types.depth); + (uu___381_2247.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___382_2247.FStar_Tactics_Types.__dump); + (uu___381_2247.FStar_Tactics_Types.__dump); FStar_Tactics_Types.psc = - (uu___382_2247.FStar_Tactics_Types.psc); + (uu___381_2247.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___382_2247.FStar_Tactics_Types.entry_range); + (uu___381_2247.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = - (uu___382_2247.FStar_Tactics_Types.guard_policy); + (uu___381_2247.FStar_Tactics_Types.guard_policy); FStar_Tactics_Types.freshness = - (uu___382_2247.FStar_Tactics_Types.freshness); + (uu___381_2247.FStar_Tactics_Types.freshness); FStar_Tactics_Types.tac_verb_dbg = - (uu___382_2247.FStar_Tactics_Types.tac_verb_dbg); + (uu___381_2247.FStar_Tactics_Types.tac_verb_dbg); FStar_Tactics_Types.local_state = - (uu___382_2247.FStar_Tactics_Types.local_state) + (uu___381_2247.FStar_Tactics_Types.local_state) })) let (push_smt_goals : FStar_Tactics_Types.goal Prims.list -> unit tac) = @@ -1140,34 +1140,34 @@ let (push_smt_goals : FStar_Tactics_Types.goal Prims.list -> unit tac) = (fun p -> FStar_List.iter check_valid_goal gs; set - (let uu___383_2268 = p in + (let uu___382_2268 = p in { FStar_Tactics_Types.main_context = - (uu___383_2268.FStar_Tactics_Types.main_context); + (uu___382_2268.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___383_2268.FStar_Tactics_Types.main_goal); + (uu___382_2268.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = - (uu___383_2268.FStar_Tactics_Types.all_implicits); + (uu___382_2268.FStar_Tactics_Types.all_implicits); FStar_Tactics_Types.goals = - (uu___383_2268.FStar_Tactics_Types.goals); + (uu___382_2268.FStar_Tactics_Types.goals); FStar_Tactics_Types.smt_goals = (FStar_List.append p.FStar_Tactics_Types.smt_goals gs); FStar_Tactics_Types.depth = - (uu___383_2268.FStar_Tactics_Types.depth); + (uu___382_2268.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___383_2268.FStar_Tactics_Types.__dump); + (uu___382_2268.FStar_Tactics_Types.__dump); FStar_Tactics_Types.psc = - (uu___383_2268.FStar_Tactics_Types.psc); + (uu___382_2268.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___383_2268.FStar_Tactics_Types.entry_range); + (uu___382_2268.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = - (uu___383_2268.FStar_Tactics_Types.guard_policy); + (uu___382_2268.FStar_Tactics_Types.guard_policy); FStar_Tactics_Types.freshness = - (uu___383_2268.FStar_Tactics_Types.freshness); + (uu___382_2268.FStar_Tactics_Types.freshness); FStar_Tactics_Types.tac_verb_dbg = - (uu___383_2268.FStar_Tactics_Types.tac_verb_dbg); + (uu___382_2268.FStar_Tactics_Types.tac_verb_dbg); FStar_Tactics_Types.local_state = - (uu___383_2268.FStar_Tactics_Types.local_state) + (uu___382_2268.FStar_Tactics_Types.local_state) })) let (replace_cur : FStar_Tactics_Types.goal -> unit tac) = @@ -1185,133 +1185,133 @@ let (new_uvar : let uu____2311 = FStar_TypeChecker_Env.new_implicit_var_aux reason typ.FStar_Syntax_Syntax.pos env typ - FStar_Syntax_Syntax.Allow_untyped + FStar_Syntax_Syntax.Allow_untyped FStar_Pervasives_Native.None in match uu____2311 with | (u,ctx_uvar,g_u) -> - let uu____2345 = + let uu____2349 = add_implicits g_u.FStar_TypeChecker_Env.implicits in - bind uu____2345 - (fun uu____2354 -> - let uu____2355 = - let uu____2360 = - let uu____2361 = FStar_List.hd ctx_uvar in - FStar_Pervasives_Native.fst uu____2361 in - (u, uu____2360) in - ret uu____2355) + bind uu____2349 + (fun uu____2358 -> + let uu____2359 = + let uu____2364 = + let uu____2365 = FStar_List.hd ctx_uvar in + FStar_Pervasives_Native.fst uu____2365 in + (u, uu____2364) in + ret uu____2359) let (is_true : FStar_Syntax_Syntax.term -> Prims.bool) = fun t -> - let uu____2381 = FStar_Syntax_Util.un_squash t in - match uu____2381 with + let uu____2385 = FStar_Syntax_Util.un_squash t in + match uu____2385 with | FStar_Pervasives_Native.Some t' -> - let uu____2392 = - let uu____2393 = FStar_Syntax_Subst.compress t' in - uu____2393.FStar_Syntax_Syntax.n in - (match uu____2392 with + let uu____2396 = + let uu____2397 = FStar_Syntax_Subst.compress t' in + uu____2397.FStar_Syntax_Syntax.n in + (match uu____2396 with | FStar_Syntax_Syntax.Tm_fvar fv -> FStar_Syntax_Syntax.fv_eq_lid fv FStar_Parser_Const.true_lid - | uu____2398 -> false) - | uu____2400 -> false + | uu____2402 -> false) + | uu____2404 -> false let (is_false : FStar_Syntax_Syntax.term -> Prims.bool) = fun t -> - let uu____2413 = FStar_Syntax_Util.un_squash t in - match uu____2413 with + let uu____2417 = FStar_Syntax_Util.un_squash t in + match uu____2417 with | FStar_Pervasives_Native.Some t' -> - let uu____2424 = - let uu____2425 = FStar_Syntax_Subst.compress t' in - uu____2425.FStar_Syntax_Syntax.n in - (match uu____2424 with + let uu____2428 = + let uu____2429 = FStar_Syntax_Subst.compress t' in + uu____2429.FStar_Syntax_Syntax.n in + (match uu____2428 with | FStar_Syntax_Syntax.Tm_fvar fv -> FStar_Syntax_Syntax.fv_eq_lid fv FStar_Parser_Const.false_lid - | uu____2430 -> false) - | uu____2432 -> false + | uu____2434 -> false) + | uu____2436 -> false let (cur_goal : unit -> FStar_Tactics_Types.goal tac) = - fun uu____2445 -> + fun uu____2449 -> bind get (fun p -> match p.FStar_Tactics_Types.goals with | [] -> fail "No more goals (1)" | hd1::tl1 -> - let uu____2457 = + let uu____2461 = FStar_Syntax_Unionfind.find (hd1.FStar_Tactics_Types.goal_ctx_uvar).FStar_Syntax_Syntax.ctx_uvar_head in - (match uu____2457 with + (match uu____2461 with | FStar_Pervasives_Native.None -> ret hd1 | FStar_Pervasives_Native.Some t -> - ((let uu____2464 = goal_to_string_verbose hd1 in - let uu____2466 = FStar_Syntax_Print.term_to_string t in + ((let uu____2468 = goal_to_string_verbose hd1 in + let uu____2470 = FStar_Syntax_Print.term_to_string t in FStar_Util.print2 "!!!!!!!!!!!! GOAL IS ALREADY SOLVED! %s\nsol is %s\n" - uu____2464 uu____2466); + uu____2468 uu____2470); ret hd1))) let (tadmit_t : FStar_Syntax_Syntax.term -> unit tac) = fun t -> - let uu____2479 = + let uu____2483 = bind get (fun ps -> - let uu____2485 = cur_goal () in - bind uu____2485 + let uu____2489 = cur_goal () in + bind uu____2489 (fun g -> - (let uu____2492 = - let uu____2493 = FStar_Tactics_Types.goal_type g in - uu____2493.FStar_Syntax_Syntax.pos in - let uu____2496 = - let uu____2502 = - let uu____2504 = + (let uu____2496 = + let uu____2497 = FStar_Tactics_Types.goal_type g in + uu____2497.FStar_Syntax_Syntax.pos in + let uu____2500 = + let uu____2506 = + let uu____2508 = goal_to_string "" FStar_Pervasives_Native.None ps g in FStar_Util.format1 "Tactics admitted goal <%s>\n\n" - uu____2504 + uu____2508 in - (FStar_Errors.Warning_TacAdmit, uu____2502) in - FStar_Errors.log_issue uu____2492 uu____2496); + (FStar_Errors.Warning_TacAdmit, uu____2506) in + FStar_Errors.log_issue uu____2496 uu____2500); solve' g t)) in - FStar_All.pipe_left (wrap_err "tadmit_t") uu____2479 + FStar_All.pipe_left (wrap_err "tadmit_t") uu____2483 let (fresh : unit -> FStar_BigInt.t tac) = - fun uu____2527 -> + fun uu____2531 -> bind get (fun ps -> let n1 = ps.FStar_Tactics_Types.freshness in let ps1 = - let uu___384_2538 = ps in + let uu___383_2542 = ps in { FStar_Tactics_Types.main_context = - (uu___384_2538.FStar_Tactics_Types.main_context); + (uu___383_2542.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___384_2538.FStar_Tactics_Types.main_goal); + (uu___383_2542.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = - (uu___384_2538.FStar_Tactics_Types.all_implicits); + (uu___383_2542.FStar_Tactics_Types.all_implicits); FStar_Tactics_Types.goals = - (uu___384_2538.FStar_Tactics_Types.goals); + (uu___383_2542.FStar_Tactics_Types.goals); FStar_Tactics_Types.smt_goals = - (uu___384_2538.FStar_Tactics_Types.smt_goals); + (uu___383_2542.FStar_Tactics_Types.smt_goals); FStar_Tactics_Types.depth = - (uu___384_2538.FStar_Tactics_Types.depth); + (uu___383_2542.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___384_2538.FStar_Tactics_Types.__dump); + (uu___383_2542.FStar_Tactics_Types.__dump); FStar_Tactics_Types.psc = - (uu___384_2538.FStar_Tactics_Types.psc); + (uu___383_2542.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___384_2538.FStar_Tactics_Types.entry_range); + (uu___383_2542.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = - (uu___384_2538.FStar_Tactics_Types.guard_policy); + (uu___383_2542.FStar_Tactics_Types.guard_policy); FStar_Tactics_Types.freshness = (n1 + (Prims.parse_int "1")); FStar_Tactics_Types.tac_verb_dbg = - (uu___384_2538.FStar_Tactics_Types.tac_verb_dbg); + (uu___383_2542.FStar_Tactics_Types.tac_verb_dbg); FStar_Tactics_Types.local_state = - (uu___384_2538.FStar_Tactics_Types.local_state) + (uu___383_2542.FStar_Tactics_Types.local_state) } in - let uu____2540 = set ps1 in - bind uu____2540 - (fun uu____2545 -> - let uu____2546 = FStar_BigInt.of_int_fs n1 in ret uu____2546)) + let uu____2544 = set ps1 in + bind uu____2544 + (fun uu____2549 -> + let uu____2550 = FStar_BigInt.of_int_fs n1 in ret uu____2550)) let (mk_irrelevant_goal : Prims.string -> @@ -1326,14 +1326,14 @@ let (mk_irrelevant_goal : fun opts -> fun label1 -> let typ = - let uu____2584 = env.FStar_TypeChecker_Env.universe_of env phi + let uu____2588 = env.FStar_TypeChecker_Env.universe_of env phi in - FStar_Syntax_Util.mk_squash uu____2584 phi in - let uu____2585 = new_uvar reason env typ in - bind uu____2585 - (fun uu____2600 -> - match uu____2600 with - | (uu____2607,ctx_uvar) -> + FStar_Syntax_Util.mk_squash uu____2588 phi in + let uu____2589 = new_uvar reason env typ in + bind uu____2589 + (fun uu____2604 -> + match uu____2604 with + | (uu____2611,ctx_uvar) -> let goal = FStar_Tactics_Types.mk_goal env ctx_uvar opts false label1 @@ -1351,127 +1351,127 @@ let (__tc : bind get (fun ps -> mlog - (fun uu____2654 -> - let uu____2655 = FStar_Syntax_Print.term_to_string t in - FStar_Util.print1 "Tac> __tc(%s)\n" uu____2655) - (fun uu____2660 -> + (fun uu____2658 -> + let uu____2659 = FStar_Syntax_Print.term_to_string t in + FStar_Util.print1 "Tac> __tc(%s)\n" uu____2659) + (fun uu____2664 -> let e1 = - let uu___385_2662 = e in + let uu___384_2666 = e in { FStar_TypeChecker_Env.solver = - (uu___385_2662.FStar_TypeChecker_Env.solver); + (uu___384_2666.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___385_2662.FStar_TypeChecker_Env.range); + (uu___384_2666.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___385_2662.FStar_TypeChecker_Env.curmodule); + (uu___384_2666.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___385_2662.FStar_TypeChecker_Env.gamma); + (uu___384_2666.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___385_2662.FStar_TypeChecker_Env.gamma_sig); + (uu___384_2666.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___385_2662.FStar_TypeChecker_Env.gamma_cache); + (uu___384_2666.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___385_2662.FStar_TypeChecker_Env.modules); + (uu___384_2666.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___385_2662.FStar_TypeChecker_Env.expected_typ); + (uu___384_2666.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___385_2662.FStar_TypeChecker_Env.sigtab); + (uu___384_2666.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___385_2662.FStar_TypeChecker_Env.attrtab); + (uu___384_2666.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___385_2662.FStar_TypeChecker_Env.is_pattern); + (uu___384_2666.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___385_2662.FStar_TypeChecker_Env.instantiate_imp); + (uu___384_2666.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___385_2662.FStar_TypeChecker_Env.effects); + (uu___384_2666.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___385_2662.FStar_TypeChecker_Env.generalize); + (uu___384_2666.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___385_2662.FStar_TypeChecker_Env.letrecs); + (uu___384_2666.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___385_2662.FStar_TypeChecker_Env.top_level); + (uu___384_2666.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___385_2662.FStar_TypeChecker_Env.check_uvars); + (uu___384_2666.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___385_2662.FStar_TypeChecker_Env.use_eq); + (uu___384_2666.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___385_2662.FStar_TypeChecker_Env.is_iface); + (uu___384_2666.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___385_2662.FStar_TypeChecker_Env.admit); + (uu___384_2666.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___385_2662.FStar_TypeChecker_Env.lax); + (uu___384_2666.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___385_2662.FStar_TypeChecker_Env.lax_universes); + (uu___384_2666.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___385_2662.FStar_TypeChecker_Env.phase1); + (uu___384_2666.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___385_2662.FStar_TypeChecker_Env.failhard); + (uu___384_2666.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___385_2662.FStar_TypeChecker_Env.nosynth); + (uu___384_2666.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = false; FStar_TypeChecker_Env.tc_term = - (uu___385_2662.FStar_TypeChecker_Env.tc_term); + (uu___384_2666.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___385_2662.FStar_TypeChecker_Env.type_of); + (uu___384_2666.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___385_2662.FStar_TypeChecker_Env.universe_of); + (uu___384_2666.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___385_2662.FStar_TypeChecker_Env.check_type_of); + (uu___384_2666.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___385_2662.FStar_TypeChecker_Env.use_bv_sorts); + (uu___384_2666.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___385_2662.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___384_2666.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___385_2662.FStar_TypeChecker_Env.normalized_eff_names); + (uu___384_2666.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___385_2662.FStar_TypeChecker_Env.fv_delta_depths); + (uu___384_2666.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___385_2662.FStar_TypeChecker_Env.proof_ns); + (uu___384_2666.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___385_2662.FStar_TypeChecker_Env.synth_hook); + (uu___384_2666.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___385_2662.FStar_TypeChecker_Env.splice); + (uu___384_2666.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___385_2662.FStar_TypeChecker_Env.postprocess); + (uu___384_2666.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___385_2662.FStar_TypeChecker_Env.is_native_tactic); + (uu___384_2666.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___385_2662.FStar_TypeChecker_Env.identifier_info); + (uu___384_2666.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___385_2662.FStar_TypeChecker_Env.tc_hooks); + (uu___384_2666.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___385_2662.FStar_TypeChecker_Env.dsenv); + (uu___384_2666.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___385_2662.FStar_TypeChecker_Env.nbe) + (uu___384_2666.FStar_TypeChecker_Env.nbe) } in try - (fun uu___387_2674 -> + (fun uu___386_2678 -> match () with | () -> - let uu____2683 = + let uu____2687 = FStar_TypeChecker_TcTerm.type_of_tot_term e1 t in - ret uu____2683) () + ret uu____2687) () with - | FStar_Errors.Err (uu____2710,msg) -> - let uu____2714 = tts e1 t in - let uu____2716 = - let uu____2718 = FStar_TypeChecker_Env.all_binders e1 + | FStar_Errors.Err (uu____2714,msg) -> + let uu____2718 = tts e1 t in + let uu____2720 = + let uu____2722 = FStar_TypeChecker_Env.all_binders e1 in - FStar_All.pipe_right uu____2718 + FStar_All.pipe_right uu____2722 (FStar_Syntax_Print.binders_to_string ", ") in fail3 "Cannot type %s in context (%s). Error = (%s)" - uu____2714 uu____2716 msg - | FStar_Errors.Error (uu____2728,msg,uu____2730) -> - let uu____2733 = tts e1 t in - let uu____2735 = - let uu____2737 = FStar_TypeChecker_Env.all_binders e1 + uu____2718 uu____2720 msg + | FStar_Errors.Error (uu____2732,msg,uu____2734) -> + let uu____2737 = tts e1 t in + let uu____2739 = + let uu____2741 = FStar_TypeChecker_Env.all_binders e1 in - FStar_All.pipe_right uu____2737 + FStar_All.pipe_right uu____2741 (FStar_Syntax_Print.binders_to_string ", ") in fail3 "Cannot type %s in context (%s). Error = (%s)" - uu____2733 uu____2735 msg)) + uu____2737 uu____2739 msg)) let (__tc_ghost : env -> @@ -1484,131 +1484,131 @@ let (__tc_ghost : bind get (fun ps -> mlog - (fun uu____2790 -> - let uu____2791 = FStar_Syntax_Print.term_to_string t in - FStar_Util.print1 "Tac> __tc_ghost(%s)\n" uu____2791) - (fun uu____2796 -> + (fun uu____2794 -> + let uu____2795 = FStar_Syntax_Print.term_to_string t in + FStar_Util.print1 "Tac> __tc_ghost(%s)\n" uu____2795) + (fun uu____2800 -> let e1 = - let uu___388_2798 = e in + let uu___387_2802 = e in { FStar_TypeChecker_Env.solver = - (uu___388_2798.FStar_TypeChecker_Env.solver); + (uu___387_2802.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___388_2798.FStar_TypeChecker_Env.range); + (uu___387_2802.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___388_2798.FStar_TypeChecker_Env.curmodule); + (uu___387_2802.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___388_2798.FStar_TypeChecker_Env.gamma); + (uu___387_2802.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___388_2798.FStar_TypeChecker_Env.gamma_sig); + (uu___387_2802.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___388_2798.FStar_TypeChecker_Env.gamma_cache); + (uu___387_2802.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___388_2798.FStar_TypeChecker_Env.modules); + (uu___387_2802.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___388_2798.FStar_TypeChecker_Env.expected_typ); + (uu___387_2802.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___388_2798.FStar_TypeChecker_Env.sigtab); + (uu___387_2802.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___388_2798.FStar_TypeChecker_Env.attrtab); + (uu___387_2802.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___388_2798.FStar_TypeChecker_Env.is_pattern); + (uu___387_2802.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___388_2798.FStar_TypeChecker_Env.instantiate_imp); + (uu___387_2802.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___388_2798.FStar_TypeChecker_Env.effects); + (uu___387_2802.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___388_2798.FStar_TypeChecker_Env.generalize); + (uu___387_2802.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___388_2798.FStar_TypeChecker_Env.letrecs); + (uu___387_2802.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___388_2798.FStar_TypeChecker_Env.top_level); + (uu___387_2802.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___388_2798.FStar_TypeChecker_Env.check_uvars); + (uu___387_2802.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___388_2798.FStar_TypeChecker_Env.use_eq); + (uu___387_2802.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___388_2798.FStar_TypeChecker_Env.is_iface); + (uu___387_2802.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___388_2798.FStar_TypeChecker_Env.admit); + (uu___387_2802.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___388_2798.FStar_TypeChecker_Env.lax); + (uu___387_2802.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___388_2798.FStar_TypeChecker_Env.lax_universes); + (uu___387_2802.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___388_2798.FStar_TypeChecker_Env.phase1); + (uu___387_2802.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___388_2798.FStar_TypeChecker_Env.failhard); + (uu___387_2802.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___388_2798.FStar_TypeChecker_Env.nosynth); + (uu___387_2802.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = false; FStar_TypeChecker_Env.tc_term = - (uu___388_2798.FStar_TypeChecker_Env.tc_term); + (uu___387_2802.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___388_2798.FStar_TypeChecker_Env.type_of); + (uu___387_2802.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___388_2798.FStar_TypeChecker_Env.universe_of); + (uu___387_2802.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___388_2798.FStar_TypeChecker_Env.check_type_of); + (uu___387_2802.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___388_2798.FStar_TypeChecker_Env.use_bv_sorts); + (uu___387_2802.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___388_2798.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___387_2802.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___388_2798.FStar_TypeChecker_Env.normalized_eff_names); + (uu___387_2802.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___388_2798.FStar_TypeChecker_Env.fv_delta_depths); + (uu___387_2802.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___388_2798.FStar_TypeChecker_Env.proof_ns); + (uu___387_2802.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___388_2798.FStar_TypeChecker_Env.synth_hook); + (uu___387_2802.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___388_2798.FStar_TypeChecker_Env.splice); + (uu___387_2802.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___388_2798.FStar_TypeChecker_Env.postprocess); + (uu___387_2802.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___388_2798.FStar_TypeChecker_Env.is_native_tactic); + (uu___387_2802.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___388_2798.FStar_TypeChecker_Env.identifier_info); + (uu___387_2802.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___388_2798.FStar_TypeChecker_Env.tc_hooks); + (uu___387_2802.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___388_2798.FStar_TypeChecker_Env.dsenv); + (uu___387_2802.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___388_2798.FStar_TypeChecker_Env.nbe) + (uu___387_2802.FStar_TypeChecker_Env.nbe) } in try - (fun uu___390_2813 -> + (fun uu___389_2817 -> match () with | () -> - let uu____2822 = + let uu____2826 = FStar_TypeChecker_TcTerm.tc_tot_or_gtot_term e1 t in - (match uu____2822 with + (match uu____2826 with | (t1,lc,g) -> ret (t1, (lc.FStar_Syntax_Syntax.res_typ), g))) () with - | FStar_Errors.Err (uu____2860,msg) -> - let uu____2864 = tts e1 t in - let uu____2866 = - let uu____2868 = FStar_TypeChecker_Env.all_binders e1 + | FStar_Errors.Err (uu____2864,msg) -> + let uu____2868 = tts e1 t in + let uu____2870 = + let uu____2872 = FStar_TypeChecker_Env.all_binders e1 in - FStar_All.pipe_right uu____2868 + FStar_All.pipe_right uu____2872 (FStar_Syntax_Print.binders_to_string ", ") in fail3 "Cannot type %s in context (%s). Error = (%s)" - uu____2864 uu____2866 msg - | FStar_Errors.Error (uu____2878,msg,uu____2880) -> - let uu____2883 = tts e1 t in - let uu____2885 = - let uu____2887 = FStar_TypeChecker_Env.all_binders e1 + uu____2868 uu____2870 msg + | FStar_Errors.Error (uu____2882,msg,uu____2884) -> + let uu____2887 = tts e1 t in + let uu____2889 = + let uu____2891 = FStar_TypeChecker_Env.all_binders e1 in - FStar_All.pipe_right uu____2887 + FStar_All.pipe_right uu____2891 (FStar_Syntax_Print.binders_to_string ", ") in fail3 "Cannot type %s in context (%s). Error = (%s)" - uu____2883 uu____2885 msg)) + uu____2887 uu____2889 msg)) let (__tc_lax : env -> @@ -1621,219 +1621,219 @@ let (__tc_lax : bind get (fun ps -> mlog - (fun uu____2940 -> - let uu____2941 = FStar_Syntax_Print.term_to_string t in - FStar_Util.print1 "Tac> __tc(%s)\n" uu____2941) - (fun uu____2947 -> + (fun uu____2944 -> + let uu____2945 = FStar_Syntax_Print.term_to_string t in + FStar_Util.print1 "Tac> __tc(%s)\n" uu____2945) + (fun uu____2951 -> let e1 = - let uu___391_2949 = e in + let uu___390_2953 = e in { FStar_TypeChecker_Env.solver = - (uu___391_2949.FStar_TypeChecker_Env.solver); + (uu___390_2953.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___391_2949.FStar_TypeChecker_Env.range); + (uu___390_2953.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___391_2949.FStar_TypeChecker_Env.curmodule); + (uu___390_2953.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___391_2949.FStar_TypeChecker_Env.gamma); + (uu___390_2953.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___391_2949.FStar_TypeChecker_Env.gamma_sig); + (uu___390_2953.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___391_2949.FStar_TypeChecker_Env.gamma_cache); + (uu___390_2953.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___391_2949.FStar_TypeChecker_Env.modules); + (uu___390_2953.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___391_2949.FStar_TypeChecker_Env.expected_typ); + (uu___390_2953.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___391_2949.FStar_TypeChecker_Env.sigtab); + (uu___390_2953.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___391_2949.FStar_TypeChecker_Env.attrtab); + (uu___390_2953.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___391_2949.FStar_TypeChecker_Env.is_pattern); + (uu___390_2953.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___391_2949.FStar_TypeChecker_Env.instantiate_imp); + (uu___390_2953.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___391_2949.FStar_TypeChecker_Env.effects); + (uu___390_2953.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___391_2949.FStar_TypeChecker_Env.generalize); + (uu___390_2953.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___391_2949.FStar_TypeChecker_Env.letrecs); + (uu___390_2953.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___391_2949.FStar_TypeChecker_Env.top_level); + (uu___390_2953.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___391_2949.FStar_TypeChecker_Env.check_uvars); + (uu___390_2953.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___391_2949.FStar_TypeChecker_Env.use_eq); + (uu___390_2953.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___391_2949.FStar_TypeChecker_Env.is_iface); + (uu___390_2953.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___391_2949.FStar_TypeChecker_Env.admit); + (uu___390_2953.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___391_2949.FStar_TypeChecker_Env.lax); + (uu___390_2953.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___391_2949.FStar_TypeChecker_Env.lax_universes); + (uu___390_2953.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___391_2949.FStar_TypeChecker_Env.phase1); + (uu___390_2953.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___391_2949.FStar_TypeChecker_Env.failhard); + (uu___390_2953.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___391_2949.FStar_TypeChecker_Env.nosynth); + (uu___390_2953.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = false; FStar_TypeChecker_Env.tc_term = - (uu___391_2949.FStar_TypeChecker_Env.tc_term); + (uu___390_2953.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___391_2949.FStar_TypeChecker_Env.type_of); + (uu___390_2953.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___391_2949.FStar_TypeChecker_Env.universe_of); + (uu___390_2953.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___391_2949.FStar_TypeChecker_Env.check_type_of); + (uu___390_2953.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___391_2949.FStar_TypeChecker_Env.use_bv_sorts); + (uu___390_2953.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___391_2949.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___390_2953.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___391_2949.FStar_TypeChecker_Env.normalized_eff_names); + (uu___390_2953.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___391_2949.FStar_TypeChecker_Env.fv_delta_depths); + (uu___390_2953.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___391_2949.FStar_TypeChecker_Env.proof_ns); + (uu___390_2953.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___391_2949.FStar_TypeChecker_Env.synth_hook); + (uu___390_2953.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___391_2949.FStar_TypeChecker_Env.splice); + (uu___390_2953.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___391_2949.FStar_TypeChecker_Env.postprocess); + (uu___390_2953.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___391_2949.FStar_TypeChecker_Env.is_native_tactic); + (uu___390_2953.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___391_2949.FStar_TypeChecker_Env.identifier_info); + (uu___390_2953.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___391_2949.FStar_TypeChecker_Env.tc_hooks); + (uu___390_2953.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___391_2949.FStar_TypeChecker_Env.dsenv); + (uu___390_2953.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___391_2949.FStar_TypeChecker_Env.nbe) + (uu___390_2953.FStar_TypeChecker_Env.nbe) } in let e2 = - let uu___392_2952 = e1 in + let uu___391_2956 = e1 in { FStar_TypeChecker_Env.solver = - (uu___392_2952.FStar_TypeChecker_Env.solver); + (uu___391_2956.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___392_2952.FStar_TypeChecker_Env.range); + (uu___391_2956.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___392_2952.FStar_TypeChecker_Env.curmodule); + (uu___391_2956.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___392_2952.FStar_TypeChecker_Env.gamma); + (uu___391_2956.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___392_2952.FStar_TypeChecker_Env.gamma_sig); + (uu___391_2956.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___392_2952.FStar_TypeChecker_Env.gamma_cache); + (uu___391_2956.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___392_2952.FStar_TypeChecker_Env.modules); + (uu___391_2956.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___392_2952.FStar_TypeChecker_Env.expected_typ); + (uu___391_2956.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___392_2952.FStar_TypeChecker_Env.sigtab); + (uu___391_2956.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___392_2952.FStar_TypeChecker_Env.attrtab); + (uu___391_2956.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___392_2952.FStar_TypeChecker_Env.is_pattern); + (uu___391_2956.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___392_2952.FStar_TypeChecker_Env.instantiate_imp); + (uu___391_2956.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___392_2952.FStar_TypeChecker_Env.effects); + (uu___391_2956.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___392_2952.FStar_TypeChecker_Env.generalize); + (uu___391_2956.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___392_2952.FStar_TypeChecker_Env.letrecs); + (uu___391_2956.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___392_2952.FStar_TypeChecker_Env.top_level); + (uu___391_2956.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___392_2952.FStar_TypeChecker_Env.check_uvars); + (uu___391_2956.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___392_2952.FStar_TypeChecker_Env.use_eq); + (uu___391_2956.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___392_2952.FStar_TypeChecker_Env.is_iface); + (uu___391_2956.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___392_2952.FStar_TypeChecker_Env.admit); + (uu___391_2956.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___392_2952.FStar_TypeChecker_Env.lax_universes); + (uu___391_2956.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___392_2952.FStar_TypeChecker_Env.phase1); + (uu___391_2956.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___392_2952.FStar_TypeChecker_Env.failhard); + (uu___391_2956.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___392_2952.FStar_TypeChecker_Env.nosynth); + (uu___391_2956.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___392_2952.FStar_TypeChecker_Env.uvar_subtyping); + (uu___391_2956.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___392_2952.FStar_TypeChecker_Env.tc_term); + (uu___391_2956.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___392_2952.FStar_TypeChecker_Env.type_of); + (uu___391_2956.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___392_2952.FStar_TypeChecker_Env.universe_of); + (uu___391_2956.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___392_2952.FStar_TypeChecker_Env.check_type_of); + (uu___391_2956.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___392_2952.FStar_TypeChecker_Env.use_bv_sorts); + (uu___391_2956.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___392_2952.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___391_2956.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___392_2952.FStar_TypeChecker_Env.normalized_eff_names); + (uu___391_2956.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___392_2952.FStar_TypeChecker_Env.fv_delta_depths); + (uu___391_2956.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___392_2952.FStar_TypeChecker_Env.proof_ns); + (uu___391_2956.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___392_2952.FStar_TypeChecker_Env.synth_hook); + (uu___391_2956.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___392_2952.FStar_TypeChecker_Env.splice); + (uu___391_2956.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___392_2952.FStar_TypeChecker_Env.postprocess); + (uu___391_2956.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___392_2952.FStar_TypeChecker_Env.is_native_tactic); + (uu___391_2956.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___392_2952.FStar_TypeChecker_Env.identifier_info); + (uu___391_2956.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___392_2952.FStar_TypeChecker_Env.tc_hooks); + (uu___391_2956.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___392_2952.FStar_TypeChecker_Env.dsenv); + (uu___391_2956.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___392_2952.FStar_TypeChecker_Env.nbe) + (uu___391_2956.FStar_TypeChecker_Env.nbe) } in try - (fun uu___394_2967 -> + (fun uu___393_2971 -> match () with | () -> - let uu____2976 = + let uu____2980 = FStar_TypeChecker_TcTerm.tc_term e2 t in - (match uu____2976 with + (match uu____2980 with | (t1,lc,g) -> ret (t1, (lc.FStar_Syntax_Syntax.res_typ), g))) () with - | FStar_Errors.Err (uu____3014,msg) -> - let uu____3018 = tts e2 t in - let uu____3020 = - let uu____3022 = FStar_TypeChecker_Env.all_binders e2 + | FStar_Errors.Err (uu____3018,msg) -> + let uu____3022 = tts e2 t in + let uu____3024 = + let uu____3026 = FStar_TypeChecker_Env.all_binders e2 in - FStar_All.pipe_right uu____3022 + FStar_All.pipe_right uu____3026 (FStar_Syntax_Print.binders_to_string ", ") in fail3 "Cannot type %s in context (%s). Error = (%s)" - uu____3018 uu____3020 msg - | FStar_Errors.Error (uu____3032,msg,uu____3034) -> - let uu____3037 = tts e2 t in - let uu____3039 = - let uu____3041 = FStar_TypeChecker_Env.all_binders e2 + uu____3022 uu____3024 msg + | FStar_Errors.Error (uu____3036,msg,uu____3038) -> + let uu____3041 = tts e2 t in + let uu____3043 = + let uu____3045 = FStar_TypeChecker_Env.all_binders e2 in - FStar_All.pipe_right uu____3041 + FStar_All.pipe_right uu____3045 (FStar_Syntax_Print.binders_to_string ", ") in fail3 "Cannot type %s in context (%s). Error = (%s)" - uu____3037 uu____3039 msg)) + uu____3041 uu____3043 msg)) let (istrivial : env -> FStar_Syntax_Syntax.term -> Prims.bool) = fun e -> @@ -1848,7 +1848,7 @@ let (istrivial : env -> FStar_Syntax_Syntax.term -> Prims.bool) = let t1 = normalize steps e t in is_true t1 let (get_guard_policy : unit -> FStar_Tactics_Types.guard_policy tac) = - fun uu____3075 -> + fun uu____3079 -> bind get (fun ps -> ret ps.FStar_Tactics_Types.guard_policy) let (set_guard_policy : FStar_Tactics_Types.guard_policy -> unit tac) = @@ -1856,57 +1856,57 @@ let (set_guard_policy : FStar_Tactics_Types.guard_policy -> unit tac) = bind get (fun ps -> set - (let uu___395_3094 = ps in + (let uu___394_3098 = ps in { FStar_Tactics_Types.main_context = - (uu___395_3094.FStar_Tactics_Types.main_context); + (uu___394_3098.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___395_3094.FStar_Tactics_Types.main_goal); + (uu___394_3098.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = - (uu___395_3094.FStar_Tactics_Types.all_implicits); + (uu___394_3098.FStar_Tactics_Types.all_implicits); FStar_Tactics_Types.goals = - (uu___395_3094.FStar_Tactics_Types.goals); + (uu___394_3098.FStar_Tactics_Types.goals); FStar_Tactics_Types.smt_goals = - (uu___395_3094.FStar_Tactics_Types.smt_goals); + (uu___394_3098.FStar_Tactics_Types.smt_goals); FStar_Tactics_Types.depth = - (uu___395_3094.FStar_Tactics_Types.depth); + (uu___394_3098.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___395_3094.FStar_Tactics_Types.__dump); + (uu___394_3098.FStar_Tactics_Types.__dump); FStar_Tactics_Types.psc = - (uu___395_3094.FStar_Tactics_Types.psc); + (uu___394_3098.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___395_3094.FStar_Tactics_Types.entry_range); + (uu___394_3098.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = pol; FStar_Tactics_Types.freshness = - (uu___395_3094.FStar_Tactics_Types.freshness); + (uu___394_3098.FStar_Tactics_Types.freshness); FStar_Tactics_Types.tac_verb_dbg = - (uu___395_3094.FStar_Tactics_Types.tac_verb_dbg); + (uu___394_3098.FStar_Tactics_Types.tac_verb_dbg); FStar_Tactics_Types.local_state = - (uu___395_3094.FStar_Tactics_Types.local_state) + (uu___394_3098.FStar_Tactics_Types.local_state) })) let with_policy : 'a . FStar_Tactics_Types.guard_policy -> 'a tac -> 'a tac = fun pol -> fun t -> - let uu____3119 = get_guard_policy () in - bind uu____3119 + let uu____3123 = get_guard_policy () in + bind uu____3123 (fun old_pol -> - let uu____3125 = set_guard_policy pol in - bind uu____3125 - (fun uu____3129 -> + let uu____3129 = set_guard_policy pol in + bind uu____3129 + (fun uu____3133 -> bind t (fun r -> - let uu____3133 = set_guard_policy old_pol in - bind uu____3133 (fun uu____3137 -> ret r)))) + let uu____3137 = set_guard_policy old_pol in + bind uu____3137 (fun uu____3141 -> ret r)))) let (getopts : FStar_Options.optionstate tac) = - let uu____3141 = let uu____3146 = cur_goal () in trytac uu____3146 in - bind uu____3141 - (fun uu___358_3153 -> - match uu___358_3153 with + let uu____3145 = let uu____3150 = cur_goal () in trytac uu____3150 in + bind uu____3145 + (fun uu___357_3157 -> + match uu___357_3157 with | FStar_Pervasives_Native.Some g -> ret g.FStar_Tactics_Types.opts | FStar_Pervasives_Native.None -> - let uu____3159 = FStar_Options.peek () in ret uu____3159) + let uu____3163 = FStar_Options.peek () in ret uu____3163) let (proc_guard : Prims.string -> env -> FStar_TypeChecker_Env.guard_t -> unit tac) = @@ -1914,25 +1914,25 @@ let (proc_guard : fun e -> fun g -> mlog - (fun uu____3184 -> - let uu____3185 = FStar_TypeChecker_Rel.guard_to_string e g in - FStar_Util.print2 "Processing guard (%s:%s)\n" reason uu____3185) - (fun uu____3190 -> - let uu____3191 = add_implicits g.FStar_TypeChecker_Env.implicits + (fun uu____3188 -> + let uu____3189 = FStar_TypeChecker_Rel.guard_to_string e g in + FStar_Util.print2 "Processing guard (%s:%s)\n" reason uu____3189) + (fun uu____3194 -> + let uu____3195 = add_implicits g.FStar_TypeChecker_Env.implicits in - bind uu____3191 - (fun uu____3195 -> + bind uu____3195 + (fun uu____3199 -> bind getopts (fun opts -> - let uu____3199 = - let uu____3200 = + let uu____3203 = + let uu____3204 = FStar_TypeChecker_Rel.simplify_guard e g in - uu____3200.FStar_TypeChecker_Env.guard_f in - match uu____3199 with + uu____3204.FStar_TypeChecker_Env.guard_f in + match uu____3203 with | FStar_TypeChecker_Common.Trivial -> ret () | FStar_TypeChecker_Common.NonTrivial f -> - let uu____3204 = istrivial e f in - if uu____3204 + let uu____3208 = istrivial e f in + if uu____3208 then ret () else bind get @@ -1940,172 +1940,172 @@ let (proc_guard : match ps.FStar_Tactics_Types.guard_policy with | FStar_Tactics_Types.Drop -> - ((let uu____3217 = - let uu____3223 = - let uu____3225 = + ((let uu____3221 = + let uu____3227 = + let uu____3229 = FStar_TypeChecker_Rel.guard_to_string e g in FStar_Util.format1 "Tactics admitted guard <%s>\n\n" - uu____3225 + uu____3229 in (FStar_Errors.Warning_TacAdmit, - uu____3223) + uu____3227) in FStar_Errors.log_issue e.FStar_TypeChecker_Env.range - uu____3217); + uu____3221); ret ()) | FStar_Tactics_Types.Goal -> mlog - (fun uu____3231 -> - let uu____3232 = + (fun uu____3235 -> + let uu____3236 = FStar_TypeChecker_Rel.guard_to_string e g in FStar_Util.print2 "Making guard (%s:%s) into a goal\n" - reason uu____3232) - (fun uu____3237 -> - let uu____3238 = + reason uu____3236) + (fun uu____3241 -> + let uu____3242 = mk_irrelevant_goal reason e f opts "" in - bind uu____3238 + bind uu____3242 (fun goal -> let goal1 = - let uu___396_3246 = goal + let uu___395_3250 = goal in { FStar_Tactics_Types.goal_main_env = - (uu___396_3246.FStar_Tactics_Types.goal_main_env); + (uu___395_3250.FStar_Tactics_Types.goal_main_env); FStar_Tactics_Types.goal_ctx_uvar = - (uu___396_3246.FStar_Tactics_Types.goal_ctx_uvar); + (uu___395_3250.FStar_Tactics_Types.goal_ctx_uvar); FStar_Tactics_Types.opts = - (uu___396_3246.FStar_Tactics_Types.opts); + (uu___395_3250.FStar_Tactics_Types.opts); FStar_Tactics_Types.is_guard = true; FStar_Tactics_Types.label = - (uu___396_3246.FStar_Tactics_Types.label) + (uu___395_3250.FStar_Tactics_Types.label) } in push_goals [goal1])) | FStar_Tactics_Types.SMT -> mlog - (fun uu____3250 -> - let uu____3251 = + (fun uu____3254 -> + let uu____3255 = FStar_TypeChecker_Rel.guard_to_string e g in FStar_Util.print2 "Sending guard (%s:%s) to SMT goal\n" - reason uu____3251) - (fun uu____3256 -> - let uu____3257 = + reason uu____3255) + (fun uu____3260 -> + let uu____3261 = mk_irrelevant_goal reason e f opts "" in - bind uu____3257 + bind uu____3261 (fun goal -> let goal1 = - let uu___397_3265 = goal + let uu___396_3269 = goal in { FStar_Tactics_Types.goal_main_env = - (uu___397_3265.FStar_Tactics_Types.goal_main_env); + (uu___396_3269.FStar_Tactics_Types.goal_main_env); FStar_Tactics_Types.goal_ctx_uvar = - (uu___397_3265.FStar_Tactics_Types.goal_ctx_uvar); + (uu___396_3269.FStar_Tactics_Types.goal_ctx_uvar); FStar_Tactics_Types.opts = - (uu___397_3265.FStar_Tactics_Types.opts); + (uu___396_3269.FStar_Tactics_Types.opts); FStar_Tactics_Types.is_guard = true; FStar_Tactics_Types.label = - (uu___397_3265.FStar_Tactics_Types.label) + (uu___396_3269.FStar_Tactics_Types.label) } in push_smt_goals [goal1])) | FStar_Tactics_Types.Force -> mlog - (fun uu____3269 -> - let uu____3270 = + (fun uu____3273 -> + let uu____3274 = FStar_TypeChecker_Rel.guard_to_string e g in FStar_Util.print2 "Forcing guard (%s:%s)\n" reason - uu____3270) - (fun uu____3274 -> + uu____3274) + (fun uu____3278 -> try - (fun uu___399_3279 -> + (fun uu___398_3283 -> match () with | () -> - let uu____3282 = - let uu____3284 = - let uu____3286 = + let uu____3286 = + let uu____3288 = + let uu____3290 = FStar_TypeChecker_Rel.discharge_guard_no_smt e g in FStar_All.pipe_left FStar_TypeChecker_Env.is_trivial - uu____3286 + uu____3290 in Prims.op_Negation - uu____3284 + uu____3288 in - if uu____3282 + if uu____3286 then mlog - (fun uu____3293 -> - let uu____3294 = + (fun uu____3297 -> + let uu____3298 = FStar_TypeChecker_Rel.guard_to_string e g in FStar_Util.print1 "guard = %s\n" - uu____3294) - (fun uu____3298 -> + uu____3298) + (fun uu____3302 -> fail1 "Forcing the guard failed (%s)" reason) else ret ()) () with - | uu___398_3303 -> + | uu___397_3307 -> mlog - (fun uu____3308 -> - let uu____3309 = + (fun uu____3312 -> + let uu____3313 = FStar_TypeChecker_Rel.guard_to_string e g in FStar_Util.print1 "guard = %s\n" - uu____3309) - (fun uu____3313 -> + uu____3313) + (fun uu____3317 -> fail1 "Forcing the guard failed (%s)" reason)))))) let (tc : FStar_Syntax_Syntax.term -> FStar_Reflection_Data.typ tac) = fun t -> - let uu____3325 = - let uu____3328 = cur_goal () in - bind uu____3328 + let uu____3329 = + let uu____3332 = cur_goal () in + bind uu____3332 (fun goal -> - let uu____3334 = - let uu____3343 = FStar_Tactics_Types.goal_env goal in - __tc_lax uu____3343 t in - bind uu____3334 - (fun uu____3354 -> - match uu____3354 with - | (uu____3363,typ,uu____3365) -> ret typ)) + let uu____3338 = + let uu____3347 = FStar_Tactics_Types.goal_env goal in + __tc_lax uu____3347 t in + bind uu____3338 + (fun uu____3358 -> + match uu____3358 with + | (uu____3367,typ,uu____3369) -> ret typ)) in - FStar_All.pipe_left (wrap_err "tc") uu____3325 + FStar_All.pipe_left (wrap_err "tc") uu____3329 let (add_irrelevant_goal : Prims.string -> @@ -2118,27 +2118,27 @@ let (add_irrelevant_goal : fun phi -> fun opts -> fun label1 -> - let uu____3405 = mk_irrelevant_goal reason env phi opts label1 + let uu____3409 = mk_irrelevant_goal reason env phi opts label1 in - bind uu____3405 (fun goal -> add_goals [goal]) + bind uu____3409 (fun goal -> add_goals [goal]) let (trivial : unit -> unit tac) = - fun uu____3417 -> - let uu____3420 = cur_goal () in - bind uu____3420 + fun uu____3421 -> + let uu____3424 = cur_goal () in + bind uu____3424 (fun goal -> - let uu____3426 = - let uu____3428 = FStar_Tactics_Types.goal_env goal in - let uu____3429 = FStar_Tactics_Types.goal_type goal in - istrivial uu____3428 uu____3429 in - if uu____3426 + let uu____3430 = + let uu____3432 = FStar_Tactics_Types.goal_env goal in + let uu____3433 = FStar_Tactics_Types.goal_type goal in + istrivial uu____3432 uu____3433 in + if uu____3430 then solve' goal FStar_Syntax_Util.exp_unit else - (let uu____3435 = - let uu____3437 = FStar_Tactics_Types.goal_env goal in - let uu____3438 = FStar_Tactics_Types.goal_type goal in - tts uu____3437 uu____3438 in - fail1 "Not a trivial goal: %s" uu____3435)) + (let uu____3439 = + let uu____3441 = FStar_Tactics_Types.goal_env goal in + let uu____3442 = FStar_Tactics_Types.goal_type goal in + tts uu____3441 uu____3442 in + fail1 "Not a trivial goal: %s" uu____3439)) let divide : 'a 'b . @@ -2150,105 +2150,105 @@ let divide : fun r -> bind get (fun p -> - let uu____3489 = + let uu____3493 = try - (fun uu___404_3512 -> + (fun uu___403_3516 -> match () with | () -> - let uu____3523 = - let uu____3532 = FStar_BigInt.to_int_fs n1 in - FStar_List.splitAt uu____3532 + let uu____3527 = + let uu____3536 = FStar_BigInt.to_int_fs n1 in + FStar_List.splitAt uu____3536 p.FStar_Tactics_Types.goals in - ret uu____3523) () - with | uu___403_3543 -> fail "divide: not enough goals" in - bind uu____3489 - (fun uu____3580 -> - match uu____3580 with + ret uu____3527) () + with | uu___402_3547 -> fail "divide: not enough goals" in + bind uu____3493 + (fun uu____3584 -> + match uu____3584 with | (lgs,rgs) -> let lp = - let uu___400_3606 = p in + let uu___399_3610 = p in { FStar_Tactics_Types.main_context = - (uu___400_3606.FStar_Tactics_Types.main_context); + (uu___399_3610.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___400_3606.FStar_Tactics_Types.main_goal); + (uu___399_3610.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = - (uu___400_3606.FStar_Tactics_Types.all_implicits); + (uu___399_3610.FStar_Tactics_Types.all_implicits); FStar_Tactics_Types.goals = lgs; FStar_Tactics_Types.smt_goals = []; FStar_Tactics_Types.depth = - (uu___400_3606.FStar_Tactics_Types.depth); + (uu___399_3610.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___400_3606.FStar_Tactics_Types.__dump); + (uu___399_3610.FStar_Tactics_Types.__dump); FStar_Tactics_Types.psc = - (uu___400_3606.FStar_Tactics_Types.psc); + (uu___399_3610.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___400_3606.FStar_Tactics_Types.entry_range); + (uu___399_3610.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = - (uu___400_3606.FStar_Tactics_Types.guard_policy); + (uu___399_3610.FStar_Tactics_Types.guard_policy); FStar_Tactics_Types.freshness = - (uu___400_3606.FStar_Tactics_Types.freshness); + (uu___399_3610.FStar_Tactics_Types.freshness); FStar_Tactics_Types.tac_verb_dbg = - (uu___400_3606.FStar_Tactics_Types.tac_verb_dbg); + (uu___399_3610.FStar_Tactics_Types.tac_verb_dbg); FStar_Tactics_Types.local_state = - (uu___400_3606.FStar_Tactics_Types.local_state) + (uu___399_3610.FStar_Tactics_Types.local_state) } in - let uu____3607 = set lp in - bind uu____3607 - (fun uu____3615 -> + let uu____3611 = set lp in + bind uu____3611 + (fun uu____3619 -> bind l (fun a -> bind get (fun lp' -> let rp = - let uu___401_3631 = lp' in + let uu___400_3635 = lp' in { FStar_Tactics_Types.main_context = - (uu___401_3631.FStar_Tactics_Types.main_context); + (uu___400_3635.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___401_3631.FStar_Tactics_Types.main_goal); + (uu___400_3635.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = - (uu___401_3631.FStar_Tactics_Types.all_implicits); + (uu___400_3635.FStar_Tactics_Types.all_implicits); FStar_Tactics_Types.goals = rgs; FStar_Tactics_Types.smt_goals = []; FStar_Tactics_Types.depth = - (uu___401_3631.FStar_Tactics_Types.depth); + (uu___400_3635.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___401_3631.FStar_Tactics_Types.__dump); + (uu___400_3635.FStar_Tactics_Types.__dump); FStar_Tactics_Types.psc = - (uu___401_3631.FStar_Tactics_Types.psc); + (uu___400_3635.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___401_3631.FStar_Tactics_Types.entry_range); + (uu___400_3635.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = - (uu___401_3631.FStar_Tactics_Types.guard_policy); + (uu___400_3635.FStar_Tactics_Types.guard_policy); FStar_Tactics_Types.freshness = - (uu___401_3631.FStar_Tactics_Types.freshness); + (uu___400_3635.FStar_Tactics_Types.freshness); FStar_Tactics_Types.tac_verb_dbg = - (uu___401_3631.FStar_Tactics_Types.tac_verb_dbg); + (uu___400_3635.FStar_Tactics_Types.tac_verb_dbg); FStar_Tactics_Types.local_state = - (uu___401_3631.FStar_Tactics_Types.local_state) + (uu___400_3635.FStar_Tactics_Types.local_state) } in - let uu____3632 = set rp in - bind uu____3632 - (fun uu____3640 -> + let uu____3636 = set rp in + bind uu____3636 + (fun uu____3644 -> bind r (fun b -> bind get (fun rp' -> let p' = - let uu___402_3656 = rp' + let uu___401_3660 = rp' in { FStar_Tactics_Types.main_context = - (uu___402_3656.FStar_Tactics_Types.main_context); + (uu___401_3660.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___402_3656.FStar_Tactics_Types.main_goal); + (uu___401_3660.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = - (uu___402_3656.FStar_Tactics_Types.all_implicits); + (uu___401_3660.FStar_Tactics_Types.all_implicits); FStar_Tactics_Types.goals = (FStar_List.append @@ -2263,43 +2263,43 @@ let divide : p.FStar_Tactics_Types.smt_goals)); FStar_Tactics_Types.depth = - (uu___402_3656.FStar_Tactics_Types.depth); + (uu___401_3660.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___402_3656.FStar_Tactics_Types.__dump); + (uu___401_3660.FStar_Tactics_Types.__dump); FStar_Tactics_Types.psc = - (uu___402_3656.FStar_Tactics_Types.psc); + (uu___401_3660.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___402_3656.FStar_Tactics_Types.entry_range); + (uu___401_3660.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = - (uu___402_3656.FStar_Tactics_Types.guard_policy); + (uu___401_3660.FStar_Tactics_Types.guard_policy); FStar_Tactics_Types.freshness = - (uu___402_3656.FStar_Tactics_Types.freshness); + (uu___401_3660.FStar_Tactics_Types.freshness); FStar_Tactics_Types.tac_verb_dbg = - (uu___402_3656.FStar_Tactics_Types.tac_verb_dbg); + (uu___401_3660.FStar_Tactics_Types.tac_verb_dbg); FStar_Tactics_Types.local_state = - (uu___402_3656.FStar_Tactics_Types.local_state) + (uu___401_3660.FStar_Tactics_Types.local_state) } in - let uu____3657 = set p' + let uu____3661 = set p' in - bind uu____3657 - (fun uu____3665 -> + bind uu____3661 + (fun uu____3669 -> bind remove_solved_goals - (fun uu____3671 + (fun uu____3675 -> ret (a, b))))))))))) let focus : 'a . 'a tac -> 'a tac = fun f -> - let uu____3693 = divide FStar_BigInt.one f idtac in - bind uu____3693 - (fun uu____3706 -> match uu____3706 with | (a,()) -> ret a) + let uu____3697 = divide FStar_BigInt.one f idtac in + bind uu____3697 + (fun uu____3710 -> match uu____3710 with | (a,()) -> ret a) let rec map : 'a . 'a tac -> 'a Prims.list tac = fun tau -> @@ -2307,210 +2307,210 @@ let rec map : 'a . 'a tac -> 'a Prims.list tac = (fun p -> match p.FStar_Tactics_Types.goals with | [] -> ret [] - | uu____3744::uu____3745 -> - let uu____3748 = - let uu____3757 = map tau in - divide FStar_BigInt.one tau uu____3757 in - bind uu____3748 - (fun uu____3775 -> - match uu____3775 with | (h,t) -> ret (h :: t))) + | uu____3748::uu____3749 -> + let uu____3752 = + let uu____3761 = map tau in + divide FStar_BigInt.one tau uu____3761 in + bind uu____3752 + (fun uu____3779 -> + match uu____3779 with | (h,t) -> ret (h :: t))) let (seq : unit tac -> unit tac -> unit tac) = fun t1 -> fun t2 -> - let uu____3817 = + let uu____3821 = bind t1 - (fun uu____3822 -> - let uu____3823 = map t2 in - bind uu____3823 (fun uu____3831 -> ret ())) + (fun uu____3826 -> + let uu____3827 = map t2 in + bind uu____3827 (fun uu____3835 -> ret ())) in - focus uu____3817 + focus uu____3821 let (intro : unit -> FStar_Syntax_Syntax.binder tac) = - fun uu____3841 -> - let uu____3844 = - let uu____3847 = cur_goal () in - bind uu____3847 + fun uu____3845 -> + let uu____3848 = + let uu____3851 = cur_goal () in + bind uu____3851 (fun goal -> - let uu____3856 = - let uu____3863 = FStar_Tactics_Types.goal_type goal in - FStar_Syntax_Util.arrow_one uu____3863 in - match uu____3856 with + let uu____3860 = + let uu____3867 = FStar_Tactics_Types.goal_type goal in + FStar_Syntax_Util.arrow_one uu____3867 in + match uu____3860 with | FStar_Pervasives_Native.Some (b,c) -> - let uu____3872 = - let uu____3874 = FStar_Syntax_Util.is_total_comp c in - Prims.op_Negation uu____3874 in - if uu____3872 + let uu____3876 = + let uu____3878 = FStar_Syntax_Util.is_total_comp c in + Prims.op_Negation uu____3878 in + if uu____3876 then fail "Codomain is effectful" else (let env' = - let uu____3883 = FStar_Tactics_Types.goal_env goal in - FStar_TypeChecker_Env.push_binders uu____3883 [b] in + let uu____3887 = FStar_Tactics_Types.goal_env goal in + FStar_TypeChecker_Env.push_binders uu____3887 [b] in let typ' = comp_to_typ c in - let uu____3897 = new_uvar "intro" env' typ' in - bind uu____3897 - (fun uu____3914 -> - match uu____3914 with + let uu____3901 = new_uvar "intro" env' typ' in + bind uu____3901 + (fun uu____3918 -> + match uu____3918 with | (body,ctx_uvar) -> let sol = FStar_Syntax_Util.abs [b] body (FStar_Pervasives_Native.Some (FStar_Syntax_Util.residual_comp_of_comp c)) in - let uu____3938 = set_solution goal sol in - bind uu____3938 - (fun uu____3944 -> + let uu____3942 = set_solution goal sol in + bind uu____3942 + (fun uu____3948 -> let g = FStar_Tactics_Types.mk_goal env' ctx_uvar goal.FStar_Tactics_Types.opts goal.FStar_Tactics_Types.is_guard goal.FStar_Tactics_Types.label in - let uu____3946 = - let uu____3949 = bnorm_goal g in - replace_cur uu____3949 in - bind uu____3946 (fun uu____3951 -> ret b)))) + let uu____3950 = + let uu____3953 = bnorm_goal g in + replace_cur uu____3953 in + bind uu____3950 (fun uu____3955 -> ret b)))) | FStar_Pervasives_Native.None -> - let uu____3956 = - let uu____3958 = FStar_Tactics_Types.goal_env goal in - let uu____3959 = FStar_Tactics_Types.goal_type goal in - tts uu____3958 uu____3959 in - fail1 "goal is not an arrow (%s)" uu____3956) + let uu____3960 = + let uu____3962 = FStar_Tactics_Types.goal_env goal in + let uu____3963 = FStar_Tactics_Types.goal_type goal in + tts uu____3962 uu____3963 in + fail1 "goal is not an arrow (%s)" uu____3960) in - FStar_All.pipe_left (wrap_err "intro") uu____3844 + FStar_All.pipe_left (wrap_err "intro") uu____3848 let (intro_rec : unit -> (FStar_Syntax_Syntax.binder,FStar_Syntax_Syntax.binder) FStar_Pervasives_Native.tuple2 tac) = - fun uu____3977 -> - let uu____3984 = cur_goal () in - bind uu____3984 + fun uu____3981 -> + let uu____3988 = cur_goal () in + bind uu____3988 (fun goal -> FStar_Util.print_string "WARNING (intro_rec): calling this is known to cause normalizer loops\n"; FStar_Util.print_string "WARNING (intro_rec): proceed at your own risk...\n"; - (let uu____4003 = - let uu____4010 = FStar_Tactics_Types.goal_type goal in - FStar_Syntax_Util.arrow_one uu____4010 in - match uu____4003 with + (let uu____4007 = + let uu____4014 = FStar_Tactics_Types.goal_type goal in + FStar_Syntax_Util.arrow_one uu____4014 in + match uu____4007 with | FStar_Pervasives_Native.Some (b,c) -> - let uu____4023 = - let uu____4025 = FStar_Syntax_Util.is_total_comp c in - Prims.op_Negation uu____4025 in - if uu____4023 + let uu____4027 = + let uu____4029 = FStar_Syntax_Util.is_total_comp c in + Prims.op_Negation uu____4029 in + if uu____4027 then fail "Codomain is effectful" else (let bv = - let uu____4042 = FStar_Tactics_Types.goal_type goal in + let uu____4046 = FStar_Tactics_Types.goal_type goal in FStar_Syntax_Syntax.gen_bv "__recf" - FStar_Pervasives_Native.None uu____4042 + FStar_Pervasives_Native.None uu____4046 in let bs = - let uu____4053 = FStar_Syntax_Syntax.mk_binder bv in - [uu____4053; b] in + let uu____4057 = FStar_Syntax_Syntax.mk_binder bv in + [uu____4057; b] in let env' = - let uu____4079 = FStar_Tactics_Types.goal_env goal in - FStar_TypeChecker_Env.push_binders uu____4079 bs in - let uu____4080 = - let uu____4087 = comp_to_typ c in - new_uvar "intro_rec" env' uu____4087 in - bind uu____4080 - (fun uu____4107 -> - match uu____4107 with + let uu____4083 = FStar_Tactics_Types.goal_env goal in + FStar_TypeChecker_Env.push_binders uu____4083 bs in + let uu____4084 = + let uu____4091 = comp_to_typ c in + new_uvar "intro_rec" env' uu____4091 in + bind uu____4084 + (fun uu____4111 -> + match uu____4111 with | (u,ctx_uvar_u) -> let lb = - let uu____4121 = + let uu____4125 = FStar_Tactics_Types.goal_type goal in - let uu____4124 = + let uu____4128 = FStar_Syntax_Util.abs [b] u FStar_Pervasives_Native.None in FStar_Syntax_Util.mk_letbinding - (FStar_Util.Inl bv) [] uu____4121 - FStar_Parser_Const.effect_Tot_lid uu____4124 [] + (FStar_Util.Inl bv) [] uu____4125 + FStar_Parser_Const.effect_Tot_lid uu____4128 [] FStar_Range.dummyRange in let body = FStar_Syntax_Syntax.bv_to_name bv in - let uu____4142 = + let uu____4146 = FStar_Syntax_Subst.close_let_rec [lb] body in - (match uu____4142 with + (match uu____4146 with | (lbs,body1) -> let tm = - let uu____4164 = - let uu____4165 = + let uu____4168 = + let uu____4169 = FStar_Tactics_Types.goal_witness goal in - uu____4165.FStar_Syntax_Syntax.pos in + uu____4169.FStar_Syntax_Syntax.pos in FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_let ((true, lbs), body1)) - FStar_Pervasives_Native.None uu____4164 + FStar_Pervasives_Native.None uu____4168 in - let uu____4181 = set_solution goal tm in - bind uu____4181 - (fun uu____4190 -> - let uu____4191 = - let uu____4194 = + let uu____4185 = set_solution goal tm in + bind uu____4185 + (fun uu____4194 -> + let uu____4195 = + let uu____4198 = bnorm_goal - (let uu___405_4197 = goal in + (let uu___404_4201 = goal in { FStar_Tactics_Types.goal_main_env = - (uu___405_4197.FStar_Tactics_Types.goal_main_env); + (uu___404_4201.FStar_Tactics_Types.goal_main_env); FStar_Tactics_Types.goal_ctx_uvar = ctx_uvar_u; FStar_Tactics_Types.opts = - (uu___405_4197.FStar_Tactics_Types.opts); + (uu___404_4201.FStar_Tactics_Types.opts); FStar_Tactics_Types.is_guard = - (uu___405_4197.FStar_Tactics_Types.is_guard); + (uu___404_4201.FStar_Tactics_Types.is_guard); FStar_Tactics_Types.label = - (uu___405_4197.FStar_Tactics_Types.label) + (uu___404_4201.FStar_Tactics_Types.label) }) in - replace_cur uu____4194 in - bind uu____4191 - (fun uu____4204 -> - let uu____4205 = - let uu____4210 = + replace_cur uu____4198 in + bind uu____4195 + (fun uu____4208 -> + let uu____4209 = + let uu____4214 = FStar_Syntax_Syntax.mk_binder bv in - (uu____4210, b) in - ret uu____4205))))) + (uu____4214, b) in + ret uu____4209))))) | FStar_Pervasives_Native.None -> - let uu____4219 = - let uu____4221 = FStar_Tactics_Types.goal_env goal in - let uu____4222 = FStar_Tactics_Types.goal_type goal in - tts uu____4221 uu____4222 in - fail1 "intro_rec: goal is not an arrow (%s)" uu____4219)) + let uu____4223 = + let uu____4225 = FStar_Tactics_Types.goal_env goal in + let uu____4226 = FStar_Tactics_Types.goal_type goal in + tts uu____4225 uu____4226 in + fail1 "intro_rec: goal is not an arrow (%s)" uu____4223)) let (norm : FStar_Syntax_Embeddings.norm_step Prims.list -> unit tac) = fun s -> - let uu____4242 = cur_goal () in - bind uu____4242 + let uu____4246 = cur_goal () in + bind uu____4246 (fun goal -> mlog - (fun uu____4249 -> - let uu____4250 = - let uu____4252 = FStar_Tactics_Types.goal_witness goal in - FStar_Syntax_Print.term_to_string uu____4252 in - FStar_Util.print1 "norm: witness = %s\n" uu____4250) - (fun uu____4258 -> + (fun uu____4253 -> + let uu____4254 = + let uu____4256 = FStar_Tactics_Types.goal_witness goal in + FStar_Syntax_Print.term_to_string uu____4256 in + FStar_Util.print1 "norm: witness = %s\n" uu____4254) + (fun uu____4262 -> let steps = - let uu____4262 = FStar_TypeChecker_Normalize.tr_norm_steps s + let uu____4266 = FStar_TypeChecker_Normalize.tr_norm_steps s in FStar_List.append [FStar_TypeChecker_Env.Reify; - FStar_TypeChecker_Env.UnfoldTac] uu____4262 + FStar_TypeChecker_Env.UnfoldTac] uu____4266 in let t = - let uu____4266 = FStar_Tactics_Types.goal_env goal in - let uu____4267 = FStar_Tactics_Types.goal_type goal in - normalize steps uu____4266 uu____4267 in - let uu____4268 = FStar_Tactics_Types.goal_with_type goal t in - replace_cur uu____4268)) + let uu____4270 = FStar_Tactics_Types.goal_env goal in + let uu____4271 = FStar_Tactics_Types.goal_type goal in + normalize steps uu____4270 uu____4271 in + let uu____4272 = FStar_Tactics_Types.goal_with_type goal t in + replace_cur uu____4272)) let (norm_term_env : env -> @@ -2520,255 +2520,255 @@ let (norm_term_env : fun e -> fun s -> fun t -> - let uu____4293 = + let uu____4297 = bind get (fun ps -> let opts = match ps.FStar_Tactics_Types.goals with - | g::uu____4301 -> g.FStar_Tactics_Types.opts - | uu____4304 -> FStar_Options.peek () in + | g::uu____4305 -> g.FStar_Tactics_Types.opts + | uu____4308 -> FStar_Options.peek () in mlog - (fun uu____4309 -> - let uu____4310 = FStar_Syntax_Print.term_to_string t in - FStar_Util.print1 "norm_term_env: t = %s\n" uu____4310) - (fun uu____4315 -> - let uu____4316 = __tc_lax e t in - bind uu____4316 - (fun uu____4337 -> - match uu____4337 with - | (t1,uu____4347,uu____4348) -> + (fun uu____4313 -> + let uu____4314 = FStar_Syntax_Print.term_to_string t in + FStar_Util.print1 "norm_term_env: t = %s\n" uu____4314) + (fun uu____4319 -> + let uu____4320 = __tc_lax e t in + bind uu____4320 + (fun uu____4341 -> + match uu____4341 with + | (t1,uu____4351,uu____4352) -> let steps = - let uu____4352 = + let uu____4356 = FStar_TypeChecker_Normalize.tr_norm_steps s in FStar_List.append [FStar_TypeChecker_Env.Reify; - FStar_TypeChecker_Env.UnfoldTac] uu____4352 + FStar_TypeChecker_Env.UnfoldTac] uu____4356 in let t2 = normalize steps ps.FStar_Tactics_Types.main_context t1 in mlog - (fun uu____4358 -> - let uu____4359 = + (fun uu____4362 -> + let uu____4363 = FStar_Syntax_Print.term_to_string t2 in FStar_Util.print1 - "norm_term_env: t' = %s\n" uu____4359) - (fun uu____4363 -> ret t2)))) + "norm_term_env: t' = %s\n" uu____4363) + (fun uu____4367 -> ret t2)))) in - FStar_All.pipe_left (wrap_err "norm_term") uu____4293 + FStar_All.pipe_left (wrap_err "norm_term") uu____4297 let (refine_intro : unit -> unit tac) = - fun uu____4376 -> - let uu____4379 = - let uu____4382 = cur_goal () in - bind uu____4382 + fun uu____4380 -> + let uu____4383 = + let uu____4386 = cur_goal () in + bind uu____4386 (fun g -> - let uu____4389 = - let uu____4400 = FStar_Tactics_Types.goal_env g in - let uu____4401 = FStar_Tactics_Types.goal_type g in - FStar_TypeChecker_Rel.base_and_refinement uu____4400 uu____4401 + let uu____4393 = + let uu____4404 = FStar_Tactics_Types.goal_env g in + let uu____4405 = FStar_Tactics_Types.goal_type g in + FStar_TypeChecker_Rel.base_and_refinement uu____4404 uu____4405 in - match uu____4389 with - | (uu____4404,FStar_Pervasives_Native.None ) -> + match uu____4393 with + | (uu____4408,FStar_Pervasives_Native.None ) -> fail "not a refinement" | (t,FStar_Pervasives_Native.Some (bv,phi)) -> let g1 = FStar_Tactics_Types.goal_with_type g t in - let uu____4430 = - let uu____4435 = - let uu____4440 = - let uu____4441 = FStar_Syntax_Syntax.mk_binder bv in - [uu____4441] in - FStar_Syntax_Subst.open_term uu____4440 phi in - match uu____4435 with + let uu____4434 = + let uu____4439 = + let uu____4444 = + let uu____4445 = FStar_Syntax_Syntax.mk_binder bv in + [uu____4445] in + FStar_Syntax_Subst.open_term uu____4444 phi in + match uu____4439 with | (bvs,phi1) -> - let uu____4466 = - let uu____4467 = FStar_List.hd bvs in - FStar_Pervasives_Native.fst uu____4467 in - (uu____4466, phi1) + let uu____4470 = + let uu____4471 = FStar_List.hd bvs in + FStar_Pervasives_Native.fst uu____4471 in + (uu____4470, phi1) in - (match uu____4430 with + (match uu____4434 with | (bv1,phi1) -> - let uu____4486 = - let uu____4489 = FStar_Tactics_Types.goal_env g in - let uu____4490 = - let uu____4491 = - let uu____4494 = - let uu____4495 = - let uu____4502 = + let uu____4490 = + let uu____4493 = FStar_Tactics_Types.goal_env g in + let uu____4494 = + let uu____4495 = + let uu____4498 = + let uu____4499 = + let uu____4506 = FStar_Tactics_Types.goal_witness g in - (bv1, uu____4502) in - FStar_Syntax_Syntax.NT uu____4495 in - [uu____4494] in - FStar_Syntax_Subst.subst uu____4491 phi1 in - mk_irrelevant_goal "refine_intro refinement" uu____4489 - uu____4490 g.FStar_Tactics_Types.opts + (bv1, uu____4506) in + FStar_Syntax_Syntax.NT uu____4499 in + [uu____4498] in + FStar_Syntax_Subst.subst uu____4495 phi1 in + mk_irrelevant_goal "refine_intro refinement" uu____4493 + uu____4494 g.FStar_Tactics_Types.opts g.FStar_Tactics_Types.label in - bind uu____4486 + bind uu____4490 (fun g2 -> bind __dismiss - (fun uu____4511 -> add_goals [g1; g2])))) + (fun uu____4515 -> add_goals [g1; g2])))) in - FStar_All.pipe_left (wrap_err "refine_intro") uu____4379 + FStar_All.pipe_left (wrap_err "refine_intro") uu____4383 let (__exact_now : Prims.bool -> FStar_Syntax_Syntax.term -> unit tac) = fun set_expected_typ1 -> fun t -> - let uu____4534 = cur_goal () in - bind uu____4534 + let uu____4538 = cur_goal () in + bind uu____4538 (fun goal -> let env = if set_expected_typ1 then - let uu____4543 = FStar_Tactics_Types.goal_env goal in - let uu____4544 = FStar_Tactics_Types.goal_type goal in - FStar_TypeChecker_Env.set_expected_typ uu____4543 uu____4544 + let uu____4547 = FStar_Tactics_Types.goal_env goal in + let uu____4548 = FStar_Tactics_Types.goal_type goal in + FStar_TypeChecker_Env.set_expected_typ uu____4547 uu____4548 else FStar_Tactics_Types.goal_env goal in - let uu____4547 = __tc env t in - bind uu____4547 - (fun uu____4566 -> - match uu____4566 with + let uu____4551 = __tc env t in + bind uu____4551 + (fun uu____4570 -> + match uu____4570 with | (t1,typ,guard) -> mlog - (fun uu____4581 -> - let uu____4582 = + (fun uu____4585 -> + let uu____4586 = FStar_Syntax_Print.term_to_string typ in - let uu____4584 = - let uu____4586 = FStar_Tactics_Types.goal_env goal + let uu____4588 = + let uu____4590 = FStar_Tactics_Types.goal_env goal in - FStar_TypeChecker_Rel.guard_to_string uu____4586 + FStar_TypeChecker_Rel.guard_to_string uu____4590 guard in FStar_Util.print2 "__exact_now: got type %s\n__exact_now: and guard %s\n" - uu____4582 uu____4584) - (fun uu____4590 -> - let uu____4591 = - let uu____4594 = FStar_Tactics_Types.goal_env goal + uu____4586 uu____4588) + (fun uu____4594 -> + let uu____4595 = + let uu____4598 = FStar_Tactics_Types.goal_env goal in - proc_guard "__exact typing" uu____4594 guard in - bind uu____4591 - (fun uu____4597 -> + proc_guard "__exact typing" uu____4598 guard in + bind uu____4595 + (fun uu____4601 -> mlog - (fun uu____4601 -> - let uu____4602 = + (fun uu____4605 -> + let uu____4606 = FStar_Syntax_Print.term_to_string typ in - let uu____4604 = - let uu____4606 = + let uu____4608 = + let uu____4610 = FStar_Tactics_Types.goal_type goal in FStar_Syntax_Print.term_to_string - uu____4606 + uu____4610 in FStar_Util.print2 "__exact_now: unifying %s and %s\n" - uu____4602 uu____4604) - (fun uu____4610 -> - let uu____4611 = - let uu____4615 = + uu____4606 uu____4608) + (fun uu____4614 -> + let uu____4615 = + let uu____4619 = FStar_Tactics_Types.goal_env goal in - let uu____4616 = + let uu____4620 = FStar_Tactics_Types.goal_type goal in - do_unify uu____4615 typ uu____4616 in - bind uu____4611 + do_unify uu____4619 typ uu____4620 in + bind uu____4615 (fun b -> if b then solve goal t1 else - (let uu____4626 = - let uu____4628 = + (let uu____4630 = + let uu____4632 = FStar_Tactics_Types.goal_env goal in - tts uu____4628 t1 in - let uu____4629 = - let uu____4631 = + tts uu____4632 t1 in + let uu____4633 = + let uu____4635 = FStar_Tactics_Types.goal_env goal in - tts uu____4631 typ in - let uu____4632 = - let uu____4634 = + tts uu____4635 typ in + let uu____4636 = + let uu____4638 = FStar_Tactics_Types.goal_env goal in - let uu____4635 = + let uu____4639 = FStar_Tactics_Types.goal_type goal in - tts uu____4634 uu____4635 in - let uu____4636 = - let uu____4638 = + tts uu____4638 uu____4639 in + let uu____4640 = + let uu____4642 = FStar_Tactics_Types.goal_env goal in - let uu____4639 = + let uu____4643 = FStar_Tactics_Types.goal_witness goal in - tts uu____4638 uu____4639 in + tts uu____4642 uu____4643 in fail4 "%s : %s does not exactly solve the goal %s (witness = %s)" - uu____4626 uu____4629 uu____4632 - uu____4636))))))) + uu____4630 uu____4633 uu____4636 + uu____4640))))))) let (t_exact : Prims.bool -> Prims.bool -> FStar_Syntax_Syntax.term -> unit tac) = fun try_refine -> fun set_expected_typ1 -> fun tm -> - let uu____4665 = + let uu____4669 = mlog - (fun uu____4670 -> - let uu____4671 = FStar_Syntax_Print.term_to_string tm in - FStar_Util.print1 "t_exact: tm = %s\n" uu____4671) - (fun uu____4676 -> - let uu____4677 = - let uu____4684 = __exact_now set_expected_typ1 tm in - catch uu____4684 in - bind uu____4677 - (fun uu___360_4693 -> - match uu___360_4693 with + (fun uu____4674 -> + let uu____4675 = FStar_Syntax_Print.term_to_string tm in + FStar_Util.print1 "t_exact: tm = %s\n" uu____4675) + (fun uu____4680 -> + let uu____4681 = + let uu____4688 = __exact_now set_expected_typ1 tm in + catch uu____4688 in + bind uu____4681 + (fun uu___359_4697 -> + match uu___359_4697 with | FStar_Util.Inr r -> ret () | FStar_Util.Inl e when Prims.op_Negation try_refine -> traise e | FStar_Util.Inl e -> mlog - (fun uu____4704 -> + (fun uu____4708 -> FStar_Util.print_string "__exact_now failed, trying refine...\n") - (fun uu____4708 -> - let uu____4709 = - let uu____4716 = - let uu____4719 = + (fun uu____4712 -> + let uu____4713 = + let uu____4720 = + let uu____4723 = norm [FStar_Syntax_Embeddings.Delta] in - bind uu____4719 - (fun uu____4724 -> - let uu____4725 = refine_intro () in - bind uu____4725 - (fun uu____4729 -> + bind uu____4723 + (fun uu____4728 -> + let uu____4729 = refine_intro () in + bind uu____4729 + (fun uu____4733 -> __exact_now set_expected_typ1 tm)) in - catch uu____4716 in - bind uu____4709 - (fun uu___359_4736 -> - match uu___359_4736 with + catch uu____4720 in + bind uu____4713 + (fun uu___358_4740 -> + match uu___358_4740 with | FStar_Util.Inr r -> mlog - (fun uu____4745 -> + (fun uu____4749 -> FStar_Util.print_string "__exact_now: failed after refining too\n") - (fun uu____4748 -> ret ()) - | FStar_Util.Inl uu____4749 -> + (fun uu____4752 -> ret ()) + | FStar_Util.Inl uu____4753 -> mlog - (fun uu____4751 -> + (fun uu____4755 -> FStar_Util.print_string "__exact_now: was not a refinement\n") - (fun uu____4754 -> traise e))))) + (fun uu____4758 -> traise e))))) in - FStar_All.pipe_left (wrap_err "exact") uu____4665 + FStar_All.pipe_left (wrap_err "exact") uu____4669 let rec mapM : 'a 'b . ('a -> 'b tac) -> 'a Prims.list -> 'b Prims.list tac = fun f -> @@ -2776,11 +2776,11 @@ let rec mapM : 'a 'b . ('a -> 'b tac) -> 'a Prims.list -> 'b Prims.list tac = match l with | [] -> ret [] | x::xs -> - let uu____4806 = f x in - bind uu____4806 + let uu____4810 = f x in + bind uu____4810 (fun y -> - let uu____4814 = mapM f xs in - bind uu____4814 (fun ys -> ret (y :: ys))) + let uu____4818 = mapM f xs in + bind uu____4818 (fun ys -> ret (y :: ys))) let rec (__try_match_by_application : (FStar_Syntax_Syntax.term,FStar_Syntax_Syntax.aqual,FStar_Syntax_Syntax.ctx_uvar) @@ -2795,36 +2795,36 @@ let rec (__try_match_by_application : fun e -> fun ty1 -> fun ty2 -> - let uu____4886 = do_unify e ty1 ty2 in - bind uu____4886 - (fun uu___361_4900 -> - if uu___361_4900 + let uu____4890 = do_unify e ty1 ty2 in + bind uu____4890 + (fun uu___360_4904 -> + if uu___360_4904 then ret acc else - (let uu____4920 = FStar_Syntax_Util.arrow_one ty1 in - match uu____4920 with + (let uu____4924 = FStar_Syntax_Util.arrow_one ty1 in + match uu____4924 with | FStar_Pervasives_Native.None -> - let uu____4941 = FStar_Syntax_Print.term_to_string ty1 + let uu____4945 = FStar_Syntax_Print.term_to_string ty1 in - let uu____4943 = FStar_Syntax_Print.term_to_string ty2 + let uu____4947 = FStar_Syntax_Print.term_to_string ty2 in - fail2 "Could not instantiate, %s to %s" uu____4941 - uu____4943 + fail2 "Could not instantiate, %s to %s" uu____4945 + uu____4947 | FStar_Pervasives_Native.Some (b,c) -> - let uu____4960 = - let uu____4962 = FStar_Syntax_Util.is_total_comp c + let uu____4964 = + let uu____4966 = FStar_Syntax_Util.is_total_comp c in - Prims.op_Negation uu____4962 in - if uu____4960 + Prims.op_Negation uu____4966 in + if uu____4964 then fail "Codomain is effectful" else - (let uu____4986 = + (let uu____4990 = new_uvar "apply arg" e (FStar_Pervasives_Native.fst b).FStar_Syntax_Syntax.sort in - bind uu____4986 - (fun uu____5013 -> - match uu____5013 with + bind uu____4990 + (fun uu____5017 -> + match uu____5017 with | (uvt,uv) -> let typ = comp_to_typ c in let typ' = @@ -2847,109 +2847,109 @@ let (try_match_by_application : let (t_apply : Prims.bool -> FStar_Syntax_Syntax.term -> unit tac) = fun uopt -> fun tm -> - let uu____5103 = + let uu____5107 = mlog - (fun uu____5108 -> - let uu____5109 = FStar_Syntax_Print.term_to_string tm in - FStar_Util.print1 "t_apply: tm = %s\n" uu____5109) - (fun uu____5114 -> - let uu____5115 = cur_goal () in - bind uu____5115 + (fun uu____5112 -> + let uu____5113 = FStar_Syntax_Print.term_to_string tm in + FStar_Util.print1 "t_apply: tm = %s\n" uu____5113) + (fun uu____5118 -> + let uu____5119 = cur_goal () in + bind uu____5119 (fun goal -> let e = FStar_Tactics_Types.goal_env goal in - let uu____5123 = __tc e tm in - bind uu____5123 - (fun uu____5144 -> - match uu____5144 with + let uu____5127 = __tc e tm in + bind uu____5127 + (fun uu____5148 -> + match uu____5148 with | (tm1,typ,guard) -> let typ1 = bnorm e typ in - let uu____5157 = - let uu____5168 = + let uu____5161 = + let uu____5172 = FStar_Tactics_Types.goal_type goal in - try_match_by_application e typ1 uu____5168 in - bind uu____5157 + try_match_by_application e typ1 uu____5172 in + bind uu____5161 (fun uvs -> let w = FStar_List.fold_right - (fun uu____5211 -> + (fun uu____5215 -> fun w -> - match uu____5211 with - | (uvt,q,uu____5229) -> + match uu____5215 with + | (uvt,q,uu____5233) -> FStar_Syntax_Util.mk_app w [(uvt, q)]) uvs tm1 in let uvset = - let uu____5261 = + let uu____5265 = FStar_Syntax_Free.new_uv_set () in FStar_List.fold_right - (fun uu____5278 -> + (fun uu____5282 -> fun s -> - match uu____5278 with - | (uu____5290,uu____5291,uv) -> - let uu____5293 = + match uu____5282 with + | (uu____5294,uu____5295,uv) -> + let uu____5297 = FStar_Syntax_Free.uvars uv.FStar_Syntax_Syntax.ctx_uvar_typ in FStar_Util.set_union s - uu____5293) uvs uu____5261 + uu____5297) uvs uu____5265 in let free_in_some_goal uv = FStar_Util.set_mem uv uvset in - let uu____5303 = solve' goal w in - bind uu____5303 - (fun uu____5308 -> - let uu____5309 = + let uu____5307 = solve' goal w in + bind uu____5307 + (fun uu____5312 -> + let uu____5313 = mapM - (fun uu____5326 -> - match uu____5326 with + (fun uu____5330 -> + match uu____5330 with | (uvt,q,uv) -> - let uu____5338 = + let uu____5342 = FStar_Syntax_Unionfind.find uv.FStar_Syntax_Syntax.ctx_uvar_head in - (match uu____5338 with + (match uu____5342 with | FStar_Pervasives_Native.Some - uu____5343 -> ret () + uu____5347 -> ret () | FStar_Pervasives_Native.None -> - let uu____5344 = + let uu____5348 = uopt && (free_in_some_goal uv) in - if uu____5344 + if uu____5348 then ret () else - (let uu____5351 = - let uu____5354 = + (let uu____5355 = + let uu____5358 = bnorm_goal - (let uu___406_5357 + (let uu___405_5361 = goal in { FStar_Tactics_Types.goal_main_env = - (uu___406_5357.FStar_Tactics_Types.goal_main_env); + (uu___405_5361.FStar_Tactics_Types.goal_main_env); FStar_Tactics_Types.goal_ctx_uvar = uv; FStar_Tactics_Types.opts = - (uu___406_5357.FStar_Tactics_Types.opts); + (uu___405_5361.FStar_Tactics_Types.opts); FStar_Tactics_Types.is_guard = false; FStar_Tactics_Types.label = - (uu___406_5357.FStar_Tactics_Types.label) + (uu___405_5361.FStar_Tactics_Types.label) }) in - [uu____5354] in - add_goals uu____5351))) + [uu____5358] in + add_goals uu____5355))) uvs in - bind uu____5309 - (fun uu____5362 -> + bind uu____5313 + (fun uu____5366 -> proc_guard "apply guard" e guard)))))) in - FStar_All.pipe_left (wrap_err "apply") uu____5103 + FStar_All.pipe_left (wrap_err "apply") uu____5107 let (lemma_or_sq : FStar_Syntax_Syntax.comp -> @@ -2958,88 +2958,88 @@ let (lemma_or_sq : = fun c -> let ct = FStar_Syntax_Util.comp_to_comp_typ_nouniv c in - let uu____5390 = + let uu____5394 = FStar_Ident.lid_equals ct.FStar_Syntax_Syntax.effect_name FStar_Parser_Const.effect_Lemma_lid in - if uu____5390 + if uu____5394 then - let uu____5399 = + let uu____5403 = match ct.FStar_Syntax_Syntax.effect_args with - | pre::post::uu____5414 -> + | pre::post::uu____5418 -> ((FStar_Pervasives_Native.fst pre), (FStar_Pervasives_Native.fst post)) - | uu____5467 -> failwith "apply_lemma: impossible: not a lemma" in - match uu____5399 with + | uu____5471 -> failwith "apply_lemma: impossible: not a lemma" in + match uu____5403 with | (pre,post) -> let post1 = - let uu____5500 = - let uu____5511 = + let uu____5504 = + let uu____5515 = FStar_Syntax_Syntax.as_arg FStar_Syntax_Util.exp_unit in - [uu____5511] in - FStar_Syntax_Util.mk_app post uu____5500 in + [uu____5515] in + FStar_Syntax_Util.mk_app post uu____5504 in FStar_Pervasives_Native.Some (pre, post1) else - (let uu____5542 = + (let uu____5546 = FStar_Syntax_Util.is_pure_effect ct.FStar_Syntax_Syntax.effect_name in - if uu____5542 + if uu____5546 then - let uu____5551 = + let uu____5555 = FStar_Syntax_Util.un_squash ct.FStar_Syntax_Syntax.result_typ in - FStar_Util.map_opt uu____5551 + FStar_Util.map_opt uu____5555 (fun post -> (FStar_Syntax_Util.t_true, post)) else FStar_Pervasives_Native.None) let (apply_lemma : FStar_Syntax_Syntax.term -> unit tac) = fun tm -> - let uu____5586 = - let uu____5589 = + let uu____5590 = + let uu____5593 = bind get (fun ps -> mlog - (fun uu____5596 -> - let uu____5597 = FStar_Syntax_Print.term_to_string tm in - FStar_Util.print1 "apply_lemma: tm = %s\n" uu____5597) - (fun uu____5603 -> + (fun uu____5600 -> + let uu____5601 = FStar_Syntax_Print.term_to_string tm in + FStar_Util.print1 "apply_lemma: tm = %s\n" uu____5601) + (fun uu____5607 -> let is_unit_t t = - let uu____5611 = - let uu____5612 = FStar_Syntax_Subst.compress t in - uu____5612.FStar_Syntax_Syntax.n in - match uu____5611 with + let uu____5615 = + let uu____5616 = FStar_Syntax_Subst.compress t in + uu____5616.FStar_Syntax_Syntax.n in + match uu____5615 with | FStar_Syntax_Syntax.Tm_fvar fv when FStar_Syntax_Syntax.fv_eq_lid fv FStar_Parser_Const.unit_lid -> true - | uu____5618 -> false in - let uu____5620 = cur_goal () in - bind uu____5620 + | uu____5622 -> false in + let uu____5624 = cur_goal () in + bind uu____5624 (fun goal -> - let uu____5626 = - let uu____5635 = FStar_Tactics_Types.goal_env goal + let uu____5630 = + let uu____5639 = FStar_Tactics_Types.goal_env goal in - __tc uu____5635 tm in - bind uu____5626 - (fun uu____5650 -> - match uu____5650 with + __tc uu____5639 tm in + bind uu____5630 + (fun uu____5654 -> + match uu____5654 with | (tm1,t,guard) -> - let uu____5662 = + let uu____5666 = FStar_Syntax_Util.arrow_formals_comp t in - (match uu____5662 with + (match uu____5666 with | (bs,comp) -> - let uu____5695 = lemma_or_sq comp in - (match uu____5695 with + let uu____5699 = lemma_or_sq comp in + (match uu____5699 with | FStar_Pervasives_Native.None -> fail "not a lemma or squashed function" | FStar_Pervasives_Native.Some (pre,post) -> - let uu____5715 = + let uu____5719 = FStar_List.fold_left - (fun uu____5763 -> - fun uu____5764 -> - match (uu____5763, - uu____5764) + (fun uu____5767 -> + fun uu____5768 -> + match (uu____5767, + uu____5768) with | ((uvs,guard1,subst1), (b,aq)) -> @@ -3048,9 +3048,9 @@ let (apply_lemma : FStar_Syntax_Syntax.term -> unit tac) = subst1 b.FStar_Syntax_Syntax.sort in - let uu____5877 = + let uu____5881 = is_unit_t b_t in - if uu____5877 + if uu____5881 then (((FStar_Syntax_Util.exp_unit, aq) :: uvs), @@ -3060,42 +3060,42 @@ let (apply_lemma : FStar_Syntax_Syntax.term -> unit tac) = FStar_Syntax_Util.exp_unit)) :: subst1)) else - (let uu____5918 = - let uu____5931 = - let uu____5932 + (let uu____5922 = + let uu____5935 = + let uu____5936 = FStar_Tactics_Types.goal_type goal in - uu____5932.FStar_Syntax_Syntax.pos + uu____5936.FStar_Syntax_Syntax.pos in - let uu____5935 = + let uu____5939 = FStar_Tactics_Types.goal_env goal in FStar_TypeChecker_Util.new_implicit_var "apply_lemma" - uu____5931 - uu____5935 b_t + uu____5935 + uu____5939 b_t in - match uu____5918 + match uu____5922 with - | (u,uu____5954,g_u) + | (u,uu____5958,g_u) -> - let uu____5968 + let uu____5972 = FStar_TypeChecker_Env.conj_guard guard1 g_u in (((u, aq) :: uvs), - uu____5968, + uu____5972, ((FStar_Syntax_Syntax.NT (b, u)) :: subst1)))) ([], guard, []) bs in - (match uu____5715 with + (match uu____5719 with | (uvs,implicits,subst1) -> let uvs1 = FStar_List.rev uvs in @@ -3107,95 +3107,95 @@ let (apply_lemma : FStar_Syntax_Syntax.term -> unit tac) = FStar_Syntax_Subst.subst subst1 post in - let uu____6047 = - let uu____6051 = + let uu____6051 = + let uu____6055 = FStar_Tactics_Types.goal_env goal in - let uu____6052 = + let uu____6056 = FStar_Syntax_Util.mk_squash FStar_Syntax_Syntax.U_zero post1 in - let uu____6053 = + let uu____6057 = FStar_Tactics_Types.goal_type goal in - do_unify uu____6051 - uu____6052 uu____6053 + do_unify uu____6055 + uu____6056 uu____6057 in - bind uu____6047 + bind uu____6051 (fun b -> if Prims.op_Negation b then - let uu____6064 = - let uu____6066 = + let uu____6068 = + let uu____6070 = FStar_Tactics_Types.goal_env goal in - tts uu____6066 tm1 + tts uu____6070 tm1 in - let uu____6067 = - let uu____6069 = + let uu____6071 = + let uu____6073 = FStar_Tactics_Types.goal_env goal in - let uu____6070 = + let uu____6074 = FStar_Syntax_Util.mk_squash FStar_Syntax_Syntax.U_zero post1 in - tts uu____6069 - uu____6070 + tts uu____6073 + uu____6074 in - let uu____6071 = - let uu____6073 = + let uu____6075 = + let uu____6077 = FStar_Tactics_Types.goal_env goal in - let uu____6074 = + let uu____6078 = FStar_Tactics_Types.goal_type goal in - tts uu____6073 - uu____6074 + tts uu____6077 + uu____6078 in fail3 "Cannot instantiate lemma %s (with postcondition: %s) to match goal (%s)" - uu____6064 uu____6067 - uu____6071 + uu____6068 uu____6071 + uu____6075 else - (let uu____6078 = + (let uu____6082 = add_implicits implicits.FStar_TypeChecker_Env.implicits in - bind uu____6078 - (fun uu____6083 -> - let uu____6084 = + bind uu____6082 + (fun uu____6087 -> + let uu____6088 = solve' goal FStar_Syntax_Util.exp_unit in - bind uu____6084 - (fun uu____6092 + bind uu____6088 + (fun uu____6096 -> let is_free_uvar uv t1 = let free_uvars = - let uu____6118 + let uu____6122 = - let uu____6121 + let uu____6125 = FStar_Syntax_Free.uvars t1 in FStar_Util.set_elements - uu____6121 + uu____6125 in FStar_List.map (fun x -> x.FStar_Syntax_Syntax.ctx_uvar_head) - uu____6118 + uu____6122 in FStar_List.existsML (fun u @@ -3209,41 +3209,41 @@ let (apply_lemma : FStar_Syntax_Syntax.term -> unit tac) = FStar_List.existsML (fun g' -> - let uu____6157 + let uu____6161 = FStar_Tactics_Types.goal_type g' in is_free_uvar uv - uu____6157) + uu____6161) goals in let checkone t1 goals = - let uu____6174 + let uu____6178 = FStar_Syntax_Util.head_and_args t1 in - match uu____6174 + match uu____6178 with | - (hd1,uu____6193) + (hd1,uu____6197) -> (match hd1.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_uvar - (uv,uu____6220) + (uv,uu____6224) -> appears uv.FStar_Syntax_Syntax.ctx_uvar_head goals | - uu____6237 + uu____6241 -> false) in - let uu____6239 + let uu____6243 = FStar_All.pipe_right implicits.FStar_TypeChecker_Env.implicits @@ -3258,212 +3258,212 @@ let (apply_lemma : FStar_Syntax_Syntax.term -> unit tac) = = imp.FStar_TypeChecker_Env.imp_uvar in - let uu____6269 + let uu____6273 = FStar_Syntax_Util.head_and_args term in - match uu____6269 + match uu____6273 with | - (hd1,uu____6291) + (hd1,uu____6295) -> - let uu____6316 + let uu____6320 = - let uu____6317 + let uu____6321 = FStar_Syntax_Subst.compress hd1 in - uu____6317.FStar_Syntax_Syntax.n + uu____6321.FStar_Syntax_Syntax.n in - (match uu____6316 + (match uu____6320 with | FStar_Syntax_Syntax.Tm_uvar - (ctx_uvar1,uu____6325) + (ctx_uvar1,uu____6329) -> let goal1 = bnorm_goal - (let uu___407_6345 + (let uu___406_6349 = goal in { FStar_Tactics_Types.goal_main_env = - (uu___407_6345.FStar_Tactics_Types.goal_main_env); + (uu___406_6349.FStar_Tactics_Types.goal_main_env); FStar_Tactics_Types.goal_ctx_uvar = ctx_uvar1; FStar_Tactics_Types.opts = - (uu___407_6345.FStar_Tactics_Types.opts); + (uu___406_6349.FStar_Tactics_Types.opts); FStar_Tactics_Types.is_guard = - (uu___407_6345.FStar_Tactics_Types.is_guard); + (uu___406_6349.FStar_Tactics_Types.is_guard); FStar_Tactics_Types.label = - (uu___407_6345.FStar_Tactics_Types.label) + (uu___406_6349.FStar_Tactics_Types.label) }) in ret [goal1] | - uu____6348 + uu____6352 -> mlog (fun - uu____6354 + uu____6358 -> - let uu____6355 + let uu____6359 = FStar_Syntax_Print.uvar_to_string ctx_uvar.FStar_Syntax_Syntax.ctx_uvar_head in - let uu____6357 + let uu____6361 = FStar_Syntax_Print.term_to_string term in FStar_Util.print2 "apply_lemma: arg %s unified to (%s)\n" - uu____6355 - uu____6357) + uu____6359 + uu____6361) (fun - uu____6364 + uu____6368 -> let env = - let uu___408_6366 + let uu___407_6370 = FStar_Tactics_Types.goal_env goal in { FStar_TypeChecker_Env.solver = - (uu___408_6366.FStar_TypeChecker_Env.solver); + (uu___407_6370.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___408_6366.FStar_TypeChecker_Env.range); + (uu___407_6370.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___408_6366.FStar_TypeChecker_Env.curmodule); + (uu___407_6370.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = (ctx_uvar.FStar_Syntax_Syntax.ctx_uvar_gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___408_6366.FStar_TypeChecker_Env.gamma_sig); + (uu___407_6370.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___408_6366.FStar_TypeChecker_Env.gamma_cache); + (uu___407_6370.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___408_6366.FStar_TypeChecker_Env.modules); + (uu___407_6370.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___408_6366.FStar_TypeChecker_Env.expected_typ); + (uu___407_6370.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___408_6366.FStar_TypeChecker_Env.sigtab); + (uu___407_6370.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___408_6366.FStar_TypeChecker_Env.attrtab); + (uu___407_6370.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___408_6366.FStar_TypeChecker_Env.is_pattern); + (uu___407_6370.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___408_6366.FStar_TypeChecker_Env.instantiate_imp); + (uu___407_6370.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___408_6366.FStar_TypeChecker_Env.effects); + (uu___407_6370.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___408_6366.FStar_TypeChecker_Env.generalize); + (uu___407_6370.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___408_6366.FStar_TypeChecker_Env.letrecs); + (uu___407_6370.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___408_6366.FStar_TypeChecker_Env.top_level); + (uu___407_6370.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___408_6366.FStar_TypeChecker_Env.check_uvars); + (uu___407_6370.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___408_6366.FStar_TypeChecker_Env.use_eq); + (uu___407_6370.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___408_6366.FStar_TypeChecker_Env.is_iface); + (uu___407_6370.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___408_6366.FStar_TypeChecker_Env.admit); + (uu___407_6370.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___408_6366.FStar_TypeChecker_Env.lax); + (uu___407_6370.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___408_6366.FStar_TypeChecker_Env.lax_universes); + (uu___407_6370.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___408_6366.FStar_TypeChecker_Env.phase1); + (uu___407_6370.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___408_6366.FStar_TypeChecker_Env.failhard); + (uu___407_6370.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___408_6366.FStar_TypeChecker_Env.nosynth); + (uu___407_6370.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___408_6366.FStar_TypeChecker_Env.uvar_subtyping); + (uu___407_6370.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___408_6366.FStar_TypeChecker_Env.tc_term); + (uu___407_6370.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___408_6366.FStar_TypeChecker_Env.type_of); + (uu___407_6370.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___408_6366.FStar_TypeChecker_Env.universe_of); + (uu___407_6370.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___408_6366.FStar_TypeChecker_Env.check_type_of); + (uu___407_6370.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___408_6366.FStar_TypeChecker_Env.use_bv_sorts); + (uu___407_6370.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___408_6366.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___407_6370.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___408_6366.FStar_TypeChecker_Env.normalized_eff_names); + (uu___407_6370.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___408_6366.FStar_TypeChecker_Env.fv_delta_depths); + (uu___407_6370.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___408_6366.FStar_TypeChecker_Env.proof_ns); + (uu___407_6370.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___408_6366.FStar_TypeChecker_Env.synth_hook); + (uu___407_6370.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___408_6366.FStar_TypeChecker_Env.splice); + (uu___407_6370.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___408_6366.FStar_TypeChecker_Env.postprocess); + (uu___407_6370.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___408_6366.FStar_TypeChecker_Env.is_native_tactic); + (uu___407_6370.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___408_6366.FStar_TypeChecker_Env.identifier_info); + (uu___407_6370.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___408_6366.FStar_TypeChecker_Env.tc_hooks); + (uu___407_6370.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___408_6366.FStar_TypeChecker_Env.dsenv); + (uu___407_6370.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___408_6366.FStar_TypeChecker_Env.nbe) + (uu___407_6370.FStar_TypeChecker_Env.nbe) } in let g_typ = @@ -3472,46 +3472,46 @@ let (apply_lemma : FStar_Syntax_Syntax.term -> unit tac) = term ctx_uvar.FStar_Syntax_Syntax.ctx_uvar_typ in - let uu____6369 + let uu____6373 = - let uu____6372 + let uu____6376 = if ps.FStar_Tactics_Types.tac_verb_dbg then - let uu____6376 + let uu____6380 = FStar_Syntax_Print.ctx_uvar_to_string ctx_uvar in - let uu____6378 + let uu____6382 = FStar_Syntax_Print.term_to_string term in FStar_Util.format2 "apply_lemma solved arg %s to %s\n" - uu____6376 - uu____6378 + uu____6380 + uu____6382 else "apply_lemma solved arg" in - let uu____6384 + let uu____6388 = FStar_Tactics_Types.goal_env goal in proc_guard - uu____6372 - uu____6384 + uu____6376 + uu____6388 g_typ in bind - uu____6369 + uu____6373 (fun - uu____6388 + uu____6392 -> ret []))))) in bind - uu____6239 + uu____6243 (fun sub_goals -> @@ -3528,18 +3528,18 @@ let (apply_lemma : FStar_Syntax_Syntax.term -> unit tac) = [] -> [] | x::xs1 -> - let uu____6452 + let uu____6456 = f x xs1 in if - uu____6452 + uu____6456 then - let uu____6457 + let uu____6461 = filter' f xs1 in x :: - uu____6457 + uu____6461 else filter' f xs1 in @@ -3550,66 +3550,66 @@ let (apply_lemma : FStar_Syntax_Syntax.term -> unit tac) = -> fun goals -> - let uu____6472 + let uu____6476 = - let uu____6474 + let uu____6478 = FStar_Tactics_Types.goal_witness g in checkone - uu____6474 + uu____6478 goals in Prims.op_Negation - uu____6472) + uu____6476) sub_goals1 in - let uu____6475 + let uu____6479 = - let uu____6478 + let uu____6482 = FStar_Tactics_Types.goal_env goal in proc_guard "apply_lemma guard" - uu____6478 + uu____6482 guard in bind - uu____6475 + uu____6479 (fun - uu____6482 + uu____6486 -> - let uu____6483 + let uu____6487 = - let uu____6486 + let uu____6490 = - let uu____6488 + let uu____6492 = - let uu____6490 + let uu____6494 = FStar_Tactics_Types.goal_env goal in - let uu____6491 + let uu____6495 = FStar_Syntax_Util.mk_squash FStar_Syntax_Syntax.U_zero pre1 in istrivial - uu____6490 - uu____6491 + uu____6494 + uu____6495 in Prims.op_Negation - uu____6488 + uu____6492 in if - uu____6486 + uu____6490 then - let uu____6495 + let uu____6499 = FStar_Tactics_Types.goal_env goal in add_irrelevant_goal "apply_lemma precondition" - uu____6495 + uu____6499 pre1 goal.FStar_Tactics_Types.opts goal.FStar_Tactics_Types.label @@ -3617,15 +3617,15 @@ let (apply_lemma : FStar_Syntax_Syntax.term -> unit tac) = ret () in bind - uu____6483 + uu____6487 (fun - uu____6500 + uu____6504 -> add_goals sub_goals2)))))))))))))) in - focus uu____5589 in - FStar_All.pipe_left (wrap_err "apply_lemma") uu____5586 + focus uu____5593 in + FStar_All.pipe_left (wrap_err "apply_lemma") uu____5590 let (destruct_eq' : FStar_Reflection_Data.typ -> @@ -3633,14 +3633,14 @@ let (destruct_eq' : FStar_Pervasives_Native.tuple2 FStar_Pervasives_Native.option) = fun typ -> - let uu____6524 = FStar_Syntax_Util.destruct_typ_as_formula typ in - match uu____6524 with + let uu____6528 = FStar_Syntax_Util.destruct_typ_as_formula typ in + match uu____6528 with | FStar_Pervasives_Native.Some (FStar_Syntax_Util.BaseConn - (l,uu____6534::(e1,uu____6536)::(e2,uu____6538)::[])) when + (l,uu____6538::(e1,uu____6540)::(e2,uu____6542)::[])) when (FStar_Ident.lid_equals l FStar_Parser_Const.eq2_lid) || (FStar_Ident.lid_equals l FStar_Parser_Const.c_eq2_lid) -> FStar_Pervasives_Native.Some (e1, e2) - | uu____6599 -> FStar_Pervasives_Native.None + | uu____6603 -> FStar_Pervasives_Native.None let (destruct_eq : FStar_Reflection_Data.typ -> @@ -3648,12 +3648,12 @@ let (destruct_eq : FStar_Pervasives_Native.tuple2 FStar_Pervasives_Native.option) = fun typ -> - let uu____6624 = destruct_eq' typ in - match uu____6624 with + let uu____6628 = destruct_eq' typ in + match uu____6628 with | FStar_Pervasives_Native.Some t -> FStar_Pervasives_Native.Some t | FStar_Pervasives_Native.None -> - let uu____6654 = FStar_Syntax_Util.un_squash typ in - (match uu____6654 with + let uu____6658 = FStar_Syntax_Util.un_squash typ in + (match uu____6658 with | FStar_Pervasives_Native.Some typ1 -> destruct_eq' typ1 | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None) @@ -3666,23 +3666,23 @@ let (split_env : fun bvar -> fun e -> let rec aux e1 = - let uu____6723 = FStar_TypeChecker_Env.pop_bv e1 in - match uu____6723 with + let uu____6727 = FStar_TypeChecker_Env.pop_bv e1 in + match uu____6727 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some (bv',e') -> if FStar_Syntax_Syntax.bv_eq bvar bv' then FStar_Pervasives_Native.Some (e', bv', []) else - (let uu____6781 = aux e' in - FStar_Util.map_opt uu____6781 - (fun uu____6812 -> - match uu____6812 with + (let uu____6785 = aux e' in + FStar_Util.map_opt uu____6785 + (fun uu____6816 -> + match uu____6816 with | (e'',bv,bvs) -> (e'', bv, (bv' :: bvs)))) in - let uu____6838 = aux e in - FStar_Util.map_opt uu____6838 - (fun uu____6869 -> - match uu____6869 with + let uu____6842 = aux e in + FStar_Util.map_opt uu____6842 + (fun uu____6873 -> + match uu____6873 with | (e',bv,bvs) -> (e', bv, (FStar_List.rev bvs))) let (push_bvs : @@ -3705,292 +3705,296 @@ let (subst_goal : fun b2 -> fun s -> fun g -> - let uu____6943 = - let uu____6954 = FStar_Tactics_Types.goal_env g in - split_env b1 uu____6954 in - FStar_Util.map_opt uu____6943 - (fun uu____6972 -> - match uu____6972 with + let uu____6947 = + let uu____6958 = FStar_Tactics_Types.goal_env g in + split_env b1 uu____6958 in + FStar_Util.map_opt uu____6947 + (fun uu____6976 -> + match uu____6976 with | (e0,b11,bvs) -> let s1 bv = - let uu___409_6994 = bv in - let uu____6995 = + let uu___408_6998 = bv in + let uu____6999 = FStar_Syntax_Subst.subst s bv.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___409_6994.FStar_Syntax_Syntax.ppname); + (uu___408_6998.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___409_6994.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____6995 + (uu___408_6998.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____6999 } in let bvs1 = FStar_List.map s1 bvs in let new_env = push_bvs e0 (b2 :: bvs1) in let new_goal = - let uu___410_7003 = g.FStar_Tactics_Types.goal_ctx_uvar + let uu___409_7007 = g.FStar_Tactics_Types.goal_ctx_uvar in - let uu____7004 = + let uu____7008 = FStar_TypeChecker_Env.all_binders new_env in - let uu____7013 = - let uu____7016 = FStar_Tactics_Types.goal_type g in - FStar_Syntax_Subst.subst s uu____7016 in + let uu____7017 = + let uu____7020 = FStar_Tactics_Types.goal_type g in + FStar_Syntax_Subst.subst s uu____7020 in { FStar_Syntax_Syntax.ctx_uvar_head = - (uu___410_7003.FStar_Syntax_Syntax.ctx_uvar_head); + (uu___409_7007.FStar_Syntax_Syntax.ctx_uvar_head); FStar_Syntax_Syntax.ctx_uvar_gamma = (new_env.FStar_TypeChecker_Env.gamma); - FStar_Syntax_Syntax.ctx_uvar_binders = uu____7004; - FStar_Syntax_Syntax.ctx_uvar_typ = uu____7013; + FStar_Syntax_Syntax.ctx_uvar_binders = uu____7008; + FStar_Syntax_Syntax.ctx_uvar_typ = uu____7017; FStar_Syntax_Syntax.ctx_uvar_reason = - (uu___410_7003.FStar_Syntax_Syntax.ctx_uvar_reason); + (uu___409_7007.FStar_Syntax_Syntax.ctx_uvar_reason); FStar_Syntax_Syntax.ctx_uvar_should_check = - (uu___410_7003.FStar_Syntax_Syntax.ctx_uvar_should_check); + (uu___409_7007.FStar_Syntax_Syntax.ctx_uvar_should_check); FStar_Syntax_Syntax.ctx_uvar_range = - (uu___410_7003.FStar_Syntax_Syntax.ctx_uvar_range) + (uu___409_7007.FStar_Syntax_Syntax.ctx_uvar_range); + FStar_Syntax_Syntax.ctx_uvar_meta = + (uu___409_7007.FStar_Syntax_Syntax.ctx_uvar_meta) } in - let uu___411_7017 = g in + let uu___410_7021 = g in { FStar_Tactics_Types.goal_main_env = - (uu___411_7017.FStar_Tactics_Types.goal_main_env); + (uu___410_7021.FStar_Tactics_Types.goal_main_env); FStar_Tactics_Types.goal_ctx_uvar = new_goal; FStar_Tactics_Types.opts = - (uu___411_7017.FStar_Tactics_Types.opts); + (uu___410_7021.FStar_Tactics_Types.opts); FStar_Tactics_Types.is_guard = - (uu___411_7017.FStar_Tactics_Types.is_guard); + (uu___410_7021.FStar_Tactics_Types.is_guard); FStar_Tactics_Types.label = - (uu___411_7017.FStar_Tactics_Types.label) + (uu___410_7021.FStar_Tactics_Types.label) }) let (rewrite : FStar_Syntax_Syntax.binder -> unit tac) = fun h -> - let uu____7028 = - let uu____7031 = cur_goal () in - bind uu____7031 + let uu____7032 = + let uu____7035 = cur_goal () in + bind uu____7035 (fun goal -> - let uu____7039 = h in - match uu____7039 with - | (bv,uu____7043) -> + let uu____7043 = h in + match uu____7043 with + | (bv,uu____7047) -> mlog - (fun uu____7051 -> - let uu____7052 = FStar_Syntax_Print.bv_to_string bv in - let uu____7054 = + (fun uu____7055 -> + let uu____7056 = FStar_Syntax_Print.bv_to_string bv in + let uu____7058 = FStar_Syntax_Print.term_to_string bv.FStar_Syntax_Syntax.sort in - FStar_Util.print2 "+++Rewrite %s : %s\n" uu____7052 - uu____7054) - (fun uu____7059 -> - let uu____7060 = - let uu____7071 = FStar_Tactics_Types.goal_env goal in - split_env bv uu____7071 in - match uu____7060 with + FStar_Util.print2 "+++Rewrite %s : %s\n" uu____7056 + uu____7058) + (fun uu____7063 -> + let uu____7064 = + let uu____7075 = FStar_Tactics_Types.goal_env goal in + split_env bv uu____7075 in + match uu____7064 with | FStar_Pervasives_Native.None -> fail "binder not found in environment" | FStar_Pervasives_Native.Some (e0,bv1,bvs) -> - let uu____7098 = + let uu____7102 = destruct_eq bv1.FStar_Syntax_Syntax.sort in - (match uu____7098 with + (match uu____7102 with | FStar_Pervasives_Native.Some (x,e) -> - let uu____7113 = - let uu____7114 = FStar_Syntax_Subst.compress x + let uu____7117 = + let uu____7118 = FStar_Syntax_Subst.compress x in - uu____7114.FStar_Syntax_Syntax.n in - (match uu____7113 with + uu____7118.FStar_Syntax_Syntax.n in + (match uu____7117 with | FStar_Syntax_Syntax.Tm_name x1 -> let s = [FStar_Syntax_Syntax.NT (x1, e)] in let s1 bv2 = - let uu___412_7131 = bv2 in - let uu____7132 = + let uu___411_7135 = bv2 in + let uu____7136 = FStar_Syntax_Subst.subst s bv2.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___412_7131.FStar_Syntax_Syntax.ppname); + (uu___411_7135.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___412_7131.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____7132 + (uu___411_7135.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____7136 } in let bvs1 = FStar_List.map s1 bvs in let new_env = push_bvs e0 (bv1 :: bvs1) in let new_goal = - let uu___413_7140 = + let uu___412_7144 = goal.FStar_Tactics_Types.goal_ctx_uvar in - let uu____7141 = + let uu____7145 = FStar_TypeChecker_Env.all_binders new_env in - let uu____7150 = - let uu____7153 = + let uu____7154 = + let uu____7157 = FStar_Tactics_Types.goal_type goal in - FStar_Syntax_Subst.subst s uu____7153 + FStar_Syntax_Subst.subst s uu____7157 in { FStar_Syntax_Syntax.ctx_uvar_head = - (uu___413_7140.FStar_Syntax_Syntax.ctx_uvar_head); + (uu___412_7144.FStar_Syntax_Syntax.ctx_uvar_head); FStar_Syntax_Syntax.ctx_uvar_gamma = (new_env.FStar_TypeChecker_Env.gamma); FStar_Syntax_Syntax.ctx_uvar_binders = - uu____7141; + uu____7145; FStar_Syntax_Syntax.ctx_uvar_typ = - uu____7150; + uu____7154; FStar_Syntax_Syntax.ctx_uvar_reason = - (uu___413_7140.FStar_Syntax_Syntax.ctx_uvar_reason); + (uu___412_7144.FStar_Syntax_Syntax.ctx_uvar_reason); FStar_Syntax_Syntax.ctx_uvar_should_check = - (uu___413_7140.FStar_Syntax_Syntax.ctx_uvar_should_check); + (uu___412_7144.FStar_Syntax_Syntax.ctx_uvar_should_check); FStar_Syntax_Syntax.ctx_uvar_range = - (uu___413_7140.FStar_Syntax_Syntax.ctx_uvar_range) + (uu___412_7144.FStar_Syntax_Syntax.ctx_uvar_range); + FStar_Syntax_Syntax.ctx_uvar_meta = + (uu___412_7144.FStar_Syntax_Syntax.ctx_uvar_meta) } in replace_cur - (let uu___414_7156 = goal in + (let uu___413_7160 = goal in { FStar_Tactics_Types.goal_main_env = - (uu___414_7156.FStar_Tactics_Types.goal_main_env); + (uu___413_7160.FStar_Tactics_Types.goal_main_env); FStar_Tactics_Types.goal_ctx_uvar = new_goal; FStar_Tactics_Types.opts = - (uu___414_7156.FStar_Tactics_Types.opts); + (uu___413_7160.FStar_Tactics_Types.opts); FStar_Tactics_Types.is_guard = - (uu___414_7156.FStar_Tactics_Types.is_guard); + (uu___413_7160.FStar_Tactics_Types.is_guard); FStar_Tactics_Types.label = - (uu___414_7156.FStar_Tactics_Types.label) + (uu___413_7160.FStar_Tactics_Types.label) }) - | uu____7157 -> + | uu____7161 -> fail "Not an equality hypothesis with a variable on the LHS") - | uu____7159 -> fail "Not an equality hypothesis"))) + | uu____7163 -> fail "Not an equality hypothesis"))) in - FStar_All.pipe_left (wrap_err "rewrite") uu____7028 + FStar_All.pipe_left (wrap_err "rewrite") uu____7032 let (rename_to : FStar_Syntax_Syntax.binder -> Prims.string -> unit tac) = fun b -> fun s -> - let uu____7189 = - let uu____7192 = cur_goal () in - bind uu____7192 + let uu____7193 = + let uu____7196 = cur_goal () in + bind uu____7196 (fun goal -> - let uu____7203 = b in - match uu____7203 with - | (bv,uu____7207) -> + let uu____7207 = b in + match uu____7207 with + | (bv,uu____7211) -> let bv' = - let uu____7213 = - let uu___415_7214 = bv in - let uu____7215 = + let uu____7217 = + let uu___414_7218 = bv in + let uu____7219 = FStar_Ident.mk_ident (s, ((bv.FStar_Syntax_Syntax.ppname).FStar_Ident.idRange)) in { - FStar_Syntax_Syntax.ppname = uu____7215; + FStar_Syntax_Syntax.ppname = uu____7219; FStar_Syntax_Syntax.index = - (uu___415_7214.FStar_Syntax_Syntax.index); + (uu___414_7218.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = - (uu___415_7214.FStar_Syntax_Syntax.sort) + (uu___414_7218.FStar_Syntax_Syntax.sort) } in - FStar_Syntax_Syntax.freshen_bv uu____7213 in + FStar_Syntax_Syntax.freshen_bv uu____7217 in let s1 = - let uu____7220 = - let uu____7221 = - let uu____7228 = FStar_Syntax_Syntax.bv_to_name bv' + let uu____7224 = + let uu____7225 = + let uu____7232 = FStar_Syntax_Syntax.bv_to_name bv' in - (bv, uu____7228) in - FStar_Syntax_Syntax.NT uu____7221 in - [uu____7220] in - let uu____7233 = subst_goal bv bv' s1 goal in - (match uu____7233 with + (bv, uu____7232) in + FStar_Syntax_Syntax.NT uu____7225 in + [uu____7224] in + let uu____7237 = subst_goal bv bv' s1 goal in + (match uu____7237 with | FStar_Pervasives_Native.None -> fail "binder not found in environment" | FStar_Pervasives_Native.Some goal1 -> replace_cur goal1)) in - FStar_All.pipe_left (wrap_err "rename_to") uu____7189 + FStar_All.pipe_left (wrap_err "rename_to") uu____7193 let (binder_retype : FStar_Syntax_Syntax.binder -> unit tac) = fun b -> - let uu____7255 = - let uu____7258 = cur_goal () in - bind uu____7258 + let uu____7259 = + let uu____7262 = cur_goal () in + bind uu____7262 (fun goal -> - let uu____7267 = b in - match uu____7267 with - | (bv,uu____7271) -> - let uu____7276 = - let uu____7287 = FStar_Tactics_Types.goal_env goal in - split_env bv uu____7287 in - (match uu____7276 with + let uu____7271 = b in + match uu____7271 with + | (bv,uu____7275) -> + let uu____7280 = + let uu____7291 = FStar_Tactics_Types.goal_env goal in + split_env bv uu____7291 in + (match uu____7280 with | FStar_Pervasives_Native.None -> fail "binder is not present in environment" | FStar_Pervasives_Native.Some (e0,bv1,bvs) -> - let uu____7314 = FStar_Syntax_Util.type_u () in - (match uu____7314 with + let uu____7318 = FStar_Syntax_Util.type_u () in + (match uu____7318 with | (ty,u) -> - let uu____7323 = new_uvar "binder_retype" e0 ty in - bind uu____7323 - (fun uu____7342 -> - match uu____7342 with + let uu____7327 = new_uvar "binder_retype" e0 ty in + bind uu____7327 + (fun uu____7346 -> + match uu____7346 with | (t',u_t') -> let bv'' = - let uu___416_7352 = bv1 in + let uu___415_7356 = bv1 in { FStar_Syntax_Syntax.ppname = - (uu___416_7352.FStar_Syntax_Syntax.ppname); + (uu___415_7356.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___416_7352.FStar_Syntax_Syntax.index); + (uu___415_7356.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t' } in let s = - let uu____7356 = - let uu____7357 = - let uu____7364 = + let uu____7360 = + let uu____7361 = + let uu____7368 = FStar_Syntax_Syntax.bv_to_name bv'' in - (bv1, uu____7364) in - FStar_Syntax_Syntax.NT uu____7357 in - [uu____7356] in + (bv1, uu____7368) in + FStar_Syntax_Syntax.NT uu____7361 in + [uu____7360] in let bvs1 = FStar_List.map (fun b1 -> - let uu___417_7376 = b1 in - let uu____7377 = + let uu___416_7380 = b1 in + let uu____7381 = FStar_Syntax_Subst.subst s b1.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___417_7376.FStar_Syntax_Syntax.ppname); + (uu___416_7380.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___417_7376.FStar_Syntax_Syntax.index); + (uu___416_7380.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = - uu____7377 + uu____7381 }) bvs in let env' = push_bvs e0 (bv'' :: bvs1) in bind __dismiss - (fun uu____7384 -> + (fun uu____7388 -> let new_goal = - let uu____7386 = + let uu____7390 = FStar_Tactics_Types.goal_with_env goal env' in - let uu____7387 = - let uu____7388 = + let uu____7391 = + let uu____7392 = FStar_Tactics_Types.goal_type goal in FStar_Syntax_Subst.subst s - uu____7388 + uu____7392 in FStar_Tactics_Types.goal_with_type - uu____7386 uu____7387 + uu____7390 uu____7391 in - let uu____7389 = add_goals [new_goal] + let uu____7393 = add_goals [new_goal] in - bind uu____7389 - (fun uu____7394 -> - let uu____7395 = + bind uu____7393 + (fun uu____7398 -> + let uu____7399 = FStar_Syntax_Util.mk_eq2 (FStar_Syntax_Syntax.U_succ u) ty @@ -3999,11 +4003,11 @@ let (binder_retype : FStar_Syntax_Syntax.binder -> unit tac) = in add_irrelevant_goal "binder_retype equation" e0 - uu____7395 + uu____7399 goal.FStar_Tactics_Types.opts goal.FStar_Tactics_Types.label)))))) in - FStar_All.pipe_left (wrap_err "binder_retype") uu____7255 + FStar_All.pipe_left (wrap_err "binder_retype") uu____7259 let (norm_binder_type : FStar_Syntax_Embeddings.norm_step Prims.list -> @@ -4011,88 +4015,88 @@ let (norm_binder_type : = fun s -> fun b -> - let uu____7421 = - let uu____7424 = cur_goal () in - bind uu____7424 + let uu____7425 = + let uu____7428 = cur_goal () in + bind uu____7428 (fun goal -> - let uu____7433 = b in - match uu____7433 with - | (bv,uu____7437) -> - let uu____7442 = - let uu____7453 = FStar_Tactics_Types.goal_env goal in - split_env bv uu____7453 in - (match uu____7442 with + let uu____7437 = b in + match uu____7437 with + | (bv,uu____7441) -> + let uu____7446 = + let uu____7457 = FStar_Tactics_Types.goal_env goal in + split_env bv uu____7457 in + (match uu____7446 with | FStar_Pervasives_Native.None -> fail "binder is not present in environment" | FStar_Pervasives_Native.Some (e0,bv1,bvs) -> let steps = - let uu____7483 = + let uu____7487 = FStar_TypeChecker_Normalize.tr_norm_steps s in FStar_List.append [FStar_TypeChecker_Env.Reify; - FStar_TypeChecker_Env.UnfoldTac] uu____7483 + FStar_TypeChecker_Env.UnfoldTac] uu____7487 in let sort' = normalize steps e0 bv1.FStar_Syntax_Syntax.sort in let bv' = - let uu___418_7488 = bv1 in + let uu___417_7492 = bv1 in { FStar_Syntax_Syntax.ppname = - (uu___418_7488.FStar_Syntax_Syntax.ppname); + (uu___417_7492.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___418_7488.FStar_Syntax_Syntax.index); + (uu___417_7492.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = sort' } in let env' = push_bvs e0 (bv' :: bvs) in - let uu____7490 = + let uu____7494 = FStar_Tactics_Types.goal_with_env goal env' in - replace_cur uu____7490)) + replace_cur uu____7494)) in - FStar_All.pipe_left (wrap_err "norm_binder_type") uu____7421 + FStar_All.pipe_left (wrap_err "norm_binder_type") uu____7425 let (revert : unit -> unit tac) = - fun uu____7503 -> - let uu____7506 = cur_goal () in - bind uu____7506 + fun uu____7507 -> + let uu____7510 = cur_goal () in + bind uu____7510 (fun goal -> - let uu____7512 = - let uu____7519 = FStar_Tactics_Types.goal_env goal in - FStar_TypeChecker_Env.pop_bv uu____7519 in - match uu____7512 with + let uu____7516 = + let uu____7523 = FStar_Tactics_Types.goal_env goal in + FStar_TypeChecker_Env.pop_bv uu____7523 in + match uu____7516 with | FStar_Pervasives_Native.None -> fail "Cannot revert; empty context" | FStar_Pervasives_Native.Some (x,env') -> let typ' = - let uu____7536 = - let uu____7539 = FStar_Tactics_Types.goal_type goal in - FStar_Syntax_Syntax.mk_Total uu____7539 in + let uu____7540 = + let uu____7543 = FStar_Tactics_Types.goal_type goal in + FStar_Syntax_Syntax.mk_Total uu____7543 in FStar_Syntax_Util.arrow [(x, FStar_Pervasives_Native.None)] - uu____7536 + uu____7540 in - let uu____7554 = new_uvar "revert" env' typ' in - bind uu____7554 - (fun uu____7570 -> - match uu____7570 with + let uu____7558 = new_uvar "revert" env' typ' in + bind uu____7558 + (fun uu____7574 -> + match uu____7574 with | (r,u_r) -> - let uu____7579 = - let uu____7582 = - let uu____7583 = - let uu____7584 = - FStar_Tactics_Types.goal_type goal in - uu____7584.FStar_Syntax_Syntax.pos in + let uu____7583 = + let uu____7586 = let uu____7587 = - let uu____7592 = - let uu____7593 = - let uu____7602 = + let uu____7588 = + FStar_Tactics_Types.goal_type goal in + uu____7588.FStar_Syntax_Syntax.pos in + let uu____7591 = + let uu____7596 = + let uu____7597 = + let uu____7606 = FStar_Syntax_Syntax.bv_to_name x in - FStar_Syntax_Syntax.as_arg uu____7602 in - [uu____7593] in - FStar_Syntax_Syntax.mk_Tm_app r uu____7592 in - uu____7587 FStar_Pervasives_Native.None uu____7583 + FStar_Syntax_Syntax.as_arg uu____7606 in + [uu____7597] in + FStar_Syntax_Syntax.mk_Tm_app r uu____7596 in + uu____7591 FStar_Pervasives_Native.None uu____7587 in - set_solution goal uu____7582 in - bind uu____7579 - (fun uu____7623 -> + set_solution goal uu____7586 in + bind uu____7583 + (fun uu____7627 -> let g = FStar_Tactics_Types.mk_goal env' u_r goal.FStar_Tactics_Types.opts @@ -4105,32 +4109,32 @@ let (free_in : FStar_Syntax_Syntax.bv -> FStar_Syntax_Syntax.term -> Prims.bool) = fun bv -> fun t -> - let uu____7637 = FStar_Syntax_Free.names t in - FStar_Util.set_mem bv uu____7637 + let uu____7641 = FStar_Syntax_Free.names t in + FStar_Util.set_mem bv uu____7641 let rec (clear : FStar_Syntax_Syntax.binder -> unit tac) = fun b -> let bv = FStar_Pervasives_Native.fst b in - let uu____7653 = cur_goal () in - bind uu____7653 + let uu____7657 = cur_goal () in + bind uu____7657 (fun goal -> mlog - (fun uu____7661 -> - let uu____7662 = FStar_Syntax_Print.binder_to_string b in - let uu____7664 = - let uu____7666 = - let uu____7668 = - let uu____7677 = FStar_Tactics_Types.goal_env goal in - FStar_TypeChecker_Env.all_binders uu____7677 in - FStar_All.pipe_right uu____7668 FStar_List.length in - FStar_All.pipe_right uu____7666 FStar_Util.string_of_int in + (fun uu____7665 -> + let uu____7666 = FStar_Syntax_Print.binder_to_string b in + let uu____7668 = + let uu____7670 = + let uu____7672 = + let uu____7681 = FStar_Tactics_Types.goal_env goal in + FStar_TypeChecker_Env.all_binders uu____7681 in + FStar_All.pipe_right uu____7672 FStar_List.length in + FStar_All.pipe_right uu____7670 FStar_Util.string_of_int in FStar_Util.print2 "Clear of (%s), env has %s binders\n" - uu____7662 uu____7664) - (fun uu____7698 -> - let uu____7699 = - let uu____7710 = FStar_Tactics_Types.goal_env goal in - split_env bv uu____7710 in - match uu____7699 with + uu____7666 uu____7668) + (fun uu____7702 -> + let uu____7703 = + let uu____7714 = FStar_Tactics_Types.goal_env goal in + split_env bv uu____7714 in + match uu____7703 with | FStar_Pervasives_Native.None -> fail "Cannot clear; binder not in environment" | FStar_Pervasives_Native.Some (e',bv1,bvs) -> @@ -4138,88 +4142,88 @@ let rec (clear : FStar_Syntax_Syntax.binder -> unit tac) = match bvs1 with | [] -> ret () | bv'::bvs2 -> - let uu____7755 = + let uu____7759 = free_in bv1 bv'.FStar_Syntax_Syntax.sort in - if uu____7755 + if uu____7759 then - let uu____7760 = - let uu____7762 = + let uu____7764 = + let uu____7766 = FStar_Syntax_Print.bv_to_string bv' in FStar_Util.format1 "Cannot clear; binder present in the type of %s" - uu____7762 + uu____7766 in - fail uu____7760 + fail uu____7764 else check1 bvs2 in - let uu____7767 = - let uu____7769 = FStar_Tactics_Types.goal_type goal in - free_in bv1 uu____7769 in - if uu____7767 + let uu____7771 = + let uu____7773 = FStar_Tactics_Types.goal_type goal in + free_in bv1 uu____7773 in + if uu____7771 then fail "Cannot clear; binder present in goal" else - (let uu____7776 = check1 bvs in - bind uu____7776 - (fun uu____7782 -> + (let uu____7780 = check1 bvs in + bind uu____7780 + (fun uu____7786 -> let env' = push_bvs e' bvs in - let uu____7784 = - let uu____7791 = + let uu____7788 = + let uu____7795 = FStar_Tactics_Types.goal_type goal in - new_uvar "clear.witness" env' uu____7791 in - bind uu____7784 - (fun uu____7801 -> - match uu____7801 with + new_uvar "clear.witness" env' uu____7795 in + bind uu____7788 + (fun uu____7805 -> + match uu____7805 with | (ut,uvar_ut) -> - let uu____7810 = set_solution goal ut in - bind uu____7810 - (fun uu____7815 -> - let uu____7816 = + let uu____7814 = set_solution goal ut in + bind uu____7814 + (fun uu____7819 -> + let uu____7820 = FStar_Tactics_Types.mk_goal env' uvar_ut goal.FStar_Tactics_Types.opts goal.FStar_Tactics_Types.is_guard goal.FStar_Tactics_Types.label in - replace_cur uu____7816)))))) + replace_cur uu____7820)))))) let (clear_top : unit -> unit tac) = - fun uu____7824 -> - let uu____7827 = cur_goal () in - bind uu____7827 + fun uu____7828 -> + let uu____7831 = cur_goal () in + bind uu____7831 (fun goal -> - let uu____7833 = - let uu____7840 = FStar_Tactics_Types.goal_env goal in - FStar_TypeChecker_Env.pop_bv uu____7840 in - match uu____7833 with + let uu____7837 = + let uu____7844 = FStar_Tactics_Types.goal_env goal in + FStar_TypeChecker_Env.pop_bv uu____7844 in + match uu____7837 with | FStar_Pervasives_Native.None -> fail "Cannot clear; empty context" - | FStar_Pervasives_Native.Some (x,uu____7849) -> - let uu____7854 = FStar_Syntax_Syntax.mk_binder x in - clear uu____7854) + | FStar_Pervasives_Native.Some (x,uu____7853) -> + let uu____7858 = FStar_Syntax_Syntax.mk_binder x in + clear uu____7858) let (prune : Prims.string -> unit tac) = fun s -> - let uu____7867 = cur_goal () in - bind uu____7867 + let uu____7871 = cur_goal () in + bind uu____7871 (fun g -> let ctx = FStar_Tactics_Types.goal_env g in let ctx' = - let uu____7877 = FStar_Ident.path_of_text s in - FStar_TypeChecker_Env.rem_proof_ns ctx uu____7877 in + let uu____7881 = FStar_Ident.path_of_text s in + FStar_TypeChecker_Env.rem_proof_ns ctx uu____7881 in let g' = FStar_Tactics_Types.goal_with_env g ctx' in - bind __dismiss (fun uu____7880 -> add_goals [g'])) + bind __dismiss (fun uu____7884 -> add_goals [g'])) let (addns : Prims.string -> unit tac) = fun s -> - let uu____7893 = cur_goal () in - bind uu____7893 + let uu____7897 = cur_goal () in + bind uu____7897 (fun g -> let ctx = FStar_Tactics_Types.goal_env g in let ctx' = - let uu____7903 = FStar_Ident.path_of_text s in - FStar_TypeChecker_Env.add_proof_ns ctx uu____7903 in + let uu____7907 = FStar_Ident.path_of_text s in + FStar_TypeChecker_Env.add_proof_ns ctx uu____7907 in let g' = FStar_Tactics_Types.goal_with_env g ctx' in - bind __dismiss (fun uu____7906 -> add_goals [g'])) + bind __dismiss (fun uu____7910 -> add_goals [g'])) let rec (tac_fold_env : FStar_Tactics_Types.direction -> @@ -4231,80 +4235,80 @@ let rec (tac_fold_env : fun env -> fun t -> let tn = - let uu____7947 = FStar_Syntax_Subst.compress t in - uu____7947.FStar_Syntax_Syntax.n in - let uu____7950 = + let uu____7951 = FStar_Syntax_Subst.compress t in + uu____7951.FStar_Syntax_Syntax.n in + let uu____7954 = if d = FStar_Tactics_Types.TopDown then f env - (let uu___422_7957 = t in + (let uu___421_7961 = t in { FStar_Syntax_Syntax.n = tn; FStar_Syntax_Syntax.pos = - (uu___422_7957.FStar_Syntax_Syntax.pos); + (uu___421_7961.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___422_7957.FStar_Syntax_Syntax.vars) + (uu___421_7961.FStar_Syntax_Syntax.vars) }) else ret t in - bind uu____7950 + bind uu____7954 (fun t1 -> let ff = tac_fold_env d f env in let tn1 = - let uu____7974 = - let uu____7975 = FStar_Syntax_Subst.compress t1 in - uu____7975.FStar_Syntax_Syntax.n in - match uu____7974 with + let uu____7978 = + let uu____7979 = FStar_Syntax_Subst.compress t1 in + uu____7979.FStar_Syntax_Syntax.n in + match uu____7978 with | FStar_Syntax_Syntax.Tm_app (hd1,args) -> - let uu____8006 = ff hd1 in - bind uu____8006 + let uu____8010 = ff hd1 in + bind uu____8010 (fun hd2 -> - let fa uu____8032 = - match uu____8032 with + let fa uu____8036 = + match uu____8036 with | (a,q) -> - let uu____8053 = ff a in - bind uu____8053 (fun a1 -> ret (a1, q)) + let uu____8057 = ff a in + bind uu____8057 (fun a1 -> ret (a1, q)) in - let uu____8072 = mapM fa args in - bind uu____8072 + let uu____8076 = mapM fa args in + bind uu____8076 (fun args1 -> ret (FStar_Syntax_Syntax.Tm_app (hd2, args1)))) | FStar_Syntax_Syntax.Tm_abs (bs,t2,k) -> - let uu____8154 = FStar_Syntax_Subst.open_term bs t2 in - (match uu____8154 with + let uu____8158 = FStar_Syntax_Subst.open_term bs t2 in + (match uu____8158 with | (bs1,t') -> - let uu____8163 = - let uu____8166 = + let uu____8167 = + let uu____8170 = FStar_TypeChecker_Env.push_binders env bs1 in - tac_fold_env d f uu____8166 t' in - bind uu____8163 + tac_fold_env d f uu____8170 t' in + bind uu____8167 (fun t'' -> - let uu____8170 = - let uu____8171 = - let uu____8190 = + let uu____8174 = + let uu____8175 = + let uu____8194 = FStar_Syntax_Subst.close_binders bs1 in - let uu____8199 = + let uu____8203 = FStar_Syntax_Subst.close bs1 t'' in - (uu____8190, uu____8199, k) in - FStar_Syntax_Syntax.Tm_abs uu____8171 in - ret uu____8170)) + (uu____8194, uu____8203, k) in + FStar_Syntax_Syntax.Tm_abs uu____8175 in + ret uu____8174)) | FStar_Syntax_Syntax.Tm_arrow (bs,k) -> ret tn | FStar_Syntax_Syntax.Tm_match (hd1,brs) -> - let uu____8274 = ff hd1 in - bind uu____8274 + let uu____8278 = ff hd1 in + bind uu____8278 (fun hd2 -> let ffb br = - let uu____8289 = + let uu____8293 = FStar_Syntax_Subst.open_branch br in - match uu____8289 with + match uu____8293 with | (pat,w,e) -> let bvs = FStar_Syntax_Syntax.pat_bvs pat in let ff1 = - let uu____8321 = + let uu____8325 = FStar_TypeChecker_Env.push_bvs env bvs in - tac_fold_env d f uu____8321 in - let uu____8322 = ff1 e in - bind uu____8322 + tac_fold_env d f uu____8325 in + let uu____8326 = ff1 e in + bind uu____8326 (fun e1 -> let br1 = FStar_Syntax_Subst.close_branch @@ -4312,68 +4316,68 @@ let rec (tac_fold_env : in ret br1) in - let uu____8337 = mapM ffb brs in - bind uu____8337 + let uu____8341 = mapM ffb brs in + bind uu____8341 (fun brs1 -> ret (FStar_Syntax_Syntax.Tm_match (hd2, brs1)))) | FStar_Syntax_Syntax.Tm_let ((false ,{ FStar_Syntax_Syntax.lbname = FStar_Util.Inl bv; - FStar_Syntax_Syntax.lbunivs = uu____8381; - FStar_Syntax_Syntax.lbtyp = uu____8382; - FStar_Syntax_Syntax.lbeff = uu____8383; + FStar_Syntax_Syntax.lbunivs = uu____8385; + FStar_Syntax_Syntax.lbtyp = uu____8386; + FStar_Syntax_Syntax.lbeff = uu____8387; FStar_Syntax_Syntax.lbdef = def; - FStar_Syntax_Syntax.lbattrs = uu____8385; - FStar_Syntax_Syntax.lbpos = uu____8386;_}::[]),e) + FStar_Syntax_Syntax.lbattrs = uu____8389; + FStar_Syntax_Syntax.lbpos = uu____8390;_}::[]),e) -> let lb = - let uu____8414 = - let uu____8415 = FStar_Syntax_Subst.compress t1 in - uu____8415.FStar_Syntax_Syntax.n in - match uu____8414 with + let uu____8418 = + let uu____8419 = FStar_Syntax_Subst.compress t1 in + uu____8419.FStar_Syntax_Syntax.n in + match uu____8418 with | FStar_Syntax_Syntax.Tm_let - ((false ,lb::[]),uu____8419) -> lb - | uu____8435 -> failwith "impossible" in + ((false ,lb::[]),uu____8423) -> lb + | uu____8439 -> failwith "impossible" in let fflb lb1 = - let uu____8445 = ff lb1.FStar_Syntax_Syntax.lbdef in - bind uu____8445 + let uu____8449 = ff lb1.FStar_Syntax_Syntax.lbdef in + bind uu____8449 (fun def1 -> ret - (let uu___419_8451 = lb1 in + (let uu___418_8455 = lb1 in { FStar_Syntax_Syntax.lbname = - (uu___419_8451.FStar_Syntax_Syntax.lbname); + (uu___418_8455.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___419_8451.FStar_Syntax_Syntax.lbunivs); + (uu___418_8455.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = - (uu___419_8451.FStar_Syntax_Syntax.lbtyp); + (uu___418_8455.FStar_Syntax_Syntax.lbtyp); FStar_Syntax_Syntax.lbeff = - (uu___419_8451.FStar_Syntax_Syntax.lbeff); + (uu___418_8455.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = def1; FStar_Syntax_Syntax.lbattrs = - (uu___419_8451.FStar_Syntax_Syntax.lbattrs); + (uu___418_8455.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___419_8451.FStar_Syntax_Syntax.lbpos) + (uu___418_8455.FStar_Syntax_Syntax.lbpos) })) in - let uu____8452 = fflb lb in - bind uu____8452 + let uu____8456 = fflb lb in + bind uu____8456 (fun lb1 -> - let uu____8462 = - let uu____8467 = - let uu____8468 = + let uu____8466 = + let uu____8471 = + let uu____8472 = FStar_Syntax_Syntax.mk_binder bv in - [uu____8468] in - FStar_Syntax_Subst.open_term uu____8467 e in - match uu____8462 with + [uu____8472] in + FStar_Syntax_Subst.open_term uu____8471 e in + match uu____8466 with | (bs,e1) -> let ff1 = - let uu____8498 = + let uu____8502 = FStar_TypeChecker_Env.push_binders env bs in - tac_fold_env d f uu____8498 in - let uu____8499 = ff1 e1 in - bind uu____8499 + tac_fold_env d f uu____8502 in + let uu____8503 = ff1 e1 in + bind uu____8503 (fun e2 -> let e3 = FStar_Syntax_Subst.close bs e2 in @@ -4382,67 +4386,67 @@ let rec (tac_fold_env : ((false, [lb1]), e3)))) | FStar_Syntax_Syntax.Tm_let ((true ,lbs),e) -> let fflb lb = - let uu____8546 = ff lb.FStar_Syntax_Syntax.lbdef in - bind uu____8546 + let uu____8550 = ff lb.FStar_Syntax_Syntax.lbdef in + bind uu____8550 (fun def -> ret - (let uu___420_8552 = lb in + (let uu___419_8556 = lb in { FStar_Syntax_Syntax.lbname = - (uu___420_8552.FStar_Syntax_Syntax.lbname); + (uu___419_8556.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___420_8552.FStar_Syntax_Syntax.lbunivs); + (uu___419_8556.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = - (uu___420_8552.FStar_Syntax_Syntax.lbtyp); + (uu___419_8556.FStar_Syntax_Syntax.lbtyp); FStar_Syntax_Syntax.lbeff = - (uu___420_8552.FStar_Syntax_Syntax.lbeff); + (uu___419_8556.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = def; FStar_Syntax_Syntax.lbattrs = - (uu___420_8552.FStar_Syntax_Syntax.lbattrs); + (uu___419_8556.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___420_8552.FStar_Syntax_Syntax.lbpos) + (uu___419_8556.FStar_Syntax_Syntax.lbpos) })) in - let uu____8553 = FStar_Syntax_Subst.open_let_rec lbs e + let uu____8557 = FStar_Syntax_Subst.open_let_rec lbs e in - (match uu____8553 with + (match uu____8557 with | (lbs1,e1) -> - let uu____8568 = mapM fflb lbs1 in - bind uu____8568 + let uu____8572 = mapM fflb lbs1 in + bind uu____8572 (fun lbs2 -> - let uu____8580 = ff e1 in - bind uu____8580 + let uu____8584 = ff e1 in + bind uu____8584 (fun e2 -> - let uu____8588 = + let uu____8592 = FStar_Syntax_Subst.close_let_rec lbs2 e2 in - match uu____8588 with + match uu____8592 with | (lbs3,e3) -> ret (FStar_Syntax_Syntax.Tm_let ((true, lbs3), e3))))) | FStar_Syntax_Syntax.Tm_ascribed (t2,asc,eff) -> - let uu____8659 = ff t2 in - bind uu____8659 + let uu____8663 = ff t2 in + bind uu____8663 (fun t3 -> ret (FStar_Syntax_Syntax.Tm_ascribed (t3, asc, eff))) | FStar_Syntax_Syntax.Tm_meta (t2,m) -> - let uu____8690 = ff t2 in - bind uu____8690 + let uu____8694 = ff t2 in + bind uu____8694 (fun t3 -> ret (FStar_Syntax_Syntax.Tm_meta (t3, m))) - | uu____8697 -> ret tn in + | uu____8701 -> ret tn in bind tn1 (fun tn2 -> let t' = - let uu___421_8704 = t1 in + let uu___420_8708 = t1 in { FStar_Syntax_Syntax.n = tn2; FStar_Syntax_Syntax.pos = - (uu___421_8704.FStar_Syntax_Syntax.pos); + (uu___420_8708.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___421_8704.FStar_Syntax_Syntax.vars) + (uu___420_8708.FStar_Syntax_Syntax.vars) } in if d = FStar_Tactics_Types.BottomUp then f env t' @@ -4462,169 +4466,169 @@ let (pointwise_rec : fun label1 -> fun env -> fun t -> - let uu____8751 = + let uu____8755 = FStar_TypeChecker_TcTerm.tc_term - (let uu___423_8760 = env in + (let uu___422_8764 = env in { FStar_TypeChecker_Env.solver = - (uu___423_8760.FStar_TypeChecker_Env.solver); + (uu___422_8764.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___423_8760.FStar_TypeChecker_Env.range); + (uu___422_8764.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___423_8760.FStar_TypeChecker_Env.curmodule); + (uu___422_8764.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___423_8760.FStar_TypeChecker_Env.gamma); + (uu___422_8764.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___423_8760.FStar_TypeChecker_Env.gamma_sig); + (uu___422_8764.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___423_8760.FStar_TypeChecker_Env.gamma_cache); + (uu___422_8764.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___423_8760.FStar_TypeChecker_Env.modules); + (uu___422_8764.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___423_8760.FStar_TypeChecker_Env.expected_typ); + (uu___422_8764.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___423_8760.FStar_TypeChecker_Env.sigtab); + (uu___422_8764.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___423_8760.FStar_TypeChecker_Env.attrtab); + (uu___422_8764.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___423_8760.FStar_TypeChecker_Env.is_pattern); + (uu___422_8764.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___423_8760.FStar_TypeChecker_Env.instantiate_imp); + (uu___422_8764.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___423_8760.FStar_TypeChecker_Env.effects); + (uu___422_8764.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___423_8760.FStar_TypeChecker_Env.generalize); + (uu___422_8764.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___423_8760.FStar_TypeChecker_Env.letrecs); + (uu___422_8764.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___423_8760.FStar_TypeChecker_Env.top_level); + (uu___422_8764.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___423_8760.FStar_TypeChecker_Env.check_uvars); + (uu___422_8764.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___423_8760.FStar_TypeChecker_Env.use_eq); + (uu___422_8764.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___423_8760.FStar_TypeChecker_Env.is_iface); + (uu___422_8764.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___423_8760.FStar_TypeChecker_Env.admit); + (uu___422_8764.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___423_8760.FStar_TypeChecker_Env.lax_universes); + (uu___422_8764.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___423_8760.FStar_TypeChecker_Env.phase1); + (uu___422_8764.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___423_8760.FStar_TypeChecker_Env.failhard); + (uu___422_8764.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___423_8760.FStar_TypeChecker_Env.nosynth); + (uu___422_8764.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___423_8760.FStar_TypeChecker_Env.uvar_subtyping); + (uu___422_8764.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___423_8760.FStar_TypeChecker_Env.tc_term); + (uu___422_8764.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___423_8760.FStar_TypeChecker_Env.type_of); + (uu___422_8764.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___423_8760.FStar_TypeChecker_Env.universe_of); + (uu___422_8764.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___423_8760.FStar_TypeChecker_Env.check_type_of); + (uu___422_8764.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___423_8760.FStar_TypeChecker_Env.use_bv_sorts); + (uu___422_8764.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___423_8760.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___422_8764.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___423_8760.FStar_TypeChecker_Env.normalized_eff_names); + (uu___422_8764.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___423_8760.FStar_TypeChecker_Env.fv_delta_depths); + (uu___422_8764.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___423_8760.FStar_TypeChecker_Env.proof_ns); + (uu___422_8764.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___423_8760.FStar_TypeChecker_Env.synth_hook); + (uu___422_8764.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___423_8760.FStar_TypeChecker_Env.splice); + (uu___422_8764.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___423_8760.FStar_TypeChecker_Env.postprocess); + (uu___422_8764.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___423_8760.FStar_TypeChecker_Env.is_native_tactic); + (uu___422_8764.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___423_8760.FStar_TypeChecker_Env.identifier_info); + (uu___422_8764.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___423_8760.FStar_TypeChecker_Env.tc_hooks); + (uu___422_8764.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___423_8760.FStar_TypeChecker_Env.dsenv); + (uu___422_8764.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___423_8760.FStar_TypeChecker_Env.nbe) + (uu___422_8764.FStar_TypeChecker_Env.nbe) }) t in - match uu____8751 with + match uu____8755 with | (t1,lcomp,g) -> - let uu____8767 = - (let uu____8771 = + let uu____8771 = + (let uu____8775 = FStar_Syntax_Util.is_pure_or_ghost_lcomp lcomp in - Prims.op_Negation uu____8771) || - (let uu____8774 = FStar_TypeChecker_Env.is_trivial g + Prims.op_Negation uu____8775) || + (let uu____8778 = FStar_TypeChecker_Env.is_trivial g in - Prims.op_Negation uu____8774) + Prims.op_Negation uu____8778) in - if uu____8767 + if uu____8771 then ret t1 else (let rewrite_eq = let typ = lcomp.FStar_Syntax_Syntax.res_typ in - let uu____8785 = new_uvar "pointwise_rec" env typ in - bind uu____8785 - (fun uu____8802 -> - match uu____8802 with + let uu____8789 = new_uvar "pointwise_rec" env typ in + bind uu____8789 + (fun uu____8806 -> + match uu____8806 with | (ut,uvar_ut) -> (log ps - (fun uu____8815 -> - let uu____8816 = + (fun uu____8819 -> + let uu____8820 = FStar_Syntax_Print.term_to_string t1 in - let uu____8818 = + let uu____8822 = FStar_Syntax_Print.term_to_string ut in FStar_Util.print2 "Pointwise_rec: making equality\n\t%s ==\n\t%s\n" - uu____8816 uu____8818); - (let uu____8821 = - let uu____8824 = - let uu____8825 = + uu____8820 uu____8822); + (let uu____8825 = + let uu____8828 = + let uu____8829 = FStar_TypeChecker_TcTerm.universe_of env typ in - FStar_Syntax_Util.mk_eq2 uu____8825 typ + FStar_Syntax_Util.mk_eq2 uu____8829 typ t1 ut in add_irrelevant_goal - "pointwise_rec equation" env uu____8824 + "pointwise_rec equation" env uu____8828 opts label1 in - bind uu____8821 - (fun uu____8829 -> - let uu____8830 = + bind uu____8825 + (fun uu____8833 -> + let uu____8834 = bind tau - (fun uu____8836 -> + (fun uu____8840 -> let ut1 = FStar_TypeChecker_Normalize.reduce_uvar_solutions env ut in log ps - (fun uu____8842 -> - let uu____8843 = + (fun uu____8846 -> + let uu____8847 = FStar_Syntax_Print.term_to_string t1 in - let uu____8845 = + let uu____8849 = FStar_Syntax_Print.term_to_string ut1 in FStar_Util.print2 "Pointwise_rec: succeeded rewriting\n\t%s to\n\t%s\n" - uu____8843 uu____8845); + uu____8847 uu____8849); ret ut1) in - focus uu____8830)))) + focus uu____8834)))) in - let uu____8848 = catch rewrite_eq in - bind uu____8848 + let uu____8852 = catch rewrite_eq in + bind uu____8852 (fun x -> match x with | FStar_Util.Inl (FStar_Tactics_Types.TacticFailure @@ -4660,49 +4664,49 @@ let rec (ctrl_tac_fold : then ret (t1, keepGoing) else k t1 in - let uu____9066 = FStar_Syntax_Subst.compress t in - maybe_continue ctrl uu____9066 + let uu____9070 = FStar_Syntax_Subst.compress t in + maybe_continue ctrl uu____9070 (fun t1 -> - let uu____9074 = + let uu____9078 = f env - (let uu___426_9083 = t1 in + (let uu___425_9087 = t1 in { FStar_Syntax_Syntax.n = (t1.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = - (uu___426_9083.FStar_Syntax_Syntax.pos); + (uu___425_9087.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___426_9083.FStar_Syntax_Syntax.vars) + (uu___425_9087.FStar_Syntax_Syntax.vars) }) in - bind uu____9074 - (fun uu____9099 -> - match uu____9099 with + bind uu____9078 + (fun uu____9103 -> + match uu____9103 with | (t2,ctrl1) -> maybe_continue ctrl1 t2 (fun t3 -> - let uu____9122 = - let uu____9123 = + let uu____9126 = + let uu____9127 = FStar_Syntax_Subst.compress t3 in - uu____9123.FStar_Syntax_Syntax.n in - match uu____9122 with + uu____9127.FStar_Syntax_Syntax.n in + match uu____9126 with | FStar_Syntax_Syntax.Tm_app (hd1,args) -> - let uu____9160 = + let uu____9164 = ctrl_tac_fold f env ctrl1 hd1 in - bind uu____9160 - (fun uu____9185 -> - match uu____9185 with + bind uu____9164 + (fun uu____9189 -> + match uu____9189 with | (hd2,ctrl2) -> let ctrl3 = keep_going ctrl2 in - let uu____9201 = + let uu____9205 = ctrl_tac_fold_args f env ctrl3 args in - bind uu____9201 - (fun uu____9228 -> - match uu____9228 with + bind uu____9205 + (fun uu____9232 -> + match uu____9232 with | (args1,ctrl4) -> ret - ((let uu___424_9258 = t3 + ((let uu___423_9262 = t3 in { FStar_Syntax_Syntax.n @@ -4711,61 +4715,61 @@ let rec (ctrl_tac_fold : (hd2, args1)); FStar_Syntax_Syntax.pos = - (uu___424_9258.FStar_Syntax_Syntax.pos); + (uu___423_9262.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___424_9258.FStar_Syntax_Syntax.vars) + (uu___423_9262.FStar_Syntax_Syntax.vars) }), ctrl4))) | FStar_Syntax_Syntax.Tm_abs (bs,t4,k) -> - let uu____9300 = + let uu____9304 = FStar_Syntax_Subst.open_term bs t4 in - (match uu____9300 with + (match uu____9304 with | (bs1,t') -> - let uu____9315 = - let uu____9322 = + let uu____9319 = + let uu____9326 = FStar_TypeChecker_Env.push_binders env bs1 in - ctrl_tac_fold f uu____9322 ctrl1 t' + ctrl_tac_fold f uu____9326 ctrl1 t' in - bind uu____9315 - (fun uu____9340 -> - match uu____9340 with + bind uu____9319 + (fun uu____9344 -> + match uu____9344 with | (t'',ctrl2) -> - let uu____9355 = - let uu____9362 = - let uu___425_9365 = t4 in - let uu____9368 = - let uu____9369 = - let uu____9388 = + let uu____9359 = + let uu____9366 = + let uu___424_9369 = t4 in + let uu____9372 = + let uu____9373 = + let uu____9392 = FStar_Syntax_Subst.close_binders bs1 in - let uu____9397 = + let uu____9401 = FStar_Syntax_Subst.close bs1 t'' in - (uu____9388, - uu____9397, k) + (uu____9392, + uu____9401, k) in FStar_Syntax_Syntax.Tm_abs - uu____9369 + uu____9373 in { FStar_Syntax_Syntax.n = - uu____9368; + uu____9372; FStar_Syntax_Syntax.pos = - (uu___425_9365.FStar_Syntax_Syntax.pos); + (uu___424_9369.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___425_9365.FStar_Syntax_Syntax.vars) + (uu___424_9369.FStar_Syntax_Syntax.vars) } in - (uu____9362, ctrl2) in - ret uu____9355)) + (uu____9366, ctrl2) in + ret uu____9359)) | FStar_Syntax_Syntax.Tm_arrow (bs,k) -> ret (t3, ctrl1) - | uu____9450 -> ret (t3, ctrl1)))) + | uu____9454 -> ret (t3, ctrl1)))) and (ctrl_tac_fold_args : (env -> FStar_Syntax_Syntax.term -> FStar_Syntax_Syntax.term ctrl_tac) -> @@ -4781,16 +4785,16 @@ and (ctrl_tac_fold_args : match ts with | [] -> ret ([], ctrl) | (t,q)::ts1 -> - let uu____9497 = ctrl_tac_fold f env ctrl t in - bind uu____9497 - (fun uu____9521 -> - match uu____9521 with + let uu____9501 = ctrl_tac_fold f env ctrl t in + bind uu____9501 + (fun uu____9525 -> + match uu____9525 with | (t1,ctrl1) -> - let uu____9536 = ctrl_tac_fold_args f env ctrl1 ts1 + let uu____9540 = ctrl_tac_fold_args f env ctrl1 ts1 in - bind uu____9536 - (fun uu____9563 -> - match uu____9563 with + bind uu____9540 + (fun uu____9567 -> + match uu____9567 with | (ts2,ctrl2) -> ret (((t1, q) :: ts2), ctrl2))) let (rewrite_rec : @@ -4810,197 +4814,197 @@ let (rewrite_rec : fun env -> fun t -> let t1 = FStar_Syntax_Subst.compress t in - let uu____9657 = - let uu____9665 = + let uu____9661 = + let uu____9669 = add_irrelevant_goal "dummy" env FStar_Syntax_Util.t_true opts label1 in - bind uu____9665 - (fun uu____9676 -> - let uu____9677 = ctrl t1 in - bind uu____9677 + bind uu____9669 + (fun uu____9680 -> + let uu____9681 = ctrl t1 in + bind uu____9681 (fun res -> - let uu____9704 = trivial () in - bind uu____9704 (fun uu____9713 -> ret res))) + let uu____9708 = trivial () in + bind uu____9708 (fun uu____9717 -> ret res))) in - bind uu____9657 - (fun uu____9731 -> - match uu____9731 with + bind uu____9661 + (fun uu____9735 -> + match uu____9735 with | (should_rewrite,ctrl1) -> if Prims.op_Negation should_rewrite then ret (t1, ctrl1) else - (let uu____9760 = + (let uu____9764 = FStar_TypeChecker_TcTerm.tc_term - (let uu___427_9769 = env in + (let uu___426_9773 = env in { FStar_TypeChecker_Env.solver = - (uu___427_9769.FStar_TypeChecker_Env.solver); + (uu___426_9773.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___427_9769.FStar_TypeChecker_Env.range); + (uu___426_9773.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___427_9769.FStar_TypeChecker_Env.curmodule); + (uu___426_9773.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___427_9769.FStar_TypeChecker_Env.gamma); + (uu___426_9773.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___427_9769.FStar_TypeChecker_Env.gamma_sig); + (uu___426_9773.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___427_9769.FStar_TypeChecker_Env.gamma_cache); + (uu___426_9773.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___427_9769.FStar_TypeChecker_Env.modules); + (uu___426_9773.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___427_9769.FStar_TypeChecker_Env.expected_typ); + (uu___426_9773.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___427_9769.FStar_TypeChecker_Env.sigtab); + (uu___426_9773.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___427_9769.FStar_TypeChecker_Env.attrtab); + (uu___426_9773.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___427_9769.FStar_TypeChecker_Env.is_pattern); + (uu___426_9773.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___427_9769.FStar_TypeChecker_Env.instantiate_imp); + (uu___426_9773.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___427_9769.FStar_TypeChecker_Env.effects); + (uu___426_9773.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___427_9769.FStar_TypeChecker_Env.generalize); + (uu___426_9773.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___427_9769.FStar_TypeChecker_Env.letrecs); + (uu___426_9773.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___427_9769.FStar_TypeChecker_Env.top_level); + (uu___426_9773.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___427_9769.FStar_TypeChecker_Env.check_uvars); + (uu___426_9773.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___427_9769.FStar_TypeChecker_Env.use_eq); + (uu___426_9773.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___427_9769.FStar_TypeChecker_Env.is_iface); + (uu___426_9773.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___427_9769.FStar_TypeChecker_Env.admit); + (uu___426_9773.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___427_9769.FStar_TypeChecker_Env.lax_universes); + (uu___426_9773.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___427_9769.FStar_TypeChecker_Env.phase1); + (uu___426_9773.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___427_9769.FStar_TypeChecker_Env.failhard); + (uu___426_9773.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___427_9769.FStar_TypeChecker_Env.nosynth); + (uu___426_9773.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___427_9769.FStar_TypeChecker_Env.uvar_subtyping); + (uu___426_9773.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___427_9769.FStar_TypeChecker_Env.tc_term); + (uu___426_9773.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___427_9769.FStar_TypeChecker_Env.type_of); + (uu___426_9773.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___427_9769.FStar_TypeChecker_Env.universe_of); + (uu___426_9773.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___427_9769.FStar_TypeChecker_Env.check_type_of); + (uu___426_9773.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___427_9769.FStar_TypeChecker_Env.use_bv_sorts); + (uu___426_9773.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___427_9769.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___426_9773.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___427_9769.FStar_TypeChecker_Env.normalized_eff_names); + (uu___426_9773.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___427_9769.FStar_TypeChecker_Env.fv_delta_depths); + (uu___426_9773.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___427_9769.FStar_TypeChecker_Env.proof_ns); + (uu___426_9773.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___427_9769.FStar_TypeChecker_Env.synth_hook); + (uu___426_9773.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___427_9769.FStar_TypeChecker_Env.splice); + (uu___426_9773.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___427_9769.FStar_TypeChecker_Env.postprocess); + (uu___426_9773.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___427_9769.FStar_TypeChecker_Env.is_native_tactic); + (uu___426_9773.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___427_9769.FStar_TypeChecker_Env.identifier_info); + (uu___426_9773.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___427_9769.FStar_TypeChecker_Env.tc_hooks); + (uu___426_9773.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___427_9769.FStar_TypeChecker_Env.dsenv); + (uu___426_9773.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___427_9769.FStar_TypeChecker_Env.nbe) + (uu___426_9773.FStar_TypeChecker_Env.nbe) }) t1 in - match uu____9760 with + match uu____9764 with | (t2,lcomp,g) -> - let uu____9780 = - (let uu____9784 = + let uu____9784 = + (let uu____9788 = FStar_Syntax_Util.is_pure_or_ghost_lcomp lcomp in - Prims.op_Negation uu____9784) || - (let uu____9787 = + Prims.op_Negation uu____9788) || + (let uu____9791 = FStar_TypeChecker_Env.is_trivial g in - Prims.op_Negation uu____9787) + Prims.op_Negation uu____9791) in - if uu____9780 + if uu____9784 then ret (t2, globalStop) else (let typ = lcomp.FStar_Syntax_Syntax.res_typ in - let uu____9803 = + let uu____9807 = new_uvar "pointwise_rec" env typ in - bind uu____9803 - (fun uu____9824 -> - match uu____9824 with + bind uu____9807 + (fun uu____9828 -> + match uu____9828 with | (ut,uvar_ut) -> (log ps - (fun uu____9841 -> - let uu____9842 = + (fun uu____9845 -> + let uu____9846 = FStar_Syntax_Print.term_to_string t2 in - let uu____9844 = + let uu____9848 = FStar_Syntax_Print.term_to_string ut in FStar_Util.print2 "Pointwise_rec: making equality\n\t%s ==\n\t%s\n" - uu____9842 uu____9844); - (let uu____9847 = - let uu____9850 = - let uu____9851 = + uu____9846 uu____9848); + (let uu____9851 = + let uu____9854 = + let uu____9855 = FStar_TypeChecker_TcTerm.universe_of env typ in FStar_Syntax_Util.mk_eq2 - uu____9851 typ t2 ut + uu____9855 typ t2 ut in add_irrelevant_goal "rewrite_rec equation" env - uu____9850 opts label1 + uu____9854 opts label1 in - bind uu____9847 - (fun uu____9859 -> - let uu____9860 = + bind uu____9851 + (fun uu____9863 -> + let uu____9864 = bind rewriter - (fun uu____9874 -> + (fun uu____9878 -> let ut1 = FStar_TypeChecker_Normalize.reduce_uvar_solutions env ut in log ps - (fun uu____9880 + (fun uu____9884 -> - let uu____9881 + let uu____9885 = FStar_Syntax_Print.term_to_string t2 in - let uu____9883 + let uu____9887 = FStar_Syntax_Print.term_to_string ut1 in FStar_Util.print2 "rewrite_rec: succeeded rewriting\n\t%s to\n\t%s\n" - uu____9881 - uu____9883); + uu____9885 + uu____9887); ret (ut1, ctrl1)) in - focus uu____9860))))))) + focus uu____9864))))))) let (topdown_rewrite : (FStar_Syntax_Syntax.term -> @@ -5009,248 +5013,248 @@ let (topdown_rewrite : = fun ctrl -> fun rewriter -> - let uu____9929 = + let uu____9933 = bind get (fun ps -> - let uu____9939 = + let uu____9943 = match ps.FStar_Tactics_Types.goals with | g::gs -> (g, gs) | [] -> failwith "no goals" in - match uu____9939 with + match uu____9943 with | (g,gs) -> let gt1 = FStar_Tactics_Types.goal_type g in (log ps - (fun uu____9977 -> - let uu____9978 = FStar_Syntax_Print.term_to_string gt1 + (fun uu____9981 -> + let uu____9982 = FStar_Syntax_Print.term_to_string gt1 in FStar_Util.print1 "Topdown_rewrite starting with %s\n" - uu____9978); + uu____9982); bind dismiss_all - (fun uu____9983 -> - let uu____9984 = - let uu____9991 = FStar_Tactics_Types.goal_env g in + (fun uu____9987 -> + let uu____9988 = + let uu____9995 = FStar_Tactics_Types.goal_env g in ctrl_tac_fold (rewrite_rec ps ctrl rewriter g.FStar_Tactics_Types.opts - g.FStar_Tactics_Types.label) uu____9991 + g.FStar_Tactics_Types.label) uu____9995 keepGoing gt1 in - bind uu____9984 - (fun uu____10003 -> - match uu____10003 with - | (gt',uu____10011) -> + bind uu____9988 + (fun uu____10007 -> + match uu____10007 with + | (gt',uu____10015) -> (log ps - (fun uu____10015 -> - let uu____10016 = + (fun uu____10019 -> + let uu____10020 = FStar_Syntax_Print.term_to_string gt' in FStar_Util.print1 "Topdown_rewrite seems to have succeded with %s\n" - uu____10016); - (let uu____10019 = push_goals gs in - bind uu____10019 - (fun uu____10024 -> - let uu____10025 = - let uu____10028 = + uu____10020); + (let uu____10023 = push_goals gs in + bind uu____10023 + (fun uu____10028 -> + let uu____10029 = + let uu____10032 = FStar_Tactics_Types.goal_with_type g gt' in - [uu____10028] in - add_goals uu____10025))))))) + [uu____10032] in + add_goals uu____10029))))))) in - FStar_All.pipe_left (wrap_err "topdown_rewrite") uu____9929 + FStar_All.pipe_left (wrap_err "topdown_rewrite") uu____9933 let (pointwise : FStar_Tactics_Types.direction -> unit tac -> unit tac) = fun d -> fun tau -> - let uu____10053 = + let uu____10057 = bind get (fun ps -> - let uu____10063 = + let uu____10067 = match ps.FStar_Tactics_Types.goals with | g::gs -> (g, gs) | [] -> failwith "no goals" in - match uu____10063 with + match uu____10067 with | (g,gs) -> let gt1 = FStar_Tactics_Types.goal_type g in (log ps - (fun uu____10101 -> - let uu____10102 = + (fun uu____10105 -> + let uu____10106 = FStar_Syntax_Print.term_to_string gt1 in FStar_Util.print1 "Pointwise starting with %s\n" - uu____10102); + uu____10106); bind dismiss_all - (fun uu____10107 -> - let uu____10108 = - let uu____10111 = FStar_Tactics_Types.goal_env g in + (fun uu____10111 -> + let uu____10112 = + let uu____10115 = FStar_Tactics_Types.goal_env g in tac_fold_env d (pointwise_rec ps tau g.FStar_Tactics_Types.opts - g.FStar_Tactics_Types.label) uu____10111 gt1 + g.FStar_Tactics_Types.label) uu____10115 gt1 in - bind uu____10108 + bind uu____10112 (fun gt' -> log ps - (fun uu____10119 -> - let uu____10120 = + (fun uu____10123 -> + let uu____10124 = FStar_Syntax_Print.term_to_string gt' in FStar_Util.print1 "Pointwise seems to have succeded with %s\n" - uu____10120); - (let uu____10123 = push_goals gs in - bind uu____10123 - (fun uu____10128 -> - let uu____10129 = - let uu____10132 = + uu____10124); + (let uu____10127 = push_goals gs in + bind uu____10127 + (fun uu____10132 -> + let uu____10133 = + let uu____10136 = FStar_Tactics_Types.goal_with_type g gt' in - [uu____10132] in - add_goals uu____10129)))))) + [uu____10136] in + add_goals uu____10133)))))) in - FStar_All.pipe_left (wrap_err "pointwise") uu____10053 + FStar_All.pipe_left (wrap_err "pointwise") uu____10057 let (trefl : unit -> unit tac) = - fun uu____10145 -> - let uu____10148 = - let uu____10151 = cur_goal () in - bind uu____10151 + fun uu____10149 -> + let uu____10152 = + let uu____10155 = cur_goal () in + bind uu____10155 (fun g -> - let uu____10169 = - let uu____10174 = FStar_Tactics_Types.goal_type g in - FStar_Syntax_Util.un_squash uu____10174 in - match uu____10169 with + let uu____10173 = + let uu____10178 = FStar_Tactics_Types.goal_type g in + FStar_Syntax_Util.un_squash uu____10178 in + match uu____10173 with | FStar_Pervasives_Native.Some t -> - let uu____10182 = FStar_Syntax_Util.head_and_args' t in - (match uu____10182 with + let uu____10186 = FStar_Syntax_Util.head_and_args' t in + (match uu____10186 with | (hd1,args) -> - let uu____10221 = - let uu____10234 = - let uu____10235 = FStar_Syntax_Util.un_uinst hd1 in - uu____10235.FStar_Syntax_Syntax.n in - (uu____10234, args) in - (match uu____10221 with + let uu____10225 = + let uu____10238 = + let uu____10239 = FStar_Syntax_Util.un_uinst hd1 in + uu____10239.FStar_Syntax_Syntax.n in + (uu____10238, args) in + (match uu____10225 with | (FStar_Syntax_Syntax.Tm_fvar - fv,uu____10249::(l,uu____10251)::(r,uu____10253)::[]) + fv,uu____10253::(l,uu____10255)::(r,uu____10257)::[]) when FStar_Syntax_Syntax.fv_eq_lid fv FStar_Parser_Const.eq2_lid -> - let uu____10300 = - let uu____10304 = FStar_Tactics_Types.goal_env g + let uu____10304 = + let uu____10308 = FStar_Tactics_Types.goal_env g in - do_unify uu____10304 l r in - bind uu____10300 + do_unify uu____10308 l r in + bind uu____10304 (fun b -> if b then solve' g FStar_Syntax_Util.exp_unit else (let l1 = - let uu____10315 = + let uu____10319 = FStar_Tactics_Types.goal_env g in FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.UnfoldUntil FStar_Syntax_Syntax.delta_constant; FStar_TypeChecker_Env.Primops; FStar_TypeChecker_Env.UnfoldTac] - uu____10315 l + uu____10319 l in let r1 = - let uu____10317 = + let uu____10321 = FStar_Tactics_Types.goal_env g in FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.UnfoldUntil FStar_Syntax_Syntax.delta_constant; FStar_TypeChecker_Env.Primops; FStar_TypeChecker_Env.UnfoldTac] - uu____10317 r + uu____10321 r in - let uu____10318 = - let uu____10322 = + let uu____10322 = + let uu____10326 = FStar_Tactics_Types.goal_env g in - do_unify uu____10322 l1 r1 in - bind uu____10318 + do_unify uu____10326 l1 r1 in + bind uu____10322 (fun b1 -> if b1 then solve' g FStar_Syntax_Util.exp_unit else - (let uu____10332 = - let uu____10334 = + (let uu____10336 = + let uu____10338 = FStar_Tactics_Types.goal_env g in - tts uu____10334 l1 in - let uu____10335 = - let uu____10337 = + tts uu____10338 l1 in + let uu____10339 = + let uu____10341 = FStar_Tactics_Types.goal_env g in - tts uu____10337 r1 in + tts uu____10341 r1 in fail2 "not a trivial equality ((%s) vs (%s))" - uu____10332 uu____10335)))) - | (hd2,uu____10340) -> - let uu____10357 = - let uu____10359 = FStar_Tactics_Types.goal_env g + uu____10336 uu____10339)))) + | (hd2,uu____10344) -> + let uu____10361 = + let uu____10363 = FStar_Tactics_Types.goal_env g in - tts uu____10359 t in - fail1 "trefl: not an equality (%s)" uu____10357)) + tts uu____10363 t in + fail1 "trefl: not an equality (%s)" uu____10361)) | FStar_Pervasives_Native.None -> fail "not an irrelevant goal") in - FStar_All.pipe_left (wrap_err "trefl") uu____10148 + FStar_All.pipe_left (wrap_err "trefl") uu____10152 let (dup : unit -> unit tac) = - fun uu____10376 -> - let uu____10379 = cur_goal () in - bind uu____10379 + fun uu____10380 -> + let uu____10383 = cur_goal () in + bind uu____10383 (fun g -> - let uu____10385 = - let uu____10392 = FStar_Tactics_Types.goal_env g in - let uu____10393 = FStar_Tactics_Types.goal_type g in - new_uvar "dup" uu____10392 uu____10393 in - bind uu____10385 - (fun uu____10403 -> - match uu____10403 with + let uu____10389 = + let uu____10396 = FStar_Tactics_Types.goal_env g in + let uu____10397 = FStar_Tactics_Types.goal_type g in + new_uvar "dup" uu____10396 uu____10397 in + bind uu____10389 + (fun uu____10407 -> + match uu____10407 with | (u,u_uvar) -> let g' = - let uu___428_10413 = g in + let uu___427_10417 = g in { FStar_Tactics_Types.goal_main_env = - (uu___428_10413.FStar_Tactics_Types.goal_main_env); + (uu___427_10417.FStar_Tactics_Types.goal_main_env); FStar_Tactics_Types.goal_ctx_uvar = u_uvar; FStar_Tactics_Types.opts = - (uu___428_10413.FStar_Tactics_Types.opts); + (uu___427_10417.FStar_Tactics_Types.opts); FStar_Tactics_Types.is_guard = - (uu___428_10413.FStar_Tactics_Types.is_guard); + (uu___427_10417.FStar_Tactics_Types.is_guard); FStar_Tactics_Types.label = - (uu___428_10413.FStar_Tactics_Types.label) + (uu___427_10417.FStar_Tactics_Types.label) } in bind __dismiss - (fun uu____10416 -> - let uu____10417 = - let uu____10420 = FStar_Tactics_Types.goal_env g in - let uu____10421 = - let uu____10422 = - let uu____10423 = FStar_Tactics_Types.goal_env g + (fun uu____10420 -> + let uu____10421 = + let uu____10424 = FStar_Tactics_Types.goal_env g in + let uu____10425 = + let uu____10426 = + let uu____10427 = FStar_Tactics_Types.goal_env g in - let uu____10424 = + let uu____10428 = FStar_Tactics_Types.goal_type g in - FStar_TypeChecker_TcTerm.universe_of uu____10423 - uu____10424 + FStar_TypeChecker_TcTerm.universe_of uu____10427 + uu____10428 in - let uu____10425 = FStar_Tactics_Types.goal_type g + let uu____10429 = FStar_Tactics_Types.goal_type g in - let uu____10426 = + let uu____10430 = FStar_Tactics_Types.goal_witness g in - FStar_Syntax_Util.mk_eq2 uu____10422 uu____10425 u - uu____10426 + FStar_Syntax_Util.mk_eq2 uu____10426 uu____10429 u + uu____10430 in - add_irrelevant_goal "dup equation" uu____10420 - uu____10421 g.FStar_Tactics_Types.opts + add_irrelevant_goal "dup equation" uu____10424 + uu____10425 g.FStar_Tactics_Types.opts g.FStar_Tactics_Types.label in - bind uu____10417 - (fun uu____10430 -> - let uu____10431 = add_goals [g'] in - bind uu____10431 (fun uu____10435 -> ret ()))))) + bind uu____10421 + (fun uu____10434 -> + let uu____10435 = add_goals [g'] in + bind uu____10435 (fun uu____10439 -> ret ()))))) let rec longest_prefix : 'a . @@ -5266,11 +5270,11 @@ let rec longest_prefix : let rec aux acc l11 l21 = match (l11, l21) with | (x::xs,y::ys) -> - let uu____10561 = f x y in - if uu____10561 then aux (x :: acc) xs ys else (acc, xs, ys) - | uu____10584 -> (acc, l11, l21) in - let uu____10599 = aux [] l1 l2 in - match uu____10599 with | (pr,t1,t2) -> ((FStar_List.rev pr), t1, t2) + let uu____10565 = f x y in + if uu____10565 then aux (x :: acc) xs ys else (acc, xs, ys) + | uu____10588 -> (acc, l11, l21) in + let uu____10603 = aux [] l1 l2 in + match uu____10603 with | (pr,t1,t2) -> ((FStar_List.rev pr), t1, t2) let (join_goals : FStar_Tactics_Types.goal -> @@ -5285,12 +5289,12 @@ let (join_goals : FStar_Syntax_Util.mk_forall_no_univ (FStar_Pervasives_Native.fst b) f1) bs f in - let uu____10705 = get_phi g1 in - match uu____10705 with + let uu____10709 = get_phi g1 in + match uu____10709 with | FStar_Pervasives_Native.None -> fail "goal 1 is not irrelevant" | FStar_Pervasives_Native.Some phi1 -> - let uu____10712 = get_phi g2 in - (match uu____10712 with + let uu____10716 = get_phi g2 in + (match uu____10716 with | FStar_Pervasives_Native.None -> fail "goal 2 is not irrelevant" | FStar_Pervasives_Native.Some phi2 -> let gamma1 = @@ -5299,191 +5303,191 @@ let (join_goals : let gamma2 = (g2.FStar_Tactics_Types.goal_ctx_uvar).FStar_Syntax_Syntax.ctx_uvar_gamma in - let uu____10725 = + let uu____10729 = longest_prefix FStar_Syntax_Syntax.eq_binding (FStar_List.rev gamma1) (FStar_List.rev gamma2) in - (match uu____10725 with + (match uu____10729 with | (gamma,r1,r2) -> let t1 = - let uu____10756 = + let uu____10760 = FStar_TypeChecker_Env.binders_of_bindings (FStar_List.rev r1) in - close_forall_no_univs1 uu____10756 phi1 in + close_forall_no_univs1 uu____10760 phi1 in let t2 = - let uu____10766 = + let uu____10770 = FStar_TypeChecker_Env.binders_of_bindings (FStar_List.rev r2) in - close_forall_no_univs1 uu____10766 phi2 in - let uu____10775 = + close_forall_no_univs1 uu____10770 phi2 in + let uu____10779 = set_solution g1 FStar_Syntax_Util.exp_unit in - bind uu____10775 - (fun uu____10780 -> - let uu____10781 = + bind uu____10779 + (fun uu____10784 -> + let uu____10785 = set_solution g2 FStar_Syntax_Util.exp_unit in - bind uu____10781 - (fun uu____10788 -> + bind uu____10785 + (fun uu____10792 -> let ng = FStar_Syntax_Util.mk_conj t1 t2 in let nenv = - let uu___429_10793 = + let uu___428_10797 = FStar_Tactics_Types.goal_env g1 in - let uu____10794 = + let uu____10798 = FStar_Util.smap_create (Prims.parse_int "100") in { FStar_TypeChecker_Env.solver = - (uu___429_10793.FStar_TypeChecker_Env.solver); + (uu___428_10797.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___429_10793.FStar_TypeChecker_Env.range); + (uu___428_10797.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___429_10793.FStar_TypeChecker_Env.curmodule); + (uu___428_10797.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = (FStar_List.rev gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___429_10793.FStar_TypeChecker_Env.gamma_sig); + (uu___428_10797.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - uu____10794; + uu____10798; FStar_TypeChecker_Env.modules = - (uu___429_10793.FStar_TypeChecker_Env.modules); + (uu___428_10797.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___429_10793.FStar_TypeChecker_Env.expected_typ); + (uu___428_10797.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___429_10793.FStar_TypeChecker_Env.sigtab); + (uu___428_10797.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___429_10793.FStar_TypeChecker_Env.attrtab); + (uu___428_10797.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___429_10793.FStar_TypeChecker_Env.is_pattern); + (uu___428_10797.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___429_10793.FStar_TypeChecker_Env.instantiate_imp); + (uu___428_10797.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___429_10793.FStar_TypeChecker_Env.effects); + (uu___428_10797.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___429_10793.FStar_TypeChecker_Env.generalize); + (uu___428_10797.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___429_10793.FStar_TypeChecker_Env.letrecs); + (uu___428_10797.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___429_10793.FStar_TypeChecker_Env.top_level); + (uu___428_10797.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___429_10793.FStar_TypeChecker_Env.check_uvars); + (uu___428_10797.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___429_10793.FStar_TypeChecker_Env.use_eq); + (uu___428_10797.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___429_10793.FStar_TypeChecker_Env.is_iface); + (uu___428_10797.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___429_10793.FStar_TypeChecker_Env.admit); + (uu___428_10797.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___429_10793.FStar_TypeChecker_Env.lax); + (uu___428_10797.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___429_10793.FStar_TypeChecker_Env.lax_universes); + (uu___428_10797.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___429_10793.FStar_TypeChecker_Env.phase1); + (uu___428_10797.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___429_10793.FStar_TypeChecker_Env.failhard); + (uu___428_10797.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___429_10793.FStar_TypeChecker_Env.nosynth); + (uu___428_10797.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___429_10793.FStar_TypeChecker_Env.uvar_subtyping); + (uu___428_10797.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___429_10793.FStar_TypeChecker_Env.tc_term); + (uu___428_10797.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___429_10793.FStar_TypeChecker_Env.type_of); + (uu___428_10797.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___429_10793.FStar_TypeChecker_Env.universe_of); + (uu___428_10797.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___429_10793.FStar_TypeChecker_Env.check_type_of); + (uu___428_10797.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___429_10793.FStar_TypeChecker_Env.use_bv_sorts); + (uu___428_10797.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___429_10793.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___428_10797.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___429_10793.FStar_TypeChecker_Env.normalized_eff_names); + (uu___428_10797.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___429_10793.FStar_TypeChecker_Env.fv_delta_depths); + (uu___428_10797.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___429_10793.FStar_TypeChecker_Env.proof_ns); + (uu___428_10797.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___429_10793.FStar_TypeChecker_Env.synth_hook); + (uu___428_10797.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___429_10793.FStar_TypeChecker_Env.splice); + (uu___428_10797.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___429_10793.FStar_TypeChecker_Env.postprocess); + (uu___428_10797.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___429_10793.FStar_TypeChecker_Env.is_native_tactic); + (uu___428_10797.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___429_10793.FStar_TypeChecker_Env.identifier_info); + (uu___428_10797.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___429_10793.FStar_TypeChecker_Env.tc_hooks); + (uu___428_10797.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___429_10793.FStar_TypeChecker_Env.dsenv); + (uu___428_10797.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___429_10793.FStar_TypeChecker_Env.nbe) + (uu___428_10797.FStar_TypeChecker_Env.nbe) } in - let uu____10798 = + let uu____10802 = mk_irrelevant_goal "joined" nenv ng g1.FStar_Tactics_Types.opts g1.FStar_Tactics_Types.label in - bind uu____10798 + bind uu____10802 (fun goal -> mlog - (fun uu____10808 -> - let uu____10809 = + (fun uu____10812 -> + let uu____10813 = goal_to_string_verbose g1 in - let uu____10811 = + let uu____10815 = goal_to_string_verbose g2 in - let uu____10813 = + let uu____10817 = goal_to_string_verbose goal in FStar_Util.print3 "join_goals of\n(%s)\nand\n(%s)\n= (%s)\n" - uu____10809 uu____10811 uu____10813) - (fun uu____10817 -> ret goal)))))) + uu____10813 uu____10815 uu____10817) + (fun uu____10821 -> ret goal)))))) let (join : unit -> unit tac) = - fun uu____10825 -> + fun uu____10829 -> bind get (fun ps -> match ps.FStar_Tactics_Types.goals with | g1::g2::gs -> - let uu____10841 = + let uu____10845 = set - (let uu___430_10846 = ps in + (let uu___429_10850 = ps in { FStar_Tactics_Types.main_context = - (uu___430_10846.FStar_Tactics_Types.main_context); + (uu___429_10850.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___430_10846.FStar_Tactics_Types.main_goal); + (uu___429_10850.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = - (uu___430_10846.FStar_Tactics_Types.all_implicits); + (uu___429_10850.FStar_Tactics_Types.all_implicits); FStar_Tactics_Types.goals = gs; FStar_Tactics_Types.smt_goals = - (uu___430_10846.FStar_Tactics_Types.smt_goals); + (uu___429_10850.FStar_Tactics_Types.smt_goals); FStar_Tactics_Types.depth = - (uu___430_10846.FStar_Tactics_Types.depth); + (uu___429_10850.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___430_10846.FStar_Tactics_Types.__dump); + (uu___429_10850.FStar_Tactics_Types.__dump); FStar_Tactics_Types.psc = - (uu___430_10846.FStar_Tactics_Types.psc); + (uu___429_10850.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___430_10846.FStar_Tactics_Types.entry_range); + (uu___429_10850.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = - (uu___430_10846.FStar_Tactics_Types.guard_policy); + (uu___429_10850.FStar_Tactics_Types.guard_policy); FStar_Tactics_Types.freshness = - (uu___430_10846.FStar_Tactics_Types.freshness); + (uu___429_10850.FStar_Tactics_Types.freshness); FStar_Tactics_Types.tac_verb_dbg = - (uu___430_10846.FStar_Tactics_Types.tac_verb_dbg); + (uu___429_10850.FStar_Tactics_Types.tac_verb_dbg); FStar_Tactics_Types.local_state = - (uu___430_10846.FStar_Tactics_Types.local_state) + (uu___429_10850.FStar_Tactics_Types.local_state) }) in - bind uu____10841 - (fun uu____10849 -> - let uu____10850 = join_goals g1 g2 in - bind uu____10850 (fun g12 -> add_goals [g12])) - | uu____10855 -> fail "join: less than 2 goals") + bind uu____10845 + (fun uu____10853 -> + let uu____10854 = join_goals g1 g2 in + bind uu____10854 (fun g12 -> add_goals [g12])) + | uu____10859 -> fail "join: less than 2 goals") let (cases : FStar_Syntax_Syntax.term -> @@ -5491,29 +5495,29 @@ let (cases : FStar_Pervasives_Native.tuple2 tac) = fun t -> - let uu____10877 = - let uu____10884 = cur_goal () in - bind uu____10884 + let uu____10881 = + let uu____10888 = cur_goal () in + bind uu____10888 (fun g -> - let uu____10894 = - let uu____10903 = FStar_Tactics_Types.goal_env g in - __tc uu____10903 t in - bind uu____10894 - (fun uu____10931 -> - match uu____10931 with + let uu____10898 = + let uu____10907 = FStar_Tactics_Types.goal_env g in + __tc uu____10907 t in + bind uu____10898 + (fun uu____10935 -> + match uu____10935 with | (t1,typ,guard) -> - let uu____10947 = FStar_Syntax_Util.head_and_args typ in - (match uu____10947 with + let uu____10951 = FStar_Syntax_Util.head_and_args typ in + (match uu____10951 with | (hd1,args) -> - let uu____10996 = - let uu____11011 = - let uu____11012 = FStar_Syntax_Util.un_uinst hd1 + let uu____11000 = + let uu____11015 = + let uu____11016 = FStar_Syntax_Util.un_uinst hd1 in - uu____11012.FStar_Syntax_Syntax.n in - (uu____11011, args) in - (match uu____10996 with + uu____11016.FStar_Syntax_Syntax.n in + (uu____11015, args) in + (match uu____11000 with | (FStar_Syntax_Syntax.Tm_fvar - fv,(p,uu____11033)::(q,uu____11035)::[]) when + fv,(p,uu____11037)::(q,uu____11039)::[]) when FStar_Syntax_Syntax.fv_eq_lid fv FStar_Parser_Const.or_lid -> @@ -5526,77 +5530,77 @@ let (cases : FStar_Pervasives_Native.None q in let g1 = - let uu____11089 = - let uu____11090 = + let uu____11093 = + let uu____11094 = FStar_Tactics_Types.goal_env g in - FStar_TypeChecker_Env.push_bv uu____11090 + FStar_TypeChecker_Env.push_bv uu____11094 v_p in FStar_Tactics_Types.goal_with_env g - uu____11089 + uu____11093 in let g2 = - let uu____11092 = - let uu____11093 = + let uu____11096 = + let uu____11097 = FStar_Tactics_Types.goal_env g in - FStar_TypeChecker_Env.push_bv uu____11093 + FStar_TypeChecker_Env.push_bv uu____11097 v_q in FStar_Tactics_Types.goal_with_env g - uu____11092 + uu____11096 in bind __dismiss - (fun uu____11100 -> - let uu____11101 = add_goals [g1; g2] in - bind uu____11101 - (fun uu____11110 -> - let uu____11111 = - let uu____11116 = + (fun uu____11104 -> + let uu____11105 = add_goals [g1; g2] in + bind uu____11105 + (fun uu____11114 -> + let uu____11115 = + let uu____11120 = FStar_Syntax_Syntax.bv_to_name v_p in - let uu____11117 = + let uu____11121 = FStar_Syntax_Syntax.bv_to_name v_q in - (uu____11116, uu____11117) in - ret uu____11111)) - | uu____11122 -> - let uu____11137 = - let uu____11139 = + (uu____11120, uu____11121) in + ret uu____11115)) + | uu____11126 -> + let uu____11141 = + let uu____11143 = FStar_Tactics_Types.goal_env g in - tts uu____11139 typ in - fail1 "Not a disjunction: %s" uu____11137)))) + tts uu____11143 typ in + fail1 "Not a disjunction: %s" uu____11141)))) in - FStar_All.pipe_left (wrap_err "cases") uu____10877 + FStar_All.pipe_left (wrap_err "cases") uu____10881 let (set_options : Prims.string -> unit tac) = fun s -> - let uu____11174 = - let uu____11177 = cur_goal () in - bind uu____11177 + let uu____11178 = + let uu____11181 = cur_goal () in + bind uu____11181 (fun g -> FStar_Options.push (); - (let uu____11190 = FStar_Util.smap_copy g.FStar_Tactics_Types.opts + (let uu____11194 = FStar_Util.smap_copy g.FStar_Tactics_Types.opts in - FStar_Options.set uu____11190); + FStar_Options.set uu____11194); (let res = FStar_Options.set_options FStar_Options.Set s in let opts' = FStar_Options.peek () in FStar_Options.pop (); (match res with | FStar_Getopt.Success -> let g' = - let uu___431_11197 = g in + let uu___430_11201 = g in { FStar_Tactics_Types.goal_main_env = - (uu___431_11197.FStar_Tactics_Types.goal_main_env); + (uu___430_11201.FStar_Tactics_Types.goal_main_env); FStar_Tactics_Types.goal_ctx_uvar = - (uu___431_11197.FStar_Tactics_Types.goal_ctx_uvar); + (uu___430_11201.FStar_Tactics_Types.goal_ctx_uvar); FStar_Tactics_Types.opts = opts'; FStar_Tactics_Types.is_guard = - (uu___431_11197.FStar_Tactics_Types.is_guard); + (uu___430_11201.FStar_Tactics_Types.is_guard); FStar_Tactics_Types.label = - (uu___431_11197.FStar_Tactics_Types.label) + (uu___430_11201.FStar_Tactics_Types.label) } in replace_cur g' | FStar_Getopt.Error err -> @@ -5604,24 +5608,24 @@ let (set_options : Prims.string -> unit tac) = | FStar_Getopt.Help -> fail1 "Setting options `%s` failed (got `Help`?)" s))) in - FStar_All.pipe_left (wrap_err "set_options") uu____11174 + FStar_All.pipe_left (wrap_err "set_options") uu____11178 let (top_env : unit -> env tac) = - fun uu____11214 -> + fun uu____11218 -> bind get (fun ps -> FStar_All.pipe_left ret ps.FStar_Tactics_Types.main_context) let (lax_on : unit -> Prims.bool tac) = - fun uu____11229 -> - let uu____11233 = cur_goal () in - bind uu____11233 + fun uu____11233 -> + let uu____11237 = cur_goal () in + bind uu____11237 (fun g -> - let uu____11240 = + let uu____11244 = (FStar_Options.lax ()) || - (let uu____11243 = FStar_Tactics_Types.goal_env g in - uu____11243.FStar_TypeChecker_Env.lax) + (let uu____11247 = FStar_Tactics_Types.goal_env g in + uu____11247.FStar_TypeChecker_Env.lax) in - ret uu____11240) + ret uu____11244) let (unquote : FStar_Reflection_Data.typ -> @@ -5629,44 +5633,44 @@ let (unquote : = fun ty -> fun tm -> - let uu____11260 = + let uu____11264 = mlog - (fun uu____11265 -> - let uu____11266 = FStar_Syntax_Print.term_to_string tm in - FStar_Util.print1 "unquote: tm = %s\n" uu____11266) - (fun uu____11271 -> - let uu____11272 = cur_goal () in - bind uu____11272 + (fun uu____11269 -> + let uu____11270 = FStar_Syntax_Print.term_to_string tm in + FStar_Util.print1 "unquote: tm = %s\n" uu____11270) + (fun uu____11275 -> + let uu____11276 = cur_goal () in + bind uu____11276 (fun goal -> let env = - let uu____11280 = FStar_Tactics_Types.goal_env goal in - FStar_TypeChecker_Env.set_expected_typ uu____11280 ty in - let uu____11281 = __tc_ghost env tm in - bind uu____11281 - (fun uu____11300 -> - match uu____11300 with + let uu____11284 = FStar_Tactics_Types.goal_env goal in + FStar_TypeChecker_Env.set_expected_typ uu____11284 ty in + let uu____11285 = __tc_ghost env tm in + bind uu____11285 + (fun uu____11304 -> + match uu____11304 with | (tm1,typ,guard) -> mlog - (fun uu____11314 -> - let uu____11315 = + (fun uu____11318 -> + let uu____11319 = FStar_Syntax_Print.term_to_string tm1 in FStar_Util.print1 "unquote: tm' = %s\n" - uu____11315) - (fun uu____11319 -> + uu____11319) + (fun uu____11323 -> mlog - (fun uu____11322 -> - let uu____11323 = + (fun uu____11326 -> + let uu____11327 = FStar_Syntax_Print.term_to_string typ in FStar_Util.print1 "unquote: typ = %s\n" - uu____11323) - (fun uu____11328 -> - let uu____11329 = + uu____11327) + (fun uu____11332 -> + let uu____11333 = proc_guard "unquote" env guard in - bind uu____11329 - (fun uu____11334 -> ret tm1)))))) + bind uu____11333 + (fun uu____11338 -> ret tm1)))))) in - FStar_All.pipe_left (wrap_err "unquote") uu____11260 + FStar_All.pipe_left (wrap_err "unquote") uu____11264 let (uvar_env : env -> @@ -5675,143 +5679,143 @@ let (uvar_env : = fun env -> fun ty -> - let uu____11359 = + let uu____11363 = match ty with | FStar_Pervasives_Native.Some ty1 -> ret ty1 | FStar_Pervasives_Native.None -> - let uu____11365 = - let uu____11372 = - let uu____11373 = FStar_Syntax_Util.type_u () in - FStar_All.pipe_left FStar_Pervasives_Native.fst uu____11373 + let uu____11369 = + let uu____11376 = + let uu____11377 = FStar_Syntax_Util.type_u () in + FStar_All.pipe_left FStar_Pervasives_Native.fst uu____11377 in - new_uvar "uvar_env.2" env uu____11372 in - bind uu____11365 - (fun uu____11390 -> - match uu____11390 with | (typ,uvar_typ) -> ret typ) + new_uvar "uvar_env.2" env uu____11376 in + bind uu____11369 + (fun uu____11394 -> + match uu____11394 with | (typ,uvar_typ) -> ret typ) in - bind uu____11359 + bind uu____11363 (fun typ -> - let uu____11402 = new_uvar "uvar_env" env typ in - bind uu____11402 - (fun uu____11417 -> - match uu____11417 with | (t,uvar_t) -> ret t)) + let uu____11406 = new_uvar "uvar_env" env typ in + bind uu____11406 + (fun uu____11421 -> + match uu____11421 with | (t,uvar_t) -> ret t)) let (unshelve : FStar_Syntax_Syntax.term -> unit tac) = fun t -> - let uu____11436 = + let uu____11440 = bind get (fun ps -> let env = ps.FStar_Tactics_Types.main_context in let opts = match ps.FStar_Tactics_Types.goals with - | g::uu____11455 -> g.FStar_Tactics_Types.opts - | uu____11458 -> FStar_Options.peek () in - let uu____11461 = FStar_Syntax_Util.head_and_args t in - match uu____11461 with + | g::uu____11459 -> g.FStar_Tactics_Types.opts + | uu____11462 -> FStar_Options.peek () in + let uu____11465 = FStar_Syntax_Util.head_and_args t in + match uu____11465 with | ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_uvar - (ctx_uvar,uu____11481); - FStar_Syntax_Syntax.pos = uu____11482; - FStar_Syntax_Syntax.vars = uu____11483;_},uu____11484) + (ctx_uvar,uu____11485); + FStar_Syntax_Syntax.pos = uu____11486; + FStar_Syntax_Syntax.vars = uu____11487;_},uu____11488) -> let env1 = - let uu___432_11526 = env in + let uu___431_11530 = env in { FStar_TypeChecker_Env.solver = - (uu___432_11526.FStar_TypeChecker_Env.solver); + (uu___431_11530.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___432_11526.FStar_TypeChecker_Env.range); + (uu___431_11530.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___432_11526.FStar_TypeChecker_Env.curmodule); + (uu___431_11530.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = (ctx_uvar.FStar_Syntax_Syntax.ctx_uvar_gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___432_11526.FStar_TypeChecker_Env.gamma_sig); + (uu___431_11530.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___432_11526.FStar_TypeChecker_Env.gamma_cache); + (uu___431_11530.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___432_11526.FStar_TypeChecker_Env.modules); + (uu___431_11530.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___432_11526.FStar_TypeChecker_Env.expected_typ); + (uu___431_11530.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___432_11526.FStar_TypeChecker_Env.sigtab); + (uu___431_11530.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___432_11526.FStar_TypeChecker_Env.attrtab); + (uu___431_11530.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___432_11526.FStar_TypeChecker_Env.is_pattern); + (uu___431_11530.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___432_11526.FStar_TypeChecker_Env.instantiate_imp); + (uu___431_11530.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___432_11526.FStar_TypeChecker_Env.effects); + (uu___431_11530.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___432_11526.FStar_TypeChecker_Env.generalize); + (uu___431_11530.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___432_11526.FStar_TypeChecker_Env.letrecs); + (uu___431_11530.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___432_11526.FStar_TypeChecker_Env.top_level); + (uu___431_11530.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___432_11526.FStar_TypeChecker_Env.check_uvars); + (uu___431_11530.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___432_11526.FStar_TypeChecker_Env.use_eq); + (uu___431_11530.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___432_11526.FStar_TypeChecker_Env.is_iface); + (uu___431_11530.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___432_11526.FStar_TypeChecker_Env.admit); + (uu___431_11530.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___432_11526.FStar_TypeChecker_Env.lax); + (uu___431_11530.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___432_11526.FStar_TypeChecker_Env.lax_universes); + (uu___431_11530.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___432_11526.FStar_TypeChecker_Env.phase1); + (uu___431_11530.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___432_11526.FStar_TypeChecker_Env.failhard); + (uu___431_11530.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___432_11526.FStar_TypeChecker_Env.nosynth); + (uu___431_11530.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___432_11526.FStar_TypeChecker_Env.uvar_subtyping); + (uu___431_11530.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___432_11526.FStar_TypeChecker_Env.tc_term); + (uu___431_11530.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___432_11526.FStar_TypeChecker_Env.type_of); + (uu___431_11530.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___432_11526.FStar_TypeChecker_Env.universe_of); + (uu___431_11530.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___432_11526.FStar_TypeChecker_Env.check_type_of); + (uu___431_11530.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___432_11526.FStar_TypeChecker_Env.use_bv_sorts); + (uu___431_11530.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___432_11526.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___431_11530.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___432_11526.FStar_TypeChecker_Env.normalized_eff_names); + (uu___431_11530.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___432_11526.FStar_TypeChecker_Env.fv_delta_depths); + (uu___431_11530.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___432_11526.FStar_TypeChecker_Env.proof_ns); + (uu___431_11530.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___432_11526.FStar_TypeChecker_Env.synth_hook); + (uu___431_11530.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___432_11526.FStar_TypeChecker_Env.splice); + (uu___431_11530.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___432_11526.FStar_TypeChecker_Env.postprocess); + (uu___431_11530.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___432_11526.FStar_TypeChecker_Env.is_native_tactic); + (uu___431_11530.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___432_11526.FStar_TypeChecker_Env.identifier_info); + (uu___431_11530.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___432_11526.FStar_TypeChecker_Env.tc_hooks); + (uu___431_11530.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___432_11526.FStar_TypeChecker_Env.dsenv); + (uu___431_11530.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___432_11526.FStar_TypeChecker_Env.nbe) + (uu___431_11530.FStar_TypeChecker_Env.nbe) } in let g = FStar_Tactics_Types.mk_goal env1 ctx_uvar opts false "" in - let uu____11530 = - let uu____11533 = bnorm_goal g in [uu____11533] in - add_goals uu____11530 - | uu____11534 -> fail "not a uvar") + let uu____11534 = + let uu____11537 = bnorm_goal g in [uu____11537] in + add_goals uu____11534 + | uu____11538 -> fail "not a uvar") in - FStar_All.pipe_left (wrap_err "unshelve") uu____11436 + FStar_All.pipe_left (wrap_err "unshelve") uu____11440 let (tac_and : Prims.bool tac -> Prims.bool tac -> Prims.bool tac) = fun t1 -> @@ -5819,13 +5823,13 @@ let (tac_and : Prims.bool tac -> Prims.bool tac -> Prims.bool tac) = let comp = bind t1 (fun b -> - let uu____11596 = if b then t2 else ret false in - bind uu____11596 (fun b' -> if b' then ret b' else fail "")) + let uu____11600 = if b then t2 else ret false in + bind uu____11600 (fun b' -> if b' then ret b' else fail "")) in - let uu____11622 = trytac comp in - bind uu____11622 - (fun uu___362_11634 -> - match uu___362_11634 with + let uu____11626 = trytac comp in + bind uu____11626 + (fun uu___361_11638 -> + match uu___361_11638 with | FStar_Pervasives_Native.Some (true ) -> ret true | FStar_Pervasives_Native.Some (false ) -> failwith "impossible" | FStar_Pervasives_Native.None -> ret false) @@ -5837,34 +5841,34 @@ let (unify_env : fun e -> fun t1 -> fun t2 -> - let uu____11676 = + let uu____11680 = bind get (fun ps -> - let uu____11684 = __tc e t1 in - bind uu____11684 - (fun uu____11705 -> - match uu____11705 with + let uu____11688 = __tc e t1 in + bind uu____11688 + (fun uu____11709 -> + match uu____11709 with | (t11,ty1,g1) -> - let uu____11718 = __tc e t2 in - bind uu____11718 - (fun uu____11739 -> - match uu____11739 with + let uu____11722 = __tc e t2 in + bind uu____11722 + (fun uu____11743 -> + match uu____11743 with | (t21,ty2,g2) -> - let uu____11752 = + let uu____11756 = proc_guard "unify_env g1" e g1 in - bind uu____11752 - (fun uu____11759 -> - let uu____11760 = + bind uu____11756 + (fun uu____11763 -> + let uu____11764 = proc_guard "unify_env g2" e g2 in - bind uu____11760 - (fun uu____11768 -> - let uu____11769 = - do_unify e ty1 ty2 in + bind uu____11764 + (fun uu____11772 -> let uu____11773 = + do_unify e ty1 ty2 in + let uu____11777 = do_unify e t11 t21 in - tac_and uu____11769 uu____11773))))) + tac_and uu____11773 uu____11777))))) in - FStar_All.pipe_left (wrap_err "unify_env") uu____11676 + FStar_All.pipe_left (wrap_err "unify_env") uu____11680 let (launch_process : Prims.string -> Prims.string Prims.list -> Prims.string -> Prims.string tac) @@ -5873,9 +5877,9 @@ let (launch_process : fun args -> fun input -> bind idtac - (fun uu____11821 -> - let uu____11822 = FStar_Options.unsafe_tactic_exec () in - if uu____11822 + (fun uu____11825 -> + let uu____11826 = FStar_Options.unsafe_tactic_exec () in + if uu____11826 then let s = FStar_Util.run_process "tactic_launch" prog args @@ -5891,50 +5895,50 @@ let (fresh_bv_named : fun nm -> fun t -> bind idtac - (fun uu____11856 -> - let uu____11857 = + (fun uu____11860 -> + let uu____11861 = FStar_Syntax_Syntax.gen_bv nm FStar_Pervasives_Native.None t in - ret uu____11857) + ret uu____11861) let (change : FStar_Reflection_Data.typ -> unit tac) = fun ty -> - let uu____11868 = + let uu____11872 = mlog - (fun uu____11873 -> - let uu____11874 = FStar_Syntax_Print.term_to_string ty in - FStar_Util.print1 "change: ty = %s\n" uu____11874) - (fun uu____11879 -> - let uu____11880 = cur_goal () in - bind uu____11880 + (fun uu____11877 -> + let uu____11878 = FStar_Syntax_Print.term_to_string ty in + FStar_Util.print1 "change: ty = %s\n" uu____11878) + (fun uu____11883 -> + let uu____11884 = cur_goal () in + bind uu____11884 (fun g -> - let uu____11886 = - let uu____11895 = FStar_Tactics_Types.goal_env g in - __tc uu____11895 ty in - bind uu____11886 - (fun uu____11907 -> - match uu____11907 with - | (ty1,uu____11917,guard) -> - let uu____11919 = - let uu____11922 = FStar_Tactics_Types.goal_env g + let uu____11890 = + let uu____11899 = FStar_Tactics_Types.goal_env g in + __tc uu____11899 ty in + bind uu____11890 + (fun uu____11911 -> + match uu____11911 with + | (ty1,uu____11921,guard) -> + let uu____11923 = + let uu____11926 = FStar_Tactics_Types.goal_env g in - proc_guard "change" uu____11922 guard in - bind uu____11919 - (fun uu____11926 -> - let uu____11927 = - let uu____11931 = + proc_guard "change" uu____11926 guard in + bind uu____11923 + (fun uu____11930 -> + let uu____11931 = + let uu____11935 = FStar_Tactics_Types.goal_env g in - let uu____11932 = + let uu____11936 = FStar_Tactics_Types.goal_type g in - do_unify uu____11931 uu____11932 ty1 in - bind uu____11927 + do_unify uu____11935 uu____11936 ty1 in + bind uu____11931 (fun bb -> if bb then - let uu____11941 = + let uu____11945 = FStar_Tactics_Types.goal_with_type g ty1 in - replace_cur uu____11941 + replace_cur uu____11945 else (let steps = [FStar_TypeChecker_Env.AllowUnboundUniverses; @@ -5942,33 +5946,33 @@ let (change : FStar_Reflection_Data.typ -> unit tac) = FStar_Syntax_Syntax.delta_constant; FStar_TypeChecker_Env.Primops] in let ng = - let uu____11948 = + let uu____11952 = FStar_Tactics_Types.goal_env g in - let uu____11949 = + let uu____11953 = FStar_Tactics_Types.goal_type g in - normalize steps uu____11948 - uu____11949 + normalize steps uu____11952 + uu____11953 in let nty = - let uu____11951 = + let uu____11955 = FStar_Tactics_Types.goal_env g in - normalize steps uu____11951 ty1 in - let uu____11952 = - let uu____11956 = + normalize steps uu____11955 ty1 in + let uu____11956 = + let uu____11960 = FStar_Tactics_Types.goal_env g in - do_unify uu____11956 ng nty in - bind uu____11952 + do_unify uu____11960 ng nty in + bind uu____11956 (fun b -> if b then - let uu____11965 = + let uu____11969 = FStar_Tactics_Types.goal_with_type g ty1 in - replace_cur uu____11965 + replace_cur uu____11969 else fail "not convertible"))))))) in - FStar_All.pipe_left (wrap_err "change") uu____11868 + FStar_All.pipe_left (wrap_err "change") uu____11872 let failwhen : 'a . Prims.bool -> Prims.string -> (unit -> 'a tac) -> 'a tac = fun b -> fun msg -> fun k -> if b then fail msg else k () @@ -5978,55 +5982,55 @@ let (t_destruct : Prims.list tac) = fun s_tm -> - let uu____12039 = - let uu____12048 = cur_goal () in - bind uu____12048 + let uu____12043 = + let uu____12052 = cur_goal () in + bind uu____12052 (fun g -> - let uu____12060 = - let uu____12069 = FStar_Tactics_Types.goal_env g in - __tc uu____12069 s_tm in - bind uu____12060 - (fun uu____12087 -> - match uu____12087 with + let uu____12064 = + let uu____12073 = FStar_Tactics_Types.goal_env g in + __tc uu____12073 s_tm in + bind uu____12064 + (fun uu____12091 -> + match uu____12091 with | (s_tm1,s_ty,guard) -> - let uu____12105 = - let uu____12108 = FStar_Tactics_Types.goal_env g in - proc_guard "destruct" uu____12108 guard in - bind uu____12105 - (fun uu____12121 -> - let uu____12122 = + let uu____12109 = + let uu____12112 = FStar_Tactics_Types.goal_env g in + proc_guard "destruct" uu____12112 guard in + bind uu____12109 + (fun uu____12125 -> + let uu____12126 = FStar_Syntax_Util.head_and_args' s_ty in - match uu____12122 with + match uu____12126 with | (h,args) -> - let uu____12167 = - let uu____12174 = - let uu____12175 = + let uu____12171 = + let uu____12178 = + let uu____12179 = FStar_Syntax_Subst.compress h in - uu____12175.FStar_Syntax_Syntax.n in - match uu____12174 with + uu____12179.FStar_Syntax_Syntax.n in + match uu____12178 with | FStar_Syntax_Syntax.Tm_fvar fv -> ret (fv, []) | FStar_Syntax_Syntax.Tm_uinst ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_fvar fv; - FStar_Syntax_Syntax.pos = uu____12190; - FStar_Syntax_Syntax.vars = uu____12191;_},us) + FStar_Syntax_Syntax.pos = uu____12194; + FStar_Syntax_Syntax.vars = uu____12195;_},us) -> ret (fv, us) - | uu____12201 -> fail "type is not an fv" in - bind uu____12167 - (fun uu____12222 -> - match uu____12222 with + | uu____12205 -> fail "type is not an fv" in + bind uu____12171 + (fun uu____12226 -> + match uu____12226 with | (fv,a_us) -> let t_lid = FStar_Syntax_Syntax.lid_of_fv fv in - let uu____12238 = - let uu____12241 = + let uu____12242 = + let uu____12245 = FStar_Tactics_Types.goal_env g in FStar_TypeChecker_Env.lookup_sigelt - uu____12241 t_lid + uu____12245 t_lid in - (match uu____12238 with + (match uu____12242 with | FStar_Pervasives_Native.None -> fail "type not found in environment" @@ -6041,27 +6045,27 @@ let (t_destruct : <> (FStar_List.length t_us)) "t_us don't match?" - (fun uu____12292 -> - let uu____12293 = + (fun uu____12296 -> + let uu____12297 = FStar_Syntax_Subst.open_term t_ps t_ty in - match uu____12293 with + match uu____12297 with | (t_ps1,t_ty1) -> - let uu____12308 = + let uu____12312 = mapM (fun c_lid -> - let uu____12336 + let uu____12340 = - let uu____12339 + let uu____12343 = FStar_Tactics_Types.goal_env g in FStar_TypeChecker_Env.lookup_sigelt - uu____12339 + uu____12343 c_lid in - match uu____12336 + match uu____12340 with | FStar_Pervasives_Native.None -> @@ -6091,7 +6095,7 @@ let (t_destruct : c_us)) "t_us don't match?" (fun - uu____12413 + uu____12417 -> let s = FStar_TypeChecker_Env.mk_univ_subst @@ -6102,50 +6106,50 @@ let (t_destruct : FStar_Syntax_Subst.subst s c_ty in - let uu____12418 + let uu____12422 = FStar_TypeChecker_Env.inst_tscheme (c_us, c_ty1) in - match uu____12418 + match uu____12422 with | (c_us1,c_ty2) -> - let uu____12441 + let uu____12445 = FStar_Syntax_Util.arrow_formals_comp c_ty2 in - (match uu____12441 + (match uu____12445 with | (bs,comp) -> - let uu____12484 + let uu____12488 = FStar_List.splitAt nparam bs in - (match uu____12484 + (match uu____12488 with | (d_ps,bs1) -> - let uu____12557 + let uu____12561 = - let uu____12559 + let uu____12563 = FStar_Syntax_Util.is_total_comp comp in Prims.op_Negation - uu____12559 + uu____12563 in failwhen - uu____12557 + uu____12561 "not total?" (fun - uu____12578 + uu____12582 -> let mk_pat p = @@ -6157,25 +6161,25 @@ let (t_destruct : (s_tm1.FStar_Syntax_Syntax.pos) } in let is_imp - uu___363_12595 + uu___362_12599 = - match uu___363_12595 + match uu___362_12599 with | FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Implicit - uu____12599) + uu____12603) -> true | - uu____12602 + uu____12606 -> false in - let uu____12606 + let uu____12610 = FStar_List.splitAt nparam args in - match uu____12606 + match uu____12610 with | (a_ps,a_is) @@ -6187,7 +6191,7 @@ let (t_destruct : d_ps)) "params not match?" (fun - uu____12740 + uu____12744 -> let d_ps_a_ps = @@ -6198,13 +6202,13 @@ let (t_destruct : = FStar_List.map (fun - uu____12802 + uu____12806 -> - match uu____12802 + match uu____12806 with | - ((bv,uu____12822), - (t,uu____12824)) + ((bv,uu____12826), + (t,uu____12828)) -> FStar_Syntax_Syntax.NT (bv, t)) @@ -6218,13 +6222,13 @@ let (t_destruct : = FStar_List.map (fun - uu____12894 + uu____12898 -> - match uu____12894 + match uu____12898 with | - ((bv,uu____12921), - (t,uu____12923)) + ((bv,uu____12925), + (t,uu____12927)) -> ((mk_pat (FStar_Syntax_Syntax.Pat_dot_term @@ -6236,9 +6240,9 @@ let (t_destruct : = FStar_List.map (fun - uu____12982 + uu____12986 -> - match uu____12982 + match uu____12986 with | (bv,aq) @@ -6271,152 +6275,152 @@ let (t_destruct : env.FStar_TypeChecker_Env.universe_of env s_ty in - let uu____13037 + let uu____13041 = FStar_TypeChecker_TcTerm.tc_pat - (let uu___433_13054 + (let uu___432_13058 = env in { FStar_TypeChecker_Env.solver = - (uu___433_13054.FStar_TypeChecker_Env.solver); + (uu___432_13058.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___433_13054.FStar_TypeChecker_Env.range); + (uu___432_13058.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___433_13054.FStar_TypeChecker_Env.curmodule); + (uu___432_13058.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___433_13054.FStar_TypeChecker_Env.gamma); + (uu___432_13058.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___433_13054.FStar_TypeChecker_Env.gamma_sig); + (uu___432_13058.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___433_13054.FStar_TypeChecker_Env.gamma_cache); + (uu___432_13058.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___433_13054.FStar_TypeChecker_Env.modules); + (uu___432_13058.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___433_13054.FStar_TypeChecker_Env.expected_typ); + (uu___432_13058.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___433_13054.FStar_TypeChecker_Env.sigtab); + (uu___432_13058.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___433_13054.FStar_TypeChecker_Env.attrtab); + (uu___432_13058.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___433_13054.FStar_TypeChecker_Env.is_pattern); + (uu___432_13058.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___433_13054.FStar_TypeChecker_Env.instantiate_imp); + (uu___432_13058.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___433_13054.FStar_TypeChecker_Env.effects); + (uu___432_13058.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___433_13054.FStar_TypeChecker_Env.generalize); + (uu___432_13058.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___433_13054.FStar_TypeChecker_Env.letrecs); + (uu___432_13058.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___433_13054.FStar_TypeChecker_Env.top_level); + (uu___432_13058.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___433_13054.FStar_TypeChecker_Env.check_uvars); + (uu___432_13058.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___433_13054.FStar_TypeChecker_Env.use_eq); + (uu___432_13058.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___433_13054.FStar_TypeChecker_Env.is_iface); + (uu___432_13058.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___433_13054.FStar_TypeChecker_Env.admit); + (uu___432_13058.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___433_13054.FStar_TypeChecker_Env.lax_universes); + (uu___432_13058.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___433_13054.FStar_TypeChecker_Env.phase1); + (uu___432_13058.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___433_13054.FStar_TypeChecker_Env.failhard); + (uu___432_13058.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___433_13054.FStar_TypeChecker_Env.nosynth); + (uu___432_13058.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___433_13054.FStar_TypeChecker_Env.uvar_subtyping); + (uu___432_13058.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___433_13054.FStar_TypeChecker_Env.tc_term); + (uu___432_13058.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___433_13054.FStar_TypeChecker_Env.type_of); + (uu___432_13058.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___433_13054.FStar_TypeChecker_Env.universe_of); + (uu___432_13058.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___433_13054.FStar_TypeChecker_Env.check_type_of); + (uu___432_13058.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___433_13054.FStar_TypeChecker_Env.use_bv_sorts); + (uu___432_13058.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___433_13054.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___432_13058.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___433_13054.FStar_TypeChecker_Env.normalized_eff_names); + (uu___432_13058.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___433_13054.FStar_TypeChecker_Env.fv_delta_depths); + (uu___432_13058.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___433_13054.FStar_TypeChecker_Env.proof_ns); + (uu___432_13058.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___433_13054.FStar_TypeChecker_Env.synth_hook); + (uu___432_13058.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___433_13054.FStar_TypeChecker_Env.splice); + (uu___432_13058.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___433_13054.FStar_TypeChecker_Env.postprocess); + (uu___432_13058.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___433_13054.FStar_TypeChecker_Env.is_native_tactic); + (uu___432_13058.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___433_13054.FStar_TypeChecker_Env.identifier_info); + (uu___432_13058.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___433_13054.FStar_TypeChecker_Env.tc_hooks); + (uu___432_13058.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___433_13054.FStar_TypeChecker_Env.dsenv); + (uu___432_13058.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___433_13054.FStar_TypeChecker_Env.nbe) + (uu___432_13058.FStar_TypeChecker_Env.nbe) }) s_ty pat in - match uu____13037 + match uu____13041 with | - (uu____13068,uu____13069,uu____13070,pat_t,uu____13072,_guard_pat) + (uu____13072,uu____13073,uu____13074,pat_t,uu____13076,_guard_pat) -> let eq_b = - let uu____13079 + let uu____13083 = - let uu____13080 + let uu____13084 = FStar_Syntax_Util.mk_eq2 equ s_ty @@ -6424,52 +6428,52 @@ let (t_destruct : pat_t in FStar_Syntax_Util.mk_squash equ - uu____13080 + uu____13084 in FStar_Syntax_Syntax.gen_bv "breq" FStar_Pervasives_Native.None - uu____13079 + uu____13083 in let cod1 = - let uu____13085 + let uu____13089 = - let uu____13094 + let uu____13098 = FStar_Syntax_Syntax.mk_binder eq_b in - [uu____13094] + [uu____13098] in - let uu____13113 + let uu____13117 = FStar_Syntax_Syntax.mk_Total cod in FStar_Syntax_Util.arrow - uu____13085 - uu____13113 + uu____13089 + uu____13117 in let nty = - let uu____13119 + let uu____13123 = FStar_Syntax_Syntax.mk_Total cod1 in FStar_Syntax_Util.arrow bs2 - uu____13119 + uu____13123 in - let uu____13122 + let uu____13126 = new_uvar "destruct branch" env nty in bind - uu____13122 + uu____13126 (fun - uu____13152 + uu____13156 -> - match uu____13152 + match uu____13156 with | (uvt,uv) @@ -6487,56 +6491,56 @@ let (t_destruct : in let brt1 = - let uu____13179 + let uu____13183 = - let uu____13190 + let uu____13194 = FStar_Syntax_Syntax.as_arg FStar_Syntax_Util.exp_unit in - [uu____13190] + [uu____13194] in FStar_Syntax_Util.mk_app brt - uu____13179 + uu____13183 in let br = FStar_Syntax_Subst.close_branch (pat, FStar_Pervasives_Native.None, brt1) in - let uu____13226 + let uu____13230 = - let uu____13237 + let uu____13241 = - let uu____13242 + let uu____13246 = FStar_BigInt.of_int_fs (FStar_List.length bs2) in (fv1, - uu____13242) + uu____13246) in (g', br, - uu____13237) + uu____13241) in ret - uu____13226)))))) + uu____13230)))))) | - uu____13263 + uu____13267 -> fail "impossible: not a ctor")) c_lids in - bind uu____12308 + bind uu____12312 (fun goal_brs -> - let uu____13313 + let uu____13317 = FStar_List.unzip3 goal_brs in - match uu____13313 + match uu____13317 with | (goals,brs,infos) -> @@ -6548,54 +6552,54 @@ let (t_destruct : FStar_Pervasives_Native.None s_tm1.FStar_Syntax_Syntax.pos in - let uu____13386 + let uu____13390 = solve' g w in bind - uu____13386 + uu____13390 ( fun - uu____13397 + uu____13401 -> - let uu____13398 + let uu____13402 = add_goals goals in bind - uu____13398 + uu____13402 (fun - uu____13408 + uu____13412 -> ret infos)))) - | uu____13415 -> + | uu____13419 -> fail "not an inductive type")))))) in - FStar_All.pipe_left (wrap_err "destruct") uu____12039 + FStar_All.pipe_left (wrap_err "destruct") uu____12043 let rec last : 'a . 'a Prims.list -> 'a = fun l -> match l with | [] -> failwith "last: empty list" | x::[] -> x - | uu____13464::xs -> last xs + | uu____13468::xs -> last xs let rec init : 'a . 'a Prims.list -> 'a Prims.list = fun l -> match l with | [] -> failwith "init: empty list" | x::[] -> [] - | x::xs -> let uu____13494 = init xs in x :: uu____13494 + | x::xs -> let uu____13498 = init xs in x :: uu____13498 let rec (inspect : FStar_Syntax_Syntax.term -> FStar_Reflection_Data.term_view tac) = fun t -> - let uu____13507 = + let uu____13511 = let t1 = FStar_Syntax_Util.unascribe t in let t2 = FStar_Syntax_Util.un_uinst t1 in let t3 = FStar_Syntax_Util.unlazy_emb t2 in match t3.FStar_Syntax_Syntax.n with - | FStar_Syntax_Syntax.Tm_meta (t4,uu____13516) -> inspect t4 + | FStar_Syntax_Syntax.Tm_meta (t4,uu____13520) -> inspect t4 | FStar_Syntax_Syntax.Tm_name bv -> FStar_All.pipe_left ret (FStar_Reflection_Data.Tv_Var bv) | FStar_Syntax_Syntax.Tm_bvar bv -> @@ -6605,93 +6609,93 @@ let rec (inspect : | FStar_Syntax_Syntax.Tm_app (hd1,[]) -> failwith "empty arguments on Tm_app" | FStar_Syntax_Syntax.Tm_app (hd1,args) -> - let uu____13582 = last args in - (match uu____13582 with + let uu____13586 = last args in + (match uu____13586 with | (a,q) -> let q' = FStar_Reflection_Basic.inspect_aqual q in - let uu____13612 = - let uu____13613 = - let uu____13618 = - let uu____13619 = - let uu____13624 = init args in - FStar_Syntax_Syntax.mk_Tm_app hd1 uu____13624 in - uu____13619 FStar_Pervasives_Native.None + let uu____13616 = + let uu____13617 = + let uu____13622 = + let uu____13623 = + let uu____13628 = init args in + FStar_Syntax_Syntax.mk_Tm_app hd1 uu____13628 in + uu____13623 FStar_Pervasives_Native.None t3.FStar_Syntax_Syntax.pos in - (uu____13618, (a, q')) in - FStar_Reflection_Data.Tv_App uu____13613 in - FStar_All.pipe_left ret uu____13612) - | FStar_Syntax_Syntax.Tm_abs ([],uu____13637,uu____13638) -> + (uu____13622, (a, q')) in + FStar_Reflection_Data.Tv_App uu____13617 in + FStar_All.pipe_left ret uu____13616) + | FStar_Syntax_Syntax.Tm_abs ([],uu____13641,uu____13642) -> failwith "empty arguments on Tm_abs" | FStar_Syntax_Syntax.Tm_abs (bs,t4,k) -> - let uu____13691 = FStar_Syntax_Subst.open_term bs t4 in - (match uu____13691 with + let uu____13695 = FStar_Syntax_Subst.open_term bs t4 in + (match uu____13695 with | (bs1,t5) -> (match bs1 with | [] -> failwith "impossible" | b::bs2 -> - let uu____13733 = - let uu____13734 = - let uu____13739 = FStar_Syntax_Util.abs bs2 t5 k in - (b, uu____13739) in - FStar_Reflection_Data.Tv_Abs uu____13734 in - FStar_All.pipe_left ret uu____13733)) - | FStar_Syntax_Syntax.Tm_type uu____13742 -> + let uu____13737 = + let uu____13738 = + let uu____13743 = FStar_Syntax_Util.abs bs2 t5 k in + (b, uu____13743) in + FStar_Reflection_Data.Tv_Abs uu____13738 in + FStar_All.pipe_left ret uu____13737)) + | FStar_Syntax_Syntax.Tm_type uu____13746 -> FStar_All.pipe_left ret (FStar_Reflection_Data.Tv_Type ()) | FStar_Syntax_Syntax.Tm_arrow ([],k) -> failwith "empty binders on arrow" - | FStar_Syntax_Syntax.Tm_arrow uu____13767 -> - let uu____13782 = FStar_Syntax_Util.arrow_one t3 in - (match uu____13782 with + | FStar_Syntax_Syntax.Tm_arrow uu____13771 -> + let uu____13786 = FStar_Syntax_Util.arrow_one t3 in + (match uu____13786 with | FStar_Pervasives_Native.Some (b,c) -> FStar_All.pipe_left ret (FStar_Reflection_Data.Tv_Arrow (b, c)) | FStar_Pervasives_Native.None -> failwith "impossible") | FStar_Syntax_Syntax.Tm_refine (bv,t4) -> let b = FStar_Syntax_Syntax.mk_binder bv in - let uu____13813 = FStar_Syntax_Subst.open_term [b] t4 in - (match uu____13813 with + let uu____13817 = FStar_Syntax_Subst.open_term [b] t4 in + (match uu____13817 with | (b',t5) -> let b1 = match b' with | b'1::[] -> b'1 - | uu____13866 -> failwith "impossible" in + | uu____13870 -> failwith "impossible" in FStar_All.pipe_left ret (FStar_Reflection_Data.Tv_Refine ((FStar_Pervasives_Native.fst b1), t5))) | FStar_Syntax_Syntax.Tm_constant c -> - let uu____13879 = - let uu____13880 = FStar_Reflection_Basic.inspect_const c in - FStar_Reflection_Data.Tv_Const uu____13880 in - FStar_All.pipe_left ret uu____13879 + let uu____13883 = + let uu____13884 = FStar_Reflection_Basic.inspect_const c in + FStar_Reflection_Data.Tv_Const uu____13884 in + FStar_All.pipe_left ret uu____13883 | FStar_Syntax_Syntax.Tm_uvar (ctx_u,s) -> - let uu____13901 = - let uu____13902 = - let uu____13907 = - let uu____13908 = + let uu____13905 = + let uu____13906 = + let uu____13911 = + let uu____13912 = FStar_Syntax_Unionfind.uvar_id ctx_u.FStar_Syntax_Syntax.ctx_uvar_head in - FStar_BigInt.of_int_fs uu____13908 in - (uu____13907, (ctx_u, s)) in - FStar_Reflection_Data.Tv_Uvar uu____13902 in - FStar_All.pipe_left ret uu____13901 + FStar_BigInt.of_int_fs uu____13912 in + (uu____13911, (ctx_u, s)) in + FStar_Reflection_Data.Tv_Uvar uu____13906 in + FStar_All.pipe_left ret uu____13905 | FStar_Syntax_Syntax.Tm_let ((false ,lb::[]),t21) -> if lb.FStar_Syntax_Syntax.lbunivs <> [] then FStar_All.pipe_left ret FStar_Reflection_Data.Tv_Unknown else (match lb.FStar_Syntax_Syntax.lbname with - | FStar_Util.Inr uu____13948 -> + | FStar_Util.Inr uu____13952 -> FStar_All.pipe_left ret FStar_Reflection_Data.Tv_Unknown | FStar_Util.Inl bv -> let b = FStar_Syntax_Syntax.mk_binder bv in - let uu____13953 = FStar_Syntax_Subst.open_term [b] t21 in - (match uu____13953 with + let uu____13957 = FStar_Syntax_Subst.open_term [b] t21 in + (match uu____13957 with | (bs,t22) -> let b1 = match bs with | b1::[] -> b1 - | uu____14006 -> + | uu____14010 -> failwith "impossible: open_term returned different amount of binders" in @@ -6704,42 +6708,42 @@ let rec (inspect : then FStar_All.pipe_left ret FStar_Reflection_Data.Tv_Unknown else (match lb.FStar_Syntax_Syntax.lbname with - | FStar_Util.Inr uu____14048 -> + | FStar_Util.Inr uu____14052 -> FStar_All.pipe_left ret FStar_Reflection_Data.Tv_Unknown | FStar_Util.Inl bv -> - let uu____14052 = FStar_Syntax_Subst.open_let_rec [lb] t21 + let uu____14056 = FStar_Syntax_Subst.open_let_rec [lb] t21 in - (match uu____14052 with + (match uu____14056 with | (lbs,t22) -> (match lbs with | lb1::[] -> (match lb1.FStar_Syntax_Syntax.lbname with - | FStar_Util.Inr uu____14072 -> + | FStar_Util.Inr uu____14076 -> ret FStar_Reflection_Data.Tv_Unknown | FStar_Util.Inl bv1 -> FStar_All.pipe_left ret (FStar_Reflection_Data.Tv_Let (true, bv1, (lb1.FStar_Syntax_Syntax.lbdef), t22))) - | uu____14078 -> + | uu____14082 -> failwith "impossible: open_term returned different amount of binders"))) | FStar_Syntax_Syntax.Tm_match (t4,brs) -> let rec inspect_pat p = match p.FStar_Syntax_Syntax.v with | FStar_Syntax_Syntax.Pat_constant c -> - let uu____14133 = FStar_Reflection_Basic.inspect_const c in - FStar_Reflection_Data.Pat_Constant uu____14133 + let uu____14137 = FStar_Reflection_Basic.inspect_const c in + FStar_Reflection_Data.Pat_Constant uu____14137 | FStar_Syntax_Syntax.Pat_cons (fv,ps) -> - let uu____14154 = - let uu____14161 = + let uu____14158 = + let uu____14165 = FStar_List.map - (fun uu____14174 -> - match uu____14174 with - | (p1,uu____14183) -> inspect_pat p1) ps + (fun uu____14178 -> + match uu____14178 with + | (p1,uu____14187) -> inspect_pat p1) ps in - (fv, uu____14161) in - FStar_Reflection_Data.Pat_Cons uu____14154 + (fv, uu____14165) in + FStar_Reflection_Data.Pat_Cons uu____14158 | FStar_Syntax_Syntax.Pat_var bv -> FStar_Reflection_Data.Pat_Var bv | FStar_Syntax_Syntax.Pat_wild bv -> @@ -6750,109 +6754,109 @@ let rec (inspect : let brs1 = FStar_List.map FStar_Syntax_Subst.open_branch brs in let brs2 = FStar_List.map - (fun uu___364_14279 -> - match uu___364_14279 with - | (pat,uu____14301,t5) -> - let uu____14319 = inspect_pat pat in (uu____14319, t5)) + (fun uu___363_14283 -> + match uu___363_14283 with + | (pat,uu____14305,t5) -> + let uu____14323 = inspect_pat pat in (uu____14323, t5)) brs1 in FStar_All.pipe_left ret (FStar_Reflection_Data.Tv_Match (t4, brs2)) | FStar_Syntax_Syntax.Tm_unknown -> FStar_All.pipe_left ret FStar_Reflection_Data.Tv_Unknown - | uu____14328 -> - ((let uu____14330 = - let uu____14336 = - let uu____14338 = FStar_Syntax_Print.tag_of_term t3 in - let uu____14340 = FStar_Syntax_Print.term_to_string t3 in + | uu____14332 -> + ((let uu____14334 = + let uu____14340 = + let uu____14342 = FStar_Syntax_Print.tag_of_term t3 in + let uu____14344 = FStar_Syntax_Print.term_to_string t3 in FStar_Util.format2 "inspect: outside of expected syntax (%s, %s)\n" - uu____14338 uu____14340 + uu____14342 uu____14344 in - (FStar_Errors.Warning_CantInspect, uu____14336) in - FStar_Errors.log_issue t3.FStar_Syntax_Syntax.pos uu____14330); + (FStar_Errors.Warning_CantInspect, uu____14340) in + FStar_Errors.log_issue t3.FStar_Syntax_Syntax.pos uu____14334); FStar_All.pipe_left ret FStar_Reflection_Data.Tv_Unknown) in - wrap_err "inspect" uu____13507 + wrap_err "inspect" uu____13511 let (pack : FStar_Reflection_Data.term_view -> FStar_Syntax_Syntax.term tac) = fun tv -> match tv with | FStar_Reflection_Data.Tv_Var bv -> - let uu____14358 = FStar_Syntax_Syntax.bv_to_name bv in - FStar_All.pipe_left ret uu____14358 - | FStar_Reflection_Data.Tv_BVar bv -> - let uu____14362 = FStar_Syntax_Syntax.bv_to_tm bv in + let uu____14362 = FStar_Syntax_Syntax.bv_to_name bv in FStar_All.pipe_left ret uu____14362 - | FStar_Reflection_Data.Tv_FVar fv -> - let uu____14366 = FStar_Syntax_Syntax.fv_to_tm fv in + | FStar_Reflection_Data.Tv_BVar bv -> + let uu____14366 = FStar_Syntax_Syntax.bv_to_tm bv in FStar_All.pipe_left ret uu____14366 + | FStar_Reflection_Data.Tv_FVar fv -> + let uu____14370 = FStar_Syntax_Syntax.fv_to_tm fv in + FStar_All.pipe_left ret uu____14370 | FStar_Reflection_Data.Tv_App (l,(r,q)) -> let q' = FStar_Reflection_Basic.pack_aqual q in - let uu____14373 = FStar_Syntax_Util.mk_app l [(r, q')] in - FStar_All.pipe_left ret uu____14373 + let uu____14377 = FStar_Syntax_Util.mk_app l [(r, q')] in + FStar_All.pipe_left ret uu____14377 | FStar_Reflection_Data.Tv_Abs (b,t) -> - let uu____14398 = + let uu____14402 = FStar_Syntax_Util.abs [b] t FStar_Pervasives_Native.None in - FStar_All.pipe_left ret uu____14398 + FStar_All.pipe_left ret uu____14402 | FStar_Reflection_Data.Tv_Arrow (b,c) -> - let uu____14415 = FStar_Syntax_Util.arrow [b] c in - FStar_All.pipe_left ret uu____14415 + let uu____14419 = FStar_Syntax_Util.arrow [b] c in + FStar_All.pipe_left ret uu____14419 | FStar_Reflection_Data.Tv_Type () -> FStar_All.pipe_left ret FStar_Syntax_Util.ktype | FStar_Reflection_Data.Tv_Refine (bv,t) -> - let uu____14434 = FStar_Syntax_Util.refine bv t in - FStar_All.pipe_left ret uu____14434 - | FStar_Reflection_Data.Tv_Const c -> - let uu____14438 = - let uu____14439 = - let uu____14446 = - let uu____14447 = FStar_Reflection_Basic.pack_const c in - FStar_Syntax_Syntax.Tm_constant uu____14447 in - FStar_Syntax_Syntax.mk uu____14446 in - uu____14439 FStar_Pervasives_Native.None FStar_Range.dummyRange in + let uu____14438 = FStar_Syntax_Util.refine bv t in FStar_All.pipe_left ret uu____14438 + | FStar_Reflection_Data.Tv_Const c -> + let uu____14442 = + let uu____14443 = + let uu____14450 = + let uu____14451 = FStar_Reflection_Basic.pack_const c in + FStar_Syntax_Syntax.Tm_constant uu____14451 in + FStar_Syntax_Syntax.mk uu____14450 in + uu____14443 FStar_Pervasives_Native.None FStar_Range.dummyRange in + FStar_All.pipe_left ret uu____14442 | FStar_Reflection_Data.Tv_Uvar (_u,ctx_u_s) -> - let uu____14455 = + let uu____14459 = FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_uvar ctx_u_s) FStar_Pervasives_Native.None FStar_Range.dummyRange in - FStar_All.pipe_left ret uu____14455 + FStar_All.pipe_left ret uu____14459 | FStar_Reflection_Data.Tv_Let (false ,bv,t1,t2) -> let lb = FStar_Syntax_Util.mk_letbinding (FStar_Util.Inl bv) [] bv.FStar_Syntax_Syntax.sort FStar_Parser_Const.effect_Tot_lid t1 [] FStar_Range.dummyRange in - let uu____14466 = - let uu____14467 = - let uu____14474 = - let uu____14475 = - let uu____14489 = - let uu____14492 = - let uu____14493 = FStar_Syntax_Syntax.mk_binder bv in - [uu____14493] in - FStar_Syntax_Subst.close uu____14492 t2 in - ((false, [lb]), uu____14489) in - FStar_Syntax_Syntax.Tm_let uu____14475 in - FStar_Syntax_Syntax.mk uu____14474 in - uu____14467 FStar_Pervasives_Native.None FStar_Range.dummyRange in - FStar_All.pipe_left ret uu____14466 + let uu____14470 = + let uu____14471 = + let uu____14478 = + let uu____14479 = + let uu____14493 = + let uu____14496 = + let uu____14497 = FStar_Syntax_Syntax.mk_binder bv in + [uu____14497] in + FStar_Syntax_Subst.close uu____14496 t2 in + ((false, [lb]), uu____14493) in + FStar_Syntax_Syntax.Tm_let uu____14479 in + FStar_Syntax_Syntax.mk uu____14478 in + uu____14471 FStar_Pervasives_Native.None FStar_Range.dummyRange in + FStar_All.pipe_left ret uu____14470 | FStar_Reflection_Data.Tv_Let (true ,bv,t1,t2) -> let lb = FStar_Syntax_Util.mk_letbinding (FStar_Util.Inl bv) [] bv.FStar_Syntax_Syntax.sort FStar_Parser_Const.effect_Tot_lid t1 [] FStar_Range.dummyRange in - let uu____14538 = FStar_Syntax_Subst.close_let_rec [lb] t2 in - (match uu____14538 with + let uu____14542 = FStar_Syntax_Subst.close_let_rec [lb] t2 in + (match uu____14542 with | (lbs,body) -> - let uu____14553 = + let uu____14557 = FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_let ((true, lbs), body)) FStar_Pervasives_Native.None FStar_Range.dummyRange in - FStar_All.pipe_left ret uu____14553) + FStar_All.pipe_left ret uu____14557) | FStar_Reflection_Data.Tv_Match (t,brs) -> let wrap v1 = { @@ -6862,22 +6866,22 @@ let (pack : FStar_Reflection_Data.term_view -> FStar_Syntax_Syntax.term tac) let rec pack_pat p = match p with | FStar_Reflection_Data.Pat_Constant c -> - let uu____14590 = - let uu____14591 = FStar_Reflection_Basic.pack_const c in - FStar_Syntax_Syntax.Pat_constant uu____14591 in - FStar_All.pipe_left wrap uu____14590 + let uu____14594 = + let uu____14595 = FStar_Reflection_Basic.pack_const c in + FStar_Syntax_Syntax.Pat_constant uu____14595 in + FStar_All.pipe_left wrap uu____14594 | FStar_Reflection_Data.Pat_Cons (fv,ps) -> - let uu____14598 = - let uu____14599 = - let uu____14613 = + let uu____14602 = + let uu____14603 = + let uu____14617 = FStar_List.map (fun p1 -> - let uu____14631 = pack_pat p1 in - (uu____14631, false)) ps + let uu____14635 = pack_pat p1 in + (uu____14635, false)) ps in - (fv, uu____14613) in - FStar_Syntax_Syntax.Pat_cons uu____14599 in - FStar_All.pipe_left wrap uu____14598 + (fv, uu____14617) in + FStar_Syntax_Syntax.Pat_cons uu____14603 in + FStar_All.pipe_left wrap uu____14602 | FStar_Reflection_Data.Pat_Var bv -> FStar_All.pipe_left wrap (FStar_Syntax_Syntax.Pat_var bv) | FStar_Reflection_Data.Pat_Wild bv -> @@ -6888,59 +6892,59 @@ let (pack : FStar_Reflection_Data.term_view -> FStar_Syntax_Syntax.term tac) in let brs1 = FStar_List.map - (fun uu___365_14680 -> - match uu___365_14680 with + (fun uu___364_14684 -> + match uu___364_14684 with | (pat,t1) -> - let uu____14697 = pack_pat pat in - (uu____14697, FStar_Pervasives_Native.None, t1)) brs + let uu____14701 = pack_pat pat in + (uu____14701, FStar_Pervasives_Native.None, t1)) brs in let brs2 = FStar_List.map FStar_Syntax_Subst.close_branch brs1 in - let uu____14745 = + let uu____14749 = FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_match (t, brs2)) FStar_Pervasives_Native.None FStar_Range.dummyRange in - FStar_All.pipe_left ret uu____14745 + FStar_All.pipe_left ret uu____14749 | FStar_Reflection_Data.Tv_AscribedT (e,t,tacopt) -> - let uu____14773 = + let uu____14777 = FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_ascribed (e, ((FStar_Util.Inl t), tacopt), FStar_Pervasives_Native.None)) FStar_Pervasives_Native.None FStar_Range.dummyRange in - FStar_All.pipe_left ret uu____14773 + FStar_All.pipe_left ret uu____14777 | FStar_Reflection_Data.Tv_AscribedC (e,c,tacopt) -> - let uu____14819 = + let uu____14823 = FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_ascribed (e, ((FStar_Util.Inr c), tacopt), FStar_Pervasives_Native.None)) FStar_Pervasives_Native.None FStar_Range.dummyRange in - FStar_All.pipe_left ret uu____14819 + FStar_All.pipe_left ret uu____14823 | FStar_Reflection_Data.Tv_Unknown -> - let uu____14858 = + let uu____14862 = FStar_Syntax_Syntax.mk FStar_Syntax_Syntax.Tm_unknown FStar_Pervasives_Native.None FStar_Range.dummyRange in - FStar_All.pipe_left ret uu____14858 + FStar_All.pipe_left ret uu____14862 let (lget : FStar_Reflection_Data.typ -> Prims.string -> FStar_Syntax_Syntax.term tac) = fun ty -> fun k -> - let uu____14878 = + let uu____14882 = bind get (fun ps -> - let uu____14884 = + let uu____14888 = FStar_Util.psmap_try_find ps.FStar_Tactics_Types.local_state k in - match uu____14884 with + match uu____14888 with | FStar_Pervasives_Native.None -> fail "not found" | FStar_Pervasives_Native.Some t -> unquote ty t) in - FStar_All.pipe_left (wrap_err "lget") uu____14878 + FStar_All.pipe_left (wrap_err "lget") uu____14882 let (lset : FStar_Reflection_Data.typ -> @@ -6949,45 +6953,45 @@ let (lset : fun _ty -> fun k -> fun t -> - let uu____14918 = + let uu____14922 = bind get (fun ps -> let ps1 = - let uu___434_14925 = ps in - let uu____14926 = + let uu___433_14929 = ps in + let uu____14930 = FStar_Util.psmap_add ps.FStar_Tactics_Types.local_state k t in { FStar_Tactics_Types.main_context = - (uu___434_14925.FStar_Tactics_Types.main_context); + (uu___433_14929.FStar_Tactics_Types.main_context); FStar_Tactics_Types.main_goal = - (uu___434_14925.FStar_Tactics_Types.main_goal); + (uu___433_14929.FStar_Tactics_Types.main_goal); FStar_Tactics_Types.all_implicits = - (uu___434_14925.FStar_Tactics_Types.all_implicits); + (uu___433_14929.FStar_Tactics_Types.all_implicits); FStar_Tactics_Types.goals = - (uu___434_14925.FStar_Tactics_Types.goals); + (uu___433_14929.FStar_Tactics_Types.goals); FStar_Tactics_Types.smt_goals = - (uu___434_14925.FStar_Tactics_Types.smt_goals); + (uu___433_14929.FStar_Tactics_Types.smt_goals); FStar_Tactics_Types.depth = - (uu___434_14925.FStar_Tactics_Types.depth); + (uu___433_14929.FStar_Tactics_Types.depth); FStar_Tactics_Types.__dump = - (uu___434_14925.FStar_Tactics_Types.__dump); + (uu___433_14929.FStar_Tactics_Types.__dump); FStar_Tactics_Types.psc = - (uu___434_14925.FStar_Tactics_Types.psc); + (uu___433_14929.FStar_Tactics_Types.psc); FStar_Tactics_Types.entry_range = - (uu___434_14925.FStar_Tactics_Types.entry_range); + (uu___433_14929.FStar_Tactics_Types.entry_range); FStar_Tactics_Types.guard_policy = - (uu___434_14925.FStar_Tactics_Types.guard_policy); + (uu___433_14929.FStar_Tactics_Types.guard_policy); FStar_Tactics_Types.freshness = - (uu___434_14925.FStar_Tactics_Types.freshness); + (uu___433_14929.FStar_Tactics_Types.freshness); FStar_Tactics_Types.tac_verb_dbg = - (uu___434_14925.FStar_Tactics_Types.tac_verb_dbg); - FStar_Tactics_Types.local_state = uu____14926 + (uu___433_14929.FStar_Tactics_Types.tac_verb_dbg); + FStar_Tactics_Types.local_state = uu____14930 } in set ps1) in - FStar_All.pipe_left (wrap_err "lset") uu____14918 + FStar_All.pipe_left (wrap_err "lset") uu____14922 let (goal_of_goal_ty : env -> @@ -6997,18 +7001,18 @@ let (goal_of_goal_ty : = fun env -> fun typ -> - let uu____14953 = + let uu____14957 = FStar_TypeChecker_Util.new_implicit_var "proofstate_of_goal_ty" typ.FStar_Syntax_Syntax.pos env typ in - match uu____14953 with + match uu____14957 with | (u,ctx_uvars,g_u) -> - let uu____14986 = FStar_List.hd ctx_uvars in - (match uu____14986 with - | (ctx_uvar,uu____15000) -> + let uu____14990 = FStar_List.hd ctx_uvars in + (match uu____14990 with + | (ctx_uvar,uu____15004) -> let g = - let uu____15002 = FStar_Options.peek () in - FStar_Tactics_Types.mk_goal env ctx_uvar uu____15002 false + let uu____15006 = FStar_Options.peek () in + FStar_Tactics_Types.mk_goal env ctx_uvar uu____15006 false "" in (g, g_u)) @@ -7023,15 +7027,15 @@ let (proofstate_of_goal_ty : fun rng -> fun env -> fun typ -> - let uu____15025 = goal_of_goal_ty env typ in - match uu____15025 with + let uu____15029 = goal_of_goal_ty env typ in + match uu____15029 with | (g,g_u) -> let ps = - let uu____15037 = + let uu____15041 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "TacVerbose") in - let uu____15040 = FStar_Util.psmap_empty () in + let uu____15044 = FStar_Util.psmap_empty () in { FStar_Tactics_Types.main_context = env; FStar_Tactics_Types.main_goal = g; @@ -7046,9 +7050,9 @@ let (proofstate_of_goal_ty : FStar_Tactics_Types.entry_range = rng; FStar_Tactics_Types.guard_policy = FStar_Tactics_Types.SMT; FStar_Tactics_Types.freshness = (Prims.parse_int "0"); - FStar_Tactics_Types.tac_verb_dbg = uu____15037; - FStar_Tactics_Types.local_state = uu____15040 + FStar_Tactics_Types.tac_verb_dbg = uu____15041; + FStar_Tactics_Types.local_state = uu____15044 } in - let uu____15050 = FStar_Tactics_Types.goal_witness g in - (ps, uu____15050) + let uu____15054 = FStar_Tactics_Types.goal_witness g in + (ps, uu____15054) \ No newline at end of file diff --git a/src/ocaml-output/FStar_Tactics_Embedding.ml b/src/ocaml-output/FStar_Tactics_Embedding.ml index 629d23641c4..09d8f1b0a07 100644 --- a/src/ocaml-output/FStar_Tactics_Embedding.ml +++ b/src/ocaml-output/FStar_Tactics_Embedding.ml @@ -409,11 +409,11 @@ let (e_exn : Prims.exn FStar_Syntax_Embeddings.embedding) = in uu____1114 FStar_Pervasives_Native.None rng | FStar_Tactics_Types.EExn t -> - let uu___360_1150 = t in + let uu___359_1150 = t in { - FStar_Syntax_Syntax.n = (uu___360_1150.FStar_Syntax_Syntax.n); + FStar_Syntax_Syntax.n = (uu___359_1150.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = rng; - FStar_Syntax_Syntax.vars = (uu___360_1150.FStar_Syntax_Syntax.vars) + FStar_Syntax_Syntax.vars = (uu___359_1150.FStar_Syntax_Syntax.vars) } | e1 -> let s = diff --git a/src/ocaml-output/FStar_Tactics_Interpreter.ml b/src/ocaml-output/FStar_Tactics_Interpreter.ml index 99c846c8946..6399a9b408a 100644 --- a/src/ocaml-output/FStar_Tactics_Interpreter.ml +++ b/src/ocaml-output/FStar_Tactics_Interpreter.ml @@ -20,7 +20,7 @@ let mktot1' : fun nf -> fun ena -> fun enr -> - let uu___362_116 = + let uu___361_116 = FStar_Tactics_InterpFuns.mktot1 uarity nm f ea er nf ena enr in @@ -31,19 +31,19 @@ let mktot1' : { FStar_TypeChecker_Cfg.name = uu____117; FStar_TypeChecker_Cfg.arity = - (uu___362_116.FStar_TypeChecker_Cfg.arity); + (uu___361_116.FStar_TypeChecker_Cfg.arity); FStar_TypeChecker_Cfg.univ_arity = - (uu___362_116.FStar_TypeChecker_Cfg.univ_arity); + (uu___361_116.FStar_TypeChecker_Cfg.univ_arity); FStar_TypeChecker_Cfg.auto_reflect = - (uu___362_116.FStar_TypeChecker_Cfg.auto_reflect); + (uu___361_116.FStar_TypeChecker_Cfg.auto_reflect); FStar_TypeChecker_Cfg.strong_reduction_ok = - (uu___362_116.FStar_TypeChecker_Cfg.strong_reduction_ok); + (uu___361_116.FStar_TypeChecker_Cfg.strong_reduction_ok); FStar_TypeChecker_Cfg.requires_binder_substitution = - (uu___362_116.FStar_TypeChecker_Cfg.requires_binder_substitution); + (uu___361_116.FStar_TypeChecker_Cfg.requires_binder_substitution); FStar_TypeChecker_Cfg.interpretation = - (uu___362_116.FStar_TypeChecker_Cfg.interpretation); + (uu___361_116.FStar_TypeChecker_Cfg.interpretation); FStar_TypeChecker_Cfg.interpretation_nbe = - (uu___362_116.FStar_TypeChecker_Cfg.interpretation_nbe) + (uu___361_116.FStar_TypeChecker_Cfg.interpretation_nbe) } let mktot2' : @@ -70,7 +70,7 @@ let mktot2' : fun ena -> fun enb -> fun enr -> - let uu___363_256 = + let uu___362_256 = FStar_Tactics_InterpFuns.mktot2 uarity nm f ea eb er nf ena enb enr in @@ -81,19 +81,19 @@ let mktot2' : { FStar_TypeChecker_Cfg.name = uu____257; FStar_TypeChecker_Cfg.arity = - (uu___363_256.FStar_TypeChecker_Cfg.arity); + (uu___362_256.FStar_TypeChecker_Cfg.arity); FStar_TypeChecker_Cfg.univ_arity = - (uu___363_256.FStar_TypeChecker_Cfg.univ_arity); + (uu___362_256.FStar_TypeChecker_Cfg.univ_arity); FStar_TypeChecker_Cfg.auto_reflect = - (uu___363_256.FStar_TypeChecker_Cfg.auto_reflect); + (uu___362_256.FStar_TypeChecker_Cfg.auto_reflect); FStar_TypeChecker_Cfg.strong_reduction_ok = - (uu___363_256.FStar_TypeChecker_Cfg.strong_reduction_ok); + (uu___362_256.FStar_TypeChecker_Cfg.strong_reduction_ok); FStar_TypeChecker_Cfg.requires_binder_substitution = - (uu___363_256.FStar_TypeChecker_Cfg.requires_binder_substitution); + (uu___362_256.FStar_TypeChecker_Cfg.requires_binder_substitution); FStar_TypeChecker_Cfg.interpretation = - (uu___363_256.FStar_TypeChecker_Cfg.interpretation); + (uu___362_256.FStar_TypeChecker_Cfg.interpretation); FStar_TypeChecker_Cfg.interpretation_nbe = - (uu___363_256.FStar_TypeChecker_Cfg.interpretation_nbe) + (uu___362_256.FStar_TypeChecker_Cfg.interpretation_nbe) } let rec e_tactic_thunk : @@ -1744,271 +1744,271 @@ let (run_tactic_on_typ : match uu____2432 with | (env1,uu____2446) -> let env2 = - let uu___364_2452 = env1 in + let uu___363_2452 = env1 in { FStar_TypeChecker_Env.solver = - (uu___364_2452.FStar_TypeChecker_Env.solver); + (uu___363_2452.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___364_2452.FStar_TypeChecker_Env.range); + (uu___363_2452.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___364_2452.FStar_TypeChecker_Env.curmodule); + (uu___363_2452.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___364_2452.FStar_TypeChecker_Env.gamma); + (uu___363_2452.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___364_2452.FStar_TypeChecker_Env.gamma_sig); + (uu___363_2452.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___364_2452.FStar_TypeChecker_Env.gamma_cache); + (uu___363_2452.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___364_2452.FStar_TypeChecker_Env.modules); + (uu___363_2452.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___364_2452.FStar_TypeChecker_Env.expected_typ); + (uu___363_2452.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___364_2452.FStar_TypeChecker_Env.sigtab); + (uu___363_2452.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___364_2452.FStar_TypeChecker_Env.attrtab); + (uu___363_2452.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___364_2452.FStar_TypeChecker_Env.is_pattern); + (uu___363_2452.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = false; FStar_TypeChecker_Env.effects = - (uu___364_2452.FStar_TypeChecker_Env.effects); + (uu___363_2452.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___364_2452.FStar_TypeChecker_Env.generalize); + (uu___363_2452.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___364_2452.FStar_TypeChecker_Env.letrecs); + (uu___363_2452.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___364_2452.FStar_TypeChecker_Env.top_level); + (uu___363_2452.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___364_2452.FStar_TypeChecker_Env.check_uvars); + (uu___363_2452.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___364_2452.FStar_TypeChecker_Env.use_eq); + (uu___363_2452.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___364_2452.FStar_TypeChecker_Env.is_iface); + (uu___363_2452.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___364_2452.FStar_TypeChecker_Env.admit); + (uu___363_2452.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___364_2452.FStar_TypeChecker_Env.lax); + (uu___363_2452.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___364_2452.FStar_TypeChecker_Env.lax_universes); + (uu___363_2452.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___364_2452.FStar_TypeChecker_Env.phase1); + (uu___363_2452.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___364_2452.FStar_TypeChecker_Env.failhard); + (uu___363_2452.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___364_2452.FStar_TypeChecker_Env.nosynth); + (uu___363_2452.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___364_2452.FStar_TypeChecker_Env.uvar_subtyping); + (uu___363_2452.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___364_2452.FStar_TypeChecker_Env.tc_term); + (uu___363_2452.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___364_2452.FStar_TypeChecker_Env.type_of); + (uu___363_2452.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___364_2452.FStar_TypeChecker_Env.universe_of); + (uu___363_2452.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___364_2452.FStar_TypeChecker_Env.check_type_of); + (uu___363_2452.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___364_2452.FStar_TypeChecker_Env.use_bv_sorts); + (uu___363_2452.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___364_2452.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___363_2452.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___364_2452.FStar_TypeChecker_Env.normalized_eff_names); + (uu___363_2452.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___364_2452.FStar_TypeChecker_Env.fv_delta_depths); + (uu___363_2452.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___364_2452.FStar_TypeChecker_Env.proof_ns); + (uu___363_2452.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___364_2452.FStar_TypeChecker_Env.synth_hook); + (uu___363_2452.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___364_2452.FStar_TypeChecker_Env.splice); + (uu___363_2452.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___364_2452.FStar_TypeChecker_Env.postprocess); + (uu___363_2452.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___364_2452.FStar_TypeChecker_Env.is_native_tactic); + (uu___363_2452.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___364_2452.FStar_TypeChecker_Env.identifier_info); + (uu___363_2452.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___364_2452.FStar_TypeChecker_Env.tc_hooks); + (uu___363_2452.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___364_2452.FStar_TypeChecker_Env.dsenv); + (uu___363_2452.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___364_2452.FStar_TypeChecker_Env.nbe) + (uu___363_2452.FStar_TypeChecker_Env.nbe) } in let env3 = - let uu___365_2455 = env2 in + let uu___364_2455 = env2 in { FStar_TypeChecker_Env.solver = - (uu___365_2455.FStar_TypeChecker_Env.solver); + (uu___364_2455.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___365_2455.FStar_TypeChecker_Env.range); + (uu___364_2455.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___365_2455.FStar_TypeChecker_Env.curmodule); + (uu___364_2455.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___365_2455.FStar_TypeChecker_Env.gamma); + (uu___364_2455.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___365_2455.FStar_TypeChecker_Env.gamma_sig); + (uu___364_2455.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___365_2455.FStar_TypeChecker_Env.gamma_cache); + (uu___364_2455.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___365_2455.FStar_TypeChecker_Env.modules); + (uu___364_2455.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___365_2455.FStar_TypeChecker_Env.expected_typ); + (uu___364_2455.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___365_2455.FStar_TypeChecker_Env.sigtab); + (uu___364_2455.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___365_2455.FStar_TypeChecker_Env.attrtab); + (uu___364_2455.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___365_2455.FStar_TypeChecker_Env.is_pattern); + (uu___364_2455.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___365_2455.FStar_TypeChecker_Env.instantiate_imp); + (uu___364_2455.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___365_2455.FStar_TypeChecker_Env.effects); + (uu___364_2455.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___365_2455.FStar_TypeChecker_Env.generalize); + (uu___364_2455.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___365_2455.FStar_TypeChecker_Env.letrecs); + (uu___364_2455.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___365_2455.FStar_TypeChecker_Env.top_level); + (uu___364_2455.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___365_2455.FStar_TypeChecker_Env.check_uvars); + (uu___364_2455.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___365_2455.FStar_TypeChecker_Env.use_eq); + (uu___364_2455.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___365_2455.FStar_TypeChecker_Env.is_iface); + (uu___364_2455.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___365_2455.FStar_TypeChecker_Env.admit); + (uu___364_2455.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___365_2455.FStar_TypeChecker_Env.lax); + (uu___364_2455.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = true; FStar_TypeChecker_Env.phase1 = - (uu___365_2455.FStar_TypeChecker_Env.phase1); + (uu___364_2455.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___365_2455.FStar_TypeChecker_Env.failhard); + (uu___364_2455.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___365_2455.FStar_TypeChecker_Env.nosynth); + (uu___364_2455.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___365_2455.FStar_TypeChecker_Env.uvar_subtyping); + (uu___364_2455.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___365_2455.FStar_TypeChecker_Env.tc_term); + (uu___364_2455.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___365_2455.FStar_TypeChecker_Env.type_of); + (uu___364_2455.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___365_2455.FStar_TypeChecker_Env.universe_of); + (uu___364_2455.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___365_2455.FStar_TypeChecker_Env.check_type_of); + (uu___364_2455.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___365_2455.FStar_TypeChecker_Env.use_bv_sorts); + (uu___364_2455.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___365_2455.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___364_2455.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___365_2455.FStar_TypeChecker_Env.normalized_eff_names); + (uu___364_2455.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___365_2455.FStar_TypeChecker_Env.fv_delta_depths); + (uu___364_2455.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___365_2455.FStar_TypeChecker_Env.proof_ns); + (uu___364_2455.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___365_2455.FStar_TypeChecker_Env.synth_hook); + (uu___364_2455.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___365_2455.FStar_TypeChecker_Env.splice); + (uu___364_2455.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___365_2455.FStar_TypeChecker_Env.postprocess); + (uu___364_2455.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___365_2455.FStar_TypeChecker_Env.is_native_tactic); + (uu___364_2455.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___365_2455.FStar_TypeChecker_Env.identifier_info); + (uu___364_2455.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___365_2455.FStar_TypeChecker_Env.tc_hooks); + (uu___364_2455.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___365_2455.FStar_TypeChecker_Env.dsenv); + (uu___364_2455.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___365_2455.FStar_TypeChecker_Env.nbe) + (uu___364_2455.FStar_TypeChecker_Env.nbe) } in let env4 = - let uu___366_2458 = env3 in + let uu___365_2458 = env3 in { FStar_TypeChecker_Env.solver = - (uu___366_2458.FStar_TypeChecker_Env.solver); + (uu___365_2458.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___366_2458.FStar_TypeChecker_Env.range); + (uu___365_2458.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___366_2458.FStar_TypeChecker_Env.curmodule); + (uu___365_2458.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___366_2458.FStar_TypeChecker_Env.gamma); + (uu___365_2458.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___366_2458.FStar_TypeChecker_Env.gamma_sig); + (uu___365_2458.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___366_2458.FStar_TypeChecker_Env.gamma_cache); + (uu___365_2458.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___366_2458.FStar_TypeChecker_Env.modules); + (uu___365_2458.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___366_2458.FStar_TypeChecker_Env.expected_typ); + (uu___365_2458.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___366_2458.FStar_TypeChecker_Env.sigtab); + (uu___365_2458.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___366_2458.FStar_TypeChecker_Env.attrtab); + (uu___365_2458.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___366_2458.FStar_TypeChecker_Env.is_pattern); + (uu___365_2458.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___366_2458.FStar_TypeChecker_Env.instantiate_imp); + (uu___365_2458.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___366_2458.FStar_TypeChecker_Env.effects); + (uu___365_2458.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___366_2458.FStar_TypeChecker_Env.generalize); + (uu___365_2458.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___366_2458.FStar_TypeChecker_Env.letrecs); + (uu___365_2458.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___366_2458.FStar_TypeChecker_Env.top_level); + (uu___365_2458.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___366_2458.FStar_TypeChecker_Env.check_uvars); + (uu___365_2458.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___366_2458.FStar_TypeChecker_Env.use_eq); + (uu___365_2458.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___366_2458.FStar_TypeChecker_Env.is_iface); + (uu___365_2458.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___366_2458.FStar_TypeChecker_Env.admit); + (uu___365_2458.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___366_2458.FStar_TypeChecker_Env.lax); + (uu___365_2458.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___366_2458.FStar_TypeChecker_Env.lax_universes); + (uu___365_2458.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___366_2458.FStar_TypeChecker_Env.phase1); + (uu___365_2458.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = true; FStar_TypeChecker_Env.nosynth = - (uu___366_2458.FStar_TypeChecker_Env.nosynth); + (uu___365_2458.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___366_2458.FStar_TypeChecker_Env.uvar_subtyping); + (uu___365_2458.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___366_2458.FStar_TypeChecker_Env.tc_term); + (uu___365_2458.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___366_2458.FStar_TypeChecker_Env.type_of); + (uu___365_2458.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___366_2458.FStar_TypeChecker_Env.universe_of); + (uu___365_2458.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___366_2458.FStar_TypeChecker_Env.check_type_of); + (uu___365_2458.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___366_2458.FStar_TypeChecker_Env.use_bv_sorts); + (uu___365_2458.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___366_2458.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___365_2458.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___366_2458.FStar_TypeChecker_Env.normalized_eff_names); + (uu___365_2458.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___366_2458.FStar_TypeChecker_Env.fv_delta_depths); + (uu___365_2458.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___366_2458.FStar_TypeChecker_Env.proof_ns); + (uu___365_2458.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___366_2458.FStar_TypeChecker_Env.synth_hook); + (uu___365_2458.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___366_2458.FStar_TypeChecker_Env.splice); + (uu___365_2458.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___366_2458.FStar_TypeChecker_Env.postprocess); + (uu___365_2458.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___366_2458.FStar_TypeChecker_Env.is_native_tactic); + (uu___365_2458.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___366_2458.FStar_TypeChecker_Env.identifier_info); + (uu___365_2458.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___366_2458.FStar_TypeChecker_Env.tc_hooks); + (uu___365_2458.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___366_2458.FStar_TypeChecker_Env.dsenv); + (uu___365_2458.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___366_2458.FStar_TypeChecker_Env.nbe) + (uu___365_2458.FStar_TypeChecker_Env.nbe) } in let rng = let uu____2461 = FStar_Range.use_range rng_goal in @@ -2139,18 +2139,18 @@ let (run_tactic_on_typ : uu____2708 else ()); (let g1 = - let uu___367_2716 = + let uu___366_2716 = FStar_TypeChecker_Env.trivial_guard in { FStar_TypeChecker_Env.guard_f = - (uu___367_2716.FStar_TypeChecker_Env.guard_f); + (uu___366_2716.FStar_TypeChecker_Env.guard_f); FStar_TypeChecker_Env.deferred = - (uu___367_2716.FStar_TypeChecker_Env.deferred); + (uu___366_2716.FStar_TypeChecker_Env.deferred); FStar_TypeChecker_Env.univ_ineqs = - (uu___367_2716.FStar_TypeChecker_Env.univ_ineqs); + (uu___366_2716.FStar_TypeChecker_Env.univ_ineqs); FStar_TypeChecker_Env.implicits = (ps1.FStar_Tactics_Types.all_implicits) @@ -2249,27 +2249,19 @@ let (run_tactic_on_typ : Prims.strcat "uncaught exception: " uu____2837 - | uu____2840 -> - let uu____2841 = - FStar_Util.message_of_exn - e1 - in - Prims.strcat - "uncaught internal exception: " - uu____2841 - in - let uu____2844 = - let uu____2850 = - let uu____2852 = + | e2 -> FStar_Exn.raise e2 in + let uu____2842 = + let uu____2848 = + let uu____2850 = texn_to_string e in FStar_Util.format1 "user tactic failed: %s" - uu____2852 + uu____2850 in (FStar_Errors.Fatal_UserTacticFailure, - uu____2850) + uu____2848) in - FStar_Errors.raise_error uu____2844 + FStar_Errors.raise_error uu____2842 ps1.FStar_Tactics_Types.entry_range)))))))))) type pol = @@ -2277,12 +2269,12 @@ type pol = | Neg | Both let (uu___is_Pos : pol -> Prims.bool) = - fun projectee -> match projectee with | Pos -> true | uu____2871 -> false + fun projectee -> match projectee with | Pos -> true | uu____2869 -> false let (uu___is_Neg : pol -> Prims.bool) = - fun projectee -> match projectee with | Neg -> true | uu____2882 -> false + fun projectee -> match projectee with | Neg -> true | uu____2880 -> false let (uu___is_Both : pol -> Prims.bool) = fun projectee -> - match projectee with | Both -> true | uu____2893 -> false + match projectee with | Both -> true | uu____2891 -> false type 'a tres_m = | Unchanged of 'a @@ -2292,13 +2284,13 @@ type 'a tres_m = FStar_Pervasives_Native.tuple3 let uu___is_Unchanged : 'a . 'a tres_m -> Prims.bool = fun projectee -> - match projectee with | Unchanged _0 -> true | uu____2952 -> false + match projectee with | Unchanged _0 -> true | uu____2950 -> false let __proj__Unchanged__item___0 : 'a . 'a tres_m -> 'a = fun projectee -> match projectee with | Unchanged _0 -> _0 let uu___is_Simplified : 'a . 'a tres_m -> Prims.bool = fun projectee -> - match projectee with | Simplified _0 -> true | uu____2997 -> false + match projectee with | Simplified _0 -> true | uu____2995 -> false let __proj__Simplified__item___0 : 'a . @@ -2307,7 +2299,7 @@ let __proj__Simplified__item___0 : = fun projectee -> match projectee with | Simplified _0 -> _0 let uu___is_Dual : 'a . 'a tres_m -> Prims.bool = fun projectee -> - match projectee with | Dual _0 -> true | uu____3056 -> false + match projectee with | Dual _0 -> true | uu____3054 -> false let __proj__Dual__item___0 : 'a . @@ -2316,7 +2308,7 @@ let __proj__Dual__item___0 : FStar_Pervasives_Native.tuple3 = fun projectee -> match projectee with | Dual _0 -> _0 type tres = FStar_Syntax_Syntax.term tres_m -let tpure : 'Auu____3100 . 'Auu____3100 -> 'Auu____3100 tres_m = +let tpure : 'Auu____3098 . 'Auu____3098 -> 'Auu____3098 tres_m = fun x -> Unchanged x let (flip : pol -> pol) = fun p -> match p with | Pos -> Neg | Neg -> Pos | Both -> Both @@ -2325,18 +2317,18 @@ let (by_tactic_interp : fun pol -> fun e -> fun t -> - let uu____3130 = FStar_Syntax_Util.head_and_args t in - match uu____3130 with + let uu____3128 = FStar_Syntax_Util.head_and_args t in + match uu____3128 with | (hd1,args) -> - let uu____3173 = - let uu____3188 = - let uu____3189 = FStar_Syntax_Util.un_uinst hd1 in - uu____3189.FStar_Syntax_Syntax.n in - (uu____3188, args) in - (match uu____3173 with + let uu____3171 = + let uu____3186 = + let uu____3187 = FStar_Syntax_Util.un_uinst hd1 in + uu____3187.FStar_Syntax_Syntax.n in + (uu____3186, args) in + (match uu____3171 with | (FStar_Syntax_Syntax.Tm_fvar fv,(rett,FStar_Pervasives_Native.Some - (FStar_Syntax_Syntax.Implicit uu____3204))::(tactic,FStar_Pervasives_Native.None + (FStar_Syntax_Syntax.Implicit uu____3202))::(tactic,FStar_Pervasives_Native.None )::(assertion,FStar_Pervasives_Native.None )::[]) when @@ -2345,22 +2337,22 @@ let (by_tactic_interp : -> (match pol with | Pos -> - let uu____3268 = + let uu____3266 = run_tactic_on_typ tactic.FStar_Syntax_Syntax.pos assertion.FStar_Syntax_Syntax.pos tactic e assertion in - (match uu____3268 with - | (gs,uu____3276) -> + (match uu____3266 with + | (gs,uu____3274) -> Simplified (FStar_Syntax_Util.t_true, gs)) | Both -> - let uu____3283 = + let uu____3281 = run_tactic_on_typ tactic.FStar_Syntax_Syntax.pos assertion.FStar_Syntax_Syntax.pos tactic e assertion in - (match uu____3283 with - | (gs,uu____3291) -> + (match uu____3281 with + | (gs,uu____3289) -> Dual (assertion, FStar_Syntax_Util.t_true, gs)) | Neg -> Simplified (assertion, [])) | (FStar_Syntax_Syntax.Tm_fvar @@ -2370,33 +2362,33 @@ let (by_tactic_interp : -> (match pol with | Pos -> - let uu____3334 = - let uu____3341 = - let uu____3344 = - let uu____3345 = + let uu____3332 = + let uu____3339 = + let uu____3342 = + let uu____3343 = FStar_Tactics_Basic.goal_of_goal_ty e assertion in FStar_All.pipe_left FStar_Pervasives_Native.fst - uu____3345 + uu____3343 in - [uu____3344] in - (FStar_Syntax_Util.t_true, uu____3341) in - Simplified uu____3334 + [uu____3342] in + (FStar_Syntax_Util.t_true, uu____3339) in + Simplified uu____3332 | Both -> - let uu____3356 = - let uu____3365 = - let uu____3368 = - let uu____3369 = + let uu____3354 = + let uu____3363 = + let uu____3366 = + let uu____3367 = FStar_Tactics_Basic.goal_of_goal_ty e assertion in FStar_All.pipe_left FStar_Pervasives_Native.fst - uu____3369 + uu____3367 in - [uu____3368] in - (assertion, FStar_Syntax_Util.t_true, uu____3365) in - Dual uu____3356 + [uu____3366] in + (assertion, FStar_Syntax_Util.t_true, uu____3363) in + Dual uu____3354 | Neg -> Simplified (assertion, [])) - | uu____3382 -> Unchanged t) + | uu____3380 -> Unchanged t) let explode : 'a . @@ -2412,17 +2404,17 @@ let explode : let comb1 : 'a 'b . ('a -> 'b) -> 'a tres_m -> 'b tres_m = fun f -> - fun uu___361_3474 -> - match uu___361_3474 with - | Unchanged t -> let uu____3480 = f t in Unchanged uu____3480 + fun uu___360_3472 -> + match uu___360_3472 with + | Unchanged t -> let uu____3478 = f t in Unchanged uu____3478 | Simplified (t,gs) -> - let uu____3487 = let uu____3494 = f t in (uu____3494, gs) in - Simplified uu____3487 + let uu____3485 = let uu____3492 = f t in (uu____3492, gs) in + Simplified uu____3485 | Dual (tn,tp,gs) -> - let uu____3504 = - let uu____3513 = f tn in - let uu____3514 = f tp in (uu____3513, uu____3514, gs) in - Dual uu____3504 + let uu____3502 = + let uu____3511 = f tn in + let uu____3512 = f tp in (uu____3511, uu____3512, gs) in + Dual uu____3502 let comb2 : 'a 'b 'c . ('a -> 'b -> 'c) -> 'a tres_m -> 'b tres_m -> 'c tres_m = @@ -2431,33 +2423,33 @@ let comb2 : fun y -> match (x, y) with | (Unchanged t1,Unchanged t2) -> - let uu____3578 = f t1 t2 in Unchanged uu____3578 + let uu____3576 = f t1 t2 in Unchanged uu____3576 | (Unchanged t1,Simplified (t2,gs)) -> - let uu____3590 = let uu____3597 = f t1 t2 in (uu____3597, gs) + let uu____3588 = let uu____3595 = f t1 t2 in (uu____3595, gs) in - Simplified uu____3590 + Simplified uu____3588 | (Simplified (t1,gs),Unchanged t2) -> - let uu____3611 = let uu____3618 = f t1 t2 in (uu____3618, gs) + let uu____3609 = let uu____3616 = f t1 t2 in (uu____3616, gs) in - Simplified uu____3611 + Simplified uu____3609 | (Simplified (t1,gs1),Simplified (t2,gs2)) -> - let uu____3637 = - let uu____3644 = f t1 t2 in - (uu____3644, (FStar_List.append gs1 gs2)) in - Simplified uu____3637 - | uu____3647 -> - let uu____3656 = explode x in - (match uu____3656 with + let uu____3635 = + let uu____3642 = f t1 t2 in + (uu____3642, (FStar_List.append gs1 gs2)) in + Simplified uu____3635 + | uu____3645 -> + let uu____3654 = explode x in + (match uu____3654 with | (n1,p1,gs1) -> - let uu____3674 = explode y in - (match uu____3674 with + let uu____3672 = explode y in + (match uu____3672 with | (n2,p2,gs2) -> - let uu____3692 = - let uu____3701 = f n1 n2 in - let uu____3702 = f p1 p2 in - (uu____3701, uu____3702, (FStar_List.append gs1 gs2)) + let uu____3690 = + let uu____3699 = f n1 n2 in + let uu____3700 = f p1 p2 in + (uu____3699, uu____3700, (FStar_List.append gs1 gs2)) in - Dual uu____3692)) + Dual uu____3690)) let comb_list : 'a . 'a tres_m Prims.list -> 'a Prims.list tres_m = fun rs -> @@ -2465,15 +2457,15 @@ let comb_list : 'a . 'a tres_m Prims.list -> 'a Prims.list tres_m = match rs1 with | [] -> acc | hd1::tl1 -> - let uu____3775 = comb2 (fun l -> fun r -> l :: r) hd1 acc in - aux tl1 uu____3775 + let uu____3773 = comb2 (fun l -> fun r -> l :: r) hd1 acc in + aux tl1 uu____3773 in aux (FStar_List.rev rs) (tpure []) let emit : 'a . FStar_Tactics_Types.goal Prims.list -> 'a tres_m -> 'a tres_m = fun gs -> - fun m -> comb2 (fun uu____3824 -> fun x -> x) (Simplified ((), gs)) m + fun m -> comb2 (fun uu____3822 -> fun x -> x) (Simplified ((), gs)) m let rec (traverse : (pol -> FStar_TypeChecker_Env.env -> FStar_Syntax_Syntax.term -> tres) -> @@ -2484,26 +2476,26 @@ let rec (traverse : fun e -> fun t -> let r = - let uu____3867 = - let uu____3868 = FStar_Syntax_Subst.compress t in - uu____3868.FStar_Syntax_Syntax.n in - match uu____3867 with + let uu____3865 = + let uu____3866 = FStar_Syntax_Subst.compress t in + uu____3866.FStar_Syntax_Syntax.n in + match uu____3865 with | FStar_Syntax_Syntax.Tm_uinst (t1,us) -> let tr = traverse f pol e t1 in - let uu____3880 = + let uu____3878 = comb1 (fun t' -> FStar_Syntax_Syntax.Tm_uinst (t', us)) in - uu____3880 tr + uu____3878 tr | FStar_Syntax_Syntax.Tm_meta (t1,m) -> let tr = traverse f pol e t1 in - let uu____3906 = + let uu____3904 = comb1 (fun t' -> FStar_Syntax_Syntax.Tm_meta (t', m)) in - uu____3906 tr + uu____3904 tr | FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_fvar fv; - FStar_Syntax_Syntax.pos = uu____3926; - FStar_Syntax_Syntax.vars = uu____3927;_},(p,uu____3929):: - (q,uu____3931)::[]) + FStar_Syntax_Syntax.pos = uu____3924; + FStar_Syntax_Syntax.vars = uu____3925;_},(p,uu____3927):: + (q,uu____3929)::[]) when FStar_Syntax_Syntax.fv_eq_lid fv FStar_Parser_Const.imp_lid -> @@ -2512,18 +2504,18 @@ let rec (traverse : in let r1 = traverse f (flip pol) e p in let r2 = - let uu____3989 = FStar_TypeChecker_Env.push_bv e x in - traverse f pol uu____3989 q in + let uu____3987 = FStar_TypeChecker_Env.push_bv e x in + traverse f pol uu____3987 q in comb2 (fun l -> fun r -> - let uu____4003 = FStar_Syntax_Util.mk_imp l r in - uu____4003.FStar_Syntax_Syntax.n) r1 r2 + let uu____4001 = FStar_Syntax_Util.mk_imp l r in + uu____4001.FStar_Syntax_Syntax.n) r1 r2 | FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_fvar fv; - FStar_Syntax_Syntax.pos = uu____4007; - FStar_Syntax_Syntax.vars = uu____4008;_},(p,uu____4010):: - (q,uu____4012)::[]) + FStar_Syntax_Syntax.pos = uu____4005; + FStar_Syntax_Syntax.vars = uu____4006;_},(p,uu____4008):: + (q,uu____4010)::[]) when FStar_Syntax_Syntax.fv_eq_lid fv FStar_Parser_Const.iff_lid -> @@ -2534,32 +2526,32 @@ let rec (traverse : FStar_Syntax_Syntax.new_bv FStar_Pervasives_Native.None q in let r1 = - let uu____4070 = FStar_TypeChecker_Env.push_bv e xq in - traverse f Both uu____4070 p in + let uu____4068 = FStar_TypeChecker_Env.push_bv e xq in + traverse f Both uu____4068 p in let r2 = - let uu____4072 = FStar_TypeChecker_Env.push_bv e xp in - traverse f Both uu____4072 q in + let uu____4070 = FStar_TypeChecker_Env.push_bv e xp in + traverse f Both uu____4070 q in (match (r1, r2) with - | (Unchanged uu____4079,Unchanged uu____4080) -> + | (Unchanged uu____4077,Unchanged uu____4078) -> comb2 (fun l -> fun r -> - let uu____4098 = FStar_Syntax_Util.mk_iff l r in - uu____4098.FStar_Syntax_Syntax.n) r1 r2 - | uu____4101 -> - let uu____4110 = explode r1 in - (match uu____4110 with + let uu____4096 = FStar_Syntax_Util.mk_iff l r in + uu____4096.FStar_Syntax_Syntax.n) r1 r2 + | uu____4099 -> + let uu____4108 = explode r1 in + (match uu____4108 with | (pn,pp,gs1) -> - let uu____4128 = explode r2 in - (match uu____4128 with + let uu____4126 = explode r2 in + (match uu____4126 with | (qn,qp,gs2) -> let t1 = - let uu____4149 = + let uu____4147 = FStar_Syntax_Util.mk_imp pn qp in - let uu____4152 = + let uu____4150 = FStar_Syntax_Util.mk_imp qn pp in - FStar_Syntax_Util.mk_conj uu____4149 - uu____4152 + FStar_Syntax_Util.mk_conj uu____4147 + uu____4150 in Simplified ((t1.FStar_Syntax_Syntax.n), @@ -2568,9 +2560,9 @@ let rec (traverse : let r0 = traverse f pol e hd1 in let r1 = FStar_List.fold_right - (fun uu____4216 -> + (fun uu____4214 -> fun r -> - match uu____4216 with + match uu____4214 with | (a,q) -> let r' = traverse f pol e a in comb2 @@ -2582,123 +2574,123 @@ let rec (traverse : fun args1 -> FStar_Syntax_Syntax.Tm_app (hd2, args1)) r0 r1 | FStar_Syntax_Syntax.Tm_abs (bs,t1,k) -> - let uu____4368 = FStar_Syntax_Subst.open_term bs t1 in - (match uu____4368 with + let uu____4366 = FStar_Syntax_Subst.open_term bs t1 in + (match uu____4366 with | (bs1,topen) -> let e' = FStar_TypeChecker_Env.push_binders e bs1 in let r0 = FStar_List.map - (fun uu____4408 -> - match uu____4408 with + (fun uu____4406 -> + match uu____4406 with | (bv,aq) -> let r = traverse f (flip pol) e bv.FStar_Syntax_Syntax.sort in - let uu____4430 = + let uu____4428 = comb1 (fun s' -> - ((let uu___368_4462 = bv in + ((let uu___367_4460 = bv in { FStar_Syntax_Syntax.ppname = - (uu___368_4462.FStar_Syntax_Syntax.ppname); + (uu___367_4460.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___368_4462.FStar_Syntax_Syntax.index); + (uu___367_4460.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = s' }), aq)) in - uu____4430 r) bs1 + uu____4428 r) bs1 in let rbs = comb_list r0 in let rt = traverse f pol e' topen in comb2 (fun bs2 -> fun t2 -> - let uu____4490 = FStar_Syntax_Util.abs bs2 t2 k + let uu____4488 = FStar_Syntax_Util.abs bs2 t2 k in - uu____4490.FStar_Syntax_Syntax.n) rbs rt) + uu____4488.FStar_Syntax_Syntax.n) rbs rt) | FStar_Syntax_Syntax.Tm_ascribed (t1,asc,ef) -> - let uu____4536 = traverse f pol e t1 in - let uu____4541 = + let uu____4534 = traverse f pol e t1 in + let uu____4539 = comb1 (fun t2 -> FStar_Syntax_Syntax.Tm_ascribed (t2, asc, ef)) in - uu____4541 uu____4536 + uu____4539 uu____4534 | FStar_Syntax_Syntax.Tm_match (sc,brs) -> - let uu____4616 = traverse f pol e sc in - let uu____4621 = - let uu____4640 = + let uu____4614 = traverse f pol e sc in + let uu____4619 = + let uu____4638 = FStar_List.map (fun br -> - let uu____4657 = FStar_Syntax_Subst.open_branch br + let uu____4655 = FStar_Syntax_Subst.open_branch br in - match uu____4657 with + match uu____4655 with | (pat,w,exp) -> let bvs = FStar_Syntax_Syntax.pat_bvs pat in let e1 = FStar_TypeChecker_Env.push_bvs e bvs in let r = traverse f pol e1 exp in - let uu____4684 = + let uu____4682 = comb1 (fun exp1 -> FStar_Syntax_Subst.close_branch (pat, w, exp1)) in - uu____4684 r) brs + uu____4682 r) brs in - comb_list uu____4640 in + comb_list uu____4638 in comb2 (fun sc1 -> fun brs1 -> FStar_Syntax_Syntax.Tm_match (sc1, brs1)) - uu____4616 uu____4621 + uu____4614 uu____4619 | x -> tpure x in match r with | Unchanged tn' -> f pol e - (let uu___369_4770 = t in + (let uu___368_4768 = t in { FStar_Syntax_Syntax.n = tn'; FStar_Syntax_Syntax.pos = - (uu___369_4770.FStar_Syntax_Syntax.pos); + (uu___368_4768.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___369_4770.FStar_Syntax_Syntax.vars) + (uu___368_4768.FStar_Syntax_Syntax.vars) }) | Simplified (tn',gs) -> - let uu____4777 = + let uu____4775 = f pol e - (let uu___370_4781 = t in + (let uu___369_4779 = t in { FStar_Syntax_Syntax.n = tn'; FStar_Syntax_Syntax.pos = - (uu___370_4781.FStar_Syntax_Syntax.pos); + (uu___369_4779.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___370_4781.FStar_Syntax_Syntax.vars) + (uu___369_4779.FStar_Syntax_Syntax.vars) }) in - emit gs uu____4777 + emit gs uu____4775 | Dual (tn,tp,gs) -> let rp = f pol e - (let uu___371_4791 = t in + (let uu___370_4789 = t in { FStar_Syntax_Syntax.n = tp; FStar_Syntax_Syntax.pos = - (uu___371_4791.FStar_Syntax_Syntax.pos); + (uu___370_4789.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___371_4791.FStar_Syntax_Syntax.vars) + (uu___370_4789.FStar_Syntax_Syntax.vars) }) in - let uu____4792 = explode rp in - (match uu____4792 with - | (uu____4801,p',gs') -> + let uu____4790 = explode rp in + (match uu____4790 with + | (uu____4799,p',gs') -> Dual - ((let uu___372_4811 = t in + ((let uu___371_4809 = t in { FStar_Syntax_Syntax.n = tn; FStar_Syntax_Syntax.pos = - (uu___372_4811.FStar_Syntax_Syntax.pos); + (uu___371_4809.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___372_4811.FStar_Syntax_Syntax.vars) + (uu___371_4809.FStar_Syntax_Syntax.vars) }), p', (FStar_List.append gs gs'))) let (getprop : @@ -2725,136 +2717,136 @@ let (preprocess : = fun env -> fun goal -> - (let uu____4856 = + (let uu____4854 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Tac") in - FStar_ST.op_Colon_Equals tacdbg uu____4856); - (let uu____4881 = FStar_ST.op_Bang tacdbg in - if uu____4881 + FStar_ST.op_Colon_Equals tacdbg uu____4854); + (let uu____4879 = FStar_ST.op_Bang tacdbg in + if uu____4879 then - let uu____4905 = - let uu____4907 = FStar_TypeChecker_Env.all_binders env in - FStar_All.pipe_right uu____4907 + let uu____4903 = + let uu____4905 = FStar_TypeChecker_Env.all_binders env in + FStar_All.pipe_right uu____4905 (FStar_Syntax_Print.binders_to_string ",") in - let uu____4910 = FStar_Syntax_Print.term_to_string goal in - FStar_Util.print2 "About to preprocess %s |= %s\n" uu____4905 - uu____4910 + let uu____4908 = FStar_Syntax_Print.term_to_string goal in + FStar_Util.print2 "About to preprocess %s |= %s\n" uu____4903 + uu____4908 else ()); (let initial = ((Prims.parse_int "1"), []) in - let uu____4945 = - let uu____4954 = traverse by_tactic_interp Pos env goal in - match uu____4954 with + let uu____4943 = + let uu____4952 = traverse by_tactic_interp Pos env goal in + match uu____4952 with | Unchanged t' -> (t', []) | Simplified (t',gs) -> (t', gs) - | uu____4978 -> failwith "no" in - match uu____4945 with + | uu____4976 -> failwith "no" in + match uu____4943 with | (t',gs) -> - ((let uu____5007 = FStar_ST.op_Bang tacdbg in - if uu____5007 + ((let uu____5005 = FStar_ST.op_Bang tacdbg in + if uu____5005 then - let uu____5031 = - let uu____5033 = FStar_TypeChecker_Env.all_binders env in - FStar_All.pipe_right uu____5033 + let uu____5029 = + let uu____5031 = FStar_TypeChecker_Env.all_binders env in + FStar_All.pipe_right uu____5031 (FStar_Syntax_Print.binders_to_string ", ") in - let uu____5036 = FStar_Syntax_Print.term_to_string t' in + let uu____5034 = FStar_Syntax_Print.term_to_string t' in FStar_Util.print2 "Main goal simplified to: %s |- %s\n" - uu____5031 uu____5036 + uu____5029 uu____5034 else ()); (let s = initial in let s1 = FStar_List.fold_left - (fun uu____5091 -> + (fun uu____5089 -> fun g -> - match uu____5091 with + match uu____5089 with | (n1,gs1) -> let phi = - let uu____5140 = - let uu____5143 = FStar_Tactics_Types.goal_env g + let uu____5138 = + let uu____5141 = FStar_Tactics_Types.goal_env g in - let uu____5144 = + let uu____5142 = FStar_Tactics_Types.goal_type g in - getprop uu____5143 uu____5144 in - match uu____5140 with + getprop uu____5141 uu____5142 in + match uu____5138 with | FStar_Pervasives_Native.None -> - let uu____5145 = - let uu____5151 = - let uu____5153 = - let uu____5155 = + let uu____5143 = + let uu____5149 = + let uu____5151 = + let uu____5153 = FStar_Tactics_Types.goal_type g in FStar_Syntax_Print.term_to_string - uu____5155 + uu____5153 in FStar_Util.format1 "Tactic returned proof-relevant goal: %s" - uu____5153 + uu____5151 in (FStar_Errors.Fatal_TacticProofRelevantGoal, - uu____5151) + uu____5149) in - FStar_Errors.raise_error uu____5145 + FStar_Errors.raise_error uu____5143 env.FStar_TypeChecker_Env.range | FStar_Pervasives_Native.Some phi -> phi in - ((let uu____5160 = FStar_ST.op_Bang tacdbg in - if uu____5160 + ((let uu____5158 = FStar_ST.op_Bang tacdbg in + if uu____5158 then - let uu____5184 = FStar_Util.string_of_int n1 + let uu____5182 = FStar_Util.string_of_int n1 in - let uu____5186 = - let uu____5188 = + let uu____5184 = + let uu____5186 = FStar_Tactics_Types.goal_type g in - FStar_Syntax_Print.term_to_string uu____5188 + FStar_Syntax_Print.term_to_string uu____5186 in FStar_Util.print2 "Got goal #%s: %s\n" - uu____5184 uu____5186 + uu____5182 uu____5184 else ()); (let label1 = - let uu____5194 = - let uu____5196 = + let uu____5192 = + let uu____5194 = FStar_Tactics_Types.get_label g in - uu____5196 = "" in - if uu____5194 + uu____5194 = "" in + if uu____5192 then - let uu____5202 = FStar_Util.string_of_int n1 + let uu____5200 = FStar_Util.string_of_int n1 in Prims.strcat "Could not prove goal #" - uu____5202 + uu____5200 else - (let uu____5207 = - let uu____5209 = + (let uu____5205 = + let uu____5207 = FStar_Util.string_of_int n1 in - let uu____5211 = - let uu____5213 = - let uu____5215 = + let uu____5209 = + let uu____5211 = + let uu____5213 = FStar_Tactics_Types.get_label g in - Prims.strcat uu____5215 ")" in - Prims.strcat " (" uu____5213 in - Prims.strcat uu____5209 uu____5211 in + Prims.strcat uu____5213 ")" in + Prims.strcat " (" uu____5211 in + Prims.strcat uu____5207 uu____5209 in Prims.strcat "Could not prove goal #" - uu____5207) + uu____5205) in let gt' = FStar_TypeChecker_Util.label label1 goal.FStar_Syntax_Syntax.pos phi in - let uu____5221 = - let uu____5230 = - let uu____5237 = + let uu____5219 = + let uu____5228 = + let uu____5235 = FStar_Tactics_Types.goal_env g in - (uu____5237, gt', + (uu____5235, gt', (g.FStar_Tactics_Types.opts)) in - uu____5230 :: gs1 in - ((n1 + (Prims.parse_int "1")), uu____5221)))) s + uu____5228 :: gs1 in + ((n1 + (Prims.parse_int "1")), uu____5219)))) s gs in - let uu____5254 = s1 in - match uu____5254 with - | (uu____5276,gs1) -> - let uu____5296 = - let uu____5303 = FStar_Options.peek () in - (env, t', uu____5303) in - uu____5296 :: gs1))) + let uu____5252 = s1 in + match uu____5252 with + | (uu____5274,gs1) -> + let uu____5294 = + let uu____5301 = FStar_Options.peek () in + (env, t', uu____5301) in + uu____5294 :: gs1))) let (synthesize : FStar_TypeChecker_Env.env -> @@ -2866,42 +2858,42 @@ let (synthesize : fun tau -> if env.FStar_TypeChecker_Env.nosynth then - let uu____5327 = - let uu____5332 = + let uu____5325 = + let uu____5330 = FStar_TypeChecker_Util.fvar_const env FStar_Parser_Const.magic_lid in - let uu____5333 = - let uu____5334 = + let uu____5331 = + let uu____5332 = FStar_Syntax_Syntax.as_arg FStar_Syntax_Util.exp_unit in - [uu____5334] in - FStar_Syntax_Syntax.mk_Tm_app uu____5332 uu____5333 in - uu____5327 FStar_Pervasives_Native.None typ.FStar_Syntax_Syntax.pos + [uu____5332] in + FStar_Syntax_Syntax.mk_Tm_app uu____5330 uu____5331 in + uu____5325 FStar_Pervasives_Native.None typ.FStar_Syntax_Syntax.pos else - ((let uu____5364 = + ((let uu____5362 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Tac") in - FStar_ST.op_Colon_Equals tacdbg uu____5364); - (let uu____5388 = + FStar_ST.op_Colon_Equals tacdbg uu____5362); + (let uu____5386 = run_tactic_on_typ tau.FStar_Syntax_Syntax.pos typ.FStar_Syntax_Syntax.pos tau env typ in - match uu____5388 with + match uu____5386 with | (gs,w) -> (FStar_List.iter (fun g -> - let uu____5409 = - let uu____5412 = FStar_Tactics_Types.goal_env g in - let uu____5413 = FStar_Tactics_Types.goal_type g in - getprop uu____5412 uu____5413 in - match uu____5409 with + let uu____5407 = + let uu____5410 = FStar_Tactics_Types.goal_env g in + let uu____5411 = FStar_Tactics_Types.goal_type g in + getprop uu____5410 uu____5411 in + match uu____5407 with | FStar_Pervasives_Native.Some vc -> - ((let uu____5416 = FStar_ST.op_Bang tacdbg in - if uu____5416 + ((let uu____5414 = FStar_ST.op_Bang tacdbg in + if uu____5414 then - let uu____5440 = + let uu____5438 = FStar_Syntax_Print.term_to_string vc in FStar_Util.print1 "Synthesis left a goal: %s\n" - uu____5440 + uu____5438 else ()); (let guard = { @@ -2911,10 +2903,10 @@ let (synthesize : FStar_TypeChecker_Env.univ_ineqs = ([], []); FStar_TypeChecker_Env.implicits = [] } in - let uu____5455 = FStar_Tactics_Types.goal_env g + let uu____5453 = FStar_Tactics_Types.goal_env g in FStar_TypeChecker_Rel.force_trivial_guard - uu____5455 guard)) + uu____5453 guard)) | FStar_Pervasives_Native.None -> FStar_Errors.raise_error (FStar_Errors.Fatal_OpenGoalsInSynthesis, @@ -2931,30 +2923,30 @@ let (splice : if env.FStar_TypeChecker_Env.nosynth then [] else - ((let uu____5477 = + ((let uu____5475 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Tac") in - FStar_ST.op_Colon_Equals tacdbg uu____5477); + FStar_ST.op_Colon_Equals tacdbg uu____5475); (let typ = FStar_Syntax_Syntax.t_decls in - let uu____5502 = + let uu____5500 = run_tactic_on_typ tau.FStar_Syntax_Syntax.pos tau.FStar_Syntax_Syntax.pos tau env typ in - match uu____5502 with + match uu____5500 with | (gs,w) -> - ((let uu____5518 = + ((let uu____5516 = FStar_List.existsML (fun g -> - let uu____5523 = - let uu____5525 = - let uu____5528 = FStar_Tactics_Types.goal_env g + let uu____5521 = + let uu____5523 = + let uu____5526 = FStar_Tactics_Types.goal_env g in - let uu____5529 = FStar_Tactics_Types.goal_type g + let uu____5527 = FStar_Tactics_Types.goal_type g in - getprop uu____5528 uu____5529 in - FStar_Option.isSome uu____5525 in - Prims.op_Negation uu____5523) gs + getprop uu____5526 uu____5527 in + FStar_Option.isSome uu____5523 in + Prims.op_Negation uu____5521) gs in - if uu____5518 + if uu____5516 then FStar_Errors.raise_error (FStar_Errors.Fatal_OpenGoalsInSynthesis, @@ -2970,21 +2962,21 @@ let (splice : FStar_TypeChecker_Env.Unascribe; FStar_TypeChecker_Env.Unmeta] env w in - (let uu____5537 = FStar_ST.op_Bang tacdbg in - if uu____5537 + (let uu____5535 = FStar_ST.op_Bang tacdbg in + if uu____5535 then - let uu____5561 = FStar_Syntax_Print.term_to_string w1 in - FStar_Util.print1 "splice: got witness = %s\n" uu____5561 + let uu____5559 = FStar_Syntax_Print.term_to_string w1 in + FStar_Util.print1 "splice: got witness = %s\n" uu____5559 else ()); - (let uu____5566 = - let uu____5571 = + (let uu____5564 = + let uu____5569 = FStar_Syntax_Embeddings.e_list FStar_Reflection_Embeddings.e_sigelt in - FStar_Tactics_InterpFuns.unembed uu____5571 w1 + FStar_Tactics_InterpFuns.unembed uu____5569 w1 FStar_Syntax_Embeddings.id_norm_cb in - match uu____5566 with + match uu____5564 with | FStar_Pervasives_Native.Some sigelts -> sigelts | FStar_Pervasives_Native.None -> FStar_Errors.raise_error @@ -3005,48 +2997,49 @@ let (postprocess : if env.FStar_TypeChecker_Env.nosynth then tm else - ((let uu____5616 = + ((let uu____5614 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Tac") in - FStar_ST.op_Colon_Equals tacdbg uu____5616); - (let uu____5640 = + FStar_ST.op_Colon_Equals tacdbg uu____5614); + (let uu____5638 = FStar_TypeChecker_Env.new_implicit_var_aux "postprocess RHS" tm.FStar_Syntax_Syntax.pos env typ FStar_Syntax_Syntax.Allow_untyped + FStar_Pervasives_Native.None in - match uu____5640 with - | (uvtm,uu____5655,g_imp) -> + match uu____5638 with + | (uvtm,uu____5657,g_imp) -> let u = env.FStar_TypeChecker_Env.universe_of env typ in let goal = - let uu____5673 = FStar_Syntax_Util.mk_eq2 u typ tm uvtm + let uu____5675 = FStar_Syntax_Util.mk_eq2 u typ tm uvtm in - FStar_Syntax_Util.mk_squash u uu____5673 in - let uu____5674 = + FStar_Syntax_Util.mk_squash u uu____5675 in + let uu____5676 = run_tactic_on_typ tau.FStar_Syntax_Syntax.pos tm.FStar_Syntax_Syntax.pos tau env goal in - (match uu____5674 with + (match uu____5676 with | (gs,w) -> (FStar_List.iter (fun g -> - let uu____5695 = - let uu____5698 = + let uu____5697 = + let uu____5700 = FStar_Tactics_Types.goal_env g in - let uu____5699 = + let uu____5701 = FStar_Tactics_Types.goal_type g in - getprop uu____5698 uu____5699 in - match uu____5695 with + getprop uu____5700 uu____5701 in + match uu____5697 with | FStar_Pervasives_Native.Some vc -> - ((let uu____5702 = FStar_ST.op_Bang tacdbg + ((let uu____5704 = FStar_ST.op_Bang tacdbg in - if uu____5702 + if uu____5704 then - let uu____5726 = + let uu____5728 = FStar_Syntax_Print.term_to_string vc in FStar_Util.print1 "Postprocessing left a goal: %s\n" - uu____5726 + uu____5728 else ()); (let guard = { @@ -3058,10 +3051,10 @@ let (postprocess : ([], []); FStar_TypeChecker_Env.implicits = [] } in - let uu____5741 = + let uu____5743 = FStar_Tactics_Types.goal_env g in FStar_TypeChecker_Rel.force_trivial_guard - uu____5741 guard)) + uu____5743 guard)) | FStar_Pervasives_Native.None -> FStar_Errors.raise_error (FStar_Errors.Fatal_OpenGoalsInSynthesis, diff --git a/src/ocaml-output/FStar_Tactics_Types.ml b/src/ocaml-output/FStar_Tactics_Types.ml index 1072d872ee5..c04e3d4c95a 100644 --- a/src/ocaml-output/FStar_Tactics_Types.ml +++ b/src/ocaml-output/FStar_Tactics_Types.ml @@ -37,92 +37,92 @@ let (__proj__Mkgoal__item__label : goal -> Prims.string) = let (goal_env : goal -> FStar_TypeChecker_Env.env) = fun g -> - let uu___258_102 = g.goal_main_env in + let uu___257_102 = g.goal_main_env in { FStar_TypeChecker_Env.solver = - (uu___258_102.FStar_TypeChecker_Env.solver); + (uu___257_102.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___258_102.FStar_TypeChecker_Env.range); + (uu___257_102.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___258_102.FStar_TypeChecker_Env.curmodule); + (uu___257_102.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = ((g.goal_ctx_uvar).FStar_Syntax_Syntax.ctx_uvar_gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___258_102.FStar_TypeChecker_Env.gamma_sig); + (uu___257_102.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___258_102.FStar_TypeChecker_Env.gamma_cache); + (uu___257_102.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___258_102.FStar_TypeChecker_Env.modules); + (uu___257_102.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___258_102.FStar_TypeChecker_Env.expected_typ); + (uu___257_102.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___258_102.FStar_TypeChecker_Env.sigtab); + (uu___257_102.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___258_102.FStar_TypeChecker_Env.attrtab); + (uu___257_102.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___258_102.FStar_TypeChecker_Env.is_pattern); + (uu___257_102.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___258_102.FStar_TypeChecker_Env.instantiate_imp); + (uu___257_102.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___258_102.FStar_TypeChecker_Env.effects); + (uu___257_102.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___258_102.FStar_TypeChecker_Env.generalize); + (uu___257_102.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___258_102.FStar_TypeChecker_Env.letrecs); + (uu___257_102.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___258_102.FStar_TypeChecker_Env.top_level); + (uu___257_102.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___258_102.FStar_TypeChecker_Env.check_uvars); + (uu___257_102.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___258_102.FStar_TypeChecker_Env.use_eq); + (uu___257_102.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___258_102.FStar_TypeChecker_Env.is_iface); + (uu___257_102.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___258_102.FStar_TypeChecker_Env.admit); - FStar_TypeChecker_Env.lax = (uu___258_102.FStar_TypeChecker_Env.lax); + (uu___257_102.FStar_TypeChecker_Env.admit); + FStar_TypeChecker_Env.lax = (uu___257_102.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___258_102.FStar_TypeChecker_Env.lax_universes); + (uu___257_102.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___258_102.FStar_TypeChecker_Env.phase1); + (uu___257_102.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___258_102.FStar_TypeChecker_Env.failhard); + (uu___257_102.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___258_102.FStar_TypeChecker_Env.nosynth); + (uu___257_102.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___258_102.FStar_TypeChecker_Env.uvar_subtyping); + (uu___257_102.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___258_102.FStar_TypeChecker_Env.tc_term); + (uu___257_102.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___258_102.FStar_TypeChecker_Env.type_of); + (uu___257_102.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___258_102.FStar_TypeChecker_Env.universe_of); + (uu___257_102.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___258_102.FStar_TypeChecker_Env.check_type_of); + (uu___257_102.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___258_102.FStar_TypeChecker_Env.use_bv_sorts); + (uu___257_102.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___258_102.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___257_102.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___258_102.FStar_TypeChecker_Env.normalized_eff_names); + (uu___257_102.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___258_102.FStar_TypeChecker_Env.fv_delta_depths); + (uu___257_102.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___258_102.FStar_TypeChecker_Env.proof_ns); + (uu___257_102.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___258_102.FStar_TypeChecker_Env.synth_hook); + (uu___257_102.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___258_102.FStar_TypeChecker_Env.splice); + (uu___257_102.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___258_102.FStar_TypeChecker_Env.postprocess); + (uu___257_102.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___258_102.FStar_TypeChecker_Env.is_native_tactic); + (uu___257_102.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___258_102.FStar_TypeChecker_Env.identifier_info); + (uu___257_102.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___258_102.FStar_TypeChecker_Env.tc_hooks); + (uu___257_102.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___258_102.FStar_TypeChecker_Env.dsenv); - FStar_TypeChecker_Env.nbe = (uu___258_102.FStar_TypeChecker_Env.nbe) + (uu___257_102.FStar_TypeChecker_Env.dsenv); + FStar_TypeChecker_Env.nbe = (uu___257_102.FStar_TypeChecker_Env.nbe) } let (goal_witness : goal -> FStar_Syntax_Syntax.term) = @@ -139,29 +139,31 @@ let (goal_with_type : goal -> FStar_Syntax_Syntax.term -> goal) = fun t -> let c = g.goal_ctx_uvar in let c' = - let uu___259_142 = c in + let uu___258_142 = c in { FStar_Syntax_Syntax.ctx_uvar_head = - (uu___259_142.FStar_Syntax_Syntax.ctx_uvar_head); + (uu___258_142.FStar_Syntax_Syntax.ctx_uvar_head); FStar_Syntax_Syntax.ctx_uvar_gamma = - (uu___259_142.FStar_Syntax_Syntax.ctx_uvar_gamma); + (uu___258_142.FStar_Syntax_Syntax.ctx_uvar_gamma); FStar_Syntax_Syntax.ctx_uvar_binders = - (uu___259_142.FStar_Syntax_Syntax.ctx_uvar_binders); + (uu___258_142.FStar_Syntax_Syntax.ctx_uvar_binders); FStar_Syntax_Syntax.ctx_uvar_typ = t; FStar_Syntax_Syntax.ctx_uvar_reason = - (uu___259_142.FStar_Syntax_Syntax.ctx_uvar_reason); + (uu___258_142.FStar_Syntax_Syntax.ctx_uvar_reason); FStar_Syntax_Syntax.ctx_uvar_should_check = - (uu___259_142.FStar_Syntax_Syntax.ctx_uvar_should_check); + (uu___258_142.FStar_Syntax_Syntax.ctx_uvar_should_check); FStar_Syntax_Syntax.ctx_uvar_range = - (uu___259_142.FStar_Syntax_Syntax.ctx_uvar_range) + (uu___258_142.FStar_Syntax_Syntax.ctx_uvar_range); + FStar_Syntax_Syntax.ctx_uvar_meta = + (uu___258_142.FStar_Syntax_Syntax.ctx_uvar_meta) } in - let uu___260_143 = g in + let uu___259_143 = g in { - goal_main_env = (uu___260_143.goal_main_env); + goal_main_env = (uu___259_143.goal_main_env); goal_ctx_uvar = c'; - opts = (uu___260_143.opts); - is_guard = (uu___260_143.is_guard); - label = (uu___260_143.label) + opts = (uu___259_143.opts); + is_guard = (uu___259_143.is_guard); + label = (uu___259_143.label) } let (goal_with_env : goal -> FStar_TypeChecker_Env.env -> goal) = @@ -169,30 +171,32 @@ let (goal_with_env : goal -> FStar_TypeChecker_Env.env -> goal) = fun env -> let c = g.goal_ctx_uvar in let c' = - let uu___261_157 = c in + let uu___260_157 = c in let uu____158 = FStar_TypeChecker_Env.all_binders env in { FStar_Syntax_Syntax.ctx_uvar_head = - (uu___261_157.FStar_Syntax_Syntax.ctx_uvar_head); + (uu___260_157.FStar_Syntax_Syntax.ctx_uvar_head); FStar_Syntax_Syntax.ctx_uvar_gamma = (env.FStar_TypeChecker_Env.gamma); FStar_Syntax_Syntax.ctx_uvar_binders = uu____158; FStar_Syntax_Syntax.ctx_uvar_typ = - (uu___261_157.FStar_Syntax_Syntax.ctx_uvar_typ); + (uu___260_157.FStar_Syntax_Syntax.ctx_uvar_typ); FStar_Syntax_Syntax.ctx_uvar_reason = - (uu___261_157.FStar_Syntax_Syntax.ctx_uvar_reason); + (uu___260_157.FStar_Syntax_Syntax.ctx_uvar_reason); FStar_Syntax_Syntax.ctx_uvar_should_check = - (uu___261_157.FStar_Syntax_Syntax.ctx_uvar_should_check); + (uu___260_157.FStar_Syntax_Syntax.ctx_uvar_should_check); FStar_Syntax_Syntax.ctx_uvar_range = - (uu___261_157.FStar_Syntax_Syntax.ctx_uvar_range) + (uu___260_157.FStar_Syntax_Syntax.ctx_uvar_range); + FStar_Syntax_Syntax.ctx_uvar_meta = + (uu___260_157.FStar_Syntax_Syntax.ctx_uvar_meta) } in - let uu___262_167 = g in + let uu___261_167 = g in { goal_main_env = env; goal_ctx_uvar = c'; - opts = (uu___262_167.opts); - is_guard = (uu___262_167.is_guard); - label = (uu___262_167.label) + opts = (uu___261_167.opts); + is_guard = (uu___261_167.is_guard); + label = (uu___261_167.label) } let (mk_goal : @@ -218,7 +222,7 @@ let (subst_goal : FStar_Syntax_Syntax.subst_elt Prims.list -> goal -> goal) = fun goal -> let g = goal.goal_ctx_uvar in let ctx_uvar = - let uu___263_215 = g in + let uu___262_215 = g in let uu____216 = FStar_TypeChecker_Env.rename_gamma subst1 g.FStar_Syntax_Syntax.ctx_uvar_gamma @@ -228,25 +232,27 @@ let (subst_goal : FStar_Syntax_Syntax.subst_elt Prims.list -> goal -> goal) = in { FStar_Syntax_Syntax.ctx_uvar_head = - (uu___263_215.FStar_Syntax_Syntax.ctx_uvar_head); + (uu___262_215.FStar_Syntax_Syntax.ctx_uvar_head); FStar_Syntax_Syntax.ctx_uvar_gamma = uu____216; FStar_Syntax_Syntax.ctx_uvar_binders = - (uu___263_215.FStar_Syntax_Syntax.ctx_uvar_binders); + (uu___262_215.FStar_Syntax_Syntax.ctx_uvar_binders); FStar_Syntax_Syntax.ctx_uvar_typ = uu____219; FStar_Syntax_Syntax.ctx_uvar_reason = - (uu___263_215.FStar_Syntax_Syntax.ctx_uvar_reason); + (uu___262_215.FStar_Syntax_Syntax.ctx_uvar_reason); FStar_Syntax_Syntax.ctx_uvar_should_check = - (uu___263_215.FStar_Syntax_Syntax.ctx_uvar_should_check); + (uu___262_215.FStar_Syntax_Syntax.ctx_uvar_should_check); FStar_Syntax_Syntax.ctx_uvar_range = - (uu___263_215.FStar_Syntax_Syntax.ctx_uvar_range) + (uu___262_215.FStar_Syntax_Syntax.ctx_uvar_range); + FStar_Syntax_Syntax.ctx_uvar_meta = + (uu___262_215.FStar_Syntax_Syntax.ctx_uvar_meta) } in - let uu___264_222 = goal in + let uu___263_222 = goal in { - goal_main_env = (uu___264_222.goal_main_env); + goal_main_env = (uu___263_222.goal_main_env); goal_ctx_uvar = ctx_uvar; - opts = (uu___264_222.opts); - is_guard = (uu___264_222.is_guard); - label = (uu___264_222.label) + opts = (uu___263_222.opts); + is_guard = (uu___263_222.is_guard); + label = (uu___263_222.label) } type guard_policy = @@ -384,61 +390,61 @@ let (subst_proof_state : if uu____852 then ps else - (let uu___265_857 = ps in + (let uu___264_857 = ps in let uu____858 = subst_goal subst1 ps.main_goal in let uu____859 = FStar_List.map (subst_goal subst1) ps.goals in { - main_context = (uu___265_857.main_context); + main_context = (uu___264_857.main_context); main_goal = uu____858; - all_implicits = (uu___265_857.all_implicits); + all_implicits = (uu___264_857.all_implicits); goals = uu____859; - smt_goals = (uu___265_857.smt_goals); - depth = (uu___265_857.depth); - __dump = (uu___265_857.__dump); - psc = (uu___265_857.psc); - entry_range = (uu___265_857.entry_range); - guard_policy = (uu___265_857.guard_policy); - freshness = (uu___265_857.freshness); - tac_verb_dbg = (uu___265_857.tac_verb_dbg); - local_state = (uu___265_857.local_state) + smt_goals = (uu___264_857.smt_goals); + depth = (uu___264_857.depth); + __dump = (uu___264_857.__dump); + psc = (uu___264_857.psc); + entry_range = (uu___264_857.entry_range); + guard_policy = (uu___264_857.guard_policy); + freshness = (uu___264_857.freshness); + tac_verb_dbg = (uu___264_857.tac_verb_dbg); + local_state = (uu___264_857.local_state) }) let (decr_depth : proofstate -> proofstate) = fun ps -> - let uu___266_868 = ps in + let uu___265_868 = ps in { - main_context = (uu___266_868.main_context); - main_goal = (uu___266_868.main_goal); - all_implicits = (uu___266_868.all_implicits); - goals = (uu___266_868.goals); - smt_goals = (uu___266_868.smt_goals); + main_context = (uu___265_868.main_context); + main_goal = (uu___265_868.main_goal); + all_implicits = (uu___265_868.all_implicits); + goals = (uu___265_868.goals); + smt_goals = (uu___265_868.smt_goals); depth = (ps.depth - (Prims.parse_int "1")); - __dump = (uu___266_868.__dump); - psc = (uu___266_868.psc); - entry_range = (uu___266_868.entry_range); - guard_policy = (uu___266_868.guard_policy); - freshness = (uu___266_868.freshness); - tac_verb_dbg = (uu___266_868.tac_verb_dbg); - local_state = (uu___266_868.local_state) + __dump = (uu___265_868.__dump); + psc = (uu___265_868.psc); + entry_range = (uu___265_868.entry_range); + guard_policy = (uu___265_868.guard_policy); + freshness = (uu___265_868.freshness); + tac_verb_dbg = (uu___265_868.tac_verb_dbg); + local_state = (uu___265_868.local_state) } let (incr_depth : proofstate -> proofstate) = fun ps -> - let uu___267_876 = ps in + let uu___266_876 = ps in { - main_context = (uu___267_876.main_context); - main_goal = (uu___267_876.main_goal); - all_implicits = (uu___267_876.all_implicits); - goals = (uu___267_876.goals); - smt_goals = (uu___267_876.smt_goals); + main_context = (uu___266_876.main_context); + main_goal = (uu___266_876.main_goal); + all_implicits = (uu___266_876.all_implicits); + goals = (uu___266_876.goals); + smt_goals = (uu___266_876.smt_goals); depth = (ps.depth + (Prims.parse_int "1")); - __dump = (uu___267_876.__dump); - psc = (uu___267_876.psc); - entry_range = (uu___267_876.entry_range); - guard_policy = (uu___267_876.guard_policy); - freshness = (uu___267_876.freshness); - tac_verb_dbg = (uu___267_876.tac_verb_dbg); - local_state = (uu___267_876.local_state) + __dump = (uu___266_876.__dump); + psc = (uu___266_876.psc); + entry_range = (uu___266_876.entry_range); + guard_policy = (uu___266_876.guard_policy); + freshness = (uu___266_876.freshness); + tac_verb_dbg = (uu___266_876.tac_verb_dbg); + local_state = (uu___266_876.local_state) } let (tracepoint : proofstate -> unit) = @@ -459,44 +465,44 @@ let (tracepoint : proofstate -> unit) = let (set_ps_psc : FStar_TypeChecker_Cfg.psc -> proofstate -> proofstate) = fun psc -> fun ps -> - let uu___268_906 = ps in + let uu___267_906 = ps in { - main_context = (uu___268_906.main_context); - main_goal = (uu___268_906.main_goal); - all_implicits = (uu___268_906.all_implicits); - goals = (uu___268_906.goals); - smt_goals = (uu___268_906.smt_goals); - depth = (uu___268_906.depth); - __dump = (uu___268_906.__dump); + main_context = (uu___267_906.main_context); + main_goal = (uu___267_906.main_goal); + all_implicits = (uu___267_906.all_implicits); + goals = (uu___267_906.goals); + smt_goals = (uu___267_906.smt_goals); + depth = (uu___267_906.depth); + __dump = (uu___267_906.__dump); psc; - entry_range = (uu___268_906.entry_range); - guard_policy = (uu___268_906.guard_policy); - freshness = (uu___268_906.freshness); - tac_verb_dbg = (uu___268_906.tac_verb_dbg); - local_state = (uu___268_906.local_state) + entry_range = (uu___267_906.entry_range); + guard_policy = (uu___267_906.guard_policy); + freshness = (uu___267_906.freshness); + tac_verb_dbg = (uu___267_906.tac_verb_dbg); + local_state = (uu___267_906.local_state) } let (set_proofstate_range : proofstate -> FStar_Range.range -> proofstate) = fun ps -> fun r -> - let uu___269_918 = ps in + let uu___268_918 = ps in let uu____919 = let uu____920 = FStar_Range.def_range r in FStar_Range.set_def_range ps.entry_range uu____920 in { - main_context = (uu___269_918.main_context); - main_goal = (uu___269_918.main_goal); - all_implicits = (uu___269_918.all_implicits); - goals = (uu___269_918.goals); - smt_goals = (uu___269_918.smt_goals); - depth = (uu___269_918.depth); - __dump = (uu___269_918.__dump); - psc = (uu___269_918.psc); + main_context = (uu___268_918.main_context); + main_goal = (uu___268_918.main_goal); + all_implicits = (uu___268_918.all_implicits); + goals = (uu___268_918.goals); + smt_goals = (uu___268_918.smt_goals); + depth = (uu___268_918.depth); + __dump = (uu___268_918.__dump); + psc = (uu___268_918.psc); entry_range = uu____919; - guard_policy = (uu___269_918.guard_policy); - freshness = (uu___269_918.freshness); - tac_verb_dbg = (uu___269_918.tac_verb_dbg); - local_state = (uu___269_918.local_state) + guard_policy = (uu___268_918.guard_policy); + freshness = (uu___268_918.freshness); + tac_verb_dbg = (uu___268_918.tac_verb_dbg); + local_state = (uu___268_918.local_state) } let (goals_of : proofstate -> goal Prims.list) = fun ps -> ps.goals @@ -506,12 +512,12 @@ let (get_label : goal -> Prims.string) = fun g -> g.label let (set_label : Prims.string -> goal -> goal) = fun l -> fun g -> - let uu___270_968 = g in + let uu___269_968 = g in { - goal_main_env = (uu___270_968.goal_main_env); - goal_ctx_uvar = (uu___270_968.goal_ctx_uvar); - opts = (uu___270_968.opts); - is_guard = (uu___270_968.is_guard); + goal_main_env = (uu___269_968.goal_main_env); + goal_ctx_uvar = (uu___269_968.goal_ctx_uvar); + opts = (uu___269_968.opts); + is_guard = (uu___269_968.is_guard); label = l } diff --git a/src/ocaml-output/FStar_Tests_Norm.ml b/src/ocaml-output/FStar_Tests_Norm.ml index 2e75f69d33a..0b23c654823 100644 --- a/src/ocaml-output/FStar_Tests_Norm.ml +++ b/src/ocaml-output/FStar_Tests_Norm.ml @@ -154,13 +154,13 @@ let (pred_nat : let uu____481 = FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_bvar - (let uu___481_486 = FStar_Tests_Util.x in + (let uu___480_486 = FStar_Tests_Util.x in { FStar_Syntax_Syntax.ppname = - (uu___481_486.FStar_Syntax_Syntax.ppname); + (uu___480_486.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = (Prims.parse_int "0"); FStar_Syntax_Syntax.sort = - (uu___481_486.FStar_Syntax_Syntax.sort) + (uu___480_486.FStar_Syntax_Syntax.sort) })) FStar_Pervasives_Native.None FStar_Range.dummyRange in (uu____415, FStar_Pervasives_Native.None, uu____481) in @@ -1517,8 +1517,8 @@ let run_tests : FStar_Options.__set_unit_tests (); (let l = FStar_List.map - (fun uu___480_4112 -> - match uu___480_4112 with | (no,test,res) -> run1 no test res) + (fun uu___479_4112 -> + match uu___479_4112 with | (no,test,res) -> run1 no test res) tests in FStar_Options.__clear_unit_tests (); l) diff --git a/src/ocaml-output/FStar_Tests_Pars.ml b/src/ocaml-output/FStar_Tests_Pars.ml index 0a90c4c2091..0a395650fde 100644 --- a/src/ocaml-output/FStar_Tests_Pars.ml +++ b/src/ocaml-output/FStar_Tests_Pars.ml @@ -99,186 +99,186 @@ let (init_once : unit -> unit) = match uu____249 with | (dsenv1,prims_mod) -> let env1 = - let uu___458_260 = env in + let uu___457_260 = env in { FStar_TypeChecker_Env.solver = - (uu___458_260.FStar_TypeChecker_Env.solver); + (uu___457_260.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___458_260.FStar_TypeChecker_Env.range); + (uu___457_260.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___458_260.FStar_TypeChecker_Env.curmodule); + (uu___457_260.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___458_260.FStar_TypeChecker_Env.gamma); + (uu___457_260.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___458_260.FStar_TypeChecker_Env.gamma_sig); + (uu___457_260.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___458_260.FStar_TypeChecker_Env.gamma_cache); + (uu___457_260.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___458_260.FStar_TypeChecker_Env.modules); + (uu___457_260.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___458_260.FStar_TypeChecker_Env.expected_typ); + (uu___457_260.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___458_260.FStar_TypeChecker_Env.sigtab); + (uu___457_260.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___458_260.FStar_TypeChecker_Env.attrtab); + (uu___457_260.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___458_260.FStar_TypeChecker_Env.is_pattern); + (uu___457_260.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___458_260.FStar_TypeChecker_Env.instantiate_imp); + (uu___457_260.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___458_260.FStar_TypeChecker_Env.effects); + (uu___457_260.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___458_260.FStar_TypeChecker_Env.generalize); + (uu___457_260.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___458_260.FStar_TypeChecker_Env.letrecs); + (uu___457_260.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___458_260.FStar_TypeChecker_Env.top_level); + (uu___457_260.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___458_260.FStar_TypeChecker_Env.check_uvars); + (uu___457_260.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___458_260.FStar_TypeChecker_Env.use_eq); + (uu___457_260.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___458_260.FStar_TypeChecker_Env.is_iface); + (uu___457_260.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___458_260.FStar_TypeChecker_Env.admit); + (uu___457_260.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___458_260.FStar_TypeChecker_Env.lax); + (uu___457_260.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___458_260.FStar_TypeChecker_Env.lax_universes); + (uu___457_260.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___458_260.FStar_TypeChecker_Env.phase1); + (uu___457_260.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___458_260.FStar_TypeChecker_Env.failhard); + (uu___457_260.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___458_260.FStar_TypeChecker_Env.nosynth); + (uu___457_260.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___458_260.FStar_TypeChecker_Env.uvar_subtyping); + (uu___457_260.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___458_260.FStar_TypeChecker_Env.tc_term); + (uu___457_260.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___458_260.FStar_TypeChecker_Env.type_of); + (uu___457_260.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___458_260.FStar_TypeChecker_Env.universe_of); + (uu___457_260.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___458_260.FStar_TypeChecker_Env.check_type_of); + (uu___457_260.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___458_260.FStar_TypeChecker_Env.use_bv_sorts); + (uu___457_260.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___458_260.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___457_260.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___458_260.FStar_TypeChecker_Env.normalized_eff_names); + (uu___457_260.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___458_260.FStar_TypeChecker_Env.fv_delta_depths); + (uu___457_260.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___458_260.FStar_TypeChecker_Env.proof_ns); + (uu___457_260.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___458_260.FStar_TypeChecker_Env.synth_hook); + (uu___457_260.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___458_260.FStar_TypeChecker_Env.splice); + (uu___457_260.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___458_260.FStar_TypeChecker_Env.postprocess); + (uu___457_260.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___458_260.FStar_TypeChecker_Env.is_native_tactic); + (uu___457_260.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___458_260.FStar_TypeChecker_Env.identifier_info); + (uu___457_260.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___458_260.FStar_TypeChecker_Env.tc_hooks); + (uu___457_260.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = dsenv1; FStar_TypeChecker_Env.nbe = - (uu___458_260.FStar_TypeChecker_Env.nbe) + (uu___457_260.FStar_TypeChecker_Env.nbe) } in let uu____261 = FStar_TypeChecker_Tc.check_module env1 prims_mod false in (match uu____261 with | (_prims_mod,env2) -> let env3 = - let uu___459_270 = env2 in + let uu___458_270 = env2 in { FStar_TypeChecker_Env.solver = - (uu___459_270.FStar_TypeChecker_Env.solver); + (uu___458_270.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___459_270.FStar_TypeChecker_Env.range); + (uu___458_270.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___459_270.FStar_TypeChecker_Env.curmodule); + (uu___458_270.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___459_270.FStar_TypeChecker_Env.gamma); + (uu___458_270.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___459_270.FStar_TypeChecker_Env.gamma_sig); + (uu___458_270.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___459_270.FStar_TypeChecker_Env.gamma_cache); + (uu___458_270.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___459_270.FStar_TypeChecker_Env.modules); + (uu___458_270.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___459_270.FStar_TypeChecker_Env.expected_typ); + (uu___458_270.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___459_270.FStar_TypeChecker_Env.sigtab); + (uu___458_270.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___459_270.FStar_TypeChecker_Env.attrtab); + (uu___458_270.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___459_270.FStar_TypeChecker_Env.is_pattern); + (uu___458_270.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___459_270.FStar_TypeChecker_Env.instantiate_imp); + (uu___458_270.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___459_270.FStar_TypeChecker_Env.effects); + (uu___458_270.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___459_270.FStar_TypeChecker_Env.generalize); + (uu___458_270.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___459_270.FStar_TypeChecker_Env.letrecs); + (uu___458_270.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___459_270.FStar_TypeChecker_Env.top_level); + (uu___458_270.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___459_270.FStar_TypeChecker_Env.check_uvars); + (uu___458_270.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___459_270.FStar_TypeChecker_Env.use_eq); + (uu___458_270.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___459_270.FStar_TypeChecker_Env.is_iface); + (uu___458_270.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___459_270.FStar_TypeChecker_Env.admit); + (uu___458_270.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___459_270.FStar_TypeChecker_Env.lax); + (uu___458_270.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___459_270.FStar_TypeChecker_Env.lax_universes); + (uu___458_270.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___459_270.FStar_TypeChecker_Env.phase1); + (uu___458_270.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___459_270.FStar_TypeChecker_Env.failhard); + (uu___458_270.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___459_270.FStar_TypeChecker_Env.nosynth); + (uu___458_270.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___459_270.FStar_TypeChecker_Env.uvar_subtyping); + (uu___458_270.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___459_270.FStar_TypeChecker_Env.tc_term); + (uu___458_270.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___459_270.FStar_TypeChecker_Env.type_of); + (uu___458_270.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___459_270.FStar_TypeChecker_Env.universe_of); + (uu___458_270.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___459_270.FStar_TypeChecker_Env.check_type_of); + (uu___458_270.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___459_270.FStar_TypeChecker_Env.use_bv_sorts); + (uu___458_270.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___459_270.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___458_270.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___459_270.FStar_TypeChecker_Env.normalized_eff_names); + (uu___458_270.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___459_270.FStar_TypeChecker_Env.fv_delta_depths); + (uu___458_270.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___459_270.FStar_TypeChecker_Env.proof_ns); + (uu___458_270.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___459_270.FStar_TypeChecker_Env.synth_hook); + (uu___458_270.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___459_270.FStar_TypeChecker_Env.splice); + (uu___458_270.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___459_270.FStar_TypeChecker_Env.postprocess); + (uu___458_270.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___459_270.FStar_TypeChecker_Env.is_native_tactic); + (uu___458_270.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___459_270.FStar_TypeChecker_Env.identifier_info); + (uu___458_270.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___459_270.FStar_TypeChecker_Env.tc_hooks); + (uu___458_270.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = dsenv1; FStar_TypeChecker_Env.nbe = - (uu___459_270.FStar_TypeChecker_Env.nbe) + (uu___458_270.FStar_TypeChecker_Env.nbe) } in let env4 = FStar_TypeChecker_Env.set_current_module env3 test_lid in @@ -303,7 +303,7 @@ let (frag_of_text : Prims.string -> FStar_Parser_ParseIt.input_frag) = let (pars : Prims.string -> FStar_Syntax_Syntax.term) = fun s -> try - (fun uu___461_354 -> + (fun uu___460_354 -> match () with | () -> let tcenv = init () in @@ -325,11 +325,11 @@ let (pars : Prims.string -> FStar_Syntax_Syntax.term) = "Impossible: parsing a Fragment always results in a Term")) () with - | uu___460_379 -> + | uu___459_379 -> if let uu____380 = FStar_Options.trace_error () in Prims.op_Negation uu____380 - then Obj.magic (Obj.repr (FStar_Exn.raise uu___460_379)) + then Obj.magic (Obj.repr (FStar_Exn.raise uu___459_379)) else Obj.magic (Obj.repr (failwith "unreachable")) let (tc' : @@ -341,91 +341,91 @@ let (tc' : let tm = pars s in let tcenv = init () in let tcenv1 = - let uu___462_399 = tcenv in + let uu___461_399 = tcenv in { FStar_TypeChecker_Env.solver = - (uu___462_399.FStar_TypeChecker_Env.solver); + (uu___461_399.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___462_399.FStar_TypeChecker_Env.range); + (uu___461_399.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___462_399.FStar_TypeChecker_Env.curmodule); + (uu___461_399.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___462_399.FStar_TypeChecker_Env.gamma); + (uu___461_399.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___462_399.FStar_TypeChecker_Env.gamma_sig); + (uu___461_399.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___462_399.FStar_TypeChecker_Env.gamma_cache); + (uu___461_399.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___462_399.FStar_TypeChecker_Env.modules); + (uu___461_399.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___462_399.FStar_TypeChecker_Env.expected_typ); + (uu___461_399.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___462_399.FStar_TypeChecker_Env.sigtab); + (uu___461_399.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___462_399.FStar_TypeChecker_Env.attrtab); + (uu___461_399.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___462_399.FStar_TypeChecker_Env.is_pattern); + (uu___461_399.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___462_399.FStar_TypeChecker_Env.instantiate_imp); + (uu___461_399.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___462_399.FStar_TypeChecker_Env.effects); + (uu___461_399.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___462_399.FStar_TypeChecker_Env.generalize); + (uu___461_399.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___462_399.FStar_TypeChecker_Env.letrecs); + (uu___461_399.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = false; FStar_TypeChecker_Env.check_uvars = - (uu___462_399.FStar_TypeChecker_Env.check_uvars); + (uu___461_399.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___462_399.FStar_TypeChecker_Env.use_eq); + (uu___461_399.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___462_399.FStar_TypeChecker_Env.is_iface); + (uu___461_399.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___462_399.FStar_TypeChecker_Env.admit); - FStar_TypeChecker_Env.lax = (uu___462_399.FStar_TypeChecker_Env.lax); + (uu___461_399.FStar_TypeChecker_Env.admit); + FStar_TypeChecker_Env.lax = (uu___461_399.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___462_399.FStar_TypeChecker_Env.lax_universes); + (uu___461_399.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___462_399.FStar_TypeChecker_Env.phase1); + (uu___461_399.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___462_399.FStar_TypeChecker_Env.failhard); + (uu___461_399.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___462_399.FStar_TypeChecker_Env.nosynth); + (uu___461_399.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___462_399.FStar_TypeChecker_Env.uvar_subtyping); + (uu___461_399.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___462_399.FStar_TypeChecker_Env.tc_term); + (uu___461_399.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___462_399.FStar_TypeChecker_Env.type_of); + (uu___461_399.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___462_399.FStar_TypeChecker_Env.universe_of); + (uu___461_399.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___462_399.FStar_TypeChecker_Env.check_type_of); + (uu___461_399.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___462_399.FStar_TypeChecker_Env.use_bv_sorts); + (uu___461_399.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___462_399.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___461_399.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___462_399.FStar_TypeChecker_Env.normalized_eff_names); + (uu___461_399.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___462_399.FStar_TypeChecker_Env.fv_delta_depths); + (uu___461_399.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___462_399.FStar_TypeChecker_Env.proof_ns); + (uu___461_399.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___462_399.FStar_TypeChecker_Env.synth_hook); + (uu___461_399.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___462_399.FStar_TypeChecker_Env.splice); + (uu___461_399.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___462_399.FStar_TypeChecker_Env.postprocess); + (uu___461_399.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___462_399.FStar_TypeChecker_Env.is_native_tactic); + (uu___461_399.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___462_399.FStar_TypeChecker_Env.identifier_info); + (uu___461_399.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___462_399.FStar_TypeChecker_Env.tc_hooks); + (uu___461_399.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___462_399.FStar_TypeChecker_Env.dsenv); - FStar_TypeChecker_Env.nbe = (uu___462_399.FStar_TypeChecker_Env.nbe) + (uu___461_399.FStar_TypeChecker_Env.dsenv); + FStar_TypeChecker_Env.nbe = (uu___461_399.FStar_TypeChecker_Env.nbe) } in let uu____401 = FStar_TypeChecker_TcTerm.tc_tot_or_gtot_term tcenv1 tm in @@ -446,91 +446,91 @@ let (tc_nbe_term : FStar_Syntax_Syntax.term -> FStar_Syntax_Syntax.term) = fun tm -> let tcenv = init () in let tcenv1 = - let uu___463_462 = tcenv in + let uu___462_462 = tcenv in { FStar_TypeChecker_Env.solver = - (uu___463_462.FStar_TypeChecker_Env.solver); + (uu___462_462.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___463_462.FStar_TypeChecker_Env.range); + (uu___462_462.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___463_462.FStar_TypeChecker_Env.curmodule); + (uu___462_462.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___463_462.FStar_TypeChecker_Env.gamma); + (uu___462_462.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___463_462.FStar_TypeChecker_Env.gamma_sig); + (uu___462_462.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___463_462.FStar_TypeChecker_Env.gamma_cache); + (uu___462_462.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___463_462.FStar_TypeChecker_Env.modules); + (uu___462_462.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___463_462.FStar_TypeChecker_Env.expected_typ); + (uu___462_462.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___463_462.FStar_TypeChecker_Env.sigtab); + (uu___462_462.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___463_462.FStar_TypeChecker_Env.attrtab); + (uu___462_462.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___463_462.FStar_TypeChecker_Env.is_pattern); + (uu___462_462.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___463_462.FStar_TypeChecker_Env.instantiate_imp); + (uu___462_462.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___463_462.FStar_TypeChecker_Env.effects); + (uu___462_462.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___463_462.FStar_TypeChecker_Env.generalize); + (uu___462_462.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___463_462.FStar_TypeChecker_Env.letrecs); + (uu___462_462.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = false; FStar_TypeChecker_Env.check_uvars = - (uu___463_462.FStar_TypeChecker_Env.check_uvars); + (uu___462_462.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___463_462.FStar_TypeChecker_Env.use_eq); + (uu___462_462.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___463_462.FStar_TypeChecker_Env.is_iface); + (uu___462_462.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___463_462.FStar_TypeChecker_Env.admit); - FStar_TypeChecker_Env.lax = (uu___463_462.FStar_TypeChecker_Env.lax); + (uu___462_462.FStar_TypeChecker_Env.admit); + FStar_TypeChecker_Env.lax = (uu___462_462.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___463_462.FStar_TypeChecker_Env.lax_universes); + (uu___462_462.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___463_462.FStar_TypeChecker_Env.phase1); + (uu___462_462.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___463_462.FStar_TypeChecker_Env.failhard); + (uu___462_462.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___463_462.FStar_TypeChecker_Env.nosynth); + (uu___462_462.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___463_462.FStar_TypeChecker_Env.uvar_subtyping); + (uu___462_462.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___463_462.FStar_TypeChecker_Env.tc_term); + (uu___462_462.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___463_462.FStar_TypeChecker_Env.type_of); + (uu___462_462.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___463_462.FStar_TypeChecker_Env.universe_of); + (uu___462_462.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___463_462.FStar_TypeChecker_Env.check_type_of); + (uu___462_462.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___463_462.FStar_TypeChecker_Env.use_bv_sorts); + (uu___462_462.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___463_462.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___462_462.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___463_462.FStar_TypeChecker_Env.normalized_eff_names); + (uu___462_462.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___463_462.FStar_TypeChecker_Env.fv_delta_depths); + (uu___462_462.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___463_462.FStar_TypeChecker_Env.proof_ns); + (uu___462_462.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___463_462.FStar_TypeChecker_Env.synth_hook); + (uu___462_462.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___463_462.FStar_TypeChecker_Env.splice); + (uu___462_462.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___463_462.FStar_TypeChecker_Env.postprocess); + (uu___462_462.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___463_462.FStar_TypeChecker_Env.is_native_tactic); + (uu___462_462.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___463_462.FStar_TypeChecker_Env.identifier_info); + (uu___462_462.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___463_462.FStar_TypeChecker_Env.tc_hooks); + (uu___462_462.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___463_462.FStar_TypeChecker_Env.dsenv); - FStar_TypeChecker_Env.nbe = (uu___463_462.FStar_TypeChecker_Env.nbe) + (uu___462_462.FStar_TypeChecker_Env.dsenv); + FStar_TypeChecker_Env.nbe = (uu___462_462.FStar_TypeChecker_Env.nbe) } in let uu____464 = FStar_TypeChecker_TcTerm.tc_tot_or_gtot_term tcenv1 tm in @@ -545,13 +545,13 @@ let (pars_and_tc_fragment : Prims.string -> unit) = let uu____492 = FStar_Errors.report_all () in FStar_All.pipe_right uu____492 (fun a1 -> ()) in try - (fun uu___465_500 -> + (fun uu___464_500 -> match () with | () -> let tcenv = init () in let frag = frag_of_text s in (try - (fun uu___467_512 -> + (fun uu___466_512 -> match () with | () -> let uu____513 = @@ -581,16 +581,16 @@ let (pars_and_tc_fragment : Prims.string -> unit) = FStar_Errors.raise_err uu____606)) else ())))) () with - | uu___466_622 -> + | uu___465_622 -> (report (); FStar_Errors.raise_err (FStar_Errors.Fatal_TcOneFragmentFailed, (Prims.strcat "tc_one_fragment failed: " s))))) () with - | uu___464_627 -> + | uu___463_627 -> if let uu____628 = FStar_Options.trace_error () in Prims.op_Negation uu____628 - then Obj.magic (Obj.repr (FStar_Exn.raise uu___464_627)) + then Obj.magic (Obj.repr (FStar_Exn.raise uu___463_627)) else Obj.magic (Obj.repr (failwith "unreachable"))) \ No newline at end of file diff --git a/src/ocaml-output/FStar_Tests_Test.ml b/src/ocaml-output/FStar_Tests_Test.ml index e9a4ba1030c..5c916624ac9 100644 --- a/src/ocaml-output/FStar_Tests_Test.ml +++ b/src/ocaml-output/FStar_Tests_Test.ml @@ -3,7 +3,7 @@ let main : 'Auu____7 'Auu____8 . 'Auu____7 -> 'Auu____8 = fun argv -> FStar_Util.print_string "Initializing ...\n"; (try - (fun uu___481_21 -> + (fun uu___480_21 -> match () with | () -> (FStar_Main.setup_hooks (); diff --git a/src/ocaml-output/FStar_Tests_Unif.ml b/src/ocaml-output/FStar_Tests_Unif.ml index 45b22f55b37..6aeb323ec9e 100644 --- a/src/ocaml-output/FStar_Tests_Unif.ml +++ b/src/ocaml-output/FStar_Tests_Unif.ml @@ -103,7 +103,7 @@ let (should_fail : fun x1 -> fun y1 -> try - (fun uu___480_286 -> + (fun uu___479_286 -> match () with | () -> let g = diff --git a/src/ocaml-output/FStar_ToSyntax_Interleave.ml b/src/ocaml-output/FStar_ToSyntax_Interleave.ml index afed408f57b..29cc40c72e1 100644 --- a/src/ocaml-output/FStar_ToSyntax_Interleave.ml +++ b/src/ocaml-output/FStar_ToSyntax_Interleave.ml @@ -33,8 +33,8 @@ let (definition_lids : | FStar_Parser_AST.Tycon (uu____126,uu____127,tys) -> FStar_All.pipe_right tys (FStar_List.collect - (fun uu___175_172 -> - match uu___175_172 with + (fun uu___174_172 -> + match uu___174_172 with | (FStar_Parser_AST.TyconAbbrev (id1,uu____182,uu____183,uu____184),uu____185) -> let uu____198 = FStar_Ident.lid_of_ids [id1] in @@ -73,12 +73,12 @@ let rec (prefix_with_iface_decls : ("KremlinPrivate", (impl1.FStar_Parser_AST.drange)))) impl1.FStar_Parser_AST.drange FStar_Parser_AST.Expr in - let uu___179_348 = impl1 in + let uu___178_348 = impl1 in { - FStar_Parser_AST.d = (uu___179_348.FStar_Parser_AST.d); - FStar_Parser_AST.drange = (uu___179_348.FStar_Parser_AST.drange); - FStar_Parser_AST.doc = (uu___179_348.FStar_Parser_AST.doc); - FStar_Parser_AST.quals = (uu___179_348.FStar_Parser_AST.quals); + FStar_Parser_AST.d = (uu___178_348.FStar_Parser_AST.d); + FStar_Parser_AST.drange = (uu___178_348.FStar_Parser_AST.drange); + FStar_Parser_AST.doc = (uu___178_348.FStar_Parser_AST.doc); + FStar_Parser_AST.quals = (uu___178_348.FStar_Parser_AST.quals); FStar_Parser_AST.attrs = (krem_private :: (impl1.FStar_Parser_AST.attrs)) } in @@ -89,8 +89,8 @@ let rec (prefix_with_iface_decls : | FStar_Parser_AST.Tycon (uu____373,uu____374,tys) when FStar_All.pipe_right tys (FStar_Util.for_some - (fun uu___176_414 -> - match uu___176_414 with + (fun uu___175_414 -> + match uu___175_414 with | (FStar_Parser_AST.TyconAbstract uu____422,uu____423) -> true | uu____439 -> false)) @@ -200,8 +200,8 @@ let (check_initial_interface : | FStar_Parser_AST.Tycon (uu____790,uu____791,tys) when FStar_All.pipe_right tys (FStar_Util.for_some - (fun uu___177_831 -> - match uu___177_831 with + (fun uu___176_831 -> + match uu___176_831 with | (FStar_Parser_AST.TyconAbstract uu____839,uu____840) -> true | uu____856 -> false)) @@ -378,8 +378,8 @@ let (interleave_module : let uu____1378 = let uu____1387 = FStar_Util.prefix_until - (fun uu___178_1406 -> - match uu___178_1406 with + (fun uu___177_1406 -> + match uu___177_1406 with | { FStar_Parser_AST.d = FStar_Parser_AST.Val uu____1408; diff --git a/src/ocaml-output/FStar_ToSyntax_ToSyntax.ml b/src/ocaml-output/FStar_ToSyntax_ToSyntax.ml index c41d52897cd..262cbc7f0f5 100644 --- a/src/ocaml-output/FStar_ToSyntax_ToSyntax.ml +++ b/src/ocaml-output/FStar_ToSyntax_ToSyntax.ml @@ -58,8 +58,8 @@ let (trans_qual : = fun r -> fun maybe_effect_id -> - fun uu___247_241 -> - match uu___247_241 with + fun uu___246_241 -> + match uu___246_241 with | FStar_Parser_AST.Private -> FStar_Syntax_Syntax.Private | FStar_Parser_AST.Assumption -> FStar_Syntax_Syntax.Assumption | FStar_Parser_AST.Unfold_for_unification_and_vcgen -> @@ -104,8 +104,8 @@ let (trans_qual : "Unsupported qualifier") r let (trans_pragma : FStar_Parser_AST.pragma -> FStar_Syntax_Syntax.pragma) = - fun uu___248_261 -> - match uu___248_261 with + fun uu___247_261 -> + match uu___247_261 with | FStar_Parser_AST.SetOptions s -> FStar_Syntax_Syntax.SetOptions s | FStar_Parser_AST.ResetOptions sopt -> FStar_Syntax_Syntax.ResetOptions sopt @@ -118,8 +118,8 @@ let (as_imp : FStar_Parser_AST.imp -> FStar_Syntax_Syntax.arg_qualifier FStar_Pervasives_Native.option) = - fun uu___249_279 -> - match uu___249_279 with + fun uu___248_279 -> + match uu___248_279 with | FStar_Parser_AST.Hash -> FStar_Pervasives_Native.Some FStar_Syntax_Syntax.imp_tag | uu____282 -> FStar_Pervasives_Native.None @@ -754,8 +754,8 @@ let (binder_of_bnd : (FStar_Syntax_Syntax.bv,FStar_Syntax_Syntax.aqual) FStar_Pervasives_Native.tuple2) = - fun uu___250_2042 -> - match uu___250_2042 with + fun uu___249_2042 -> + match uu___249_2042 with | LocalBinder (a,aq) -> (a, aq) | uu____2049 -> failwith "Impossible" @@ -924,7 +924,7 @@ let (generalize_annotated_univs : in FStar_All.pipe_right uu____2607 FStar_Util.set_elements in let usubst = FStar_Syntax_Subst.univ_var_closing uvs in - let uu___278_2669 = s in + let uu___277_2669 = s in let uu____2670 = let uu____2671 = let uu____2680 = @@ -934,7 +934,7 @@ let (generalize_annotated_univs : match se.FStar_Syntax_Syntax.sigel with | FStar_Syntax_Syntax.Sig_inductive_typ (lid,uu____2698,bs,t,lids1,lids2) -> - let uu___279_2711 = se in + let uu___278_2711 = se in let uu____2712 = let uu____2713 = let uu____2730 = @@ -954,17 +954,17 @@ let (generalize_annotated_univs : { FStar_Syntax_Syntax.sigel = uu____2712; FStar_Syntax_Syntax.sigrng = - (uu___279_2711.FStar_Syntax_Syntax.sigrng); + (uu___278_2711.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___279_2711.FStar_Syntax_Syntax.sigquals); + (uu___278_2711.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___279_2711.FStar_Syntax_Syntax.sigmeta); + (uu___278_2711.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___279_2711.FStar_Syntax_Syntax.sigattrs) + (uu___278_2711.FStar_Syntax_Syntax.sigattrs) } | FStar_Syntax_Syntax.Sig_datacon (lid,uu____2746,t,tlid,n1,lids1) -> - let uu___280_2757 = se in + let uu___279_2757 = se in let uu____2758 = let uu____2759 = let uu____2775 = @@ -974,13 +974,13 @@ let (generalize_annotated_univs : { FStar_Syntax_Syntax.sigel = uu____2758; FStar_Syntax_Syntax.sigrng = - (uu___280_2757.FStar_Syntax_Syntax.sigrng); + (uu___279_2757.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___280_2757.FStar_Syntax_Syntax.sigquals); + (uu___279_2757.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___280_2757.FStar_Syntax_Syntax.sigmeta); + (uu___279_2757.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___280_2757.FStar_Syntax_Syntax.sigattrs) + (uu___279_2757.FStar_Syntax_Syntax.sigattrs) } | uu____2779 -> failwith @@ -991,19 +991,19 @@ let (generalize_annotated_univs : { FStar_Syntax_Syntax.sigel = uu____2670; FStar_Syntax_Syntax.sigrng = - (uu___278_2669.FStar_Syntax_Syntax.sigrng); + (uu___277_2669.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___278_2669.FStar_Syntax_Syntax.sigquals); + (uu___277_2669.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___278_2669.FStar_Syntax_Syntax.sigmeta); + (uu___277_2669.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___278_2669.FStar_Syntax_Syntax.sigattrs) + (uu___277_2669.FStar_Syntax_Syntax.sigattrs) } | FStar_Syntax_Syntax.Sig_declare_typ (lid,uu____2786,t) -> let uvs = let uu____2789 = FStar_Syntax_Free.univnames t in FStar_All.pipe_right uu____2789 FStar_Util.set_elements in - let uu___281_2794 = s in + let uu___280_2794 = s in let uu____2795 = let uu____2796 = let uu____2803 = FStar_Syntax_Subst.close_univ_vars uvs t in @@ -1012,13 +1012,13 @@ let (generalize_annotated_univs : { FStar_Syntax_Syntax.sigel = uu____2795; FStar_Syntax_Syntax.sigrng = - (uu___281_2794.FStar_Syntax_Syntax.sigrng); + (uu___280_2794.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___281_2794.FStar_Syntax_Syntax.sigquals); + (uu___280_2794.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___281_2794.FStar_Syntax_Syntax.sigmeta); + (uu___280_2794.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___281_2794.FStar_Syntax_Syntax.sigattrs) + (uu___280_2794.FStar_Syntax_Syntax.sigattrs) } | FStar_Syntax_Syntax.Sig_let ((b,lbs),lids) -> let lb_univnames lb = @@ -1057,7 +1057,7 @@ let (generalize_annotated_univs : in FStar_All.pipe_right uu____3075 FStar_Util.set_elements in let usubst = FStar_Syntax_Subst.univ_var_closing all_lb_univs in - let uu___282_3101 = s in + let uu___281_3101 = s in let uu____3102 = let uu____3103 = let uu____3110 = @@ -1065,7 +1065,7 @@ let (generalize_annotated_univs : FStar_All.pipe_right lbs (FStar_List.map (fun lb -> - let uu___283_3123 = lb in + let uu___282_3123 = lb in let uu____3124 = FStar_Syntax_Subst.subst usubst lb.FStar_Syntax_Syntax.lbtyp @@ -1076,16 +1076,16 @@ let (generalize_annotated_univs : in { FStar_Syntax_Syntax.lbname = - (uu___283_3123.FStar_Syntax_Syntax.lbname); + (uu___282_3123.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = all_lb_univs; FStar_Syntax_Syntax.lbtyp = uu____3124; FStar_Syntax_Syntax.lbeff = - (uu___283_3123.FStar_Syntax_Syntax.lbeff); + (uu___282_3123.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = uu____3127; FStar_Syntax_Syntax.lbattrs = - (uu___283_3123.FStar_Syntax_Syntax.lbattrs); + (uu___282_3123.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___283_3123.FStar_Syntax_Syntax.lbpos) + (uu___282_3123.FStar_Syntax_Syntax.lbpos) })) in (b, uu____3111) in @@ -1094,19 +1094,19 @@ let (generalize_annotated_univs : { FStar_Syntax_Syntax.sigel = uu____3102; FStar_Syntax_Syntax.sigrng = - (uu___282_3101.FStar_Syntax_Syntax.sigrng); + (uu___281_3101.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___282_3101.FStar_Syntax_Syntax.sigquals); + (uu___281_3101.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___282_3101.FStar_Syntax_Syntax.sigmeta); + (uu___281_3101.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___282_3101.FStar_Syntax_Syntax.sigattrs) + (uu___281_3101.FStar_Syntax_Syntax.sigattrs) } | FStar_Syntax_Syntax.Sig_assume (lid,uu____3136,fml) -> let uvs = let uu____3139 = FStar_Syntax_Free.univnames fml in FStar_All.pipe_right uu____3139 FStar_Util.set_elements in - let uu___284_3144 = s in + let uu___283_3144 = s in let uu____3145 = let uu____3146 = let uu____3153 = FStar_Syntax_Subst.close_univ_vars uvs fml in @@ -1115,13 +1115,13 @@ let (generalize_annotated_univs : { FStar_Syntax_Syntax.sigel = uu____3145; FStar_Syntax_Syntax.sigrng = - (uu___284_3144.FStar_Syntax_Syntax.sigrng); + (uu___283_3144.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___284_3144.FStar_Syntax_Syntax.sigquals); + (uu___283_3144.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___284_3144.FStar_Syntax_Syntax.sigmeta); + (uu___283_3144.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___284_3144.FStar_Syntax_Syntax.sigattrs) + (uu___283_3144.FStar_Syntax_Syntax.sigattrs) } | FStar_Syntax_Syntax.Sig_effect_abbrev (lid,uu____3155,bs,c,flags1) -> let uvs = @@ -1131,7 +1131,7 @@ let (generalize_annotated_univs : FStar_Util.set_union uu____3167 uu____3170 in FStar_All.pipe_right uu____3164 FStar_Util.set_elements in let usubst = FStar_Syntax_Subst.univ_var_closing uvs in - let uu___285_3178 = s in + let uu___284_3178 = s in let uu____3179 = let uu____3180 = let uu____3193 = FStar_Syntax_Subst.subst_binders usubst bs in @@ -1141,19 +1141,19 @@ let (generalize_annotated_univs : { FStar_Syntax_Syntax.sigel = uu____3179; FStar_Syntax_Syntax.sigrng = - (uu___285_3178.FStar_Syntax_Syntax.sigrng); + (uu___284_3178.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___285_3178.FStar_Syntax_Syntax.sigquals); + (uu___284_3178.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___285_3178.FStar_Syntax_Syntax.sigmeta); + (uu___284_3178.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___285_3178.FStar_Syntax_Syntax.sigattrs) + (uu___284_3178.FStar_Syntax_Syntax.sigattrs) } | uu____3197 -> s let (is_special_effect_combinator : Prims.string -> Prims.bool) = - fun uu___251_3205 -> - match uu___251_3205 with + fun uu___250_3205 -> + match uu___250_3205 with | "lift1" -> true | "lift2" -> true | "pure" -> true @@ -1254,16 +1254,16 @@ let rec (desugar_maybe_non_constant_universe : | FStar_Parser_AST.Var max_lid1 -> if FStar_List.existsb - (fun uu___252_3538 -> - match uu___252_3538 with + (fun uu___251_3538 -> + match uu___251_3538 with | FStar_Util.Inr uu____3545 -> true | uu____3548 -> false) univargs then let uu____3556 = let uu____3557 = FStar_List.map - (fun uu___253_3567 -> - match uu___253_3567 with + (fun uu___252_3567 -> + match uu___252_3567 with | FStar_Util.Inl n1 -> int_to_universe n1 | FStar_Util.Inr u -> u) univargs in @@ -1272,8 +1272,8 @@ let rec (desugar_maybe_non_constant_universe : else (let nargs = FStar_List.map - (fun uu___254_3593 -> - match uu___254_3593 with + (fun uu___253_3593 -> + match uu___253_3593 with | FStar_Util.Inl n1 -> n1 | FStar_Util.Inr uu____3603 -> failwith "impossible") univargs @@ -1518,36 +1518,36 @@ let rec (desugar_data_pat : let annot_pat_var p4 t1 = match p4.FStar_Syntax_Syntax.v with | FStar_Syntax_Syntax.Pat_var x -> - let uu___286_4773 = p4 in + let uu___285_4773 = p4 in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_var - (let uu___287_4778 = x in + (let uu___286_4778 = x in { FStar_Syntax_Syntax.ppname = - (uu___287_4778.FStar_Syntax_Syntax.ppname); + (uu___286_4778.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___287_4778.FStar_Syntax_Syntax.index); + (uu___286_4778.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t1 })); FStar_Syntax_Syntax.p = - (uu___286_4773.FStar_Syntax_Syntax.p) + (uu___285_4773.FStar_Syntax_Syntax.p) } | FStar_Syntax_Syntax.Pat_wild x -> - let uu___288_4780 = p4 in + let uu___287_4780 = p4 in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_wild - (let uu___289_4785 = x in + (let uu___288_4785 = x in { FStar_Syntax_Syntax.ppname = - (uu___289_4785.FStar_Syntax_Syntax.ppname); + (uu___288_4785.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___289_4785.FStar_Syntax_Syntax.index); + (uu___288_4785.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t1 })); FStar_Syntax_Syntax.p = - (uu___288_4780.FStar_Syntax_Syntax.p) + (uu___287_4780.FStar_Syntax_Syntax.p) } | uu____4786 when top -> p4 | uu____4787 -> @@ -1564,12 +1564,12 @@ let rec (desugar_data_pat : let uu____4838 = close_fun env1 t in desugar_term env1 uu____4838 in let x1 = - let uu___290_4840 = x in + let uu___289_4840 = x in { FStar_Syntax_Syntax.ppname = - (uu___290_4840.FStar_Syntax_Syntax.ppname); + (uu___289_4840.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___290_4840.FStar_Syntax_Syntax.index); + (uu___289_4840.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t1 } in ([(x1, t1)], (LocalBinder (x1, aq))) @@ -1856,7 +1856,7 @@ let rec (desugar_data_pat : let uu____6459 = let uu____6460 = let uu____6474 = - let uu___291_6475 = fv in + let uu___290_6475 = fv in let uu____6476 = let uu____6479 = let uu____6480 = @@ -1874,9 +1874,9 @@ let rec (desugar_data_pat : FStar_Pervasives_Native.Some uu____6479 in { FStar_Syntax_Syntax.fv_name = - (uu___291_6475.FStar_Syntax_Syntax.fv_name); + (uu___290_6475.FStar_Syntax_Syntax.fv_name); FStar_Syntax_Syntax.fv_delta = - (uu___291_6475.FStar_Syntax_Syntax.fv_delta); + (uu___290_6475.FStar_Syntax_Syntax.fv_delta); FStar_Syntax_Syntax.fv_qual = uu____6476 } in (uu____6474, args1) in @@ -2139,14 +2139,14 @@ and (desugar_machine_integer : FStar_Syntax_Syntax.lid_as_fv private_lid uu____7530 fv.FStar_Syntax_Syntax.fv_qual in - let uu___292_7531 = intro_term in + let uu___291_7531 = intro_term in { FStar_Syntax_Syntax.n = (FStar_Syntax_Syntax.Tm_fvar private_fv); FStar_Syntax_Syntax.pos = - (uu___292_7531.FStar_Syntax_Syntax.pos); + (uu___291_7531.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___292_7531.FStar_Syntax_Syntax.vars) + (uu___291_7531.FStar_Syntax_Syntax.vars) } | uu____7532 -> failwith @@ -2310,12 +2310,12 @@ and (desugar_term_maybe_top : let noaqs = [] in let join_aqs aqs = FStar_List.flatten aqs in let setpos e = - let uu___293_7929 = e in + let uu___292_7929 = e in { - FStar_Syntax_Syntax.n = (uu___293_7929.FStar_Syntax_Syntax.n); + FStar_Syntax_Syntax.n = (uu___292_7929.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = (top.FStar_Parser_AST.range); FStar_Syntax_Syntax.vars = - (uu___293_7929.FStar_Syntax_Syntax.vars) + (uu___292_7929.FStar_Syntax_Syntax.vars) } in let uu____7932 = let uu____7933 = unparen top in uu____7933.FStar_Parser_AST.tm in @@ -2386,7 +2386,7 @@ and (desugar_term_maybe_top : | uu____8075 -> [t] in let terms = flatten1 lhs in let t = - let uu___294_8080 = top in + let uu___293_8080 = top in let uu____8081 = let uu____8082 = let uu____8093 = @@ -2397,9 +2397,9 @@ and (desugar_term_maybe_top : { FStar_Parser_AST.tm = uu____8081; FStar_Parser_AST.range = - (uu___294_8080.FStar_Parser_AST.range); + (uu___293_8080.FStar_Parser_AST.range); FStar_Parser_AST.level = - (uu___294_8080.FStar_Parser_AST.level) + (uu___293_8080.FStar_Parser_AST.level) } in desugar_term_maybe_top top_level env t | FStar_Parser_AST.Tvar a -> @@ -2460,11 +2460,11 @@ and (desugar_term_maybe_top : | FStar_Parser_AST.Construct (n1,(a,uu____8410)::[]) when n1.FStar_Ident.str = "SMTPat" -> let uu____8427 = - let uu___295_8428 = top in + let uu___294_8428 = top in let uu____8429 = let uu____8430 = let uu____8437 = - let uu___296_8438 = top in + let uu___295_8438 = top in let uu____8439 = let uu____8440 = FStar_Ident.lid_of_path ["Prims"; "smt_pat"] @@ -2474,18 +2474,18 @@ and (desugar_term_maybe_top : { FStar_Parser_AST.tm = uu____8439; FStar_Parser_AST.range = - (uu___296_8438.FStar_Parser_AST.range); + (uu___295_8438.FStar_Parser_AST.range); FStar_Parser_AST.level = - (uu___296_8438.FStar_Parser_AST.level) + (uu___295_8438.FStar_Parser_AST.level) } in (uu____8437, a, FStar_Parser_AST.Nothing) in FStar_Parser_AST.App uu____8430 in { FStar_Parser_AST.tm = uu____8429; FStar_Parser_AST.range = - (uu___295_8428.FStar_Parser_AST.range); + (uu___294_8428.FStar_Parser_AST.range); FStar_Parser_AST.level = - (uu___295_8428.FStar_Parser_AST.level) + (uu___294_8428.FStar_Parser_AST.level) } in desugar_term_maybe_top top_level env uu____8427 | FStar_Parser_AST.Construct (n1,(a,uu____8448)::[]) when @@ -2494,11 +2494,11 @@ and (desugar_term_maybe_top : (FStar_Errors.Warning_SMTPatTDeprecated, "SMTPatT is deprecated; please just use SMTPat"); (let uu____8468 = - let uu___297_8469 = top in + let uu___296_8469 = top in let uu____8470 = let uu____8471 = let uu____8478 = - let uu___298_8479 = top in + let uu___297_8479 = top in let uu____8480 = let uu____8481 = FStar_Ident.lid_of_path ["Prims"; "smt_pat"] @@ -2508,28 +2508,28 @@ and (desugar_term_maybe_top : { FStar_Parser_AST.tm = uu____8480; FStar_Parser_AST.range = - (uu___298_8479.FStar_Parser_AST.range); + (uu___297_8479.FStar_Parser_AST.range); FStar_Parser_AST.level = - (uu___298_8479.FStar_Parser_AST.level) + (uu___297_8479.FStar_Parser_AST.level) } in (uu____8478, a, FStar_Parser_AST.Nothing) in FStar_Parser_AST.App uu____8471 in { FStar_Parser_AST.tm = uu____8470; FStar_Parser_AST.range = - (uu___297_8469.FStar_Parser_AST.range); + (uu___296_8469.FStar_Parser_AST.range); FStar_Parser_AST.level = - (uu___297_8469.FStar_Parser_AST.level) + (uu___296_8469.FStar_Parser_AST.level) } in desugar_term_maybe_top top_level env uu____8468)) | FStar_Parser_AST.Construct (n1,(a,uu____8489)::[]) when n1.FStar_Ident.str = "SMTPatOr" -> let uu____8506 = - let uu___299_8507 = top in + let uu___298_8507 = top in let uu____8508 = let uu____8509 = let uu____8516 = - let uu___300_8517 = top in + let uu___299_8517 = top in let uu____8518 = let uu____8519 = FStar_Ident.lid_of_path ["Prims"; "smt_pat_or"] @@ -2539,18 +2539,18 @@ and (desugar_term_maybe_top : { FStar_Parser_AST.tm = uu____8518; FStar_Parser_AST.range = - (uu___300_8517.FStar_Parser_AST.range); + (uu___299_8517.FStar_Parser_AST.range); FStar_Parser_AST.level = - (uu___300_8517.FStar_Parser_AST.level) + (uu___299_8517.FStar_Parser_AST.level) } in (uu____8516, a, FStar_Parser_AST.Nothing) in FStar_Parser_AST.App uu____8509 in { FStar_Parser_AST.tm = uu____8508; FStar_Parser_AST.range = - (uu___299_8507.FStar_Parser_AST.range); + (uu___298_8507.FStar_Parser_AST.range); FStar_Parser_AST.level = - (uu___299_8507.FStar_Parser_AST.level) + (uu___298_8507.FStar_Parser_AST.level) } in desugar_term_maybe_top top_level env uu____8506 | FStar_Parser_AST.Name @@ -2782,8 +2782,8 @@ and (desugar_term_maybe_top : FStar_Errors.raise_error err top.FStar_Parser_AST.range)) | FStar_Parser_AST.Sum (binders,t) when FStar_Util.for_all - (fun uu___255_9148 -> - match uu___255_9148 with + (fun uu___254_9148 -> + match uu___254_9148 with | FStar_Util.Inr uu____9154 -> true | uu____9156 -> false) binders -> @@ -2791,8 +2791,8 @@ and (desugar_term_maybe_top : let uu____9165 = FStar_All.pipe_right binders (FStar_List.map - (fun uu___256_9182 -> - match uu___256_9182 with + (fun uu___255_9182 -> + match uu___255_9182 with | FStar_Util.Inr x -> x | FStar_Util.Inl uu____9188 -> failwith "Impossible")) in @@ -2877,12 +2877,12 @@ and (desugar_term_maybe_top : FStar_List.append typs uu____9646 in (env2, (FStar_List.append tparams - [(((let uu___301_9676 = x in + [(((let uu___300_9676 = x in { FStar_Syntax_Syntax.ppname = - (uu___301_9676.FStar_Syntax_Syntax.ppname); + (uu___300_9676.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___301_9676.FStar_Syntax_Syntax.index); + (uu___300_9676.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t1 })), FStar_Pervasives_Native.None)]), @@ -2907,8 +2907,8 @@ and (desugar_term_maybe_top : let uu____9747 = uncurry binders t in (match uu____9747 with | (bs,t1) -> - let rec aux env1 bs1 uu___257_9791 = - match uu___257_9791 with + let rec aux env1 bs1 uu___256_9791 = + match uu___256_9791 with | [] -> let cod = desugar_comp top.FStar_Parser_AST.range true env1 t1 @@ -3027,8 +3027,8 @@ and (desugar_term_maybe_top : top.FStar_Parser_AST.range)) in FStar_List.append uu____10159 binders1 in - let rec aux env1 bs sc_pat_opt uu___258_10216 = - match uu___258_10216 with + let rec aux env1 bs sc_pat_opt uu___257_10216 = + match uu___257_10216 with | [] -> let uu____10243 = desugar_term_aq env1 body in (match uu____10243 with @@ -4020,17 +4020,17 @@ and (desugar_term_maybe_top : (match uu____15185 with | FStar_Syntax_Syntax.Tm_fvar fv -> let uu____15194 = - let uu___302_15195 = + let uu___301_15195 = let uu____15196 = let uu____15198 = FStar_Syntax_Syntax.lid_of_fv fv in FStar_Ident.string_of_lid uu____15198 in FStar_Syntax_Util.exp_string uu____15196 in { FStar_Syntax_Syntax.n = - (uu___302_15195.FStar_Syntax_Syntax.n); + (uu___301_15195.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = (e.FStar_Parser_AST.range); FStar_Syntax_Syntax.vars = - (uu___302_15195.FStar_Syntax_Syntax.vars) + (uu___301_15195.FStar_Syntax_Syntax.vars) } in (uu____15194, noaqs) | uu____15199 -> @@ -4686,24 +4686,24 @@ and (desugar_formula : f.FStar_Parser_AST.range in let setpos t = - let uu___303_17460 = t in + let uu___302_17460 = t in { - FStar_Syntax_Syntax.n = (uu___303_17460.FStar_Syntax_Syntax.n); + FStar_Syntax_Syntax.n = (uu___302_17460.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = (f.FStar_Parser_AST.range); FStar_Syntax_Syntax.vars = - (uu___303_17460.FStar_Syntax_Syntax.vars) + (uu___302_17460.FStar_Syntax_Syntax.vars) } in let desugar_quant q b pats body = let tk = desugar_binder env - (let uu___304_17502 = b in + (let uu___303_17502 = b in { - FStar_Parser_AST.b = (uu___304_17502.FStar_Parser_AST.b); + FStar_Parser_AST.b = (uu___303_17502.FStar_Parser_AST.b); FStar_Parser_AST.brange = - (uu___304_17502.FStar_Parser_AST.brange); + (uu___303_17502.FStar_Parser_AST.brange); FStar_Parser_AST.blevel = FStar_Parser_AST.Formula; FStar_Parser_AST.aqual = - (uu___304_17502.FStar_Parser_AST.aqual) + (uu___303_17502.FStar_Parser_AST.aqual) }) in let desugar_pats env1 pats1 = @@ -4723,12 +4723,12 @@ and (desugar_formula : (match uu____17578 with | (env1,a1) -> let a2 = - let uu___305_17588 = a1 in + let uu___304_17588 = a1 in { FStar_Syntax_Syntax.ppname = - (uu___305_17588.FStar_Syntax_Syntax.ppname); + (uu___304_17588.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___305_17588.FStar_Syntax_Syntax.index); + (uu___304_17588.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = k } in let pats1 = desugar_pats env1 pats in @@ -4836,15 +4836,15 @@ and (typars_of_binders : | (env1,out) -> let tk = desugar_binder env1 - (let uu___306_18050 = b in + (let uu___305_18050 = b in { FStar_Parser_AST.b = - (uu___306_18050.FStar_Parser_AST.b); + (uu___305_18050.FStar_Parser_AST.b); FStar_Parser_AST.brange = - (uu___306_18050.FStar_Parser_AST.brange); + (uu___305_18050.FStar_Parser_AST.brange); FStar_Parser_AST.blevel = FStar_Parser_AST.Formula; FStar_Parser_AST.aqual = - (uu___306_18050.FStar_Parser_AST.aqual) + (uu___305_18050.FStar_Parser_AST.aqual) }) in (match tk with @@ -4854,12 +4854,12 @@ and (typars_of_binders : (match uu____18065 with | (env2,a1) -> let a2 = - let uu___307_18083 = a1 in + let uu___306_18083 = a1 in { FStar_Syntax_Syntax.ppname = - (uu___307_18083.FStar_Syntax_Syntax.ppname); + (uu___306_18083.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___307_18083.FStar_Syntax_Syntax.index); + (uu___306_18083.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = k } in let uu____18084 = @@ -4918,8 +4918,8 @@ and (as_binder : = fun env -> fun imp -> - fun uu___259_18201 -> - match uu___259_18201 with + fun uu___258_18201 -> + match uu___258_18201 with | (FStar_Pervasives_Native.None ,k) -> let uu____18223 = FStar_Syntax_Syntax.null_binder k in (uu____18223, env) @@ -4929,12 +4929,12 @@ and (as_binder : | (env1,a1) -> let uu____18257 = let uu____18264 = trans_aqual env1 imp in - ((let uu___308_18270 = a1 in + ((let uu___307_18270 = a1 in { FStar_Syntax_Syntax.ppname = - (uu___308_18270.FStar_Syntax_Syntax.ppname); + (uu___307_18270.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___308_18270.FStar_Syntax_Syntax.index); + (uu___307_18270.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = k }), uu____18264) in @@ -4946,8 +4946,8 @@ and (trans_aqual : FStar_Syntax_Syntax.aqual) = fun env -> - fun uu___260_18278 -> - match uu___260_18278 with + fun uu___259_18278 -> + match uu___259_18278 with | FStar_Pervasives_Native.Some (FStar_Parser_AST.Implicit ) -> FStar_Pervasives_Native.Some FStar_Syntax_Syntax.imp_tag | FStar_Pervasives_Native.Some (FStar_Parser_AST.Equality ) -> @@ -4991,8 +4991,8 @@ let (mk_data_discriminators : let quals1 = FStar_All.pipe_right quals (FStar_List.filter - (fun uu___261_18359 -> - match uu___261_18359 with + (fun uu___260_18359 -> + match uu___260_18359 with | FStar_Syntax_Syntax.NoExtract -> true | FStar_Syntax_Syntax.Abstract -> true | FStar_Syntax_Syntax.Private -> true @@ -5083,8 +5083,8 @@ let (mk_indexed_projector_names : then let uu____18529 = FStar_List.filter - (fun uu___262_18533 -> - match uu___262_18533 with + (fun uu___261_18533 -> + match uu___261_18533 with | FStar_Syntax_Syntax.Abstract -> false | uu____18536 -> true) q @@ -5096,8 +5096,8 @@ let (mk_indexed_projector_names : let iquals1 = FStar_All.pipe_right iquals (FStar_List.filter - (fun uu___263_18551 -> - match uu___263_18551 with + (fun uu___262_18551 -> + match uu___262_18551 with | FStar_Syntax_Syntax.NoExtract -> true | FStar_Syntax_Syntax.Abstract @@ -5218,8 +5218,8 @@ let (mk_data_projector_names : (match formals with | [] -> [] | uu____18707 -> - let filter_records uu___264_18723 = - match uu___264_18723 with + let filter_records uu___263_18723 = + match uu___263_18723 with | FStar_Syntax_Syntax.RecordConstructor (uu____18726,fns) -> FStar_Pervasives_Native.Some @@ -5331,8 +5331,8 @@ let rec (desugar_tycon : fun quals -> fun tcs -> let rng = d.FStar_Parser_AST.drange in - let tycon_id uu___265_18978 = - match uu___265_18978 with + let tycon_id uu___264_18978 = + match uu___264_18978 with | FStar_Parser_AST.TyconAbstract (id1,uu____18980,uu____18981) -> id1 | FStar_Parser_AST.TyconAbbrev @@ -5391,8 +5391,8 @@ let rec (desugar_tycon : out.FStar_Parser_AST.range out.FStar_Parser_AST.level) t binders in - let tycon_record_as_variant uu___266_19149 = - match uu___266_19149 with + let tycon_record_as_variant uu___265_19149 = + match uu___265_19149 with | FStar_Parser_AST.TyconRecord (id1,parms,kopt,fields) -> let constrName = FStar_Ident.mk_ident @@ -5465,8 +5465,8 @@ let rec (desugar_tycon : FStar_Pervasives_Native.None, false)])), uu____19285))) | uu____19381 -> failwith "impossible" in - let desugar_abstract_tc quals1 _env mutuals uu___267_19421 = - match uu___267_19421 with + let desugar_abstract_tc quals1 _env mutuals uu___266_19421 = + match uu___266_19421 with | FStar_Parser_AST.TyconAbstract (id1,binders,kopt) -> let uu____19445 = typars_of_binders _env binders in (match uu____19445 with @@ -5595,17 +5595,17 @@ let rec (desugar_tycon : uu____19806 FStar_Pervasives_Native.None se.FStar_Syntax_Syntax.sigrng in - let uu___309_19845 = se in + let uu___308_19845 = se in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_declare_typ (l, [], t)); FStar_Syntax_Syntax.sigrng = - (uu___309_19845.FStar_Syntax_Syntax.sigrng); + (uu___308_19845.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = quals2; FStar_Syntax_Syntax.sigmeta = - (uu___309_19845.FStar_Syntax_Syntax.sigmeta); + (uu___308_19845.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___309_19845.FStar_Syntax_Syntax.sigattrs) + (uu___308_19845.FStar_Syntax_Syntax.sigattrs) } | uu____19846 -> failwith "Impossible" in let env1 = FStar_Syntax_DsEnv.push_sigelt env se1 in @@ -5625,8 +5625,8 @@ let rec (desugar_tycon : | FStar_Pervasives_Native.None -> let uu____19897 = FStar_Util.for_some - (fun uu___268_19900 -> - match uu___268_19900 with + (fun uu___267_19900 -> + match uu___267_19900 with | FStar_Syntax_Syntax.Effect -> true | uu____19903 -> false) quals in @@ -5644,8 +5644,8 @@ let rec (desugar_tycon : let uu____19916 = FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___269_19922 -> - match uu___269_19922 with + (fun uu___268_19922 -> + match uu___268_19922 with | FStar_Syntax_Syntax.Logic -> true | uu____19925 -> false)) in @@ -5705,8 +5705,8 @@ let rec (desugar_tycon : let quals2 = FStar_All.pipe_right quals1 (FStar_List.filter - (fun uu___270_20127 -> - match uu___270_20127 with + (fun uu___269_20127 -> + match uu___269_20127 with | FStar_Syntax_Syntax.Effect -> false | uu____20130 -> true)) in @@ -5819,8 +5819,8 @@ let rec (desugar_tycon : let docs_tps_sigelts = FStar_All.pipe_right tcs2 (FStar_List.collect - (fun uu___272_21760 -> - match uu___272_21760 with + (fun uu___271_21760 -> + match uu___271_21760 with | FStar_Util.Inr ({ FStar_Syntax_Syntax.sigel = @@ -5955,9 +5955,9 @@ let rec (desugar_tycon : tname_quals (FStar_List.collect (fun - uu___271_22427 + uu___270_22427 -> - match uu___271_22427 + match uu___270_22427 with | FStar_Syntax_Syntax.RecordType fns -> @@ -6175,8 +6175,8 @@ let (push_reflect_effect : let uu____23460 = FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___273_23467 -> - match uu___273_23467 with + (fun uu___272_23467 -> + match uu___272_23467 with | FStar_Syntax_Syntax.Reflectable uu____23469 -> true | uu____23471 -> false)) in @@ -6621,8 +6621,8 @@ let rec (desugar_effect : else (let rr = FStar_Util.for_some - (fun uu___274_24630 -> - match uu___274_24630 with + (fun uu___273_24630 -> + match uu___273_24630 with | FStar_Syntax_Syntax.Reifiable -> true | FStar_Syntax_Syntax.Reflectable @@ -7179,20 +7179,20 @@ and (desugar_decl_aux : fun sigelt -> if i = (Prims.parse_int "0") then - let uu___310_25498 = sigelt in + let uu___309_25498 = sigelt in { FStar_Syntax_Syntax.sigel = - (uu___310_25498.FStar_Syntax_Syntax.sigel); + (uu___309_25498.FStar_Syntax_Syntax.sigel); FStar_Syntax_Syntax.sigrng = - (uu___310_25498.FStar_Syntax_Syntax.sigrng); + (uu___309_25498.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___310_25498.FStar_Syntax_Syntax.sigquals); + (uu___309_25498.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___310_25498.FStar_Syntax_Syntax.sigmeta); + (uu___309_25498.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = attrs2 } else - (let uu___311_25501 = sigelt in + (let uu___310_25501 = sigelt in let uu____25502 = FStar_List.filter (fun at1 -> @@ -7201,13 +7201,13 @@ and (desugar_decl_aux : in { FStar_Syntax_Syntax.sigel = - (uu___311_25501.FStar_Syntax_Syntax.sigel); + (uu___310_25501.FStar_Syntax_Syntax.sigel); FStar_Syntax_Syntax.sigrng = - (uu___311_25501.FStar_Syntax_Syntax.sigrng); + (uu___310_25501.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___311_25501.FStar_Syntax_Syntax.sigquals); + (uu___310_25501.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___311_25501.FStar_Syntax_Syntax.sigmeta); + (uu___310_25501.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = uu____25502 })) sigelts in @@ -7500,8 +7500,8 @@ and (desugar_decl_noattrs : FStar_All.pipe_right (FStar_Pervasives_Native.snd lbs) (FStar_List.collect - (fun uu___275_26243 -> - match uu___275_26243 with + (fun uu___274_26243 -> + match uu___274_26243 with | { FStar_Syntax_Syntax.lbname = FStar_Util.Inl uu____26246; @@ -7568,32 +7568,32 @@ and (desugar_decl_noattrs : FStar_Util.right lb.FStar_Syntax_Syntax.lbname in - let uu___312_26372 = lb in + let uu___311_26372 = lb in { FStar_Syntax_Syntax.lbname = (FStar_Util.Inr - (let uu___313_26374 = fv in + (let uu___312_26374 = fv in { FStar_Syntax_Syntax.fv_name = - (uu___313_26374.FStar_Syntax_Syntax.fv_name); + (uu___312_26374.FStar_Syntax_Syntax.fv_name); FStar_Syntax_Syntax.fv_delta = (FStar_Syntax_Syntax.Delta_abstract (fv.FStar_Syntax_Syntax.fv_delta)); FStar_Syntax_Syntax.fv_qual = - (uu___313_26374.FStar_Syntax_Syntax.fv_qual) + (uu___312_26374.FStar_Syntax_Syntax.fv_qual) })); FStar_Syntax_Syntax.lbunivs = - (uu___312_26372.FStar_Syntax_Syntax.lbunivs); + (uu___311_26372.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = - (uu___312_26372.FStar_Syntax_Syntax.lbtyp); + (uu___311_26372.FStar_Syntax_Syntax.lbtyp); FStar_Syntax_Syntax.lbeff = - (uu___312_26372.FStar_Syntax_Syntax.lbeff); + (uu___311_26372.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = - (uu___312_26372.FStar_Syntax_Syntax.lbdef); + (uu___311_26372.FStar_Syntax_Syntax.lbdef); FStar_Syntax_Syntax.lbattrs = - (uu___312_26372.FStar_Syntax_Syntax.lbattrs); + (uu___311_26372.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___312_26372.FStar_Syntax_Syntax.lbpos) + (uu___311_26372.FStar_Syntax_Syntax.lbpos) })) in ((FStar_Pervasives_Native.fst lbs), uu____26357) @@ -7651,29 +7651,29 @@ and (desugar_decl_noattrs : in match pat.FStar_Parser_AST.pat with | FStar_Parser_AST.PatAscribed (pat1,ty) -> - let uu___314_26468 = pat1 in + let uu___313_26468 = pat1 in { FStar_Parser_AST.pat = (FStar_Parser_AST.PatAscribed (var_pat, ty)); FStar_Parser_AST.prange = - (uu___314_26468.FStar_Parser_AST.prange) + (uu___313_26468.FStar_Parser_AST.prange) } | uu____26475 -> var_pat in let main_let = desugar_decl env - (let uu___315_26482 = d in + (let uu___314_26482 = d in { FStar_Parser_AST.d = (FStar_Parser_AST.TopLevelLet (isrec, [(fresh_pat, body)])); FStar_Parser_AST.drange = - (uu___315_26482.FStar_Parser_AST.drange); + (uu___314_26482.FStar_Parser_AST.drange); FStar_Parser_AST.doc = - (uu___315_26482.FStar_Parser_AST.doc); + (uu___314_26482.FStar_Parser_AST.doc); FStar_Parser_AST.quals = (FStar_Parser_AST.Private :: (d.FStar_Parser_AST.quals)); FStar_Parser_AST.attrs = - (uu___315_26482.FStar_Parser_AST.attrs) + (uu___314_26482.FStar_Parser_AST.attrs) }) in let build_projection uu____26518 id1 = @@ -7956,8 +7956,8 @@ let (desugar_decls : in match uu____26901 with | (env1,sigelts) -> - let rec forward acc uu___277_26986 = - match uu___277_26986 with + let rec forward acc uu___276_26986 = + match uu___276_26986 with | se1::se2::sigelts1 -> (match ((se1.FStar_Syntax_Syntax.sigel), (se2.FStar_Syntax_Syntax.sigel)) @@ -7966,12 +7966,12 @@ let (desugar_decls : uu____27000,FStar_Syntax_Syntax.Sig_let uu____27001) -> let uu____27014 = let uu____27017 = - let uu___316_27018 = se2 in + let uu___315_27018 = se2 in let uu____27019 = let uu____27022 = FStar_List.filter - (fun uu___276_27036 -> - match uu___276_27036 with + (fun uu___275_27036 -> + match uu___275_27036 with | { FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_app @@ -8002,13 +8002,13 @@ let (desugar_decls : in { FStar_Syntax_Syntax.sigel = - (uu___316_27018.FStar_Syntax_Syntax.sigel); + (uu___315_27018.FStar_Syntax_Syntax.sigel); FStar_Syntax_Syntax.sigrng = - (uu___316_27018.FStar_Syntax_Syntax.sigrng); + (uu___315_27018.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___316_27018.FStar_Syntax_Syntax.sigquals); + (uu___315_27018.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___316_27018.FStar_Syntax_Syntax.sigmeta); + (uu___315_27018.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = uu____27019 } in uu____27017 :: se1 :: acc in @@ -8300,22 +8300,22 @@ let (add_modul_to_env : in erase_univs uu____27957 in FStar_Syntax_Subst.close binders uu____27956 in - let uu___317_27958 = action in + let uu___316_27958 = action in let uu____27959 = erase_term1 action.FStar_Syntax_Syntax.action_defn in let uu____27960 = erase_term1 action.FStar_Syntax_Syntax.action_typ in { FStar_Syntax_Syntax.action_name = - (uu___317_27958.FStar_Syntax_Syntax.action_name); + (uu___316_27958.FStar_Syntax_Syntax.action_name); FStar_Syntax_Syntax.action_unqualified_name = - (uu___317_27958.FStar_Syntax_Syntax.action_unqualified_name); + (uu___316_27958.FStar_Syntax_Syntax.action_unqualified_name); FStar_Syntax_Syntax.action_univs = []; FStar_Syntax_Syntax.action_params = erased_action_params; FStar_Syntax_Syntax.action_defn = uu____27959; FStar_Syntax_Syntax.action_typ = uu____27960 } in - let uu___318_27961 = ed in + let uu___317_27961 = ed in let uu____27962 = FStar_Syntax_Subst.close_binders binders in let uu____27963 = erase_term ed.FStar_Syntax_Syntax.signature @@ -8350,9 +8350,9 @@ let (add_modul_to_env : in { FStar_Syntax_Syntax.cattributes = - (uu___318_27961.FStar_Syntax_Syntax.cattributes); + (uu___317_27961.FStar_Syntax_Syntax.cattributes); FStar_Syntax_Syntax.mname = - (uu___318_27961.FStar_Syntax_Syntax.mname); + (uu___317_27961.FStar_Syntax_Syntax.mname); FStar_Syntax_Syntax.univs = []; FStar_Syntax_Syntax.binders = uu____27962; FStar_Syntax_Syntax.signature = uu____27963; @@ -8371,34 +8371,34 @@ let (add_modul_to_env : FStar_Syntax_Syntax.bind_repr = uu____27976; FStar_Syntax_Syntax.actions = uu____27977; FStar_Syntax_Syntax.eff_attrs = - (uu___318_27961.FStar_Syntax_Syntax.eff_attrs) + (uu___317_27961.FStar_Syntax_Syntax.eff_attrs) } in let push_sigelt1 env se = match se.FStar_Syntax_Syntax.sigel with | FStar_Syntax_Syntax.Sig_new_effect ed -> let se' = - let uu___319_27993 = se in + let uu___318_27993 = se in let uu____27994 = let uu____27995 = erase_univs_ed ed in FStar_Syntax_Syntax.Sig_new_effect uu____27995 in { FStar_Syntax_Syntax.sigel = uu____27994; FStar_Syntax_Syntax.sigrng = - (uu___319_27993.FStar_Syntax_Syntax.sigrng); + (uu___318_27993.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___319_27993.FStar_Syntax_Syntax.sigquals); + (uu___318_27993.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___319_27993.FStar_Syntax_Syntax.sigmeta); + (uu___318_27993.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___319_27993.FStar_Syntax_Syntax.sigattrs) + (uu___318_27993.FStar_Syntax_Syntax.sigattrs) } in let env1 = FStar_Syntax_DsEnv.push_sigelt env se' in push_reflect_effect env1 se.FStar_Syntax_Syntax.sigquals ed.FStar_Syntax_Syntax.mname se.FStar_Syntax_Syntax.sigrng | FStar_Syntax_Syntax.Sig_new_effect_for_free ed -> let se' = - let uu___320_27999 = se in + let uu___319_27999 = se in let uu____28000 = let uu____28001 = erase_univs_ed ed in FStar_Syntax_Syntax.Sig_new_effect_for_free uu____28001 @@ -8406,13 +8406,13 @@ let (add_modul_to_env : { FStar_Syntax_Syntax.sigel = uu____28000; FStar_Syntax_Syntax.sigrng = - (uu___320_27999.FStar_Syntax_Syntax.sigrng); + (uu___319_27999.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___320_27999.FStar_Syntax_Syntax.sigquals); + (uu___319_27999.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___320_27999.FStar_Syntax_Syntax.sigmeta); + (uu___319_27999.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___320_27999.FStar_Syntax_Syntax.sigattrs) + (uu___319_27999.FStar_Syntax_Syntax.sigattrs) } in let env1 = FStar_Syntax_DsEnv.push_sigelt env se' in push_reflect_effect env1 se.FStar_Syntax_Syntax.sigquals diff --git a/src/ocaml-output/FStar_TypeChecker_Cfg.ml b/src/ocaml-output/FStar_TypeChecker_Cfg.ml index 0d016fe45ef..991f6c97faf 100644 --- a/src/ocaml-output/FStar_TypeChecker_Cfg.ml +++ b/src/ocaml-output/FStar_TypeChecker_Cfg.ml @@ -546,842 +546,842 @@ let (fstep_add_one : FStar_TypeChecker_Env.step -> fsteps -> fsteps) = fun fs -> match s with | FStar_TypeChecker_Env.Beta -> - let uu___238_2378 = fs in + let uu___237_2378 = fs in { beta = true; - iota = (uu___238_2378.iota); - zeta = (uu___238_2378.zeta); - weak = (uu___238_2378.weak); - hnf = (uu___238_2378.hnf); - primops = (uu___238_2378.primops); - do_not_unfold_pure_lets = (uu___238_2378.do_not_unfold_pure_lets); - unfold_until = (uu___238_2378.unfold_until); - unfold_only = (uu___238_2378.unfold_only); - unfold_fully = (uu___238_2378.unfold_fully); - unfold_attr = (uu___238_2378.unfold_attr); - unfold_tac = (uu___238_2378.unfold_tac); + iota = (uu___237_2378.iota); + zeta = (uu___237_2378.zeta); + weak = (uu___237_2378.weak); + hnf = (uu___237_2378.hnf); + primops = (uu___237_2378.primops); + do_not_unfold_pure_lets = (uu___237_2378.do_not_unfold_pure_lets); + unfold_until = (uu___237_2378.unfold_until); + unfold_only = (uu___237_2378.unfold_only); + unfold_fully = (uu___237_2378.unfold_fully); + unfold_attr = (uu___237_2378.unfold_attr); + unfold_tac = (uu___237_2378.unfold_tac); pure_subterms_within_computations = - (uu___238_2378.pure_subterms_within_computations); - simplify = (uu___238_2378.simplify); - erase_universes = (uu___238_2378.erase_universes); - allow_unbound_universes = (uu___238_2378.allow_unbound_universes); - reify_ = (uu___238_2378.reify_); - compress_uvars = (uu___238_2378.compress_uvars); - no_full_norm = (uu___238_2378.no_full_norm); - check_no_uvars = (uu___238_2378.check_no_uvars); - unmeta = (uu___238_2378.unmeta); - unascribe = (uu___238_2378.unascribe); - in_full_norm_request = (uu___238_2378.in_full_norm_request); - weakly_reduce_scrutinee = (uu___238_2378.weakly_reduce_scrutinee); - nbe_step = (uu___238_2378.nbe_step); - for_extraction = (uu___238_2378.for_extraction) + (uu___237_2378.pure_subterms_within_computations); + simplify = (uu___237_2378.simplify); + erase_universes = (uu___237_2378.erase_universes); + allow_unbound_universes = (uu___237_2378.allow_unbound_universes); + reify_ = (uu___237_2378.reify_); + compress_uvars = (uu___237_2378.compress_uvars); + no_full_norm = (uu___237_2378.no_full_norm); + check_no_uvars = (uu___237_2378.check_no_uvars); + unmeta = (uu___237_2378.unmeta); + unascribe = (uu___237_2378.unascribe); + in_full_norm_request = (uu___237_2378.in_full_norm_request); + weakly_reduce_scrutinee = (uu___237_2378.weakly_reduce_scrutinee); + nbe_step = (uu___237_2378.nbe_step); + for_extraction = (uu___237_2378.for_extraction) } | FStar_TypeChecker_Env.Iota -> - let uu___239_2380 = fs in + let uu___238_2380 = fs in { - beta = (uu___239_2380.beta); + beta = (uu___238_2380.beta); iota = true; - zeta = (uu___239_2380.zeta); - weak = (uu___239_2380.weak); - hnf = (uu___239_2380.hnf); - primops = (uu___239_2380.primops); - do_not_unfold_pure_lets = (uu___239_2380.do_not_unfold_pure_lets); - unfold_until = (uu___239_2380.unfold_until); - unfold_only = (uu___239_2380.unfold_only); - unfold_fully = (uu___239_2380.unfold_fully); - unfold_attr = (uu___239_2380.unfold_attr); - unfold_tac = (uu___239_2380.unfold_tac); + zeta = (uu___238_2380.zeta); + weak = (uu___238_2380.weak); + hnf = (uu___238_2380.hnf); + primops = (uu___238_2380.primops); + do_not_unfold_pure_lets = (uu___238_2380.do_not_unfold_pure_lets); + unfold_until = (uu___238_2380.unfold_until); + unfold_only = (uu___238_2380.unfold_only); + unfold_fully = (uu___238_2380.unfold_fully); + unfold_attr = (uu___238_2380.unfold_attr); + unfold_tac = (uu___238_2380.unfold_tac); pure_subterms_within_computations = - (uu___239_2380.pure_subterms_within_computations); - simplify = (uu___239_2380.simplify); - erase_universes = (uu___239_2380.erase_universes); - allow_unbound_universes = (uu___239_2380.allow_unbound_universes); - reify_ = (uu___239_2380.reify_); - compress_uvars = (uu___239_2380.compress_uvars); - no_full_norm = (uu___239_2380.no_full_norm); - check_no_uvars = (uu___239_2380.check_no_uvars); - unmeta = (uu___239_2380.unmeta); - unascribe = (uu___239_2380.unascribe); - in_full_norm_request = (uu___239_2380.in_full_norm_request); - weakly_reduce_scrutinee = (uu___239_2380.weakly_reduce_scrutinee); - nbe_step = (uu___239_2380.nbe_step); - for_extraction = (uu___239_2380.for_extraction) + (uu___238_2380.pure_subterms_within_computations); + simplify = (uu___238_2380.simplify); + erase_universes = (uu___238_2380.erase_universes); + allow_unbound_universes = (uu___238_2380.allow_unbound_universes); + reify_ = (uu___238_2380.reify_); + compress_uvars = (uu___238_2380.compress_uvars); + no_full_norm = (uu___238_2380.no_full_norm); + check_no_uvars = (uu___238_2380.check_no_uvars); + unmeta = (uu___238_2380.unmeta); + unascribe = (uu___238_2380.unascribe); + in_full_norm_request = (uu___238_2380.in_full_norm_request); + weakly_reduce_scrutinee = (uu___238_2380.weakly_reduce_scrutinee); + nbe_step = (uu___238_2380.nbe_step); + for_extraction = (uu___238_2380.for_extraction) } | FStar_TypeChecker_Env.Zeta -> - let uu___240_2382 = fs in + let uu___239_2382 = fs in { - beta = (uu___240_2382.beta); - iota = (uu___240_2382.iota); + beta = (uu___239_2382.beta); + iota = (uu___239_2382.iota); zeta = true; - weak = (uu___240_2382.weak); - hnf = (uu___240_2382.hnf); - primops = (uu___240_2382.primops); - do_not_unfold_pure_lets = (uu___240_2382.do_not_unfold_pure_lets); - unfold_until = (uu___240_2382.unfold_until); - unfold_only = (uu___240_2382.unfold_only); - unfold_fully = (uu___240_2382.unfold_fully); - unfold_attr = (uu___240_2382.unfold_attr); - unfold_tac = (uu___240_2382.unfold_tac); + weak = (uu___239_2382.weak); + hnf = (uu___239_2382.hnf); + primops = (uu___239_2382.primops); + do_not_unfold_pure_lets = (uu___239_2382.do_not_unfold_pure_lets); + unfold_until = (uu___239_2382.unfold_until); + unfold_only = (uu___239_2382.unfold_only); + unfold_fully = (uu___239_2382.unfold_fully); + unfold_attr = (uu___239_2382.unfold_attr); + unfold_tac = (uu___239_2382.unfold_tac); pure_subterms_within_computations = - (uu___240_2382.pure_subterms_within_computations); - simplify = (uu___240_2382.simplify); - erase_universes = (uu___240_2382.erase_universes); - allow_unbound_universes = (uu___240_2382.allow_unbound_universes); - reify_ = (uu___240_2382.reify_); - compress_uvars = (uu___240_2382.compress_uvars); - no_full_norm = (uu___240_2382.no_full_norm); - check_no_uvars = (uu___240_2382.check_no_uvars); - unmeta = (uu___240_2382.unmeta); - unascribe = (uu___240_2382.unascribe); - in_full_norm_request = (uu___240_2382.in_full_norm_request); - weakly_reduce_scrutinee = (uu___240_2382.weakly_reduce_scrutinee); - nbe_step = (uu___240_2382.nbe_step); - for_extraction = (uu___240_2382.for_extraction) + (uu___239_2382.pure_subterms_within_computations); + simplify = (uu___239_2382.simplify); + erase_universes = (uu___239_2382.erase_universes); + allow_unbound_universes = (uu___239_2382.allow_unbound_universes); + reify_ = (uu___239_2382.reify_); + compress_uvars = (uu___239_2382.compress_uvars); + no_full_norm = (uu___239_2382.no_full_norm); + check_no_uvars = (uu___239_2382.check_no_uvars); + unmeta = (uu___239_2382.unmeta); + unascribe = (uu___239_2382.unascribe); + in_full_norm_request = (uu___239_2382.in_full_norm_request); + weakly_reduce_scrutinee = (uu___239_2382.weakly_reduce_scrutinee); + nbe_step = (uu___239_2382.nbe_step); + for_extraction = (uu___239_2382.for_extraction) } | FStar_TypeChecker_Env.Exclude (FStar_TypeChecker_Env.Beta ) -> - let uu___241_2384 = fs in + let uu___240_2384 = fs in { beta = false; - iota = (uu___241_2384.iota); - zeta = (uu___241_2384.zeta); - weak = (uu___241_2384.weak); - hnf = (uu___241_2384.hnf); - primops = (uu___241_2384.primops); - do_not_unfold_pure_lets = (uu___241_2384.do_not_unfold_pure_lets); - unfold_until = (uu___241_2384.unfold_until); - unfold_only = (uu___241_2384.unfold_only); - unfold_fully = (uu___241_2384.unfold_fully); - unfold_attr = (uu___241_2384.unfold_attr); - unfold_tac = (uu___241_2384.unfold_tac); + iota = (uu___240_2384.iota); + zeta = (uu___240_2384.zeta); + weak = (uu___240_2384.weak); + hnf = (uu___240_2384.hnf); + primops = (uu___240_2384.primops); + do_not_unfold_pure_lets = (uu___240_2384.do_not_unfold_pure_lets); + unfold_until = (uu___240_2384.unfold_until); + unfold_only = (uu___240_2384.unfold_only); + unfold_fully = (uu___240_2384.unfold_fully); + unfold_attr = (uu___240_2384.unfold_attr); + unfold_tac = (uu___240_2384.unfold_tac); pure_subterms_within_computations = - (uu___241_2384.pure_subterms_within_computations); - simplify = (uu___241_2384.simplify); - erase_universes = (uu___241_2384.erase_universes); - allow_unbound_universes = (uu___241_2384.allow_unbound_universes); - reify_ = (uu___241_2384.reify_); - compress_uvars = (uu___241_2384.compress_uvars); - no_full_norm = (uu___241_2384.no_full_norm); - check_no_uvars = (uu___241_2384.check_no_uvars); - unmeta = (uu___241_2384.unmeta); - unascribe = (uu___241_2384.unascribe); - in_full_norm_request = (uu___241_2384.in_full_norm_request); - weakly_reduce_scrutinee = (uu___241_2384.weakly_reduce_scrutinee); - nbe_step = (uu___241_2384.nbe_step); - for_extraction = (uu___241_2384.for_extraction) + (uu___240_2384.pure_subterms_within_computations); + simplify = (uu___240_2384.simplify); + erase_universes = (uu___240_2384.erase_universes); + allow_unbound_universes = (uu___240_2384.allow_unbound_universes); + reify_ = (uu___240_2384.reify_); + compress_uvars = (uu___240_2384.compress_uvars); + no_full_norm = (uu___240_2384.no_full_norm); + check_no_uvars = (uu___240_2384.check_no_uvars); + unmeta = (uu___240_2384.unmeta); + unascribe = (uu___240_2384.unascribe); + in_full_norm_request = (uu___240_2384.in_full_norm_request); + weakly_reduce_scrutinee = (uu___240_2384.weakly_reduce_scrutinee); + nbe_step = (uu___240_2384.nbe_step); + for_extraction = (uu___240_2384.for_extraction) } | FStar_TypeChecker_Env.Exclude (FStar_TypeChecker_Env.Iota ) -> - let uu___242_2386 = fs in + let uu___241_2386 = fs in { - beta = (uu___242_2386.beta); + beta = (uu___241_2386.beta); iota = false; - zeta = (uu___242_2386.zeta); - weak = (uu___242_2386.weak); - hnf = (uu___242_2386.hnf); - primops = (uu___242_2386.primops); - do_not_unfold_pure_lets = (uu___242_2386.do_not_unfold_pure_lets); - unfold_until = (uu___242_2386.unfold_until); - unfold_only = (uu___242_2386.unfold_only); - unfold_fully = (uu___242_2386.unfold_fully); - unfold_attr = (uu___242_2386.unfold_attr); - unfold_tac = (uu___242_2386.unfold_tac); + zeta = (uu___241_2386.zeta); + weak = (uu___241_2386.weak); + hnf = (uu___241_2386.hnf); + primops = (uu___241_2386.primops); + do_not_unfold_pure_lets = (uu___241_2386.do_not_unfold_pure_lets); + unfold_until = (uu___241_2386.unfold_until); + unfold_only = (uu___241_2386.unfold_only); + unfold_fully = (uu___241_2386.unfold_fully); + unfold_attr = (uu___241_2386.unfold_attr); + unfold_tac = (uu___241_2386.unfold_tac); pure_subterms_within_computations = - (uu___242_2386.pure_subterms_within_computations); - simplify = (uu___242_2386.simplify); - erase_universes = (uu___242_2386.erase_universes); - allow_unbound_universes = (uu___242_2386.allow_unbound_universes); - reify_ = (uu___242_2386.reify_); - compress_uvars = (uu___242_2386.compress_uvars); - no_full_norm = (uu___242_2386.no_full_norm); - check_no_uvars = (uu___242_2386.check_no_uvars); - unmeta = (uu___242_2386.unmeta); - unascribe = (uu___242_2386.unascribe); - in_full_norm_request = (uu___242_2386.in_full_norm_request); - weakly_reduce_scrutinee = (uu___242_2386.weakly_reduce_scrutinee); - nbe_step = (uu___242_2386.nbe_step); - for_extraction = (uu___242_2386.for_extraction) + (uu___241_2386.pure_subterms_within_computations); + simplify = (uu___241_2386.simplify); + erase_universes = (uu___241_2386.erase_universes); + allow_unbound_universes = (uu___241_2386.allow_unbound_universes); + reify_ = (uu___241_2386.reify_); + compress_uvars = (uu___241_2386.compress_uvars); + no_full_norm = (uu___241_2386.no_full_norm); + check_no_uvars = (uu___241_2386.check_no_uvars); + unmeta = (uu___241_2386.unmeta); + unascribe = (uu___241_2386.unascribe); + in_full_norm_request = (uu___241_2386.in_full_norm_request); + weakly_reduce_scrutinee = (uu___241_2386.weakly_reduce_scrutinee); + nbe_step = (uu___241_2386.nbe_step); + for_extraction = (uu___241_2386.for_extraction) } | FStar_TypeChecker_Env.Exclude (FStar_TypeChecker_Env.Zeta ) -> - let uu___243_2388 = fs in + let uu___242_2388 = fs in { - beta = (uu___243_2388.beta); - iota = (uu___243_2388.iota); + beta = (uu___242_2388.beta); + iota = (uu___242_2388.iota); zeta = false; - weak = (uu___243_2388.weak); - hnf = (uu___243_2388.hnf); - primops = (uu___243_2388.primops); - do_not_unfold_pure_lets = (uu___243_2388.do_not_unfold_pure_lets); - unfold_until = (uu___243_2388.unfold_until); - unfold_only = (uu___243_2388.unfold_only); - unfold_fully = (uu___243_2388.unfold_fully); - unfold_attr = (uu___243_2388.unfold_attr); - unfold_tac = (uu___243_2388.unfold_tac); + weak = (uu___242_2388.weak); + hnf = (uu___242_2388.hnf); + primops = (uu___242_2388.primops); + do_not_unfold_pure_lets = (uu___242_2388.do_not_unfold_pure_lets); + unfold_until = (uu___242_2388.unfold_until); + unfold_only = (uu___242_2388.unfold_only); + unfold_fully = (uu___242_2388.unfold_fully); + unfold_attr = (uu___242_2388.unfold_attr); + unfold_tac = (uu___242_2388.unfold_tac); pure_subterms_within_computations = - (uu___243_2388.pure_subterms_within_computations); - simplify = (uu___243_2388.simplify); - erase_universes = (uu___243_2388.erase_universes); - allow_unbound_universes = (uu___243_2388.allow_unbound_universes); - reify_ = (uu___243_2388.reify_); - compress_uvars = (uu___243_2388.compress_uvars); - no_full_norm = (uu___243_2388.no_full_norm); - check_no_uvars = (uu___243_2388.check_no_uvars); - unmeta = (uu___243_2388.unmeta); - unascribe = (uu___243_2388.unascribe); - in_full_norm_request = (uu___243_2388.in_full_norm_request); - weakly_reduce_scrutinee = (uu___243_2388.weakly_reduce_scrutinee); - nbe_step = (uu___243_2388.nbe_step); - for_extraction = (uu___243_2388.for_extraction) + (uu___242_2388.pure_subterms_within_computations); + simplify = (uu___242_2388.simplify); + erase_universes = (uu___242_2388.erase_universes); + allow_unbound_universes = (uu___242_2388.allow_unbound_universes); + reify_ = (uu___242_2388.reify_); + compress_uvars = (uu___242_2388.compress_uvars); + no_full_norm = (uu___242_2388.no_full_norm); + check_no_uvars = (uu___242_2388.check_no_uvars); + unmeta = (uu___242_2388.unmeta); + unascribe = (uu___242_2388.unascribe); + in_full_norm_request = (uu___242_2388.in_full_norm_request); + weakly_reduce_scrutinee = (uu___242_2388.weakly_reduce_scrutinee); + nbe_step = (uu___242_2388.nbe_step); + for_extraction = (uu___242_2388.for_extraction) } | FStar_TypeChecker_Env.Exclude uu____2390 -> failwith "Bad exclude" | FStar_TypeChecker_Env.Weak -> - let uu___244_2392 = fs in + let uu___243_2392 = fs in { - beta = (uu___244_2392.beta); - iota = (uu___244_2392.iota); - zeta = (uu___244_2392.zeta); + beta = (uu___243_2392.beta); + iota = (uu___243_2392.iota); + zeta = (uu___243_2392.zeta); weak = true; - hnf = (uu___244_2392.hnf); - primops = (uu___244_2392.primops); - do_not_unfold_pure_lets = (uu___244_2392.do_not_unfold_pure_lets); - unfold_until = (uu___244_2392.unfold_until); - unfold_only = (uu___244_2392.unfold_only); - unfold_fully = (uu___244_2392.unfold_fully); - unfold_attr = (uu___244_2392.unfold_attr); - unfold_tac = (uu___244_2392.unfold_tac); + hnf = (uu___243_2392.hnf); + primops = (uu___243_2392.primops); + do_not_unfold_pure_lets = (uu___243_2392.do_not_unfold_pure_lets); + unfold_until = (uu___243_2392.unfold_until); + unfold_only = (uu___243_2392.unfold_only); + unfold_fully = (uu___243_2392.unfold_fully); + unfold_attr = (uu___243_2392.unfold_attr); + unfold_tac = (uu___243_2392.unfold_tac); pure_subterms_within_computations = - (uu___244_2392.pure_subterms_within_computations); - simplify = (uu___244_2392.simplify); - erase_universes = (uu___244_2392.erase_universes); - allow_unbound_universes = (uu___244_2392.allow_unbound_universes); - reify_ = (uu___244_2392.reify_); - compress_uvars = (uu___244_2392.compress_uvars); - no_full_norm = (uu___244_2392.no_full_norm); - check_no_uvars = (uu___244_2392.check_no_uvars); - unmeta = (uu___244_2392.unmeta); - unascribe = (uu___244_2392.unascribe); - in_full_norm_request = (uu___244_2392.in_full_norm_request); - weakly_reduce_scrutinee = (uu___244_2392.weakly_reduce_scrutinee); - nbe_step = (uu___244_2392.nbe_step); - for_extraction = (uu___244_2392.for_extraction) + (uu___243_2392.pure_subterms_within_computations); + simplify = (uu___243_2392.simplify); + erase_universes = (uu___243_2392.erase_universes); + allow_unbound_universes = (uu___243_2392.allow_unbound_universes); + reify_ = (uu___243_2392.reify_); + compress_uvars = (uu___243_2392.compress_uvars); + no_full_norm = (uu___243_2392.no_full_norm); + check_no_uvars = (uu___243_2392.check_no_uvars); + unmeta = (uu___243_2392.unmeta); + unascribe = (uu___243_2392.unascribe); + in_full_norm_request = (uu___243_2392.in_full_norm_request); + weakly_reduce_scrutinee = (uu___243_2392.weakly_reduce_scrutinee); + nbe_step = (uu___243_2392.nbe_step); + for_extraction = (uu___243_2392.for_extraction) } | FStar_TypeChecker_Env.HNF -> - let uu___245_2394 = fs in + let uu___244_2394 = fs in { - beta = (uu___245_2394.beta); - iota = (uu___245_2394.iota); - zeta = (uu___245_2394.zeta); - weak = (uu___245_2394.weak); + beta = (uu___244_2394.beta); + iota = (uu___244_2394.iota); + zeta = (uu___244_2394.zeta); + weak = (uu___244_2394.weak); hnf = true; - primops = (uu___245_2394.primops); - do_not_unfold_pure_lets = (uu___245_2394.do_not_unfold_pure_lets); - unfold_until = (uu___245_2394.unfold_until); - unfold_only = (uu___245_2394.unfold_only); - unfold_fully = (uu___245_2394.unfold_fully); - unfold_attr = (uu___245_2394.unfold_attr); - unfold_tac = (uu___245_2394.unfold_tac); + primops = (uu___244_2394.primops); + do_not_unfold_pure_lets = (uu___244_2394.do_not_unfold_pure_lets); + unfold_until = (uu___244_2394.unfold_until); + unfold_only = (uu___244_2394.unfold_only); + unfold_fully = (uu___244_2394.unfold_fully); + unfold_attr = (uu___244_2394.unfold_attr); + unfold_tac = (uu___244_2394.unfold_tac); pure_subterms_within_computations = - (uu___245_2394.pure_subterms_within_computations); - simplify = (uu___245_2394.simplify); - erase_universes = (uu___245_2394.erase_universes); - allow_unbound_universes = (uu___245_2394.allow_unbound_universes); - reify_ = (uu___245_2394.reify_); - compress_uvars = (uu___245_2394.compress_uvars); - no_full_norm = (uu___245_2394.no_full_norm); - check_no_uvars = (uu___245_2394.check_no_uvars); - unmeta = (uu___245_2394.unmeta); - unascribe = (uu___245_2394.unascribe); - in_full_norm_request = (uu___245_2394.in_full_norm_request); - weakly_reduce_scrutinee = (uu___245_2394.weakly_reduce_scrutinee); - nbe_step = (uu___245_2394.nbe_step); - for_extraction = (uu___245_2394.for_extraction) + (uu___244_2394.pure_subterms_within_computations); + simplify = (uu___244_2394.simplify); + erase_universes = (uu___244_2394.erase_universes); + allow_unbound_universes = (uu___244_2394.allow_unbound_universes); + reify_ = (uu___244_2394.reify_); + compress_uvars = (uu___244_2394.compress_uvars); + no_full_norm = (uu___244_2394.no_full_norm); + check_no_uvars = (uu___244_2394.check_no_uvars); + unmeta = (uu___244_2394.unmeta); + unascribe = (uu___244_2394.unascribe); + in_full_norm_request = (uu___244_2394.in_full_norm_request); + weakly_reduce_scrutinee = (uu___244_2394.weakly_reduce_scrutinee); + nbe_step = (uu___244_2394.nbe_step); + for_extraction = (uu___244_2394.for_extraction) } | FStar_TypeChecker_Env.Primops -> - let uu___246_2396 = fs in + let uu___245_2396 = fs in { - beta = (uu___246_2396.beta); - iota = (uu___246_2396.iota); - zeta = (uu___246_2396.zeta); - weak = (uu___246_2396.weak); - hnf = (uu___246_2396.hnf); + beta = (uu___245_2396.beta); + iota = (uu___245_2396.iota); + zeta = (uu___245_2396.zeta); + weak = (uu___245_2396.weak); + hnf = (uu___245_2396.hnf); primops = true; - do_not_unfold_pure_lets = (uu___246_2396.do_not_unfold_pure_lets); - unfold_until = (uu___246_2396.unfold_until); - unfold_only = (uu___246_2396.unfold_only); - unfold_fully = (uu___246_2396.unfold_fully); - unfold_attr = (uu___246_2396.unfold_attr); - unfold_tac = (uu___246_2396.unfold_tac); + do_not_unfold_pure_lets = (uu___245_2396.do_not_unfold_pure_lets); + unfold_until = (uu___245_2396.unfold_until); + unfold_only = (uu___245_2396.unfold_only); + unfold_fully = (uu___245_2396.unfold_fully); + unfold_attr = (uu___245_2396.unfold_attr); + unfold_tac = (uu___245_2396.unfold_tac); pure_subterms_within_computations = - (uu___246_2396.pure_subterms_within_computations); - simplify = (uu___246_2396.simplify); - erase_universes = (uu___246_2396.erase_universes); - allow_unbound_universes = (uu___246_2396.allow_unbound_universes); - reify_ = (uu___246_2396.reify_); - compress_uvars = (uu___246_2396.compress_uvars); - no_full_norm = (uu___246_2396.no_full_norm); - check_no_uvars = (uu___246_2396.check_no_uvars); - unmeta = (uu___246_2396.unmeta); - unascribe = (uu___246_2396.unascribe); - in_full_norm_request = (uu___246_2396.in_full_norm_request); - weakly_reduce_scrutinee = (uu___246_2396.weakly_reduce_scrutinee); - nbe_step = (uu___246_2396.nbe_step); - for_extraction = (uu___246_2396.for_extraction) + (uu___245_2396.pure_subterms_within_computations); + simplify = (uu___245_2396.simplify); + erase_universes = (uu___245_2396.erase_universes); + allow_unbound_universes = (uu___245_2396.allow_unbound_universes); + reify_ = (uu___245_2396.reify_); + compress_uvars = (uu___245_2396.compress_uvars); + no_full_norm = (uu___245_2396.no_full_norm); + check_no_uvars = (uu___245_2396.check_no_uvars); + unmeta = (uu___245_2396.unmeta); + unascribe = (uu___245_2396.unascribe); + in_full_norm_request = (uu___245_2396.in_full_norm_request); + weakly_reduce_scrutinee = (uu___245_2396.weakly_reduce_scrutinee); + nbe_step = (uu___245_2396.nbe_step); + for_extraction = (uu___245_2396.for_extraction) } | FStar_TypeChecker_Env.Eager_unfolding -> fs | FStar_TypeChecker_Env.Inlining -> fs | FStar_TypeChecker_Env.DoNotUnfoldPureLets -> - let uu___247_2398 = fs in + let uu___246_2398 = fs in { - beta = (uu___247_2398.beta); - iota = (uu___247_2398.iota); - zeta = (uu___247_2398.zeta); - weak = (uu___247_2398.weak); - hnf = (uu___247_2398.hnf); - primops = (uu___247_2398.primops); + beta = (uu___246_2398.beta); + iota = (uu___246_2398.iota); + zeta = (uu___246_2398.zeta); + weak = (uu___246_2398.weak); + hnf = (uu___246_2398.hnf); + primops = (uu___246_2398.primops); do_not_unfold_pure_lets = true; - unfold_until = (uu___247_2398.unfold_until); - unfold_only = (uu___247_2398.unfold_only); - unfold_fully = (uu___247_2398.unfold_fully); - unfold_attr = (uu___247_2398.unfold_attr); - unfold_tac = (uu___247_2398.unfold_tac); + unfold_until = (uu___246_2398.unfold_until); + unfold_only = (uu___246_2398.unfold_only); + unfold_fully = (uu___246_2398.unfold_fully); + unfold_attr = (uu___246_2398.unfold_attr); + unfold_tac = (uu___246_2398.unfold_tac); pure_subterms_within_computations = - (uu___247_2398.pure_subterms_within_computations); - simplify = (uu___247_2398.simplify); - erase_universes = (uu___247_2398.erase_universes); - allow_unbound_universes = (uu___247_2398.allow_unbound_universes); - reify_ = (uu___247_2398.reify_); - compress_uvars = (uu___247_2398.compress_uvars); - no_full_norm = (uu___247_2398.no_full_norm); - check_no_uvars = (uu___247_2398.check_no_uvars); - unmeta = (uu___247_2398.unmeta); - unascribe = (uu___247_2398.unascribe); - in_full_norm_request = (uu___247_2398.in_full_norm_request); - weakly_reduce_scrutinee = (uu___247_2398.weakly_reduce_scrutinee); - nbe_step = (uu___247_2398.nbe_step); - for_extraction = (uu___247_2398.for_extraction) + (uu___246_2398.pure_subterms_within_computations); + simplify = (uu___246_2398.simplify); + erase_universes = (uu___246_2398.erase_universes); + allow_unbound_universes = (uu___246_2398.allow_unbound_universes); + reify_ = (uu___246_2398.reify_); + compress_uvars = (uu___246_2398.compress_uvars); + no_full_norm = (uu___246_2398.no_full_norm); + check_no_uvars = (uu___246_2398.check_no_uvars); + unmeta = (uu___246_2398.unmeta); + unascribe = (uu___246_2398.unascribe); + in_full_norm_request = (uu___246_2398.in_full_norm_request); + weakly_reduce_scrutinee = (uu___246_2398.weakly_reduce_scrutinee); + nbe_step = (uu___246_2398.nbe_step); + for_extraction = (uu___246_2398.for_extraction) } | FStar_TypeChecker_Env.UnfoldUntil d -> - let uu___248_2401 = fs in + let uu___247_2401 = fs in { - beta = (uu___248_2401.beta); - iota = (uu___248_2401.iota); - zeta = (uu___248_2401.zeta); - weak = (uu___248_2401.weak); - hnf = (uu___248_2401.hnf); - primops = (uu___248_2401.primops); - do_not_unfold_pure_lets = (uu___248_2401.do_not_unfold_pure_lets); + beta = (uu___247_2401.beta); + iota = (uu___247_2401.iota); + zeta = (uu___247_2401.zeta); + weak = (uu___247_2401.weak); + hnf = (uu___247_2401.hnf); + primops = (uu___247_2401.primops); + do_not_unfold_pure_lets = (uu___247_2401.do_not_unfold_pure_lets); unfold_until = (FStar_Pervasives_Native.Some d); - unfold_only = (uu___248_2401.unfold_only); - unfold_fully = (uu___248_2401.unfold_fully); - unfold_attr = (uu___248_2401.unfold_attr); - unfold_tac = (uu___248_2401.unfold_tac); + unfold_only = (uu___247_2401.unfold_only); + unfold_fully = (uu___247_2401.unfold_fully); + unfold_attr = (uu___247_2401.unfold_attr); + unfold_tac = (uu___247_2401.unfold_tac); pure_subterms_within_computations = - (uu___248_2401.pure_subterms_within_computations); - simplify = (uu___248_2401.simplify); - erase_universes = (uu___248_2401.erase_universes); - allow_unbound_universes = (uu___248_2401.allow_unbound_universes); - reify_ = (uu___248_2401.reify_); - compress_uvars = (uu___248_2401.compress_uvars); - no_full_norm = (uu___248_2401.no_full_norm); - check_no_uvars = (uu___248_2401.check_no_uvars); - unmeta = (uu___248_2401.unmeta); - unascribe = (uu___248_2401.unascribe); - in_full_norm_request = (uu___248_2401.in_full_norm_request); - weakly_reduce_scrutinee = (uu___248_2401.weakly_reduce_scrutinee); - nbe_step = (uu___248_2401.nbe_step); - for_extraction = (uu___248_2401.for_extraction) + (uu___247_2401.pure_subterms_within_computations); + simplify = (uu___247_2401.simplify); + erase_universes = (uu___247_2401.erase_universes); + allow_unbound_universes = (uu___247_2401.allow_unbound_universes); + reify_ = (uu___247_2401.reify_); + compress_uvars = (uu___247_2401.compress_uvars); + no_full_norm = (uu___247_2401.no_full_norm); + check_no_uvars = (uu___247_2401.check_no_uvars); + unmeta = (uu___247_2401.unmeta); + unascribe = (uu___247_2401.unascribe); + in_full_norm_request = (uu___247_2401.in_full_norm_request); + weakly_reduce_scrutinee = (uu___247_2401.weakly_reduce_scrutinee); + nbe_step = (uu___247_2401.nbe_step); + for_extraction = (uu___247_2401.for_extraction) } | FStar_TypeChecker_Env.UnfoldOnly lids -> - let uu___249_2405 = fs in + let uu___248_2405 = fs in { - beta = (uu___249_2405.beta); - iota = (uu___249_2405.iota); - zeta = (uu___249_2405.zeta); - weak = (uu___249_2405.weak); - hnf = (uu___249_2405.hnf); - primops = (uu___249_2405.primops); - do_not_unfold_pure_lets = (uu___249_2405.do_not_unfold_pure_lets); - unfold_until = (uu___249_2405.unfold_until); + beta = (uu___248_2405.beta); + iota = (uu___248_2405.iota); + zeta = (uu___248_2405.zeta); + weak = (uu___248_2405.weak); + hnf = (uu___248_2405.hnf); + primops = (uu___248_2405.primops); + do_not_unfold_pure_lets = (uu___248_2405.do_not_unfold_pure_lets); + unfold_until = (uu___248_2405.unfold_until); unfold_only = (FStar_Pervasives_Native.Some lids); - unfold_fully = (uu___249_2405.unfold_fully); - unfold_attr = (uu___249_2405.unfold_attr); - unfold_tac = (uu___249_2405.unfold_tac); + unfold_fully = (uu___248_2405.unfold_fully); + unfold_attr = (uu___248_2405.unfold_attr); + unfold_tac = (uu___248_2405.unfold_tac); pure_subterms_within_computations = - (uu___249_2405.pure_subterms_within_computations); - simplify = (uu___249_2405.simplify); - erase_universes = (uu___249_2405.erase_universes); - allow_unbound_universes = (uu___249_2405.allow_unbound_universes); - reify_ = (uu___249_2405.reify_); - compress_uvars = (uu___249_2405.compress_uvars); - no_full_norm = (uu___249_2405.no_full_norm); - check_no_uvars = (uu___249_2405.check_no_uvars); - unmeta = (uu___249_2405.unmeta); - unascribe = (uu___249_2405.unascribe); - in_full_norm_request = (uu___249_2405.in_full_norm_request); - weakly_reduce_scrutinee = (uu___249_2405.weakly_reduce_scrutinee); - nbe_step = (uu___249_2405.nbe_step); - for_extraction = (uu___249_2405.for_extraction) + (uu___248_2405.pure_subterms_within_computations); + simplify = (uu___248_2405.simplify); + erase_universes = (uu___248_2405.erase_universes); + allow_unbound_universes = (uu___248_2405.allow_unbound_universes); + reify_ = (uu___248_2405.reify_); + compress_uvars = (uu___248_2405.compress_uvars); + no_full_norm = (uu___248_2405.no_full_norm); + check_no_uvars = (uu___248_2405.check_no_uvars); + unmeta = (uu___248_2405.unmeta); + unascribe = (uu___248_2405.unascribe); + in_full_norm_request = (uu___248_2405.in_full_norm_request); + weakly_reduce_scrutinee = (uu___248_2405.weakly_reduce_scrutinee); + nbe_step = (uu___248_2405.nbe_step); + for_extraction = (uu___248_2405.for_extraction) } | FStar_TypeChecker_Env.UnfoldFully lids -> - let uu___250_2411 = fs in + let uu___249_2411 = fs in { - beta = (uu___250_2411.beta); - iota = (uu___250_2411.iota); - zeta = (uu___250_2411.zeta); - weak = (uu___250_2411.weak); - hnf = (uu___250_2411.hnf); - primops = (uu___250_2411.primops); - do_not_unfold_pure_lets = (uu___250_2411.do_not_unfold_pure_lets); - unfold_until = (uu___250_2411.unfold_until); - unfold_only = (uu___250_2411.unfold_only); + beta = (uu___249_2411.beta); + iota = (uu___249_2411.iota); + zeta = (uu___249_2411.zeta); + weak = (uu___249_2411.weak); + hnf = (uu___249_2411.hnf); + primops = (uu___249_2411.primops); + do_not_unfold_pure_lets = (uu___249_2411.do_not_unfold_pure_lets); + unfold_until = (uu___249_2411.unfold_until); + unfold_only = (uu___249_2411.unfold_only); unfold_fully = (FStar_Pervasives_Native.Some lids); - unfold_attr = (uu___250_2411.unfold_attr); - unfold_tac = (uu___250_2411.unfold_tac); + unfold_attr = (uu___249_2411.unfold_attr); + unfold_tac = (uu___249_2411.unfold_tac); pure_subterms_within_computations = - (uu___250_2411.pure_subterms_within_computations); - simplify = (uu___250_2411.simplify); - erase_universes = (uu___250_2411.erase_universes); - allow_unbound_universes = (uu___250_2411.allow_unbound_universes); - reify_ = (uu___250_2411.reify_); - compress_uvars = (uu___250_2411.compress_uvars); - no_full_norm = (uu___250_2411.no_full_norm); - check_no_uvars = (uu___250_2411.check_no_uvars); - unmeta = (uu___250_2411.unmeta); - unascribe = (uu___250_2411.unascribe); - in_full_norm_request = (uu___250_2411.in_full_norm_request); - weakly_reduce_scrutinee = (uu___250_2411.weakly_reduce_scrutinee); - nbe_step = (uu___250_2411.nbe_step); - for_extraction = (uu___250_2411.for_extraction) + (uu___249_2411.pure_subterms_within_computations); + simplify = (uu___249_2411.simplify); + erase_universes = (uu___249_2411.erase_universes); + allow_unbound_universes = (uu___249_2411.allow_unbound_universes); + reify_ = (uu___249_2411.reify_); + compress_uvars = (uu___249_2411.compress_uvars); + no_full_norm = (uu___249_2411.no_full_norm); + check_no_uvars = (uu___249_2411.check_no_uvars); + unmeta = (uu___249_2411.unmeta); + unascribe = (uu___249_2411.unascribe); + in_full_norm_request = (uu___249_2411.in_full_norm_request); + weakly_reduce_scrutinee = (uu___249_2411.weakly_reduce_scrutinee); + nbe_step = (uu___249_2411.nbe_step); + for_extraction = (uu___249_2411.for_extraction) } | FStar_TypeChecker_Env.UnfoldAttr lids -> - let uu___251_2417 = fs in + let uu___250_2417 = fs in { - beta = (uu___251_2417.beta); - iota = (uu___251_2417.iota); - zeta = (uu___251_2417.zeta); - weak = (uu___251_2417.weak); - hnf = (uu___251_2417.hnf); - primops = (uu___251_2417.primops); - do_not_unfold_pure_lets = (uu___251_2417.do_not_unfold_pure_lets); - unfold_until = (uu___251_2417.unfold_until); - unfold_only = (uu___251_2417.unfold_only); - unfold_fully = (uu___251_2417.unfold_fully); + beta = (uu___250_2417.beta); + iota = (uu___250_2417.iota); + zeta = (uu___250_2417.zeta); + weak = (uu___250_2417.weak); + hnf = (uu___250_2417.hnf); + primops = (uu___250_2417.primops); + do_not_unfold_pure_lets = (uu___250_2417.do_not_unfold_pure_lets); + unfold_until = (uu___250_2417.unfold_until); + unfold_only = (uu___250_2417.unfold_only); + unfold_fully = (uu___250_2417.unfold_fully); unfold_attr = (FStar_Pervasives_Native.Some lids); - unfold_tac = (uu___251_2417.unfold_tac); + unfold_tac = (uu___250_2417.unfold_tac); pure_subterms_within_computations = - (uu___251_2417.pure_subterms_within_computations); - simplify = (uu___251_2417.simplify); - erase_universes = (uu___251_2417.erase_universes); - allow_unbound_universes = (uu___251_2417.allow_unbound_universes); - reify_ = (uu___251_2417.reify_); - compress_uvars = (uu___251_2417.compress_uvars); - no_full_norm = (uu___251_2417.no_full_norm); - check_no_uvars = (uu___251_2417.check_no_uvars); - unmeta = (uu___251_2417.unmeta); - unascribe = (uu___251_2417.unascribe); - in_full_norm_request = (uu___251_2417.in_full_norm_request); - weakly_reduce_scrutinee = (uu___251_2417.weakly_reduce_scrutinee); - nbe_step = (uu___251_2417.nbe_step); - for_extraction = (uu___251_2417.for_extraction) + (uu___250_2417.pure_subterms_within_computations); + simplify = (uu___250_2417.simplify); + erase_universes = (uu___250_2417.erase_universes); + allow_unbound_universes = (uu___250_2417.allow_unbound_universes); + reify_ = (uu___250_2417.reify_); + compress_uvars = (uu___250_2417.compress_uvars); + no_full_norm = (uu___250_2417.no_full_norm); + check_no_uvars = (uu___250_2417.check_no_uvars); + unmeta = (uu___250_2417.unmeta); + unascribe = (uu___250_2417.unascribe); + in_full_norm_request = (uu___250_2417.in_full_norm_request); + weakly_reduce_scrutinee = (uu___250_2417.weakly_reduce_scrutinee); + nbe_step = (uu___250_2417.nbe_step); + for_extraction = (uu___250_2417.for_extraction) } | FStar_TypeChecker_Env.UnfoldTac -> - let uu___252_2420 = fs in + let uu___251_2420 = fs in { - beta = (uu___252_2420.beta); - iota = (uu___252_2420.iota); - zeta = (uu___252_2420.zeta); - weak = (uu___252_2420.weak); - hnf = (uu___252_2420.hnf); - primops = (uu___252_2420.primops); - do_not_unfold_pure_lets = (uu___252_2420.do_not_unfold_pure_lets); - unfold_until = (uu___252_2420.unfold_until); - unfold_only = (uu___252_2420.unfold_only); - unfold_fully = (uu___252_2420.unfold_fully); - unfold_attr = (uu___252_2420.unfold_attr); + beta = (uu___251_2420.beta); + iota = (uu___251_2420.iota); + zeta = (uu___251_2420.zeta); + weak = (uu___251_2420.weak); + hnf = (uu___251_2420.hnf); + primops = (uu___251_2420.primops); + do_not_unfold_pure_lets = (uu___251_2420.do_not_unfold_pure_lets); + unfold_until = (uu___251_2420.unfold_until); + unfold_only = (uu___251_2420.unfold_only); + unfold_fully = (uu___251_2420.unfold_fully); + unfold_attr = (uu___251_2420.unfold_attr); unfold_tac = true; pure_subterms_within_computations = - (uu___252_2420.pure_subterms_within_computations); - simplify = (uu___252_2420.simplify); - erase_universes = (uu___252_2420.erase_universes); - allow_unbound_universes = (uu___252_2420.allow_unbound_universes); - reify_ = (uu___252_2420.reify_); - compress_uvars = (uu___252_2420.compress_uvars); - no_full_norm = (uu___252_2420.no_full_norm); - check_no_uvars = (uu___252_2420.check_no_uvars); - unmeta = (uu___252_2420.unmeta); - unascribe = (uu___252_2420.unascribe); - in_full_norm_request = (uu___252_2420.in_full_norm_request); - weakly_reduce_scrutinee = (uu___252_2420.weakly_reduce_scrutinee); - nbe_step = (uu___252_2420.nbe_step); - for_extraction = (uu___252_2420.for_extraction) + (uu___251_2420.pure_subterms_within_computations); + simplify = (uu___251_2420.simplify); + erase_universes = (uu___251_2420.erase_universes); + allow_unbound_universes = (uu___251_2420.allow_unbound_universes); + reify_ = (uu___251_2420.reify_); + compress_uvars = (uu___251_2420.compress_uvars); + no_full_norm = (uu___251_2420.no_full_norm); + check_no_uvars = (uu___251_2420.check_no_uvars); + unmeta = (uu___251_2420.unmeta); + unascribe = (uu___251_2420.unascribe); + in_full_norm_request = (uu___251_2420.in_full_norm_request); + weakly_reduce_scrutinee = (uu___251_2420.weakly_reduce_scrutinee); + nbe_step = (uu___251_2420.nbe_step); + for_extraction = (uu___251_2420.for_extraction) } | FStar_TypeChecker_Env.PureSubtermsWithinComputations -> - let uu___253_2422 = fs in + let uu___252_2422 = fs in { - beta = (uu___253_2422.beta); - iota = (uu___253_2422.iota); - zeta = (uu___253_2422.zeta); - weak = (uu___253_2422.weak); - hnf = (uu___253_2422.hnf); - primops = (uu___253_2422.primops); - do_not_unfold_pure_lets = (uu___253_2422.do_not_unfold_pure_lets); - unfold_until = (uu___253_2422.unfold_until); - unfold_only = (uu___253_2422.unfold_only); - unfold_fully = (uu___253_2422.unfold_fully); - unfold_attr = (uu___253_2422.unfold_attr); - unfold_tac = (uu___253_2422.unfold_tac); + beta = (uu___252_2422.beta); + iota = (uu___252_2422.iota); + zeta = (uu___252_2422.zeta); + weak = (uu___252_2422.weak); + hnf = (uu___252_2422.hnf); + primops = (uu___252_2422.primops); + do_not_unfold_pure_lets = (uu___252_2422.do_not_unfold_pure_lets); + unfold_until = (uu___252_2422.unfold_until); + unfold_only = (uu___252_2422.unfold_only); + unfold_fully = (uu___252_2422.unfold_fully); + unfold_attr = (uu___252_2422.unfold_attr); + unfold_tac = (uu___252_2422.unfold_tac); pure_subterms_within_computations = true; - simplify = (uu___253_2422.simplify); - erase_universes = (uu___253_2422.erase_universes); - allow_unbound_universes = (uu___253_2422.allow_unbound_universes); - reify_ = (uu___253_2422.reify_); - compress_uvars = (uu___253_2422.compress_uvars); - no_full_norm = (uu___253_2422.no_full_norm); - check_no_uvars = (uu___253_2422.check_no_uvars); - unmeta = (uu___253_2422.unmeta); - unascribe = (uu___253_2422.unascribe); - in_full_norm_request = (uu___253_2422.in_full_norm_request); - weakly_reduce_scrutinee = (uu___253_2422.weakly_reduce_scrutinee); - nbe_step = (uu___253_2422.nbe_step); - for_extraction = (uu___253_2422.for_extraction) + simplify = (uu___252_2422.simplify); + erase_universes = (uu___252_2422.erase_universes); + allow_unbound_universes = (uu___252_2422.allow_unbound_universes); + reify_ = (uu___252_2422.reify_); + compress_uvars = (uu___252_2422.compress_uvars); + no_full_norm = (uu___252_2422.no_full_norm); + check_no_uvars = (uu___252_2422.check_no_uvars); + unmeta = (uu___252_2422.unmeta); + unascribe = (uu___252_2422.unascribe); + in_full_norm_request = (uu___252_2422.in_full_norm_request); + weakly_reduce_scrutinee = (uu___252_2422.weakly_reduce_scrutinee); + nbe_step = (uu___252_2422.nbe_step); + for_extraction = (uu___252_2422.for_extraction) } | FStar_TypeChecker_Env.Simplify -> - let uu___254_2424 = fs in + let uu___253_2424 = fs in { - beta = (uu___254_2424.beta); - iota = (uu___254_2424.iota); - zeta = (uu___254_2424.zeta); - weak = (uu___254_2424.weak); - hnf = (uu___254_2424.hnf); - primops = (uu___254_2424.primops); - do_not_unfold_pure_lets = (uu___254_2424.do_not_unfold_pure_lets); - unfold_until = (uu___254_2424.unfold_until); - unfold_only = (uu___254_2424.unfold_only); - unfold_fully = (uu___254_2424.unfold_fully); - unfold_attr = (uu___254_2424.unfold_attr); - unfold_tac = (uu___254_2424.unfold_tac); + beta = (uu___253_2424.beta); + iota = (uu___253_2424.iota); + zeta = (uu___253_2424.zeta); + weak = (uu___253_2424.weak); + hnf = (uu___253_2424.hnf); + primops = (uu___253_2424.primops); + do_not_unfold_pure_lets = (uu___253_2424.do_not_unfold_pure_lets); + unfold_until = (uu___253_2424.unfold_until); + unfold_only = (uu___253_2424.unfold_only); + unfold_fully = (uu___253_2424.unfold_fully); + unfold_attr = (uu___253_2424.unfold_attr); + unfold_tac = (uu___253_2424.unfold_tac); pure_subterms_within_computations = - (uu___254_2424.pure_subterms_within_computations); + (uu___253_2424.pure_subterms_within_computations); simplify = true; - erase_universes = (uu___254_2424.erase_universes); - allow_unbound_universes = (uu___254_2424.allow_unbound_universes); - reify_ = (uu___254_2424.reify_); - compress_uvars = (uu___254_2424.compress_uvars); - no_full_norm = (uu___254_2424.no_full_norm); - check_no_uvars = (uu___254_2424.check_no_uvars); - unmeta = (uu___254_2424.unmeta); - unascribe = (uu___254_2424.unascribe); - in_full_norm_request = (uu___254_2424.in_full_norm_request); - weakly_reduce_scrutinee = (uu___254_2424.weakly_reduce_scrutinee); - nbe_step = (uu___254_2424.nbe_step); - for_extraction = (uu___254_2424.for_extraction) + erase_universes = (uu___253_2424.erase_universes); + allow_unbound_universes = (uu___253_2424.allow_unbound_universes); + reify_ = (uu___253_2424.reify_); + compress_uvars = (uu___253_2424.compress_uvars); + no_full_norm = (uu___253_2424.no_full_norm); + check_no_uvars = (uu___253_2424.check_no_uvars); + unmeta = (uu___253_2424.unmeta); + unascribe = (uu___253_2424.unascribe); + in_full_norm_request = (uu___253_2424.in_full_norm_request); + weakly_reduce_scrutinee = (uu___253_2424.weakly_reduce_scrutinee); + nbe_step = (uu___253_2424.nbe_step); + for_extraction = (uu___253_2424.for_extraction) } | FStar_TypeChecker_Env.EraseUniverses -> - let uu___255_2426 = fs in + let uu___254_2426 = fs in { - beta = (uu___255_2426.beta); - iota = (uu___255_2426.iota); - zeta = (uu___255_2426.zeta); - weak = (uu___255_2426.weak); - hnf = (uu___255_2426.hnf); - primops = (uu___255_2426.primops); - do_not_unfold_pure_lets = (uu___255_2426.do_not_unfold_pure_lets); - unfold_until = (uu___255_2426.unfold_until); - unfold_only = (uu___255_2426.unfold_only); - unfold_fully = (uu___255_2426.unfold_fully); - unfold_attr = (uu___255_2426.unfold_attr); - unfold_tac = (uu___255_2426.unfold_tac); + beta = (uu___254_2426.beta); + iota = (uu___254_2426.iota); + zeta = (uu___254_2426.zeta); + weak = (uu___254_2426.weak); + hnf = (uu___254_2426.hnf); + primops = (uu___254_2426.primops); + do_not_unfold_pure_lets = (uu___254_2426.do_not_unfold_pure_lets); + unfold_until = (uu___254_2426.unfold_until); + unfold_only = (uu___254_2426.unfold_only); + unfold_fully = (uu___254_2426.unfold_fully); + unfold_attr = (uu___254_2426.unfold_attr); + unfold_tac = (uu___254_2426.unfold_tac); pure_subterms_within_computations = - (uu___255_2426.pure_subterms_within_computations); - simplify = (uu___255_2426.simplify); + (uu___254_2426.pure_subterms_within_computations); + simplify = (uu___254_2426.simplify); erase_universes = true; - allow_unbound_universes = (uu___255_2426.allow_unbound_universes); - reify_ = (uu___255_2426.reify_); - compress_uvars = (uu___255_2426.compress_uvars); - no_full_norm = (uu___255_2426.no_full_norm); - check_no_uvars = (uu___255_2426.check_no_uvars); - unmeta = (uu___255_2426.unmeta); - unascribe = (uu___255_2426.unascribe); - in_full_norm_request = (uu___255_2426.in_full_norm_request); - weakly_reduce_scrutinee = (uu___255_2426.weakly_reduce_scrutinee); - nbe_step = (uu___255_2426.nbe_step); - for_extraction = (uu___255_2426.for_extraction) + allow_unbound_universes = (uu___254_2426.allow_unbound_universes); + reify_ = (uu___254_2426.reify_); + compress_uvars = (uu___254_2426.compress_uvars); + no_full_norm = (uu___254_2426.no_full_norm); + check_no_uvars = (uu___254_2426.check_no_uvars); + unmeta = (uu___254_2426.unmeta); + unascribe = (uu___254_2426.unascribe); + in_full_norm_request = (uu___254_2426.in_full_norm_request); + weakly_reduce_scrutinee = (uu___254_2426.weakly_reduce_scrutinee); + nbe_step = (uu___254_2426.nbe_step); + for_extraction = (uu___254_2426.for_extraction) } | FStar_TypeChecker_Env.AllowUnboundUniverses -> - let uu___256_2428 = fs in + let uu___255_2428 = fs in { - beta = (uu___256_2428.beta); - iota = (uu___256_2428.iota); - zeta = (uu___256_2428.zeta); - weak = (uu___256_2428.weak); - hnf = (uu___256_2428.hnf); - primops = (uu___256_2428.primops); - do_not_unfold_pure_lets = (uu___256_2428.do_not_unfold_pure_lets); - unfold_until = (uu___256_2428.unfold_until); - unfold_only = (uu___256_2428.unfold_only); - unfold_fully = (uu___256_2428.unfold_fully); - unfold_attr = (uu___256_2428.unfold_attr); - unfold_tac = (uu___256_2428.unfold_tac); + beta = (uu___255_2428.beta); + iota = (uu___255_2428.iota); + zeta = (uu___255_2428.zeta); + weak = (uu___255_2428.weak); + hnf = (uu___255_2428.hnf); + primops = (uu___255_2428.primops); + do_not_unfold_pure_lets = (uu___255_2428.do_not_unfold_pure_lets); + unfold_until = (uu___255_2428.unfold_until); + unfold_only = (uu___255_2428.unfold_only); + unfold_fully = (uu___255_2428.unfold_fully); + unfold_attr = (uu___255_2428.unfold_attr); + unfold_tac = (uu___255_2428.unfold_tac); pure_subterms_within_computations = - (uu___256_2428.pure_subterms_within_computations); - simplify = (uu___256_2428.simplify); - erase_universes = (uu___256_2428.erase_universes); + (uu___255_2428.pure_subterms_within_computations); + simplify = (uu___255_2428.simplify); + erase_universes = (uu___255_2428.erase_universes); allow_unbound_universes = true; - reify_ = (uu___256_2428.reify_); - compress_uvars = (uu___256_2428.compress_uvars); - no_full_norm = (uu___256_2428.no_full_norm); - check_no_uvars = (uu___256_2428.check_no_uvars); - unmeta = (uu___256_2428.unmeta); - unascribe = (uu___256_2428.unascribe); - in_full_norm_request = (uu___256_2428.in_full_norm_request); - weakly_reduce_scrutinee = (uu___256_2428.weakly_reduce_scrutinee); - nbe_step = (uu___256_2428.nbe_step); - for_extraction = (uu___256_2428.for_extraction) + reify_ = (uu___255_2428.reify_); + compress_uvars = (uu___255_2428.compress_uvars); + no_full_norm = (uu___255_2428.no_full_norm); + check_no_uvars = (uu___255_2428.check_no_uvars); + unmeta = (uu___255_2428.unmeta); + unascribe = (uu___255_2428.unascribe); + in_full_norm_request = (uu___255_2428.in_full_norm_request); + weakly_reduce_scrutinee = (uu___255_2428.weakly_reduce_scrutinee); + nbe_step = (uu___255_2428.nbe_step); + for_extraction = (uu___255_2428.for_extraction) } | FStar_TypeChecker_Env.Reify -> - let uu___257_2430 = fs in + let uu___256_2430 = fs in { - beta = (uu___257_2430.beta); - iota = (uu___257_2430.iota); - zeta = (uu___257_2430.zeta); - weak = (uu___257_2430.weak); - hnf = (uu___257_2430.hnf); - primops = (uu___257_2430.primops); - do_not_unfold_pure_lets = (uu___257_2430.do_not_unfold_pure_lets); - unfold_until = (uu___257_2430.unfold_until); - unfold_only = (uu___257_2430.unfold_only); - unfold_fully = (uu___257_2430.unfold_fully); - unfold_attr = (uu___257_2430.unfold_attr); - unfold_tac = (uu___257_2430.unfold_tac); + beta = (uu___256_2430.beta); + iota = (uu___256_2430.iota); + zeta = (uu___256_2430.zeta); + weak = (uu___256_2430.weak); + hnf = (uu___256_2430.hnf); + primops = (uu___256_2430.primops); + do_not_unfold_pure_lets = (uu___256_2430.do_not_unfold_pure_lets); + unfold_until = (uu___256_2430.unfold_until); + unfold_only = (uu___256_2430.unfold_only); + unfold_fully = (uu___256_2430.unfold_fully); + unfold_attr = (uu___256_2430.unfold_attr); + unfold_tac = (uu___256_2430.unfold_tac); pure_subterms_within_computations = - (uu___257_2430.pure_subterms_within_computations); - simplify = (uu___257_2430.simplify); - erase_universes = (uu___257_2430.erase_universes); - allow_unbound_universes = (uu___257_2430.allow_unbound_universes); + (uu___256_2430.pure_subterms_within_computations); + simplify = (uu___256_2430.simplify); + erase_universes = (uu___256_2430.erase_universes); + allow_unbound_universes = (uu___256_2430.allow_unbound_universes); reify_ = true; - compress_uvars = (uu___257_2430.compress_uvars); - no_full_norm = (uu___257_2430.no_full_norm); - check_no_uvars = (uu___257_2430.check_no_uvars); - unmeta = (uu___257_2430.unmeta); - unascribe = (uu___257_2430.unascribe); - in_full_norm_request = (uu___257_2430.in_full_norm_request); - weakly_reduce_scrutinee = (uu___257_2430.weakly_reduce_scrutinee); - nbe_step = (uu___257_2430.nbe_step); - for_extraction = (uu___257_2430.for_extraction) + compress_uvars = (uu___256_2430.compress_uvars); + no_full_norm = (uu___256_2430.no_full_norm); + check_no_uvars = (uu___256_2430.check_no_uvars); + unmeta = (uu___256_2430.unmeta); + unascribe = (uu___256_2430.unascribe); + in_full_norm_request = (uu___256_2430.in_full_norm_request); + weakly_reduce_scrutinee = (uu___256_2430.weakly_reduce_scrutinee); + nbe_step = (uu___256_2430.nbe_step); + for_extraction = (uu___256_2430.for_extraction) } | FStar_TypeChecker_Env.CompressUvars -> - let uu___258_2432 = fs in + let uu___257_2432 = fs in { - beta = (uu___258_2432.beta); - iota = (uu___258_2432.iota); - zeta = (uu___258_2432.zeta); - weak = (uu___258_2432.weak); - hnf = (uu___258_2432.hnf); - primops = (uu___258_2432.primops); - do_not_unfold_pure_lets = (uu___258_2432.do_not_unfold_pure_lets); - unfold_until = (uu___258_2432.unfold_until); - unfold_only = (uu___258_2432.unfold_only); - unfold_fully = (uu___258_2432.unfold_fully); - unfold_attr = (uu___258_2432.unfold_attr); - unfold_tac = (uu___258_2432.unfold_tac); + beta = (uu___257_2432.beta); + iota = (uu___257_2432.iota); + zeta = (uu___257_2432.zeta); + weak = (uu___257_2432.weak); + hnf = (uu___257_2432.hnf); + primops = (uu___257_2432.primops); + do_not_unfold_pure_lets = (uu___257_2432.do_not_unfold_pure_lets); + unfold_until = (uu___257_2432.unfold_until); + unfold_only = (uu___257_2432.unfold_only); + unfold_fully = (uu___257_2432.unfold_fully); + unfold_attr = (uu___257_2432.unfold_attr); + unfold_tac = (uu___257_2432.unfold_tac); pure_subterms_within_computations = - (uu___258_2432.pure_subterms_within_computations); - simplify = (uu___258_2432.simplify); - erase_universes = (uu___258_2432.erase_universes); - allow_unbound_universes = (uu___258_2432.allow_unbound_universes); - reify_ = (uu___258_2432.reify_); + (uu___257_2432.pure_subterms_within_computations); + simplify = (uu___257_2432.simplify); + erase_universes = (uu___257_2432.erase_universes); + allow_unbound_universes = (uu___257_2432.allow_unbound_universes); + reify_ = (uu___257_2432.reify_); compress_uvars = true; - no_full_norm = (uu___258_2432.no_full_norm); - check_no_uvars = (uu___258_2432.check_no_uvars); - unmeta = (uu___258_2432.unmeta); - unascribe = (uu___258_2432.unascribe); - in_full_norm_request = (uu___258_2432.in_full_norm_request); - weakly_reduce_scrutinee = (uu___258_2432.weakly_reduce_scrutinee); - nbe_step = (uu___258_2432.nbe_step); - for_extraction = (uu___258_2432.for_extraction) + no_full_norm = (uu___257_2432.no_full_norm); + check_no_uvars = (uu___257_2432.check_no_uvars); + unmeta = (uu___257_2432.unmeta); + unascribe = (uu___257_2432.unascribe); + in_full_norm_request = (uu___257_2432.in_full_norm_request); + weakly_reduce_scrutinee = (uu___257_2432.weakly_reduce_scrutinee); + nbe_step = (uu___257_2432.nbe_step); + for_extraction = (uu___257_2432.for_extraction) } | FStar_TypeChecker_Env.NoFullNorm -> - let uu___259_2434 = fs in + let uu___258_2434 = fs in { - beta = (uu___259_2434.beta); - iota = (uu___259_2434.iota); - zeta = (uu___259_2434.zeta); - weak = (uu___259_2434.weak); - hnf = (uu___259_2434.hnf); - primops = (uu___259_2434.primops); - do_not_unfold_pure_lets = (uu___259_2434.do_not_unfold_pure_lets); - unfold_until = (uu___259_2434.unfold_until); - unfold_only = (uu___259_2434.unfold_only); - unfold_fully = (uu___259_2434.unfold_fully); - unfold_attr = (uu___259_2434.unfold_attr); - unfold_tac = (uu___259_2434.unfold_tac); + beta = (uu___258_2434.beta); + iota = (uu___258_2434.iota); + zeta = (uu___258_2434.zeta); + weak = (uu___258_2434.weak); + hnf = (uu___258_2434.hnf); + primops = (uu___258_2434.primops); + do_not_unfold_pure_lets = (uu___258_2434.do_not_unfold_pure_lets); + unfold_until = (uu___258_2434.unfold_until); + unfold_only = (uu___258_2434.unfold_only); + unfold_fully = (uu___258_2434.unfold_fully); + unfold_attr = (uu___258_2434.unfold_attr); + unfold_tac = (uu___258_2434.unfold_tac); pure_subterms_within_computations = - (uu___259_2434.pure_subterms_within_computations); - simplify = (uu___259_2434.simplify); - erase_universes = (uu___259_2434.erase_universes); - allow_unbound_universes = (uu___259_2434.allow_unbound_universes); - reify_ = (uu___259_2434.reify_); - compress_uvars = (uu___259_2434.compress_uvars); + (uu___258_2434.pure_subterms_within_computations); + simplify = (uu___258_2434.simplify); + erase_universes = (uu___258_2434.erase_universes); + allow_unbound_universes = (uu___258_2434.allow_unbound_universes); + reify_ = (uu___258_2434.reify_); + compress_uvars = (uu___258_2434.compress_uvars); no_full_norm = true; - check_no_uvars = (uu___259_2434.check_no_uvars); - unmeta = (uu___259_2434.unmeta); - unascribe = (uu___259_2434.unascribe); - in_full_norm_request = (uu___259_2434.in_full_norm_request); - weakly_reduce_scrutinee = (uu___259_2434.weakly_reduce_scrutinee); - nbe_step = (uu___259_2434.nbe_step); - for_extraction = (uu___259_2434.for_extraction) + check_no_uvars = (uu___258_2434.check_no_uvars); + unmeta = (uu___258_2434.unmeta); + unascribe = (uu___258_2434.unascribe); + in_full_norm_request = (uu___258_2434.in_full_norm_request); + weakly_reduce_scrutinee = (uu___258_2434.weakly_reduce_scrutinee); + nbe_step = (uu___258_2434.nbe_step); + for_extraction = (uu___258_2434.for_extraction) } | FStar_TypeChecker_Env.CheckNoUvars -> - let uu___260_2436 = fs in + let uu___259_2436 = fs in { - beta = (uu___260_2436.beta); - iota = (uu___260_2436.iota); - zeta = (uu___260_2436.zeta); - weak = (uu___260_2436.weak); - hnf = (uu___260_2436.hnf); - primops = (uu___260_2436.primops); - do_not_unfold_pure_lets = (uu___260_2436.do_not_unfold_pure_lets); - unfold_until = (uu___260_2436.unfold_until); - unfold_only = (uu___260_2436.unfold_only); - unfold_fully = (uu___260_2436.unfold_fully); - unfold_attr = (uu___260_2436.unfold_attr); - unfold_tac = (uu___260_2436.unfold_tac); + beta = (uu___259_2436.beta); + iota = (uu___259_2436.iota); + zeta = (uu___259_2436.zeta); + weak = (uu___259_2436.weak); + hnf = (uu___259_2436.hnf); + primops = (uu___259_2436.primops); + do_not_unfold_pure_lets = (uu___259_2436.do_not_unfold_pure_lets); + unfold_until = (uu___259_2436.unfold_until); + unfold_only = (uu___259_2436.unfold_only); + unfold_fully = (uu___259_2436.unfold_fully); + unfold_attr = (uu___259_2436.unfold_attr); + unfold_tac = (uu___259_2436.unfold_tac); pure_subterms_within_computations = - (uu___260_2436.pure_subterms_within_computations); - simplify = (uu___260_2436.simplify); - erase_universes = (uu___260_2436.erase_universes); - allow_unbound_universes = (uu___260_2436.allow_unbound_universes); - reify_ = (uu___260_2436.reify_); - compress_uvars = (uu___260_2436.compress_uvars); - no_full_norm = (uu___260_2436.no_full_norm); + (uu___259_2436.pure_subterms_within_computations); + simplify = (uu___259_2436.simplify); + erase_universes = (uu___259_2436.erase_universes); + allow_unbound_universes = (uu___259_2436.allow_unbound_universes); + reify_ = (uu___259_2436.reify_); + compress_uvars = (uu___259_2436.compress_uvars); + no_full_norm = (uu___259_2436.no_full_norm); check_no_uvars = true; - unmeta = (uu___260_2436.unmeta); - unascribe = (uu___260_2436.unascribe); - in_full_norm_request = (uu___260_2436.in_full_norm_request); - weakly_reduce_scrutinee = (uu___260_2436.weakly_reduce_scrutinee); - nbe_step = (uu___260_2436.nbe_step); - for_extraction = (uu___260_2436.for_extraction) + unmeta = (uu___259_2436.unmeta); + unascribe = (uu___259_2436.unascribe); + in_full_norm_request = (uu___259_2436.in_full_norm_request); + weakly_reduce_scrutinee = (uu___259_2436.weakly_reduce_scrutinee); + nbe_step = (uu___259_2436.nbe_step); + for_extraction = (uu___259_2436.for_extraction) } | FStar_TypeChecker_Env.Unmeta -> - let uu___261_2438 = fs in + let uu___260_2438 = fs in { - beta = (uu___261_2438.beta); - iota = (uu___261_2438.iota); - zeta = (uu___261_2438.zeta); - weak = (uu___261_2438.weak); - hnf = (uu___261_2438.hnf); - primops = (uu___261_2438.primops); - do_not_unfold_pure_lets = (uu___261_2438.do_not_unfold_pure_lets); - unfold_until = (uu___261_2438.unfold_until); - unfold_only = (uu___261_2438.unfold_only); - unfold_fully = (uu___261_2438.unfold_fully); - unfold_attr = (uu___261_2438.unfold_attr); - unfold_tac = (uu___261_2438.unfold_tac); + beta = (uu___260_2438.beta); + iota = (uu___260_2438.iota); + zeta = (uu___260_2438.zeta); + weak = (uu___260_2438.weak); + hnf = (uu___260_2438.hnf); + primops = (uu___260_2438.primops); + do_not_unfold_pure_lets = (uu___260_2438.do_not_unfold_pure_lets); + unfold_until = (uu___260_2438.unfold_until); + unfold_only = (uu___260_2438.unfold_only); + unfold_fully = (uu___260_2438.unfold_fully); + unfold_attr = (uu___260_2438.unfold_attr); + unfold_tac = (uu___260_2438.unfold_tac); pure_subterms_within_computations = - (uu___261_2438.pure_subterms_within_computations); - simplify = (uu___261_2438.simplify); - erase_universes = (uu___261_2438.erase_universes); - allow_unbound_universes = (uu___261_2438.allow_unbound_universes); - reify_ = (uu___261_2438.reify_); - compress_uvars = (uu___261_2438.compress_uvars); - no_full_norm = (uu___261_2438.no_full_norm); - check_no_uvars = (uu___261_2438.check_no_uvars); + (uu___260_2438.pure_subterms_within_computations); + simplify = (uu___260_2438.simplify); + erase_universes = (uu___260_2438.erase_universes); + allow_unbound_universes = (uu___260_2438.allow_unbound_universes); + reify_ = (uu___260_2438.reify_); + compress_uvars = (uu___260_2438.compress_uvars); + no_full_norm = (uu___260_2438.no_full_norm); + check_no_uvars = (uu___260_2438.check_no_uvars); unmeta = true; - unascribe = (uu___261_2438.unascribe); - in_full_norm_request = (uu___261_2438.in_full_norm_request); - weakly_reduce_scrutinee = (uu___261_2438.weakly_reduce_scrutinee); - nbe_step = (uu___261_2438.nbe_step); - for_extraction = (uu___261_2438.for_extraction) + unascribe = (uu___260_2438.unascribe); + in_full_norm_request = (uu___260_2438.in_full_norm_request); + weakly_reduce_scrutinee = (uu___260_2438.weakly_reduce_scrutinee); + nbe_step = (uu___260_2438.nbe_step); + for_extraction = (uu___260_2438.for_extraction) } | FStar_TypeChecker_Env.Unascribe -> - let uu___262_2440 = fs in + let uu___261_2440 = fs in { - beta = (uu___262_2440.beta); - iota = (uu___262_2440.iota); - zeta = (uu___262_2440.zeta); - weak = (uu___262_2440.weak); - hnf = (uu___262_2440.hnf); - primops = (uu___262_2440.primops); - do_not_unfold_pure_lets = (uu___262_2440.do_not_unfold_pure_lets); - unfold_until = (uu___262_2440.unfold_until); - unfold_only = (uu___262_2440.unfold_only); - unfold_fully = (uu___262_2440.unfold_fully); - unfold_attr = (uu___262_2440.unfold_attr); - unfold_tac = (uu___262_2440.unfold_tac); + beta = (uu___261_2440.beta); + iota = (uu___261_2440.iota); + zeta = (uu___261_2440.zeta); + weak = (uu___261_2440.weak); + hnf = (uu___261_2440.hnf); + primops = (uu___261_2440.primops); + do_not_unfold_pure_lets = (uu___261_2440.do_not_unfold_pure_lets); + unfold_until = (uu___261_2440.unfold_until); + unfold_only = (uu___261_2440.unfold_only); + unfold_fully = (uu___261_2440.unfold_fully); + unfold_attr = (uu___261_2440.unfold_attr); + unfold_tac = (uu___261_2440.unfold_tac); pure_subterms_within_computations = - (uu___262_2440.pure_subterms_within_computations); - simplify = (uu___262_2440.simplify); - erase_universes = (uu___262_2440.erase_universes); - allow_unbound_universes = (uu___262_2440.allow_unbound_universes); - reify_ = (uu___262_2440.reify_); - compress_uvars = (uu___262_2440.compress_uvars); - no_full_norm = (uu___262_2440.no_full_norm); - check_no_uvars = (uu___262_2440.check_no_uvars); - unmeta = (uu___262_2440.unmeta); + (uu___261_2440.pure_subterms_within_computations); + simplify = (uu___261_2440.simplify); + erase_universes = (uu___261_2440.erase_universes); + allow_unbound_universes = (uu___261_2440.allow_unbound_universes); + reify_ = (uu___261_2440.reify_); + compress_uvars = (uu___261_2440.compress_uvars); + no_full_norm = (uu___261_2440.no_full_norm); + check_no_uvars = (uu___261_2440.check_no_uvars); + unmeta = (uu___261_2440.unmeta); unascribe = true; - in_full_norm_request = (uu___262_2440.in_full_norm_request); - weakly_reduce_scrutinee = (uu___262_2440.weakly_reduce_scrutinee); - nbe_step = (uu___262_2440.nbe_step); - for_extraction = (uu___262_2440.for_extraction) + in_full_norm_request = (uu___261_2440.in_full_norm_request); + weakly_reduce_scrutinee = (uu___261_2440.weakly_reduce_scrutinee); + nbe_step = (uu___261_2440.nbe_step); + for_extraction = (uu___261_2440.for_extraction) } | FStar_TypeChecker_Env.NBE -> - let uu___263_2442 = fs in + let uu___262_2442 = fs in { - beta = (uu___263_2442.beta); - iota = (uu___263_2442.iota); - zeta = (uu___263_2442.zeta); - weak = (uu___263_2442.weak); - hnf = (uu___263_2442.hnf); - primops = (uu___263_2442.primops); - do_not_unfold_pure_lets = (uu___263_2442.do_not_unfold_pure_lets); - unfold_until = (uu___263_2442.unfold_until); - unfold_only = (uu___263_2442.unfold_only); - unfold_fully = (uu___263_2442.unfold_fully); - unfold_attr = (uu___263_2442.unfold_attr); - unfold_tac = (uu___263_2442.unfold_tac); + beta = (uu___262_2442.beta); + iota = (uu___262_2442.iota); + zeta = (uu___262_2442.zeta); + weak = (uu___262_2442.weak); + hnf = (uu___262_2442.hnf); + primops = (uu___262_2442.primops); + do_not_unfold_pure_lets = (uu___262_2442.do_not_unfold_pure_lets); + unfold_until = (uu___262_2442.unfold_until); + unfold_only = (uu___262_2442.unfold_only); + unfold_fully = (uu___262_2442.unfold_fully); + unfold_attr = (uu___262_2442.unfold_attr); + unfold_tac = (uu___262_2442.unfold_tac); pure_subterms_within_computations = - (uu___263_2442.pure_subterms_within_computations); - simplify = (uu___263_2442.simplify); - erase_universes = (uu___263_2442.erase_universes); - allow_unbound_universes = (uu___263_2442.allow_unbound_universes); - reify_ = (uu___263_2442.reify_); - compress_uvars = (uu___263_2442.compress_uvars); - no_full_norm = (uu___263_2442.no_full_norm); - check_no_uvars = (uu___263_2442.check_no_uvars); - unmeta = (uu___263_2442.unmeta); - unascribe = (uu___263_2442.unascribe); - in_full_norm_request = (uu___263_2442.in_full_norm_request); - weakly_reduce_scrutinee = (uu___263_2442.weakly_reduce_scrutinee); + (uu___262_2442.pure_subterms_within_computations); + simplify = (uu___262_2442.simplify); + erase_universes = (uu___262_2442.erase_universes); + allow_unbound_universes = (uu___262_2442.allow_unbound_universes); + reify_ = (uu___262_2442.reify_); + compress_uvars = (uu___262_2442.compress_uvars); + no_full_norm = (uu___262_2442.no_full_norm); + check_no_uvars = (uu___262_2442.check_no_uvars); + unmeta = (uu___262_2442.unmeta); + unascribe = (uu___262_2442.unascribe); + in_full_norm_request = (uu___262_2442.in_full_norm_request); + weakly_reduce_scrutinee = (uu___262_2442.weakly_reduce_scrutinee); nbe_step = true; - for_extraction = (uu___263_2442.for_extraction) + for_extraction = (uu___262_2442.for_extraction) } | FStar_TypeChecker_Env.ForExtraction -> - let uu___264_2444 = fs in + let uu___263_2444 = fs in { - beta = (uu___264_2444.beta); - iota = (uu___264_2444.iota); - zeta = (uu___264_2444.zeta); - weak = (uu___264_2444.weak); - hnf = (uu___264_2444.hnf); - primops = (uu___264_2444.primops); - do_not_unfold_pure_lets = (uu___264_2444.do_not_unfold_pure_lets); - unfold_until = (uu___264_2444.unfold_until); - unfold_only = (uu___264_2444.unfold_only); - unfold_fully = (uu___264_2444.unfold_fully); - unfold_attr = (uu___264_2444.unfold_attr); - unfold_tac = (uu___264_2444.unfold_tac); + beta = (uu___263_2444.beta); + iota = (uu___263_2444.iota); + zeta = (uu___263_2444.zeta); + weak = (uu___263_2444.weak); + hnf = (uu___263_2444.hnf); + primops = (uu___263_2444.primops); + do_not_unfold_pure_lets = (uu___263_2444.do_not_unfold_pure_lets); + unfold_until = (uu___263_2444.unfold_until); + unfold_only = (uu___263_2444.unfold_only); + unfold_fully = (uu___263_2444.unfold_fully); + unfold_attr = (uu___263_2444.unfold_attr); + unfold_tac = (uu___263_2444.unfold_tac); pure_subterms_within_computations = - (uu___264_2444.pure_subterms_within_computations); - simplify = (uu___264_2444.simplify); - erase_universes = (uu___264_2444.erase_universes); - allow_unbound_universes = (uu___264_2444.allow_unbound_universes); - reify_ = (uu___264_2444.reify_); - compress_uvars = (uu___264_2444.compress_uvars); - no_full_norm = (uu___264_2444.no_full_norm); - check_no_uvars = (uu___264_2444.check_no_uvars); - unmeta = (uu___264_2444.unmeta); - unascribe = (uu___264_2444.unascribe); - in_full_norm_request = (uu___264_2444.in_full_norm_request); - weakly_reduce_scrutinee = (uu___264_2444.weakly_reduce_scrutinee); - nbe_step = (uu___264_2444.nbe_step); + (uu___263_2444.pure_subterms_within_computations); + simplify = (uu___263_2444.simplify); + erase_universes = (uu___263_2444.erase_universes); + allow_unbound_universes = (uu___263_2444.allow_unbound_universes); + reify_ = (uu___263_2444.reify_); + compress_uvars = (uu___263_2444.compress_uvars); + no_full_norm = (uu___263_2444.no_full_norm); + check_no_uvars = (uu___263_2444.check_no_uvars); + unmeta = (uu___263_2444.unmeta); + unascribe = (uu___263_2444.unascribe); + in_full_norm_request = (uu___263_2444.in_full_norm_request); + weakly_reduce_scrutinee = (uu___263_2444.weakly_reduce_scrutinee); + nbe_step = (uu___263_2444.nbe_step); for_extraction = true } @@ -1948,7 +1948,7 @@ let (built_in_primitive_steps : primitive_step FStar_Util.psmap) = let n11 = FStar_BigInt.to_int_fs n1 in let n21 = FStar_BigInt.to_int_fs n2 in (try - (fun uu___266_5506 -> + (fun uu___265_5506 -> match () with | () -> let r = FStar_String.substring s1 n11 n21 in @@ -1957,7 +1957,7 @@ let (built_in_primitive_steps : primitive_step FStar_Util.psmap) = psc.psc_range r in FStar_Pervasives_Native.Some uu____5511) () - with | uu___265_5514 -> FStar_Pervasives_Native.None) + with | uu___264_5514 -> FStar_Pervasives_Native.None) | uu____5517 -> FStar_Pervasives_Native.None) | uu____5531 -> FStar_Pervasives_Native.None in let string_of_int1 rng i = @@ -2919,23 +2919,23 @@ let (equality_ops : primitive_step FStar_Util.psmap) = (match uu____12795 with | FStar_Syntax_Util.Equal -> FStar_Pervasives_Native.Some - (let uu___267_12799 = FStar_Syntax_Util.t_true in + (let uu___266_12799 = FStar_Syntax_Util.t_true in { FStar_Syntax_Syntax.n = - (uu___267_12799.FStar_Syntax_Syntax.n); + (uu___266_12799.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = r; FStar_Syntax_Syntax.vars = - (uu___267_12799.FStar_Syntax_Syntax.vars) + (uu___266_12799.FStar_Syntax_Syntax.vars) }) | FStar_Syntax_Util.NotEqual -> FStar_Pervasives_Native.Some - (let uu___268_12801 = FStar_Syntax_Util.t_false in + (let uu___267_12801 = FStar_Syntax_Util.t_false in { FStar_Syntax_Syntax.n = - (uu___268_12801.FStar_Syntax_Syntax.n); + (uu___267_12801.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = r; FStar_Syntax_Syntax.vars = - (uu___268_12801.FStar_Syntax_Syntax.vars) + (uu___267_12801.FStar_Syntax_Syntax.vars) }) | uu____12802 -> FStar_Pervasives_Native.None) | uu____12803 -> failwith "Unexpected number of arguments" in @@ -2951,23 +2951,23 @@ let (equality_ops : primitive_step FStar_Util.psmap) = (match uu____12914 with | FStar_Syntax_Util.Equal -> FStar_Pervasives_Native.Some - (let uu___269_12920 = FStar_Syntax_Util.t_true in + (let uu___268_12920 = FStar_Syntax_Util.t_true in { FStar_Syntax_Syntax.n = - (uu___269_12920.FStar_Syntax_Syntax.n); + (uu___268_12920.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = r; FStar_Syntax_Syntax.vars = - (uu___269_12920.FStar_Syntax_Syntax.vars) + (uu___268_12920.FStar_Syntax_Syntax.vars) }) | FStar_Syntax_Util.NotEqual -> FStar_Pervasives_Native.Some - (let uu___270_12922 = FStar_Syntax_Util.t_false in + (let uu___269_12922 = FStar_Syntax_Util.t_false in { FStar_Syntax_Syntax.n = - (uu___270_12922.FStar_Syntax_Syntax.n); + (uu___269_12922.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = r; FStar_Syntax_Syntax.vars = - (uu___270_12922.FStar_Syntax_Syntax.vars) + (uu___269_12922.FStar_Syntax_Syntax.vars) }) | uu____12923 -> FStar_Pervasives_Native.None) | uu____12924 -> failwith "Unexpected number of arguments" in @@ -3073,8 +3073,8 @@ let (config' : let d = FStar_All.pipe_right s (FStar_List.collect - (fun uu___237_13424 -> - match uu___237_13424 with + (fun uu___236_13424 -> + match uu___236_13424 with | FStar_TypeChecker_Env.UnfoldUntil k -> [FStar_TypeChecker_Env.Unfold k] | FStar_TypeChecker_Env.Eager_unfolding -> diff --git a/src/ocaml-output/FStar_TypeChecker_Common.ml b/src/ocaml-output/FStar_TypeChecker_Common.ml index af8f1ab2039..bb327c9d21d 100644 --- a/src/ocaml-output/FStar_TypeChecker_Common.ml +++ b/src/ocaml-output/FStar_TypeChecker_Common.ml @@ -135,8 +135,8 @@ let (uu___is_CProb : prob -> Prims.bool) = let (__proj__CProb__item___0 : prob -> FStar_Syntax_Syntax.comp problem) = fun projectee -> match projectee with | CProb _0 -> _0 let (as_tprob : prob -> FStar_Syntax_Syntax.typ problem) = - fun uu___218_576 -> - match uu___218_576 with + fun uu___217_576 -> + match uu___217_576 with | TProb p -> p | uu____582 -> failwith "Expected a TProb" @@ -209,8 +209,8 @@ let rec (decr_delta_depth : FStar_Syntax_Syntax.delta_depth -> FStar_Syntax_Syntax.delta_depth FStar_Pervasives_Native.option) = - fun uu___219_777 -> - match uu___219_777 with + fun uu___218_777 -> + match uu___218_777 with | FStar_Syntax_Syntax.Delta_constant_at_level _0_1 when _0_1 = (Prims.parse_int "0") -> FStar_Pervasives_Native.None | FStar_Syntax_Syntax.Delta_equational_at_level _0_2 when @@ -280,8 +280,8 @@ let (find_nearest_preceding_col_info : = fun col -> fun col_infos -> - let rec aux out uu___220_1182 = - match uu___220_1182 with + let rec aux out uu___219_1182 = + match uu___219_1182 with | [] -> out | (c,i)::rest -> if c > col @@ -336,10 +336,10 @@ let (id_info__insert : let uu____1351 = FStar_Range.use_range range in FStar_Range.set_def_range range uu____1351 in let info1 = - let uu___223_1353 = info in + let uu___222_1353 = info in let uu____1354 = ty_map info.identifier_ty in { - identifier = (uu___223_1353.identifier); + identifier = (uu___222_1353.identifier); identifier_ty = uu____1354; identifier_range = use_range1 } in @@ -373,10 +373,10 @@ let (id_info_insert : let info = { identifier = id1; identifier_ty = ty; identifier_range = range } in - let uu___224_1544 = table in + let uu___223_1544 = table in { - id_info_enabled = (uu___224_1544.id_info_enabled); - id_info_db = (uu___224_1544.id_info_db); + id_info_enabled = (uu___223_1544.id_info_enabled); + id_info_db = (uu___223_1544.id_info_db); id_info_buffer = (info :: (table.id_info_buffer)) } @@ -409,12 +409,12 @@ let (id_info_insert_fv : let (id_info_toggle : id_info_table -> Prims.bool -> id_info_table) = fun table -> fun enabled -> - let uu___225_1598 = table in + let uu___224_1598 = table in let uu____1599 = enabled && (FStar_Options.ide ()) in { id_info_enabled = uu____1599; - id_info_db = (uu___225_1598.id_info_db); - id_info_buffer = (uu___225_1598.id_info_buffer) + id_info_db = (uu___224_1598.id_info_db); + id_info_buffer = (uu___224_1598.id_info_buffer) } let (id_info_promote : @@ -423,13 +423,13 @@ let (id_info_promote : = fun table -> fun ty_map -> - let uu___226_1617 = table in + let uu___225_1617 = table in let uu____1618 = FStar_List.fold_left (id_info__insert ty_map) table.id_info_db table.id_info_buffer in { - id_info_enabled = (uu___226_1617.id_info_enabled); + id_info_enabled = (uu___225_1617.id_info_enabled); id_info_db = uu____1618; id_info_buffer = [] } @@ -475,8 +475,8 @@ let (check_uvar_ctx_invariant : let uu____1724 = FStar_All.pipe_right gamma (FStar_List.map - (fun uu___221_1737 -> - match uu___221_1737 with + (fun uu___220_1737 -> + match uu___220_1737 with | FStar_Syntax_Syntax.Binding_var x -> let uu____1740 = FStar_Syntax_Print.bv_to_string x in @@ -508,8 +508,8 @@ let (check_uvar_ctx_invariant : (let uu____1796 = let uu____1821 = FStar_Util.prefix_until - (fun uu___222_1836 -> - match uu___222_1836 with + (fun uu___221_1836 -> + match uu___221_1836 with | FStar_Syntax_Syntax.Binding_var uu____1838 -> true | uu____1840 -> false) g in diff --git a/src/ocaml-output/FStar_TypeChecker_DMFF.ml b/src/ocaml-output/FStar_TypeChecker_DMFF.ml index cd01ca812e4..f84e54d5745 100644 --- a/src/ocaml-output/FStar_TypeChecker_DMFF.ml +++ b/src/ocaml-output/FStar_TypeChecker_DMFF.ml @@ -42,7 +42,7 @@ let (gen_wps_for_free : FStar_TypeChecker_Env.EraseUniverses] env wp_a in let a1 = - let uu___362_127 = a in + let uu___361_127 = a in let uu____128 = FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.EraseUniverses] env @@ -50,9 +50,9 @@ let (gen_wps_for_free : in { FStar_Syntax_Syntax.ppname = - (uu___362_127.FStar_Syntax_Syntax.ppname); + (uu___361_127.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___362_127.FStar_Syntax_Syntax.index); + (uu___361_127.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____128 } in let d s = FStar_Util.print1 "\027[01;36m%s\027[00m\n" s in @@ -1059,7 +1059,7 @@ let (gen_wps_for_free : mk_forall1 a11 uu____3125) | FStar_Syntax_Syntax.Tm_arrow (binder::binders1,comp) -> let t2 = - let uu___363_3164 = t1 in + let uu___362_3164 = t1 in let uu____3165 = let uu____3166 = let uu____3181 = @@ -1071,9 +1071,9 @@ let (gen_wps_for_free : { FStar_Syntax_Syntax.n = uu____3165; FStar_Syntax_Syntax.pos = - (uu___363_3164.FStar_Syntax_Syntax.pos); + (uu___362_3164.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___363_3164.FStar_Syntax_Syntax.vars) + (uu___362_3164.FStar_Syntax_Syntax.vars) } in mk_rel1 t2 x y | FStar_Syntax_Syntax.Tm_arrow uu____3207 -> @@ -1441,7 +1441,7 @@ let (gen_wps_for_free : let uu____4213 = FStar_ST.op_Bang sigelts in FStar_List.rev uu____4213 in let uu____4261 = - let uu___364_4262 = ed in + let uu___363_4262 = ed in let uu____4263 = let uu____4264 = c wp_if_then_else2 in ([], uu____4264) in @@ -1464,19 +1464,19 @@ let (gen_wps_for_free : in { FStar_Syntax_Syntax.cattributes = - (uu___364_4262.FStar_Syntax_Syntax.cattributes); + (uu___363_4262.FStar_Syntax_Syntax.cattributes); FStar_Syntax_Syntax.mname = - (uu___364_4262.FStar_Syntax_Syntax.mname); + (uu___363_4262.FStar_Syntax_Syntax.mname); FStar_Syntax_Syntax.univs = - (uu___364_4262.FStar_Syntax_Syntax.univs); + (uu___363_4262.FStar_Syntax_Syntax.univs); FStar_Syntax_Syntax.binders = - (uu___364_4262.FStar_Syntax_Syntax.binders); + (uu___363_4262.FStar_Syntax_Syntax.binders); FStar_Syntax_Syntax.signature = - (uu___364_4262.FStar_Syntax_Syntax.signature); + (uu___363_4262.FStar_Syntax_Syntax.signature); FStar_Syntax_Syntax.ret_wp = - (uu___364_4262.FStar_Syntax_Syntax.ret_wp); + (uu___363_4262.FStar_Syntax_Syntax.ret_wp); FStar_Syntax_Syntax.bind_wp = - (uu___364_4262.FStar_Syntax_Syntax.bind_wp); + (uu___363_4262.FStar_Syntax_Syntax.bind_wp); FStar_Syntax_Syntax.if_then_else = uu____4263; FStar_Syntax_Syntax.ite_wp = uu____4271; FStar_Syntax_Syntax.stronger = uu____4279; @@ -1486,15 +1486,15 @@ let (gen_wps_for_free : FStar_Syntax_Syntax.null_wp = uu____4311; FStar_Syntax_Syntax.trivial = uu____4319; FStar_Syntax_Syntax.repr = - (uu___364_4262.FStar_Syntax_Syntax.repr); + (uu___363_4262.FStar_Syntax_Syntax.repr); FStar_Syntax_Syntax.return_repr = - (uu___364_4262.FStar_Syntax_Syntax.return_repr); + (uu___363_4262.FStar_Syntax_Syntax.return_repr); FStar_Syntax_Syntax.bind_repr = - (uu___364_4262.FStar_Syntax_Syntax.bind_repr); + (uu___363_4262.FStar_Syntax_Syntax.bind_repr); FStar_Syntax_Syntax.actions = - (uu___364_4262.FStar_Syntax_Syntax.actions); + (uu___363_4262.FStar_Syntax_Syntax.actions); FStar_Syntax_Syntax.eff_attrs = - (uu___364_4262.FStar_Syntax_Syntax.eff_attrs) + (uu___363_4262.FStar_Syntax_Syntax.eff_attrs) } in (uu____4212, uu____4261))))) @@ -1503,11 +1503,11 @@ let (get_env : env -> FStar_TypeChecker_Env.env) = fun env -> env.tcenv let (set_env : env -> FStar_TypeChecker_Env.env -> env) = fun dmff_env -> fun env' -> - let uu___365_4344 = dmff_env in + let uu___364_4344 = dmff_env in { tcenv = env'; - subst = (uu___365_4344.subst); - tc_const = (uu___365_4344.tc_const) + subst = (uu___364_4344.subst); + tc_const = (uu___364_4344.tc_const) } type nm = @@ -1530,8 +1530,8 @@ let (nm_of_comp : FStar_Syntax_Syntax.comp' FStar_Syntax_Syntax.syntax -> nm) | FStar_Syntax_Syntax.Comp c1 when FStar_All.pipe_right c1.FStar_Syntax_Syntax.flags (FStar_Util.for_some - (fun uu___351_4420 -> - match uu___351_4420 with + (fun uu___350_4420 -> + match uu___350_4420 with | FStar_Syntax_Syntax.CPS -> true | uu____4423 -> false)) -> M (c1.FStar_Syntax_Syntax.result_typ) @@ -1546,8 +1546,8 @@ let (nm_of_comp : FStar_Syntax_Syntax.comp' FStar_Syntax_Syntax.syntax -> nm) FStar_Errors.raise_error uu____4426 c.FStar_Syntax_Syntax.pos let (string_of_nm : nm -> Prims.string) = - fun uu___352_4444 -> - match uu___352_4444 with + fun uu___351_4444 -> + match uu___351_4444 with | N t -> let uu____4447 = FStar_Syntax_Print.term_to_string t in FStar_Util.format1 "N[%s]" uu____4447 @@ -1635,14 +1635,14 @@ and (star_type' : match uu____4744 with | (bv,aqual) -> let uu____4763 = - let uu___366_4764 = bv in + let uu___365_4764 = bv in let uu____4765 = star_type' env bv.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___366_4764.FStar_Syntax_Syntax.ppname); + (uu___365_4764.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___366_4764.FStar_Syntax_Syntax.index); + (uu___365_4764.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____4765 } in (uu____4763, aqual)) binders @@ -1740,7 +1740,7 @@ and (star_type' : then false else (try - (fun uu___368_5119 -> + (fun uu___367_5119 -> match () with | () -> let non_dependent_or_raise s ty1 = @@ -1891,13 +1891,13 @@ and (star_type' : (match uu____5473 with | (binders1,repr1) -> let env1 = - let uu___369_5481 = env in + let uu___368_5481 = env in let uu____5482 = FStar_TypeChecker_Env.push_binders env.tcenv binders1 in { tcenv = uu____5482; - subst = (uu___369_5481.subst); - tc_const = (uu___369_5481.tc_const) + subst = (uu___368_5481.subst); + tc_const = (uu___368_5481.tc_const) } in let repr2 = star_type' env1 repr1 in FStar_Syntax_Util.abs binders1 repr2 something) @@ -1913,12 +1913,12 @@ and (star_type' : let t5 = FStar_Syntax_Subst.subst subst2 t4 in mk1 (FStar_Syntax_Syntax.Tm_refine - ((let uu___370_5509 = x1 in + ((let uu___369_5509 = x1 in { FStar_Syntax_Syntax.ppname = - (uu___370_5509.FStar_Syntax_Syntax.ppname); + (uu___369_5509.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___370_5509.FStar_Syntax_Syntax.index); + (uu___369_5509.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = sort }), t5)) | FStar_Syntax_Syntax.Tm_meta (t2,m) -> @@ -2054,14 +2054,14 @@ let (is_monadic : FStar_Syntax_Syntax.residual_comp FStar_Pervasives_Native.option -> Prims.bool) = - fun uu___354_6087 -> - match uu___354_6087 with + fun uu___353_6087 -> + match uu___353_6087 with | FStar_Pervasives_Native.None -> failwith "un-annotated lambda?!" | FStar_Pervasives_Native.Some rc -> FStar_All.pipe_right rc.FStar_Syntax_Syntax.residual_flags (FStar_Util.for_some - (fun uu___353_6098 -> - match uu___353_6098 with + (fun uu___352_6098 -> + match uu___352_6098 with | FStar_Syntax_Syntax.CPS -> true | uu____6101 -> false)) @@ -2152,8 +2152,8 @@ let (mk_return : (FStar_Syntax_Util.residual_tot FStar_Syntax_Util.ktype0)) let (is_unknown : FStar_Syntax_Syntax.term' -> Prims.bool) = - fun uu___355_6467 -> - match uu___355_6467 with + fun uu___354_6467 -> + match uu___354_6467 with | FStar_Syntax_Syntax.Tm_unknown -> true | uu____6470 -> false @@ -2223,8 +2223,8 @@ let rec (check : FStar_Errors.raise_err uu____6796) in let ensure_m env1 e2 = - let strip_m uu___356_6860 = - match uu___356_6860 with + let strip_m uu___355_6860 = + match uu___355_6860 with | (M t,s_e,u_e) -> (t, s_e, u_e) | uu____6876 -> failwith "impossible" in match context_nm with @@ -2345,7 +2345,7 @@ and (infer : | FStar_Pervasives_Native.None -> rc_opt1 | FStar_Pervasives_Native.Some rc -> let uu____7386 = - let uu___371_7387 = rc in + let uu___370_7387 = rc in let uu____7388 = let uu____7393 = let uu____7396 = @@ -2355,10 +2355,10 @@ and (infer : FStar_Pervasives_Native.Some uu____7393 in { FStar_Syntax_Syntax.residual_effect = - (uu___371_7387.FStar_Syntax_Syntax.residual_effect); + (uu___370_7387.FStar_Syntax_Syntax.residual_effect); FStar_Syntax_Syntax.residual_typ = uu____7388; FStar_Syntax_Syntax.residual_flags = - (uu___371_7387.FStar_Syntax_Syntax.residual_flags) + (uu___370_7387.FStar_Syntax_Syntax.residual_flags) } in FStar_Pervasives_Native.Some uu____7386 in @@ -2367,13 +2367,13 @@ and (infer : let body1 = FStar_Syntax_Subst.subst subst1 body in let rc_opt1 = subst_rc_opt subst1 rc_opt in let env1 = - let uu___372_7408 = env in + let uu___371_7408 = env in let uu____7409 = FStar_TypeChecker_Env.push_binders env.tcenv binders1 in { tcenv = uu____7409; - subst = (uu___372_7408.subst); - tc_const = (uu___372_7408.tc_const) + subst = (uu___371_7408.subst); + tc_const = (uu___371_7408.tc_const) } in let s_binders = FStar_List.map @@ -2382,12 +2382,12 @@ and (infer : | (bv,qual) -> let sort = star_type' env1 bv.FStar_Syntax_Syntax.sort in - ((let uu___373_7458 = bv in + ((let uu___372_7458 = bv in { FStar_Syntax_Syntax.ppname = - (uu___373_7458.FStar_Syntax_Syntax.ppname); + (uu___372_7458.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___373_7458.FStar_Syntax_Syntax.index); + (uu___372_7458.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = sort }), qual)) binders1 in @@ -2410,20 +2410,20 @@ and (infer : uu____7559 in let x = - let uu___374_7562 = bv in + let uu___373_7562 = bv in let uu____7563 = let uu____7566 = FStar_Syntax_Syntax.bv_to_name xw in trans_F_ env2 c uu____7566 in { FStar_Syntax_Syntax.ppname = - (uu___374_7562.FStar_Syntax_Syntax.ppname); + (uu___373_7562.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___374_7562.FStar_Syntax_Syntax.index); + (uu___373_7562.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____7563 } in let env3 = - let uu___375_7568 = env2 in + let uu___374_7568 = env2 in let uu____7569 = let uu____7572 = let uu____7573 = @@ -2433,9 +2433,9 @@ and (infer : FStar_Syntax_Syntax.NT uu____7573 in uu____7572 :: (env2.subst) in { - tcenv = (uu___375_7568.tcenv); + tcenv = (uu___374_7568.tcenv); subst = uu____7569; - tc_const = (uu___375_7568.tc_const) + tc_const = (uu___374_7568.tc_const) } in let uu____7585 = let uu____7588 = FStar_Syntax_Syntax.mk_binder x @@ -2448,14 +2448,14 @@ and (infer : (env3, uu____7585) else (let x = - let uu___376_7598 = bv in + let uu___375_7598 = bv in let uu____7599 = star_type' env2 bv.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___376_7598.FStar_Syntax_Syntax.ppname); + (uu___375_7598.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___376_7598.FStar_Syntax_Syntax.index); + (uu___375_7598.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____7599 } in let uu____7602 = @@ -2496,8 +2496,8 @@ and (infer : FStar_All.pipe_right rc.FStar_Syntax_Syntax.residual_flags (FStar_Util.for_some - (fun uu___357_7738 -> - match uu___357_7738 with + (fun uu___356_7738 -> + match uu___356_7738 with | FStar_Syntax_Syntax.CPS -> true | uu____7741 -> false)) in @@ -2505,8 +2505,8 @@ and (infer : then let uu____7744 = FStar_List.filter - (fun uu___358_7748 -> - match uu___358_7748 with + (fun uu___357_7748 -> + match uu___357_7748 with | FStar_Syntax_Syntax.CPS -> false | uu____7751 -> true) rc.FStar_Syntax_Syntax.residual_flags @@ -2521,8 +2521,8 @@ and (infer : FStar_All.pipe_right rc.FStar_Syntax_Syntax.residual_flags (FStar_Util.for_some - (fun uu___359_7768 -> - match uu___359_7768 with + (fun uu___358_7768 -> + match uu___358_7768 with | FStar_Syntax_Syntax.CPS -> true | uu____7771 -> false)) in @@ -2530,8 +2530,8 @@ and (infer : then let flags1 = FStar_List.filter - (fun uu___360_7780 -> - match uu___360_7780 with + (fun uu___359_7780 -> + match uu___359_7780 with | FStar_Syntax_Syntax.CPS -> false | uu____7783 -> true) rc.FStar_Syntax_Syntax.residual_flags @@ -2548,18 +2548,18 @@ and (infer : FStar_Pervasives_Native.Some uu____7785 else (let uu____7798 = - let uu___377_7799 = rc in + let uu___376_7799 = rc in let uu____7800 = let uu____7805 = star_type' env2 rt in FStar_Pervasives_Native.Some uu____7805 in { FStar_Syntax_Syntax.residual_effect = - (uu___377_7799.FStar_Syntax_Syntax.residual_effect); + (uu___376_7799.FStar_Syntax_Syntax.residual_effect); FStar_Syntax_Syntax.residual_typ = uu____7800; FStar_Syntax_Syntax.residual_flags = - (uu___377_7799.FStar_Syntax_Syntax.residual_flags) + (uu___376_7799.FStar_Syntax_Syntax.residual_flags) } in FStar_Pervasives_Native.Some uu____7798)) in @@ -3031,7 +3031,7 @@ and (mk_match : match uu____10711 with | (pat,FStar_Pervasives_Native.None ,body) -> let env1 = - let uu___378_10753 = env in + let uu___377_10753 = env in let uu____10754 = let uu____10755 = FStar_Syntax_Syntax.pat_bvs pat in @@ -3041,8 +3041,8 @@ and (mk_match : in { tcenv = uu____10754; - subst = (uu___378_10753.subst); - tc_const = (uu___378_10753.tc_const) + subst = (uu___377_10753.subst); + tc_const = (uu___377_10753.tc_const) } in let uu____10758 = f env1 body in (match uu____10758 with @@ -3064,8 +3064,8 @@ and (mk_match : match uu____10936 with | M t1 -> t1 | N t1 -> t1 in let has_m = FStar_List.existsb - (fun uu___361_10945 -> - match uu___361_10945 with + (fun uu___360_10945 -> + match uu___360_10945 with | M uu____10947 -> true | uu____10949 -> false) nms in @@ -3258,68 +3258,68 @@ and (mk_let : let uu____12187 = is_C t1 in if uu____12187 then - let uu___379_12190 = binding in + let uu___378_12190 = binding in let uu____12191 = let uu____12194 = FStar_Syntax_Subst.subst env.subst s_e1 in trans_F_ env t1 uu____12194 in { FStar_Syntax_Syntax.lbname = - (uu___379_12190.FStar_Syntax_Syntax.lbname); + (uu___378_12190.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___379_12190.FStar_Syntax_Syntax.lbunivs); + (uu___378_12190.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = uu____12191; FStar_Syntax_Syntax.lbeff = - (uu___379_12190.FStar_Syntax_Syntax.lbeff); + (uu___378_12190.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = - (uu___379_12190.FStar_Syntax_Syntax.lbdef); + (uu___378_12190.FStar_Syntax_Syntax.lbdef); FStar_Syntax_Syntax.lbattrs = - (uu___379_12190.FStar_Syntax_Syntax.lbattrs); + (uu___378_12190.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___379_12190.FStar_Syntax_Syntax.lbpos) + (uu___378_12190.FStar_Syntax_Syntax.lbpos) } else binding in let env1 = - let uu___380_12198 = env in + let uu___379_12198 = env in let uu____12199 = FStar_TypeChecker_Env.push_bv env.tcenv - (let uu___381_12201 = x in + (let uu___380_12201 = x in { FStar_Syntax_Syntax.ppname = - (uu___381_12201.FStar_Syntax_Syntax.ppname); + (uu___380_12201.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___381_12201.FStar_Syntax_Syntax.index); + (uu___380_12201.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t1 }) in { tcenv = uu____12199; - subst = (uu___380_12198.subst); - tc_const = (uu___380_12198.tc_const) + subst = (uu___379_12198.subst); + tc_const = (uu___379_12198.tc_const) } in let uu____12202 = proceed env1 e21 in (match uu____12202 with | (nm_rec,s_e2,u_e2) -> let s_binding = - let uu___382_12219 = binding in + let uu___381_12219 = binding in let uu____12220 = star_type' env1 binding.FStar_Syntax_Syntax.lbtyp in { FStar_Syntax_Syntax.lbname = - (uu___382_12219.FStar_Syntax_Syntax.lbname); + (uu___381_12219.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___382_12219.FStar_Syntax_Syntax.lbunivs); + (uu___381_12219.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = uu____12220; FStar_Syntax_Syntax.lbeff = - (uu___382_12219.FStar_Syntax_Syntax.lbeff); + (uu___381_12219.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = - (uu___382_12219.FStar_Syntax_Syntax.lbdef); + (uu___381_12219.FStar_Syntax_Syntax.lbdef); FStar_Syntax_Syntax.lbattrs = - (uu___382_12219.FStar_Syntax_Syntax.lbattrs); + (uu___381_12219.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___382_12219.FStar_Syntax_Syntax.lbpos) + (uu___381_12219.FStar_Syntax_Syntax.lbpos) } in let uu____12223 = let uu____12224 = @@ -3328,21 +3328,21 @@ and (mk_let : FStar_Syntax_Subst.close x_binders1 s_e2 in ((false, - [(let uu___383_12256 = s_binding in + [(let uu___382_12256 = s_binding in { FStar_Syntax_Syntax.lbname = - (uu___383_12256.FStar_Syntax_Syntax.lbname); + (uu___382_12256.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___383_12256.FStar_Syntax_Syntax.lbunivs); + (uu___382_12256.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = - (uu___383_12256.FStar_Syntax_Syntax.lbtyp); + (uu___382_12256.FStar_Syntax_Syntax.lbtyp); FStar_Syntax_Syntax.lbeff = - (uu___383_12256.FStar_Syntax_Syntax.lbeff); + (uu___382_12256.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = s_e1; FStar_Syntax_Syntax.lbattrs = - (uu___383_12256.FStar_Syntax_Syntax.lbattrs); + (uu___382_12256.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___383_12256.FStar_Syntax_Syntax.lbpos) + (uu___382_12256.FStar_Syntax_Syntax.lbpos) })]), uu____12239) in FStar_Syntax_Syntax.Tm_let uu____12225 in @@ -3354,21 +3354,21 @@ and (mk_let : FStar_Syntax_Subst.close x_binders1 u_e2 in ((false, - [(let uu___384_12290 = u_binding in + [(let uu___383_12290 = u_binding in { FStar_Syntax_Syntax.lbname = - (uu___384_12290.FStar_Syntax_Syntax.lbname); + (uu___383_12290.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___384_12290.FStar_Syntax_Syntax.lbunivs); + (uu___383_12290.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = - (uu___384_12290.FStar_Syntax_Syntax.lbtyp); + (uu___383_12290.FStar_Syntax_Syntax.lbtyp); FStar_Syntax_Syntax.lbeff = - (uu___384_12290.FStar_Syntax_Syntax.lbeff); + (uu___383_12290.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = u_e1; FStar_Syntax_Syntax.lbattrs = - (uu___384_12290.FStar_Syntax_Syntax.lbattrs); + (uu___383_12290.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___384_12290.FStar_Syntax_Syntax.lbpos) + (uu___383_12290.FStar_Syntax_Syntax.lbpos) })]), uu____12273) in FStar_Syntax_Syntax.Tm_let uu____12259 in @@ -3376,39 +3376,39 @@ and (mk_let : (nm_rec, uu____12223, uu____12257)) | (M t1,s_e1,u_e1) -> let u_binding = - let uu___385_12295 = binding in + let uu___384_12295 = binding in { FStar_Syntax_Syntax.lbname = - (uu___385_12295.FStar_Syntax_Syntax.lbname); + (uu___384_12295.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___385_12295.FStar_Syntax_Syntax.lbunivs); + (uu___384_12295.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = t1; FStar_Syntax_Syntax.lbeff = FStar_Parser_Const.effect_PURE_lid; FStar_Syntax_Syntax.lbdef = - (uu___385_12295.FStar_Syntax_Syntax.lbdef); + (uu___384_12295.FStar_Syntax_Syntax.lbdef); FStar_Syntax_Syntax.lbattrs = - (uu___385_12295.FStar_Syntax_Syntax.lbattrs); + (uu___384_12295.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___385_12295.FStar_Syntax_Syntax.lbpos) + (uu___384_12295.FStar_Syntax_Syntax.lbpos) } in let env1 = - let uu___386_12297 = env in + let uu___385_12297 = env in let uu____12298 = FStar_TypeChecker_Env.push_bv env.tcenv - (let uu___387_12300 = x in + (let uu___386_12300 = x in { FStar_Syntax_Syntax.ppname = - (uu___387_12300.FStar_Syntax_Syntax.ppname); + (uu___386_12300.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___387_12300.FStar_Syntax_Syntax.index); + (uu___386_12300.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t1 }) in { tcenv = uu____12298; - subst = (uu___386_12297.subst); - tc_const = (uu___386_12297.tc_const) + subst = (uu___385_12297.subst); + tc_const = (uu___385_12297.tc_const) } in let uu____12301 = ensure_m env1 e21 in (match uu____12301 with @@ -3469,21 +3469,21 @@ and (mk_let : FStar_Syntax_Subst.close x_binders1 u_e2 in ((false, - [(let uu___388_12536 = u_binding in + [(let uu___387_12536 = u_binding in { FStar_Syntax_Syntax.lbname = - (uu___388_12536.FStar_Syntax_Syntax.lbname); + (uu___387_12536.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___388_12536.FStar_Syntax_Syntax.lbunivs); + (uu___387_12536.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = - (uu___388_12536.FStar_Syntax_Syntax.lbtyp); + (uu___387_12536.FStar_Syntax_Syntax.lbtyp); FStar_Syntax_Syntax.lbeff = - (uu___388_12536.FStar_Syntax_Syntax.lbeff); + (uu___387_12536.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = u_e1; FStar_Syntax_Syntax.lbattrs = - (uu___388_12536.FStar_Syntax_Syntax.lbattrs); + (uu___387_12536.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___388_12536.FStar_Syntax_Syntax.lbpos) + (uu___387_12536.FStar_Syntax_Syntax.lbpos) })]), uu____12519) in FStar_Syntax_Syntax.Tm_let uu____12505 in diff --git a/src/ocaml-output/FStar_TypeChecker_Env.ml b/src/ocaml-output/FStar_TypeChecker_Env.ml index ec56a613196..5a6659e5214 100644 --- a/src/ocaml-output/FStar_TypeChecker_Env.ml +++ b/src/ocaml-output/FStar_TypeChecker_Env.ml @@ -415,11 +415,7 @@ and implicit = imp_reason: Prims.string ; imp_uvar: FStar_Syntax_Syntax.ctx_uvar ; imp_tm: FStar_Syntax_Syntax.term ; - imp_range: FStar_Range.range ; - imp_meta: - (env,FStar_Syntax_Syntax.term) FStar_Pervasives_Native.tuple2 - FStar_Pervasives_Native.option - } + imp_range: FStar_Range.range } and tcenv_hooks = { tc_push_in_gamma_hook: @@ -1168,33 +1164,24 @@ let (__proj__Mkguard_t__item__implicits : guard_t -> implicit Prims.list) = let (__proj__Mkimplicit__item__imp_reason : implicit -> Prims.string) = fun projectee -> match projectee with - | { imp_reason; imp_uvar; imp_tm; imp_range; imp_meta;_} -> imp_reason + | { imp_reason; imp_uvar; imp_tm; imp_range;_} -> imp_reason let (__proj__Mkimplicit__item__imp_uvar : implicit -> FStar_Syntax_Syntax.ctx_uvar) = fun projectee -> match projectee with - | { imp_reason; imp_uvar; imp_tm; imp_range; imp_meta;_} -> imp_uvar + | { imp_reason; imp_uvar; imp_tm; imp_range;_} -> imp_uvar let (__proj__Mkimplicit__item__imp_tm : implicit -> FStar_Syntax_Syntax.term) = fun projectee -> match projectee with - | { imp_reason; imp_uvar; imp_tm; imp_range; imp_meta;_} -> imp_tm + | { imp_reason; imp_uvar; imp_tm; imp_range;_} -> imp_tm let (__proj__Mkimplicit__item__imp_range : implicit -> FStar_Range.range) = fun projectee -> match projectee with - | { imp_reason; imp_uvar; imp_tm; imp_range; imp_meta;_} -> imp_range - -let (__proj__Mkimplicit__item__imp_meta : - implicit -> - (env,FStar_Syntax_Syntax.term) FStar_Pervasives_Native.tuple2 - FStar_Pervasives_Native.option) - = - fun projectee -> - match projectee with - | { imp_reason; imp_uvar; imp_tm; imp_range; imp_meta;_} -> imp_meta + | { imp_reason; imp_uvar; imp_tm; imp_range;_} -> imp_range let (__proj__Mktcenv_hooks__item__tc_push_in_gamma_hook : tcenv_hooks -> @@ -1223,187 +1210,187 @@ let (rename_gamma : fun gamma -> FStar_All.pipe_right gamma (FStar_List.map - (fun uu___232_12055 -> - match uu___232_12055 with + (fun uu___231_11986 -> + match uu___231_11986 with | FStar_Syntax_Syntax.Binding_var x -> let y = - let uu____12058 = FStar_Syntax_Syntax.bv_to_name x in - FStar_Syntax_Subst.subst subst1 uu____12058 in - let uu____12059 = - let uu____12060 = FStar_Syntax_Subst.compress y in - uu____12060.FStar_Syntax_Syntax.n in - (match uu____12059 with + let uu____11989 = FStar_Syntax_Syntax.bv_to_name x in + FStar_Syntax_Subst.subst subst1 uu____11989 in + let uu____11990 = + let uu____11991 = FStar_Syntax_Subst.compress y in + uu____11991.FStar_Syntax_Syntax.n in + (match uu____11990 with | FStar_Syntax_Syntax.Tm_name y1 -> - let uu____12064 = - let uu___246_12065 = y1 in - let uu____12066 = + let uu____11995 = + let uu___245_11996 = y1 in + let uu____11997 = FStar_Syntax_Subst.subst subst1 x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___246_12065.FStar_Syntax_Syntax.ppname); + (uu___245_11996.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___246_12065.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____12066 + (uu___245_11996.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____11997 } in - FStar_Syntax_Syntax.Binding_var uu____12064 - | uu____12069 -> failwith "Not a renaming") + FStar_Syntax_Syntax.Binding_var uu____11995 + | uu____12000 -> failwith "Not a renaming") | b -> b)) let (rename_env : FStar_Syntax_Syntax.subst_t -> env -> env) = fun subst1 -> fun env -> - let uu___247_12083 = env in - let uu____12084 = rename_gamma subst1 env.gamma in + let uu___246_12014 = env in + let uu____12015 = rename_gamma subst1 env.gamma in { - solver = (uu___247_12083.solver); - range = (uu___247_12083.range); - curmodule = (uu___247_12083.curmodule); - gamma = uu____12084; - gamma_sig = (uu___247_12083.gamma_sig); - gamma_cache = (uu___247_12083.gamma_cache); - modules = (uu___247_12083.modules); - expected_typ = (uu___247_12083.expected_typ); - sigtab = (uu___247_12083.sigtab); - attrtab = (uu___247_12083.attrtab); - is_pattern = (uu___247_12083.is_pattern); - instantiate_imp = (uu___247_12083.instantiate_imp); - effects = (uu___247_12083.effects); - generalize = (uu___247_12083.generalize); - letrecs = (uu___247_12083.letrecs); - top_level = (uu___247_12083.top_level); - check_uvars = (uu___247_12083.check_uvars); - use_eq = (uu___247_12083.use_eq); - is_iface = (uu___247_12083.is_iface); - admit = (uu___247_12083.admit); - lax = (uu___247_12083.lax); - lax_universes = (uu___247_12083.lax_universes); - phase1 = (uu___247_12083.phase1); - failhard = (uu___247_12083.failhard); - nosynth = (uu___247_12083.nosynth); - uvar_subtyping = (uu___247_12083.uvar_subtyping); - tc_term = (uu___247_12083.tc_term); - type_of = (uu___247_12083.type_of); - universe_of = (uu___247_12083.universe_of); - check_type_of = (uu___247_12083.check_type_of); - use_bv_sorts = (uu___247_12083.use_bv_sorts); - qtbl_name_and_index = (uu___247_12083.qtbl_name_and_index); - normalized_eff_names = (uu___247_12083.normalized_eff_names); - fv_delta_depths = (uu___247_12083.fv_delta_depths); - proof_ns = (uu___247_12083.proof_ns); - synth_hook = (uu___247_12083.synth_hook); - splice = (uu___247_12083.splice); - postprocess = (uu___247_12083.postprocess); - is_native_tactic = (uu___247_12083.is_native_tactic); - identifier_info = (uu___247_12083.identifier_info); - tc_hooks = (uu___247_12083.tc_hooks); - dsenv = (uu___247_12083.dsenv); - nbe = (uu___247_12083.nbe) + solver = (uu___246_12014.solver); + range = (uu___246_12014.range); + curmodule = (uu___246_12014.curmodule); + gamma = uu____12015; + gamma_sig = (uu___246_12014.gamma_sig); + gamma_cache = (uu___246_12014.gamma_cache); + modules = (uu___246_12014.modules); + expected_typ = (uu___246_12014.expected_typ); + sigtab = (uu___246_12014.sigtab); + attrtab = (uu___246_12014.attrtab); + is_pattern = (uu___246_12014.is_pattern); + instantiate_imp = (uu___246_12014.instantiate_imp); + effects = (uu___246_12014.effects); + generalize = (uu___246_12014.generalize); + letrecs = (uu___246_12014.letrecs); + top_level = (uu___246_12014.top_level); + check_uvars = (uu___246_12014.check_uvars); + use_eq = (uu___246_12014.use_eq); + is_iface = (uu___246_12014.is_iface); + admit = (uu___246_12014.admit); + lax = (uu___246_12014.lax); + lax_universes = (uu___246_12014.lax_universes); + phase1 = (uu___246_12014.phase1); + failhard = (uu___246_12014.failhard); + nosynth = (uu___246_12014.nosynth); + uvar_subtyping = (uu___246_12014.uvar_subtyping); + tc_term = (uu___246_12014.tc_term); + type_of = (uu___246_12014.type_of); + universe_of = (uu___246_12014.universe_of); + check_type_of = (uu___246_12014.check_type_of); + use_bv_sorts = (uu___246_12014.use_bv_sorts); + qtbl_name_and_index = (uu___246_12014.qtbl_name_and_index); + normalized_eff_names = (uu___246_12014.normalized_eff_names); + fv_delta_depths = (uu___246_12014.fv_delta_depths); + proof_ns = (uu___246_12014.proof_ns); + synth_hook = (uu___246_12014.synth_hook); + splice = (uu___246_12014.splice); + postprocess = (uu___246_12014.postprocess); + is_native_tactic = (uu___246_12014.is_native_tactic); + identifier_info = (uu___246_12014.identifier_info); + tc_hooks = (uu___246_12014.tc_hooks); + dsenv = (uu___246_12014.dsenv); + nbe = (uu___246_12014.nbe) } let (default_tc_hooks : tcenv_hooks) = - { tc_push_in_gamma_hook = (fun uu____12092 -> fun uu____12093 -> ()) } + { tc_push_in_gamma_hook = (fun uu____12023 -> fun uu____12024 -> ()) } let (tc_hooks : env -> tcenv_hooks) = fun env -> env.tc_hooks let (set_tc_hooks : env -> tcenv_hooks -> env) = fun env -> fun hooks -> - let uu___248_12115 = env in + let uu___247_12046 = env in { - solver = (uu___248_12115.solver); - range = (uu___248_12115.range); - curmodule = (uu___248_12115.curmodule); - gamma = (uu___248_12115.gamma); - gamma_sig = (uu___248_12115.gamma_sig); - gamma_cache = (uu___248_12115.gamma_cache); - modules = (uu___248_12115.modules); - expected_typ = (uu___248_12115.expected_typ); - sigtab = (uu___248_12115.sigtab); - attrtab = (uu___248_12115.attrtab); - is_pattern = (uu___248_12115.is_pattern); - instantiate_imp = (uu___248_12115.instantiate_imp); - effects = (uu___248_12115.effects); - generalize = (uu___248_12115.generalize); - letrecs = (uu___248_12115.letrecs); - top_level = (uu___248_12115.top_level); - check_uvars = (uu___248_12115.check_uvars); - use_eq = (uu___248_12115.use_eq); - is_iface = (uu___248_12115.is_iface); - admit = (uu___248_12115.admit); - lax = (uu___248_12115.lax); - lax_universes = (uu___248_12115.lax_universes); - phase1 = (uu___248_12115.phase1); - failhard = (uu___248_12115.failhard); - nosynth = (uu___248_12115.nosynth); - uvar_subtyping = (uu___248_12115.uvar_subtyping); - tc_term = (uu___248_12115.tc_term); - type_of = (uu___248_12115.type_of); - universe_of = (uu___248_12115.universe_of); - check_type_of = (uu___248_12115.check_type_of); - use_bv_sorts = (uu___248_12115.use_bv_sorts); - qtbl_name_and_index = (uu___248_12115.qtbl_name_and_index); - normalized_eff_names = (uu___248_12115.normalized_eff_names); - fv_delta_depths = (uu___248_12115.fv_delta_depths); - proof_ns = (uu___248_12115.proof_ns); - synth_hook = (uu___248_12115.synth_hook); - splice = (uu___248_12115.splice); - postprocess = (uu___248_12115.postprocess); - is_native_tactic = (uu___248_12115.is_native_tactic); - identifier_info = (uu___248_12115.identifier_info); + solver = (uu___247_12046.solver); + range = (uu___247_12046.range); + curmodule = (uu___247_12046.curmodule); + gamma = (uu___247_12046.gamma); + gamma_sig = (uu___247_12046.gamma_sig); + gamma_cache = (uu___247_12046.gamma_cache); + modules = (uu___247_12046.modules); + expected_typ = (uu___247_12046.expected_typ); + sigtab = (uu___247_12046.sigtab); + attrtab = (uu___247_12046.attrtab); + is_pattern = (uu___247_12046.is_pattern); + instantiate_imp = (uu___247_12046.instantiate_imp); + effects = (uu___247_12046.effects); + generalize = (uu___247_12046.generalize); + letrecs = (uu___247_12046.letrecs); + top_level = (uu___247_12046.top_level); + check_uvars = (uu___247_12046.check_uvars); + use_eq = (uu___247_12046.use_eq); + is_iface = (uu___247_12046.is_iface); + admit = (uu___247_12046.admit); + lax = (uu___247_12046.lax); + lax_universes = (uu___247_12046.lax_universes); + phase1 = (uu___247_12046.phase1); + failhard = (uu___247_12046.failhard); + nosynth = (uu___247_12046.nosynth); + uvar_subtyping = (uu___247_12046.uvar_subtyping); + tc_term = (uu___247_12046.tc_term); + type_of = (uu___247_12046.type_of); + universe_of = (uu___247_12046.universe_of); + check_type_of = (uu___247_12046.check_type_of); + use_bv_sorts = (uu___247_12046.use_bv_sorts); + qtbl_name_and_index = (uu___247_12046.qtbl_name_and_index); + normalized_eff_names = (uu___247_12046.normalized_eff_names); + fv_delta_depths = (uu___247_12046.fv_delta_depths); + proof_ns = (uu___247_12046.proof_ns); + synth_hook = (uu___247_12046.synth_hook); + splice = (uu___247_12046.splice); + postprocess = (uu___247_12046.postprocess); + is_native_tactic = (uu___247_12046.is_native_tactic); + identifier_info = (uu___247_12046.identifier_info); tc_hooks = hooks; - dsenv = (uu___248_12115.dsenv); - nbe = (uu___248_12115.nbe) + dsenv = (uu___247_12046.dsenv); + nbe = (uu___247_12046.nbe) } let (set_dep_graph : env -> FStar_Parser_Dep.deps -> env) = fun e -> fun g -> - let uu___249_12127 = e in - let uu____12128 = FStar_Syntax_DsEnv.set_dep_graph e.dsenv g in + let uu___248_12058 = e in + let uu____12059 = FStar_Syntax_DsEnv.set_dep_graph e.dsenv g in { - solver = (uu___249_12127.solver); - range = (uu___249_12127.range); - curmodule = (uu___249_12127.curmodule); - gamma = (uu___249_12127.gamma); - gamma_sig = (uu___249_12127.gamma_sig); - gamma_cache = (uu___249_12127.gamma_cache); - modules = (uu___249_12127.modules); - expected_typ = (uu___249_12127.expected_typ); - sigtab = (uu___249_12127.sigtab); - attrtab = (uu___249_12127.attrtab); - is_pattern = (uu___249_12127.is_pattern); - instantiate_imp = (uu___249_12127.instantiate_imp); - effects = (uu___249_12127.effects); - generalize = (uu___249_12127.generalize); - letrecs = (uu___249_12127.letrecs); - top_level = (uu___249_12127.top_level); - check_uvars = (uu___249_12127.check_uvars); - use_eq = (uu___249_12127.use_eq); - is_iface = (uu___249_12127.is_iface); - admit = (uu___249_12127.admit); - lax = (uu___249_12127.lax); - lax_universes = (uu___249_12127.lax_universes); - phase1 = (uu___249_12127.phase1); - failhard = (uu___249_12127.failhard); - nosynth = (uu___249_12127.nosynth); - uvar_subtyping = (uu___249_12127.uvar_subtyping); - tc_term = (uu___249_12127.tc_term); - type_of = (uu___249_12127.type_of); - universe_of = (uu___249_12127.universe_of); - check_type_of = (uu___249_12127.check_type_of); - use_bv_sorts = (uu___249_12127.use_bv_sorts); - qtbl_name_and_index = (uu___249_12127.qtbl_name_and_index); - normalized_eff_names = (uu___249_12127.normalized_eff_names); - fv_delta_depths = (uu___249_12127.fv_delta_depths); - proof_ns = (uu___249_12127.proof_ns); - synth_hook = (uu___249_12127.synth_hook); - splice = (uu___249_12127.splice); - postprocess = (uu___249_12127.postprocess); - is_native_tactic = (uu___249_12127.is_native_tactic); - identifier_info = (uu___249_12127.identifier_info); - tc_hooks = (uu___249_12127.tc_hooks); - dsenv = uu____12128; - nbe = (uu___249_12127.nbe) + solver = (uu___248_12058.solver); + range = (uu___248_12058.range); + curmodule = (uu___248_12058.curmodule); + gamma = (uu___248_12058.gamma); + gamma_sig = (uu___248_12058.gamma_sig); + gamma_cache = (uu___248_12058.gamma_cache); + modules = (uu___248_12058.modules); + expected_typ = (uu___248_12058.expected_typ); + sigtab = (uu___248_12058.sigtab); + attrtab = (uu___248_12058.attrtab); + is_pattern = (uu___248_12058.is_pattern); + instantiate_imp = (uu___248_12058.instantiate_imp); + effects = (uu___248_12058.effects); + generalize = (uu___248_12058.generalize); + letrecs = (uu___248_12058.letrecs); + top_level = (uu___248_12058.top_level); + check_uvars = (uu___248_12058.check_uvars); + use_eq = (uu___248_12058.use_eq); + is_iface = (uu___248_12058.is_iface); + admit = (uu___248_12058.admit); + lax = (uu___248_12058.lax); + lax_universes = (uu___248_12058.lax_universes); + phase1 = (uu___248_12058.phase1); + failhard = (uu___248_12058.failhard); + nosynth = (uu___248_12058.nosynth); + uvar_subtyping = (uu___248_12058.uvar_subtyping); + tc_term = (uu___248_12058.tc_term); + type_of = (uu___248_12058.type_of); + universe_of = (uu___248_12058.universe_of); + check_type_of = (uu___248_12058.check_type_of); + use_bv_sorts = (uu___248_12058.use_bv_sorts); + qtbl_name_and_index = (uu___248_12058.qtbl_name_and_index); + normalized_eff_names = (uu___248_12058.normalized_eff_names); + fv_delta_depths = (uu___248_12058.fv_delta_depths); + proof_ns = (uu___248_12058.proof_ns); + synth_hook = (uu___248_12058.synth_hook); + splice = (uu___248_12058.splice); + postprocess = (uu___248_12058.postprocess); + is_native_tactic = (uu___248_12058.is_native_tactic); + identifier_info = (uu___248_12058.identifier_info); + tc_hooks = (uu___248_12058.tc_hooks); + dsenv = uu____12059; + nbe = (uu___248_12058.nbe) } let (dep_graph : env -> FStar_Parser_Dep.deps) = @@ -1420,21 +1407,21 @@ let (visible_at : delta_level -> FStar_Syntax_Syntax.qualifier -> Prims.bool) fun d -> fun q -> match (d, q) with - | (NoDelta ,uu____12157) -> true + | (NoDelta ,uu____12088) -> true | (Eager_unfolding_only ,FStar_Syntax_Syntax.Unfold_for_unification_and_vcgen ) -> true | (Unfold - uu____12160,FStar_Syntax_Syntax.Unfold_for_unification_and_vcgen ) + uu____12091,FStar_Syntax_Syntax.Unfold_for_unification_and_vcgen ) -> true - | (Unfold uu____12162,FStar_Syntax_Syntax.Visible_default ) -> true + | (Unfold uu____12093,FStar_Syntax_Syntax.Visible_default ) -> true | (InliningDelta ,FStar_Syntax_Syntax.Inline_for_extraction ) -> true - | uu____12165 -> false + | uu____12096 -> false let (default_table_size : Prims.int) = (Prims.parse_int "200") -let new_sigtab : 'Auu____12179 . unit -> 'Auu____12179 FStar_Util.smap = - fun uu____12186 -> FStar_Util.smap_create default_table_size -let new_gamma_cache : 'Auu____12192 . unit -> 'Auu____12192 FStar_Util.smap = - fun uu____12199 -> FStar_Util.smap_create (Prims.parse_int "100") +let new_sigtab : 'Auu____12110 . unit -> 'Auu____12110 FStar_Util.smap = + fun uu____12117 -> FStar_Util.smap_create default_table_size +let new_gamma_cache : 'Auu____12123 . unit -> 'Auu____12123 FStar_Util.smap = + fun uu____12130 -> FStar_Util.smap_create (Prims.parse_int "100") let (initial_env : FStar_Parser_Dep.deps -> (env -> @@ -1467,34 +1454,34 @@ let (initial_env : fun solver -> fun module_lid -> fun nbe1 -> - let uu____12337 = new_gamma_cache () in - let uu____12340 = new_sigtab () in - let uu____12343 = new_sigtab () in - let uu____12350 = - let uu____12365 = + let uu____12268 = new_gamma_cache () in + let uu____12271 = new_sigtab () in + let uu____12274 = new_sigtab () in + let uu____12281 = + let uu____12296 = FStar_Util.smap_create (Prims.parse_int "10") in - (uu____12365, FStar_Pervasives_Native.None) in - let uu____12386 = + (uu____12296, FStar_Pervasives_Native.None) in + let uu____12317 = FStar_Util.smap_create (Prims.parse_int "20") in - let uu____12390 = + let uu____12321 = FStar_Util.smap_create (Prims.parse_int "50") in - let uu____12394 = FStar_Options.using_facts_from () in - let uu____12395 = + let uu____12325 = FStar_Options.using_facts_from () in + let uu____12326 = FStar_Util.mk_ref FStar_TypeChecker_Common.id_info_table_empty in - let uu____12398 = FStar_Syntax_DsEnv.empty_env deps in + let uu____12329 = FStar_Syntax_DsEnv.empty_env deps in { solver; range = FStar_Range.dummyRange; curmodule = module_lid; gamma = []; gamma_sig = []; - gamma_cache = uu____12337; + gamma_cache = uu____12268; modules = []; expected_typ = FStar_Pervasives_Native.None; - sigtab = uu____12340; - attrtab = uu____12343; + sigtab = uu____12271; + attrtab = uu____12274; is_pattern = false; instantiate_imp = true; effects = { decls = []; order = []; joins = [] }; @@ -1516,10 +1503,10 @@ let (initial_env : universe_of; check_type_of; use_bv_sorts = false; - qtbl_name_and_index = uu____12350; - normalized_eff_names = uu____12386; - fv_delta_depths = uu____12390; - proof_ns = uu____12394; + qtbl_name_and_index = uu____12281; + normalized_eff_names = uu____12317; + fv_delta_depths = uu____12321; + proof_ns = uu____12325; synth_hook = (fun e -> fun g -> @@ -1531,10 +1518,10 @@ let (initial_env : fun tau -> fun typ -> fun tm -> failwith "no postprocessor available"); - is_native_tactic = (fun uu____12460 -> false); - identifier_info = uu____12395; + is_native_tactic = (fun uu____12391 -> false); + identifier_info = uu____12326; tc_hooks = default_tc_hooks; - dsenv = uu____12398; + dsenv = uu____12329; nbe = nbe1 } @@ -1550,30 +1537,30 @@ let (query_indices : Prims.list FStar_ST.ref) = FStar_Util.mk_ref [[]] let (push_query_indices : unit -> unit) = - fun uu____12572 -> - let uu____12573 = FStar_ST.op_Bang query_indices in - match uu____12573 with + fun uu____12503 -> + let uu____12504 = FStar_ST.op_Bang query_indices in + match uu____12504 with | [] -> failwith "Empty query indices!" - | uu____12628 -> - let uu____12638 = - let uu____12648 = - let uu____12656 = FStar_ST.op_Bang query_indices in - FStar_List.hd uu____12656 in - let uu____12710 = FStar_ST.op_Bang query_indices in uu____12648 :: - uu____12710 + | uu____12559 -> + let uu____12569 = + let uu____12579 = + let uu____12587 = FStar_ST.op_Bang query_indices in + FStar_List.hd uu____12587 in + let uu____12641 = FStar_ST.op_Bang query_indices in uu____12579 :: + uu____12641 in - FStar_ST.op_Colon_Equals query_indices uu____12638 + FStar_ST.op_Colon_Equals query_indices uu____12569 let (pop_query_indices : unit -> unit) = - fun uu____12806 -> - let uu____12807 = FStar_ST.op_Bang query_indices in - match uu____12807 with + fun uu____12737 -> + let uu____12738 = FStar_ST.op_Bang query_indices in + match uu____12738 with | [] -> failwith "Empty query indices!" | hd1::tl1 -> FStar_ST.op_Colon_Equals query_indices tl1 let (snapshot_query_indices : unit -> (Prims.int,unit) FStar_Pervasives_Native.tuple2) = - fun uu____12934 -> + fun uu____12865 -> FStar_Common.snapshot push_query_indices query_indices () let (rollback_query_indices : @@ -1581,102 +1568,102 @@ let (rollback_query_indices : fun depth -> FStar_Common.rollback pop_query_indices query_indices depth let (add_query_index : (FStar_Ident.lident,Prims.int) FStar_Pervasives_Native.tuple2 -> unit) = - fun uu____12971 -> - match uu____12971 with + fun uu____12902 -> + match uu____12902 with | (l,n1) -> - let uu____12981 = FStar_ST.op_Bang query_indices in - (match uu____12981 with + let uu____12912 = FStar_ST.op_Bang query_indices in + (match uu____12912 with | hd1::tl1 -> FStar_ST.op_Colon_Equals query_indices (((l, n1) :: hd1) :: tl1) - | uu____13103 -> failwith "Empty query indices") + | uu____13034 -> failwith "Empty query indices") let (peek_query_indices : unit -> (FStar_Ident.lident,Prims.int) FStar_Pervasives_Native.tuple2 Prims.list) = - fun uu____13126 -> - let uu____13127 = FStar_ST.op_Bang query_indices in - FStar_List.hd uu____13127 + fun uu____13057 -> + let uu____13058 = FStar_ST.op_Bang query_indices in + FStar_List.hd uu____13058 let (stack : env Prims.list FStar_ST.ref) = FStar_Util.mk_ref [] let (push_stack : env -> env) = fun env -> - (let uu____13206 = - let uu____13209 = FStar_ST.op_Bang stack in env :: uu____13209 in - FStar_ST.op_Colon_Equals stack uu____13206); - (let uu___250_13258 = env in - let uu____13259 = FStar_Util.smap_copy (gamma_cache env) in - let uu____13262 = FStar_Util.smap_copy (sigtab env) in - let uu____13265 = FStar_Util.smap_copy (attrtab env) in - let uu____13272 = - let uu____13287 = - let uu____13291 = + (let uu____13137 = + let uu____13140 = FStar_ST.op_Bang stack in env :: uu____13140 in + FStar_ST.op_Colon_Equals stack uu____13137); + (let uu___249_13189 = env in + let uu____13190 = FStar_Util.smap_copy (gamma_cache env) in + let uu____13193 = FStar_Util.smap_copy (sigtab env) in + let uu____13196 = FStar_Util.smap_copy (attrtab env) in + let uu____13203 = + let uu____13218 = + let uu____13222 = FStar_All.pipe_right env.qtbl_name_and_index FStar_Pervasives_Native.fst in - FStar_Util.smap_copy uu____13291 in - let uu____13323 = + FStar_Util.smap_copy uu____13222 in + let uu____13254 = FStar_All.pipe_right env.qtbl_name_and_index FStar_Pervasives_Native.snd in - (uu____13287, uu____13323) in - let uu____13372 = FStar_Util.smap_copy env.normalized_eff_names in - let uu____13375 = FStar_Util.smap_copy env.fv_delta_depths in - let uu____13378 = - let uu____13381 = FStar_ST.op_Bang env.identifier_info in - FStar_Util.mk_ref uu____13381 in + (uu____13218, uu____13254) in + let uu____13303 = FStar_Util.smap_copy env.normalized_eff_names in + let uu____13306 = FStar_Util.smap_copy env.fv_delta_depths in + let uu____13309 = + let uu____13312 = FStar_ST.op_Bang env.identifier_info in + FStar_Util.mk_ref uu____13312 in { - solver = (uu___250_13258.solver); - range = (uu___250_13258.range); - curmodule = (uu___250_13258.curmodule); - gamma = (uu___250_13258.gamma); - gamma_sig = (uu___250_13258.gamma_sig); - gamma_cache = uu____13259; - modules = (uu___250_13258.modules); - expected_typ = (uu___250_13258.expected_typ); - sigtab = uu____13262; - attrtab = uu____13265; - is_pattern = (uu___250_13258.is_pattern); - instantiate_imp = (uu___250_13258.instantiate_imp); - effects = (uu___250_13258.effects); - generalize = (uu___250_13258.generalize); - letrecs = (uu___250_13258.letrecs); - top_level = (uu___250_13258.top_level); - check_uvars = (uu___250_13258.check_uvars); - use_eq = (uu___250_13258.use_eq); - is_iface = (uu___250_13258.is_iface); - admit = (uu___250_13258.admit); - lax = (uu___250_13258.lax); - lax_universes = (uu___250_13258.lax_universes); - phase1 = (uu___250_13258.phase1); - failhard = (uu___250_13258.failhard); - nosynth = (uu___250_13258.nosynth); - uvar_subtyping = (uu___250_13258.uvar_subtyping); - tc_term = (uu___250_13258.tc_term); - type_of = (uu___250_13258.type_of); - universe_of = (uu___250_13258.universe_of); - check_type_of = (uu___250_13258.check_type_of); - use_bv_sorts = (uu___250_13258.use_bv_sorts); - qtbl_name_and_index = uu____13272; - normalized_eff_names = uu____13372; - fv_delta_depths = uu____13375; - proof_ns = (uu___250_13258.proof_ns); - synth_hook = (uu___250_13258.synth_hook); - splice = (uu___250_13258.splice); - postprocess = (uu___250_13258.postprocess); - is_native_tactic = (uu___250_13258.is_native_tactic); - identifier_info = uu____13378; - tc_hooks = (uu___250_13258.tc_hooks); - dsenv = (uu___250_13258.dsenv); - nbe = (uu___250_13258.nbe) + solver = (uu___249_13189.solver); + range = (uu___249_13189.range); + curmodule = (uu___249_13189.curmodule); + gamma = (uu___249_13189.gamma); + gamma_sig = (uu___249_13189.gamma_sig); + gamma_cache = uu____13190; + modules = (uu___249_13189.modules); + expected_typ = (uu___249_13189.expected_typ); + sigtab = uu____13193; + attrtab = uu____13196; + is_pattern = (uu___249_13189.is_pattern); + instantiate_imp = (uu___249_13189.instantiate_imp); + effects = (uu___249_13189.effects); + generalize = (uu___249_13189.generalize); + letrecs = (uu___249_13189.letrecs); + top_level = (uu___249_13189.top_level); + check_uvars = (uu___249_13189.check_uvars); + use_eq = (uu___249_13189.use_eq); + is_iface = (uu___249_13189.is_iface); + admit = (uu___249_13189.admit); + lax = (uu___249_13189.lax); + lax_universes = (uu___249_13189.lax_universes); + phase1 = (uu___249_13189.phase1); + failhard = (uu___249_13189.failhard); + nosynth = (uu___249_13189.nosynth); + uvar_subtyping = (uu___249_13189.uvar_subtyping); + tc_term = (uu___249_13189.tc_term); + type_of = (uu___249_13189.type_of); + universe_of = (uu___249_13189.universe_of); + check_type_of = (uu___249_13189.check_type_of); + use_bv_sorts = (uu___249_13189.use_bv_sorts); + qtbl_name_and_index = uu____13203; + normalized_eff_names = uu____13303; + fv_delta_depths = uu____13306; + proof_ns = (uu___249_13189.proof_ns); + synth_hook = (uu___249_13189.synth_hook); + splice = (uu___249_13189.splice); + postprocess = (uu___249_13189.postprocess); + is_native_tactic = (uu___249_13189.is_native_tactic); + identifier_info = uu____13309; + tc_hooks = (uu___249_13189.tc_hooks); + dsenv = (uu___249_13189.dsenv); + nbe = (uu___249_13189.nbe) }) let (pop_stack : unit -> env) = - fun uu____13428 -> - let uu____13429 = FStar_ST.op_Bang stack in - match uu____13429 with + fun uu____13359 -> + let uu____13360 = FStar_ST.op_Bang stack in + match uu____13360 with | env::tl1 -> (FStar_ST.op_Colon_Equals stack tl1; env) - | uu____13483 -> failwith "Impossible: Too many pops" + | uu____13414 -> failwith "Impossible: Too many pops" let (snapshot_stack : env -> (Prims.int,env) FStar_Pervasives_Native.tuple2) = fun env -> FStar_Common.snapshot push_stack stack env @@ -1691,78 +1678,78 @@ let (snapshot : fun env -> fun msg -> FStar_Util.atomically - (fun uu____13573 -> - let uu____13574 = snapshot_stack env in - match uu____13574 with + (fun uu____13504 -> + let uu____13505 = snapshot_stack env in + match uu____13505 with | (stack_depth,env1) -> - let uu____13608 = snapshot_query_indices () in - (match uu____13608 with + let uu____13539 = snapshot_query_indices () in + (match uu____13539 with | (query_indices_depth,()) -> - let uu____13641 = (env1.solver).snapshot msg in - (match uu____13641 with + let uu____13572 = (env1.solver).snapshot msg in + (match uu____13572 with | (solver_depth,()) -> - let uu____13698 = + let uu____13629 = FStar_Syntax_DsEnv.snapshot env1.dsenv in - (match uu____13698 with + (match uu____13629 with | (dsenv_depth,dsenv1) -> ((stack_depth, query_indices_depth, solver_depth, dsenv_depth), - (let uu___251_13765 = env1 in + (let uu___250_13696 = env1 in { - solver = (uu___251_13765.solver); - range = (uu___251_13765.range); - curmodule = (uu___251_13765.curmodule); - gamma = (uu___251_13765.gamma); - gamma_sig = (uu___251_13765.gamma_sig); - gamma_cache = (uu___251_13765.gamma_cache); - modules = (uu___251_13765.modules); + solver = (uu___250_13696.solver); + range = (uu___250_13696.range); + curmodule = (uu___250_13696.curmodule); + gamma = (uu___250_13696.gamma); + gamma_sig = (uu___250_13696.gamma_sig); + gamma_cache = (uu___250_13696.gamma_cache); + modules = (uu___250_13696.modules); expected_typ = - (uu___251_13765.expected_typ); - sigtab = (uu___251_13765.sigtab); - attrtab = (uu___251_13765.attrtab); - is_pattern = (uu___251_13765.is_pattern); + (uu___250_13696.expected_typ); + sigtab = (uu___250_13696.sigtab); + attrtab = (uu___250_13696.attrtab); + is_pattern = (uu___250_13696.is_pattern); instantiate_imp = - (uu___251_13765.instantiate_imp); - effects = (uu___251_13765.effects); - generalize = (uu___251_13765.generalize); - letrecs = (uu___251_13765.letrecs); - top_level = (uu___251_13765.top_level); - check_uvars = (uu___251_13765.check_uvars); - use_eq = (uu___251_13765.use_eq); - is_iface = (uu___251_13765.is_iface); - admit = (uu___251_13765.admit); - lax = (uu___251_13765.lax); + (uu___250_13696.instantiate_imp); + effects = (uu___250_13696.effects); + generalize = (uu___250_13696.generalize); + letrecs = (uu___250_13696.letrecs); + top_level = (uu___250_13696.top_level); + check_uvars = (uu___250_13696.check_uvars); + use_eq = (uu___250_13696.use_eq); + is_iface = (uu___250_13696.is_iface); + admit = (uu___250_13696.admit); + lax = (uu___250_13696.lax); lax_universes = - (uu___251_13765.lax_universes); - phase1 = (uu___251_13765.phase1); - failhard = (uu___251_13765.failhard); - nosynth = (uu___251_13765.nosynth); + (uu___250_13696.lax_universes); + phase1 = (uu___250_13696.phase1); + failhard = (uu___250_13696.failhard); + nosynth = (uu___250_13696.nosynth); uvar_subtyping = - (uu___251_13765.uvar_subtyping); - tc_term = (uu___251_13765.tc_term); - type_of = (uu___251_13765.type_of); - universe_of = (uu___251_13765.universe_of); + (uu___250_13696.uvar_subtyping); + tc_term = (uu___250_13696.tc_term); + type_of = (uu___250_13696.type_of); + universe_of = (uu___250_13696.universe_of); check_type_of = - (uu___251_13765.check_type_of); + (uu___250_13696.check_type_of); use_bv_sorts = - (uu___251_13765.use_bv_sorts); + (uu___250_13696.use_bv_sorts); qtbl_name_and_index = - (uu___251_13765.qtbl_name_and_index); + (uu___250_13696.qtbl_name_and_index); normalized_eff_names = - (uu___251_13765.normalized_eff_names); + (uu___250_13696.normalized_eff_names); fv_delta_depths = - (uu___251_13765.fv_delta_depths); - proof_ns = (uu___251_13765.proof_ns); - synth_hook = (uu___251_13765.synth_hook); - splice = (uu___251_13765.splice); - postprocess = (uu___251_13765.postprocess); + (uu___250_13696.fv_delta_depths); + proof_ns = (uu___250_13696.proof_ns); + synth_hook = (uu___250_13696.synth_hook); + splice = (uu___250_13696.splice); + postprocess = (uu___250_13696.postprocess); is_native_tactic = - (uu___251_13765.is_native_tactic); + (uu___250_13696.is_native_tactic); identifier_info = - (uu___251_13765.identifier_info); - tc_hooks = (uu___251_13765.tc_hooks); + (uu___250_13696.identifier_info); + tc_hooks = (uu___250_13696.tc_hooks); dsenv = dsenv1; - nbe = (uu___251_13765.nbe) + nbe = (uu___250_13696.nbe) })))))) let (rollback : @@ -1773,8 +1760,8 @@ let (rollback : fun msg -> fun depth -> FStar_Util.atomically - (fun uu____13799 -> - let uu____13800 = + (fun uu____13730 -> + let uu____13731 = match depth with | FStar_Pervasives_Native.Some (s1,s2,s3,s4) -> ((FStar_Pervasives_Native.Some s1), @@ -1787,7 +1774,7 @@ let (rollback : FStar_Pervasives_Native.None, FStar_Pervasives_Native.None) in - match uu____13800 with + match uu____13731 with | (stack_depth,query_indices_depth,solver_depth,dsenv_depth) -> (solver.rollback msg solver_depth; (match () with @@ -1798,19 +1785,19 @@ let (rollback : let tcenv = rollback_stack stack_depth in let dsenv1 = FStar_Syntax_DsEnv.rollback dsenv_depth in - ((let uu____13980 = + ((let uu____13911 = FStar_Util.physical_equality tcenv.dsenv dsenv1 in - FStar_Common.runtime_assert uu____13980 + FStar_Common.runtime_assert uu____13911 "Inconsistent stack state"); tcenv)))))) let (push : env -> Prims.string -> env) = fun env -> fun msg -> - let uu____13996 = snapshot env msg in - FStar_Pervasives_Native.snd uu____13996 + let uu____13927 = snapshot env msg in + FStar_Pervasives_Native.snd uu____13927 let (pop : env -> Prims.string -> env) = fun env -> @@ -1820,117 +1807,117 @@ let (incr_query_index : env -> env) = fun env -> let qix = peek_query_indices () in match env.qtbl_name_and_index with - | (uu____14028,FStar_Pervasives_Native.None ) -> env + | (uu____13959,FStar_Pervasives_Native.None ) -> env | (tbl,FStar_Pervasives_Native.Some (l,n1)) -> - let uu____14070 = + let uu____14001 = FStar_All.pipe_right qix (FStar_List.tryFind - (fun uu____14100 -> - match uu____14100 with - | (m,uu____14108) -> FStar_Ident.lid_equals l m)) + (fun uu____14031 -> + match uu____14031 with + | (m,uu____14039) -> FStar_Ident.lid_equals l m)) in - (match uu____14070 with + (match uu____14001 with | FStar_Pervasives_Native.None -> let next = n1 + (Prims.parse_int "1") in (add_query_index (l, next); FStar_Util.smap_add tbl l.FStar_Ident.str next; - (let uu___252_14123 = env in + (let uu___251_14054 = env in { - solver = (uu___252_14123.solver); - range = (uu___252_14123.range); - curmodule = (uu___252_14123.curmodule); - gamma = (uu___252_14123.gamma); - gamma_sig = (uu___252_14123.gamma_sig); - gamma_cache = (uu___252_14123.gamma_cache); - modules = (uu___252_14123.modules); - expected_typ = (uu___252_14123.expected_typ); - sigtab = (uu___252_14123.sigtab); - attrtab = (uu___252_14123.attrtab); - is_pattern = (uu___252_14123.is_pattern); - instantiate_imp = (uu___252_14123.instantiate_imp); - effects = (uu___252_14123.effects); - generalize = (uu___252_14123.generalize); - letrecs = (uu___252_14123.letrecs); - top_level = (uu___252_14123.top_level); - check_uvars = (uu___252_14123.check_uvars); - use_eq = (uu___252_14123.use_eq); - is_iface = (uu___252_14123.is_iface); - admit = (uu___252_14123.admit); - lax = (uu___252_14123.lax); - lax_universes = (uu___252_14123.lax_universes); - phase1 = (uu___252_14123.phase1); - failhard = (uu___252_14123.failhard); - nosynth = (uu___252_14123.nosynth); - uvar_subtyping = (uu___252_14123.uvar_subtyping); - tc_term = (uu___252_14123.tc_term); - type_of = (uu___252_14123.type_of); - universe_of = (uu___252_14123.universe_of); - check_type_of = (uu___252_14123.check_type_of); - use_bv_sorts = (uu___252_14123.use_bv_sorts); + solver = (uu___251_14054.solver); + range = (uu___251_14054.range); + curmodule = (uu___251_14054.curmodule); + gamma = (uu___251_14054.gamma); + gamma_sig = (uu___251_14054.gamma_sig); + gamma_cache = (uu___251_14054.gamma_cache); + modules = (uu___251_14054.modules); + expected_typ = (uu___251_14054.expected_typ); + sigtab = (uu___251_14054.sigtab); + attrtab = (uu___251_14054.attrtab); + is_pattern = (uu___251_14054.is_pattern); + instantiate_imp = (uu___251_14054.instantiate_imp); + effects = (uu___251_14054.effects); + generalize = (uu___251_14054.generalize); + letrecs = (uu___251_14054.letrecs); + top_level = (uu___251_14054.top_level); + check_uvars = (uu___251_14054.check_uvars); + use_eq = (uu___251_14054.use_eq); + is_iface = (uu___251_14054.is_iface); + admit = (uu___251_14054.admit); + lax = (uu___251_14054.lax); + lax_universes = (uu___251_14054.lax_universes); + phase1 = (uu___251_14054.phase1); + failhard = (uu___251_14054.failhard); + nosynth = (uu___251_14054.nosynth); + uvar_subtyping = (uu___251_14054.uvar_subtyping); + tc_term = (uu___251_14054.tc_term); + type_of = (uu___251_14054.type_of); + universe_of = (uu___251_14054.universe_of); + check_type_of = (uu___251_14054.check_type_of); + use_bv_sorts = (uu___251_14054.use_bv_sorts); qtbl_name_and_index = (tbl, (FStar_Pervasives_Native.Some (l, next))); - normalized_eff_names = (uu___252_14123.normalized_eff_names); - fv_delta_depths = (uu___252_14123.fv_delta_depths); - proof_ns = (uu___252_14123.proof_ns); - synth_hook = (uu___252_14123.synth_hook); - splice = (uu___252_14123.splice); - postprocess = (uu___252_14123.postprocess); - is_native_tactic = (uu___252_14123.is_native_tactic); - identifier_info = (uu___252_14123.identifier_info); - tc_hooks = (uu___252_14123.tc_hooks); - dsenv = (uu___252_14123.dsenv); - nbe = (uu___252_14123.nbe) + normalized_eff_names = (uu___251_14054.normalized_eff_names); + fv_delta_depths = (uu___251_14054.fv_delta_depths); + proof_ns = (uu___251_14054.proof_ns); + synth_hook = (uu___251_14054.synth_hook); + splice = (uu___251_14054.splice); + postprocess = (uu___251_14054.postprocess); + is_native_tactic = (uu___251_14054.is_native_tactic); + identifier_info = (uu___251_14054.identifier_info); + tc_hooks = (uu___251_14054.tc_hooks); + dsenv = (uu___251_14054.dsenv); + nbe = (uu___251_14054.nbe) })) - | FStar_Pervasives_Native.Some (uu____14140,m) -> + | FStar_Pervasives_Native.Some (uu____14071,m) -> let next = m + (Prims.parse_int "1") in (add_query_index (l, next); FStar_Util.smap_add tbl l.FStar_Ident.str next; - (let uu___253_14156 = env in + (let uu___252_14087 = env in { - solver = (uu___253_14156.solver); - range = (uu___253_14156.range); - curmodule = (uu___253_14156.curmodule); - gamma = (uu___253_14156.gamma); - gamma_sig = (uu___253_14156.gamma_sig); - gamma_cache = (uu___253_14156.gamma_cache); - modules = (uu___253_14156.modules); - expected_typ = (uu___253_14156.expected_typ); - sigtab = (uu___253_14156.sigtab); - attrtab = (uu___253_14156.attrtab); - is_pattern = (uu___253_14156.is_pattern); - instantiate_imp = (uu___253_14156.instantiate_imp); - effects = (uu___253_14156.effects); - generalize = (uu___253_14156.generalize); - letrecs = (uu___253_14156.letrecs); - top_level = (uu___253_14156.top_level); - check_uvars = (uu___253_14156.check_uvars); - use_eq = (uu___253_14156.use_eq); - is_iface = (uu___253_14156.is_iface); - admit = (uu___253_14156.admit); - lax = (uu___253_14156.lax); - lax_universes = (uu___253_14156.lax_universes); - phase1 = (uu___253_14156.phase1); - failhard = (uu___253_14156.failhard); - nosynth = (uu___253_14156.nosynth); - uvar_subtyping = (uu___253_14156.uvar_subtyping); - tc_term = (uu___253_14156.tc_term); - type_of = (uu___253_14156.type_of); - universe_of = (uu___253_14156.universe_of); - check_type_of = (uu___253_14156.check_type_of); - use_bv_sorts = (uu___253_14156.use_bv_sorts); + solver = (uu___252_14087.solver); + range = (uu___252_14087.range); + curmodule = (uu___252_14087.curmodule); + gamma = (uu___252_14087.gamma); + gamma_sig = (uu___252_14087.gamma_sig); + gamma_cache = (uu___252_14087.gamma_cache); + modules = (uu___252_14087.modules); + expected_typ = (uu___252_14087.expected_typ); + sigtab = (uu___252_14087.sigtab); + attrtab = (uu___252_14087.attrtab); + is_pattern = (uu___252_14087.is_pattern); + instantiate_imp = (uu___252_14087.instantiate_imp); + effects = (uu___252_14087.effects); + generalize = (uu___252_14087.generalize); + letrecs = (uu___252_14087.letrecs); + top_level = (uu___252_14087.top_level); + check_uvars = (uu___252_14087.check_uvars); + use_eq = (uu___252_14087.use_eq); + is_iface = (uu___252_14087.is_iface); + admit = (uu___252_14087.admit); + lax = (uu___252_14087.lax); + lax_universes = (uu___252_14087.lax_universes); + phase1 = (uu___252_14087.phase1); + failhard = (uu___252_14087.failhard); + nosynth = (uu___252_14087.nosynth); + uvar_subtyping = (uu___252_14087.uvar_subtyping); + tc_term = (uu___252_14087.tc_term); + type_of = (uu___252_14087.type_of); + universe_of = (uu___252_14087.universe_of); + check_type_of = (uu___252_14087.check_type_of); + use_bv_sorts = (uu___252_14087.use_bv_sorts); qtbl_name_and_index = (tbl, (FStar_Pervasives_Native.Some (l, next))); - normalized_eff_names = (uu___253_14156.normalized_eff_names); - fv_delta_depths = (uu___253_14156.fv_delta_depths); - proof_ns = (uu___253_14156.proof_ns); - synth_hook = (uu___253_14156.synth_hook); - splice = (uu___253_14156.splice); - postprocess = (uu___253_14156.postprocess); - is_native_tactic = (uu___253_14156.is_native_tactic); - identifier_info = (uu___253_14156.identifier_info); - tc_hooks = (uu___253_14156.tc_hooks); - dsenv = (uu___253_14156.dsenv); - nbe = (uu___253_14156.nbe) + normalized_eff_names = (uu___252_14087.normalized_eff_names); + fv_delta_depths = (uu___252_14087.fv_delta_depths); + proof_ns = (uu___252_14087.proof_ns); + synth_hook = (uu___252_14087.synth_hook); + splice = (uu___252_14087.splice); + postprocess = (uu___252_14087.postprocess); + is_native_tactic = (uu___252_14087.is_native_tactic); + identifier_info = (uu___252_14087.identifier_info); + tc_hooks = (uu___252_14087.tc_hooks); + dsenv = (uu___252_14087.dsenv); + nbe = (uu___252_14087.nbe) }))) let (debug : env -> FStar_Options.debug_level_t -> Prims.bool) = @@ -1943,90 +1930,90 @@ let (set_range : env -> FStar_Range.range -> env) = if r = FStar_Range.dummyRange then e else - (let uu___254_14199 = e in + (let uu___253_14130 = e in { - solver = (uu___254_14199.solver); + solver = (uu___253_14130.solver); range = r; - curmodule = (uu___254_14199.curmodule); - gamma = (uu___254_14199.gamma); - gamma_sig = (uu___254_14199.gamma_sig); - gamma_cache = (uu___254_14199.gamma_cache); - modules = (uu___254_14199.modules); - expected_typ = (uu___254_14199.expected_typ); - sigtab = (uu___254_14199.sigtab); - attrtab = (uu___254_14199.attrtab); - is_pattern = (uu___254_14199.is_pattern); - instantiate_imp = (uu___254_14199.instantiate_imp); - effects = (uu___254_14199.effects); - generalize = (uu___254_14199.generalize); - letrecs = (uu___254_14199.letrecs); - top_level = (uu___254_14199.top_level); - check_uvars = (uu___254_14199.check_uvars); - use_eq = (uu___254_14199.use_eq); - is_iface = (uu___254_14199.is_iface); - admit = (uu___254_14199.admit); - lax = (uu___254_14199.lax); - lax_universes = (uu___254_14199.lax_universes); - phase1 = (uu___254_14199.phase1); - failhard = (uu___254_14199.failhard); - nosynth = (uu___254_14199.nosynth); - uvar_subtyping = (uu___254_14199.uvar_subtyping); - tc_term = (uu___254_14199.tc_term); - type_of = (uu___254_14199.type_of); - universe_of = (uu___254_14199.universe_of); - check_type_of = (uu___254_14199.check_type_of); - use_bv_sorts = (uu___254_14199.use_bv_sorts); - qtbl_name_and_index = (uu___254_14199.qtbl_name_and_index); - normalized_eff_names = (uu___254_14199.normalized_eff_names); - fv_delta_depths = (uu___254_14199.fv_delta_depths); - proof_ns = (uu___254_14199.proof_ns); - synth_hook = (uu___254_14199.synth_hook); - splice = (uu___254_14199.splice); - postprocess = (uu___254_14199.postprocess); - is_native_tactic = (uu___254_14199.is_native_tactic); - identifier_info = (uu___254_14199.identifier_info); - tc_hooks = (uu___254_14199.tc_hooks); - dsenv = (uu___254_14199.dsenv); - nbe = (uu___254_14199.nbe) + curmodule = (uu___253_14130.curmodule); + gamma = (uu___253_14130.gamma); + gamma_sig = (uu___253_14130.gamma_sig); + gamma_cache = (uu___253_14130.gamma_cache); + modules = (uu___253_14130.modules); + expected_typ = (uu___253_14130.expected_typ); + sigtab = (uu___253_14130.sigtab); + attrtab = (uu___253_14130.attrtab); + is_pattern = (uu___253_14130.is_pattern); + instantiate_imp = (uu___253_14130.instantiate_imp); + effects = (uu___253_14130.effects); + generalize = (uu___253_14130.generalize); + letrecs = (uu___253_14130.letrecs); + top_level = (uu___253_14130.top_level); + check_uvars = (uu___253_14130.check_uvars); + use_eq = (uu___253_14130.use_eq); + is_iface = (uu___253_14130.is_iface); + admit = (uu___253_14130.admit); + lax = (uu___253_14130.lax); + lax_universes = (uu___253_14130.lax_universes); + phase1 = (uu___253_14130.phase1); + failhard = (uu___253_14130.failhard); + nosynth = (uu___253_14130.nosynth); + uvar_subtyping = (uu___253_14130.uvar_subtyping); + tc_term = (uu___253_14130.tc_term); + type_of = (uu___253_14130.type_of); + universe_of = (uu___253_14130.universe_of); + check_type_of = (uu___253_14130.check_type_of); + use_bv_sorts = (uu___253_14130.use_bv_sorts); + qtbl_name_and_index = (uu___253_14130.qtbl_name_and_index); + normalized_eff_names = (uu___253_14130.normalized_eff_names); + fv_delta_depths = (uu___253_14130.fv_delta_depths); + proof_ns = (uu___253_14130.proof_ns); + synth_hook = (uu___253_14130.synth_hook); + splice = (uu___253_14130.splice); + postprocess = (uu___253_14130.postprocess); + is_native_tactic = (uu___253_14130.is_native_tactic); + identifier_info = (uu___253_14130.identifier_info); + tc_hooks = (uu___253_14130.tc_hooks); + dsenv = (uu___253_14130.dsenv); + nbe = (uu___253_14130.nbe) }) let (get_range : env -> FStar_Range.range) = fun e -> e.range let (toggle_id_info : env -> Prims.bool -> unit) = fun env -> fun enabled -> - let uu____14219 = - let uu____14220 = FStar_ST.op_Bang env.identifier_info in - FStar_TypeChecker_Common.id_info_toggle uu____14220 enabled in - FStar_ST.op_Colon_Equals env.identifier_info uu____14219 + let uu____14150 = + let uu____14151 = FStar_ST.op_Bang env.identifier_info in + FStar_TypeChecker_Common.id_info_toggle uu____14151 enabled in + FStar_ST.op_Colon_Equals env.identifier_info uu____14150 let (insert_bv_info : env -> FStar_Syntax_Syntax.bv -> FStar_Syntax_Syntax.typ -> unit) = fun env -> fun bv -> fun ty -> - let uu____14275 = - let uu____14276 = FStar_ST.op_Bang env.identifier_info in - FStar_TypeChecker_Common.id_info_insert_bv uu____14276 bv ty in - FStar_ST.op_Colon_Equals env.identifier_info uu____14275 + let uu____14206 = + let uu____14207 = FStar_ST.op_Bang env.identifier_info in + FStar_TypeChecker_Common.id_info_insert_bv uu____14207 bv ty in + FStar_ST.op_Colon_Equals env.identifier_info uu____14206 let (insert_fv_info : env -> FStar_Syntax_Syntax.fv -> FStar_Syntax_Syntax.typ -> unit) = fun env -> fun fv -> fun ty -> - let uu____14331 = - let uu____14332 = FStar_ST.op_Bang env.identifier_info in - FStar_TypeChecker_Common.id_info_insert_fv uu____14332 fv ty in - FStar_ST.op_Colon_Equals env.identifier_info uu____14331 + let uu____14262 = + let uu____14263 = FStar_ST.op_Bang env.identifier_info in + FStar_TypeChecker_Common.id_info_insert_fv uu____14263 fv ty in + FStar_ST.op_Colon_Equals env.identifier_info uu____14262 let (promote_id_info : env -> (FStar_Syntax_Syntax.typ -> FStar_Syntax_Syntax.typ) -> unit) = fun env -> fun ty_map -> - let uu____14387 = - let uu____14388 = FStar_ST.op_Bang env.identifier_info in - FStar_TypeChecker_Common.id_info_promote uu____14388 ty_map in - FStar_ST.op_Colon_Equals env.identifier_info uu____14387 + let uu____14318 = + let uu____14319 = FStar_ST.op_Bang env.identifier_info in + FStar_TypeChecker_Common.id_info_promote uu____14319 ty_map in + FStar_ST.op_Colon_Equals env.identifier_info uu____14318 let (modules : env -> FStar_Syntax_Syntax.modul Prims.list) = fun env -> env.modules @@ -2034,51 +2021,51 @@ let (current_module : env -> FStar_Ident.lident) = fun env -> env.curmodule let (set_current_module : env -> FStar_Ident.lident -> env) = fun env -> fun lid -> - let uu___255_14452 = env in + let uu___254_14383 = env in { - solver = (uu___255_14452.solver); - range = (uu___255_14452.range); + solver = (uu___254_14383.solver); + range = (uu___254_14383.range); curmodule = lid; - gamma = (uu___255_14452.gamma); - gamma_sig = (uu___255_14452.gamma_sig); - gamma_cache = (uu___255_14452.gamma_cache); - modules = (uu___255_14452.modules); - expected_typ = (uu___255_14452.expected_typ); - sigtab = (uu___255_14452.sigtab); - attrtab = (uu___255_14452.attrtab); - is_pattern = (uu___255_14452.is_pattern); - instantiate_imp = (uu___255_14452.instantiate_imp); - effects = (uu___255_14452.effects); - generalize = (uu___255_14452.generalize); - letrecs = (uu___255_14452.letrecs); - top_level = (uu___255_14452.top_level); - check_uvars = (uu___255_14452.check_uvars); - use_eq = (uu___255_14452.use_eq); - is_iface = (uu___255_14452.is_iface); - admit = (uu___255_14452.admit); - lax = (uu___255_14452.lax); - lax_universes = (uu___255_14452.lax_universes); - phase1 = (uu___255_14452.phase1); - failhard = (uu___255_14452.failhard); - nosynth = (uu___255_14452.nosynth); - uvar_subtyping = (uu___255_14452.uvar_subtyping); - tc_term = (uu___255_14452.tc_term); - type_of = (uu___255_14452.type_of); - universe_of = (uu___255_14452.universe_of); - check_type_of = (uu___255_14452.check_type_of); - use_bv_sorts = (uu___255_14452.use_bv_sorts); - qtbl_name_and_index = (uu___255_14452.qtbl_name_and_index); - normalized_eff_names = (uu___255_14452.normalized_eff_names); - fv_delta_depths = (uu___255_14452.fv_delta_depths); - proof_ns = (uu___255_14452.proof_ns); - synth_hook = (uu___255_14452.synth_hook); - splice = (uu___255_14452.splice); - postprocess = (uu___255_14452.postprocess); - is_native_tactic = (uu___255_14452.is_native_tactic); - identifier_info = (uu___255_14452.identifier_info); - tc_hooks = (uu___255_14452.tc_hooks); - dsenv = (uu___255_14452.dsenv); - nbe = (uu___255_14452.nbe) + gamma = (uu___254_14383.gamma); + gamma_sig = (uu___254_14383.gamma_sig); + gamma_cache = (uu___254_14383.gamma_cache); + modules = (uu___254_14383.modules); + expected_typ = (uu___254_14383.expected_typ); + sigtab = (uu___254_14383.sigtab); + attrtab = (uu___254_14383.attrtab); + is_pattern = (uu___254_14383.is_pattern); + instantiate_imp = (uu___254_14383.instantiate_imp); + effects = (uu___254_14383.effects); + generalize = (uu___254_14383.generalize); + letrecs = (uu___254_14383.letrecs); + top_level = (uu___254_14383.top_level); + check_uvars = (uu___254_14383.check_uvars); + use_eq = (uu___254_14383.use_eq); + is_iface = (uu___254_14383.is_iface); + admit = (uu___254_14383.admit); + lax = (uu___254_14383.lax); + lax_universes = (uu___254_14383.lax_universes); + phase1 = (uu___254_14383.phase1); + failhard = (uu___254_14383.failhard); + nosynth = (uu___254_14383.nosynth); + uvar_subtyping = (uu___254_14383.uvar_subtyping); + tc_term = (uu___254_14383.tc_term); + type_of = (uu___254_14383.type_of); + universe_of = (uu___254_14383.universe_of); + check_type_of = (uu___254_14383.check_type_of); + use_bv_sorts = (uu___254_14383.use_bv_sorts); + qtbl_name_and_index = (uu___254_14383.qtbl_name_and_index); + normalized_eff_names = (uu___254_14383.normalized_eff_names); + fv_delta_depths = (uu___254_14383.fv_delta_depths); + proof_ns = (uu___254_14383.proof_ns); + synth_hook = (uu___254_14383.synth_hook); + splice = (uu___254_14383.splice); + postprocess = (uu___254_14383.postprocess); + is_native_tactic = (uu___254_14383.is_native_tactic); + identifier_info = (uu___254_14383.identifier_info); + tc_hooks = (uu___254_14383.tc_hooks); + dsenv = (uu___254_14383.dsenv); + nbe = (uu___254_14383.nbe) } let (has_interface : env -> FStar_Ident.lident -> Prims.bool) = @@ -2097,32 +2084,32 @@ let (find_in_sigtab : = fun env -> fun lid -> - let uu____14483 = FStar_Ident.text_of_lid lid in - FStar_Util.smap_try_find (sigtab env) uu____14483 + let uu____14414 = FStar_Ident.text_of_lid lid in + FStar_Util.smap_try_find (sigtab env) uu____14414 let (name_not_found : FStar_Ident.lid -> (FStar_Errors.raw_error,Prims.string) FStar_Pervasives_Native.tuple2) = fun l -> - let uu____14496 = + let uu____14427 = FStar_Util.format1 "Name \"%s\" not found" l.FStar_Ident.str in - (FStar_Errors.Fatal_NameNotFound, uu____14496) + (FStar_Errors.Fatal_NameNotFound, uu____14427) let (variable_not_found : FStar_Syntax_Syntax.bv -> (FStar_Errors.raw_error,Prims.string) FStar_Pervasives_Native.tuple2) = fun v1 -> - let uu____14511 = - let uu____14513 = FStar_Syntax_Print.bv_to_string v1 in - FStar_Util.format1 "Variable \"%s\" not found" uu____14513 in - (FStar_Errors.Fatal_VariableNotFound, uu____14511) + let uu____14442 = + let uu____14444 = FStar_Syntax_Print.bv_to_string v1 in + FStar_Util.format1 "Variable \"%s\" not found" uu____14444 in + (FStar_Errors.Fatal_VariableNotFound, uu____14442) let (new_u_univ : unit -> FStar_Syntax_Syntax.universe) = - fun uu____14522 -> - let uu____14523 = FStar_Syntax_Unionfind.univ_fresh () in - FStar_Syntax_Syntax.U_unif uu____14523 + fun uu____14453 -> + let uu____14454 = FStar_Syntax_Unionfind.univ_fresh () in + FStar_Syntax_Syntax.U_unif uu____14454 let (mk_univ_subst : FStar_Syntax_Syntax.univ_name Prims.list -> @@ -2145,23 +2132,23 @@ let (inst_tscheme_with : fun us -> match (ts, us) with | (([],t),[]) -> ([], t) - | ((formals,t),uu____14623) -> + | ((formals,t),uu____14554) -> let vs = mk_univ_subst formals us in - let uu____14647 = FStar_Syntax_Subst.subst vs t in - (us, uu____14647) + let uu____14578 = FStar_Syntax_Subst.subst vs t in + (us, uu____14578) let (inst_tscheme : FStar_Syntax_Syntax.tscheme -> (FStar_Syntax_Syntax.universes,FStar_Syntax_Syntax.term) FStar_Pervasives_Native.tuple2) = - fun uu___233_14664 -> - match uu___233_14664 with + fun uu___232_14595 -> + match uu___232_14595 with | ([],t) -> ([], t) | (us,t) -> let us' = FStar_All.pipe_right us - (FStar_List.map (fun uu____14690 -> new_u_univ ())) + (FStar_List.map (fun uu____14621 -> new_u_univ ())) in inst_tscheme_with (us, t) us' @@ -2173,11 +2160,11 @@ let (inst_tscheme_with_range : = fun r -> fun t -> - let uu____14710 = inst_tscheme t in - match uu____14710 with + let uu____14641 = inst_tscheme t in + match uu____14641 with | (us,t1) -> - let uu____14721 = FStar_Syntax_Subst.set_use_range r t1 in - (us, uu____14721) + let uu____14652 = FStar_Syntax_Subst.set_use_range r t1 in + (us, uu____14652) let (inst_effect_fun_with : FStar_Syntax_Syntax.universes -> @@ -2188,8 +2175,8 @@ let (inst_effect_fun_with : fun insts -> fun env -> fun ed -> - fun uu____14742 -> - match uu____14742 with + fun uu____14673 -> + match uu____14673 with | (us,t) -> (match ed.FStar_Syntax_Syntax.binders with | [] -> @@ -2198,44 +2185,44 @@ let (inst_effect_fun_with : (if (FStar_List.length insts) <> (FStar_List.length univs1) then - (let uu____14764 = - let uu____14766 = + (let uu____14695 = + let uu____14697 = FStar_All.pipe_left FStar_Util.string_of_int (FStar_List.length univs1) in - let uu____14770 = + let uu____14701 = FStar_All.pipe_left FStar_Util.string_of_int (FStar_List.length insts) in - let uu____14774 = + let uu____14705 = FStar_Syntax_Print.lid_to_string ed.FStar_Syntax_Syntax.mname in - let uu____14776 = + let uu____14707 = FStar_Syntax_Print.term_to_string t in FStar_Util.format4 "Expected %s instantiations; got %s; failed universe instantiation in effect %s\n\t%s\n" - uu____14766 uu____14770 uu____14774 uu____14776 + uu____14697 uu____14701 uu____14705 uu____14707 in - failwith uu____14764) + failwith uu____14695) else (); - (let uu____14781 = + (let uu____14712 = inst_tscheme_with ((FStar_List.append ed.FStar_Syntax_Syntax.univs us), t) insts in - FStar_Pervasives_Native.snd uu____14781)) - | uu____14790 -> - let uu____14791 = - let uu____14793 = + FStar_Pervasives_Native.snd uu____14712)) + | uu____14721 -> + let uu____14722 = + let uu____14724 = FStar_Syntax_Print.lid_to_string ed.FStar_Syntax_Syntax.mname in FStar_Util.format1 "Unexpected use of an uninstantiated effect: %s\n" - uu____14793 + uu____14724 in - failwith uu____14791) + failwith uu____14722) type tri = | Yes @@ -2243,13 +2230,13 @@ type tri = | Maybe let (uu___is_Yes : tri -> Prims.bool) = fun projectee -> - match projectee with | Yes -> true | uu____14805 -> false + match projectee with | Yes -> true | uu____14736 -> false let (uu___is_No : tri -> Prims.bool) = - fun projectee -> match projectee with | No -> true | uu____14816 -> false + fun projectee -> match projectee with | No -> true | uu____14747 -> false let (uu___is_Maybe : tri -> Prims.bool) = fun projectee -> - match projectee with | Maybe -> true | uu____14827 -> false + match projectee with | Maybe -> true | uu____14758 -> false let (in_cur_mod : env -> FStar_Ident.lident -> tri) = fun env -> @@ -2266,12 +2253,12 @@ let (in_cur_mod : env -> FStar_Ident.lident -> tri) = FStar_List.append cur.FStar_Ident.ns [cur.FStar_Ident.ident] in let rec aux c l1 = match (c, l1) with - | ([],uu____14875) -> Maybe - | (uu____14882,[]) -> No + | ([],uu____14806) -> Maybe + | (uu____14813,[]) -> No | (hd1::tl1,hd'::tl') when hd1.FStar_Ident.idText = hd'.FStar_Ident.idText -> aux tl1 tl' - | uu____14902 -> No in + | uu____14833 -> No in aux cur1 lns) else No @@ -2292,56 +2279,56 @@ let (lookup_qname : env -> FStar_Ident.lident -> qninfo) = let found = if cur_mod <> No then - let uu____14996 = + let uu____14927 = FStar_Util.smap_try_find (gamma_cache env) lid.FStar_Ident.str in - match uu____14996 with + match uu____14927 with | FStar_Pervasives_Native.None -> - let uu____15019 = + let uu____14950 = FStar_Util.find_map env.gamma - (fun uu___234_15063 -> - match uu___234_15063 with + (fun uu___233_14994 -> + match uu___233_14994 with | FStar_Syntax_Syntax.Binding_lid (l,t) -> - let uu____15102 = FStar_Ident.lid_equals lid l in - if uu____15102 + let uu____15033 = FStar_Ident.lid_equals lid l in + if uu____15033 then - let uu____15125 = - let uu____15144 = - let uu____15159 = inst_tscheme t in - FStar_Util.Inl uu____15159 in - let uu____15174 = FStar_Ident.range_of_lid l in - (uu____15144, uu____15174) in - FStar_Pervasives_Native.Some uu____15125 + let uu____15056 = + let uu____15075 = + let uu____15090 = inst_tscheme t in + FStar_Util.Inl uu____15090 in + let uu____15105 = FStar_Ident.range_of_lid l in + (uu____15075, uu____15105) in + FStar_Pervasives_Native.Some uu____15056 else FStar_Pervasives_Native.None - | uu____15227 -> FStar_Pervasives_Native.None) + | uu____15158 -> FStar_Pervasives_Native.None) in - FStar_Util.catch_opt uu____15019 - (fun uu____15265 -> + FStar_Util.catch_opt uu____14950 + (fun uu____15196 -> FStar_Util.find_map env.gamma_sig - (fun uu___235_15274 -> - match uu___235_15274 with - | (uu____15277,{ + (fun uu___234_15205 -> + match uu___234_15205 with + | (uu____15208,{ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_bundle - (ses,uu____15279); + (ses,uu____15210); FStar_Syntax_Syntax.sigrng = - uu____15280; + uu____15211; FStar_Syntax_Syntax.sigquals = - uu____15281; + uu____15212; FStar_Syntax_Syntax.sigmeta = - uu____15282; + uu____15213; FStar_Syntax_Syntax.sigattrs = - uu____15283;_}) + uu____15214;_}) -> FStar_Util.find_map ses (fun se -> - let uu____15303 = + let uu____15234 = FStar_All.pipe_right (FStar_Syntax_Util.lids_of_sigelt se) (FStar_Util.for_some (FStar_Ident.lid_equals lid)) in - if uu____15303 + if uu____15234 then cache ((FStar_Util.Inr @@ -2352,32 +2339,32 @@ let (lookup_qname : env -> FStar_Ident.lident -> qninfo) = let maybe_cache t = match s.FStar_Syntax_Syntax.sigel with | FStar_Syntax_Syntax.Sig_declare_typ - uu____15355 -> + uu____15286 -> FStar_Pervasives_Native.Some t - | uu____15362 -> cache t in - let uu____15363 = + | uu____15293 -> cache t in + let uu____15294 = FStar_List.tryFind (FStar_Ident.lid_equals lid) lids in - (match uu____15363 with + (match uu____15294 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some l -> - let uu____15369 = - let uu____15370 = + let uu____15300 = + let uu____15301 = FStar_Ident.range_of_lid l in ((FStar_Util.Inr (s, FStar_Pervasives_Native.None)), - uu____15370) + uu____15301) in - maybe_cache uu____15369))) + maybe_cache uu____15300))) | se -> se else FStar_Pervasives_Native.None in if FStar_Util.is_some found then found else - (let uu____15441 = find_in_sigtab env lid in - match uu____15441 with + (let uu____15372 = find_in_sigtab env lid in + match uu____15372 with | FStar_Pervasives_Native.Some se -> FStar_Pervasives_Native.Some ((FStar_Util.Inr (se, FStar_Pervasives_Native.None)), @@ -2391,10 +2378,10 @@ let (lookup_sigelt : = fun env -> fun lid -> - let uu____15522 = lookup_qname env lid in - match uu____15522 with + let uu____15453 = lookup_qname env lid in + match uu____15453 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None - | FStar_Pervasives_Native.Some (FStar_Util.Inl uu____15543,rng) -> + | FStar_Pervasives_Native.Some (FStar_Util.Inl uu____15474,rng) -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some (FStar_Util.Inr (se,us),rng) -> FStar_Pervasives_Native.Some se @@ -2403,8 +2390,8 @@ let (lookup_attr : env -> Prims.string -> FStar_Syntax_Syntax.sigelt Prims.list) = fun env -> fun attr -> - let uu____15657 = FStar_Util.smap_try_find (attrtab env) attr in - match uu____15657 with + let uu____15588 = FStar_Util.smap_try_find (attrtab env) attr in + match uu____15588 with | FStar_Pervasives_Native.Some ses -> ses | FStar_Pervasives_Native.None -> [] @@ -2412,29 +2399,29 @@ let (add_se_to_attrtab : env -> FStar_Syntax_Syntax.sigelt -> unit) = fun env -> fun se -> let add_one1 env1 se1 attr = - let uu____15702 = - let uu____15705 = lookup_attr env1 attr in se1 :: uu____15705 in - FStar_Util.smap_add (attrtab env1) attr uu____15702 in + let uu____15633 = + let uu____15636 = lookup_attr env1 attr in se1 :: uu____15636 in + FStar_Util.smap_add (attrtab env1) attr uu____15633 in FStar_List.iter (fun attr -> - let uu____15715 = - let uu____15716 = FStar_Syntax_Subst.compress attr in - uu____15716.FStar_Syntax_Syntax.n in - match uu____15715 with + let uu____15646 = + let uu____15647 = FStar_Syntax_Subst.compress attr in + uu____15647.FStar_Syntax_Syntax.n in + match uu____15646 with | FStar_Syntax_Syntax.Tm_fvar fv -> - let uu____15720 = - let uu____15722 = FStar_Syntax_Syntax.lid_of_fv fv in - uu____15722.FStar_Ident.str in - add_one1 env se uu____15720 - | uu____15723 -> ()) se.FStar_Syntax_Syntax.sigattrs + let uu____15651 = + let uu____15653 = FStar_Syntax_Syntax.lid_of_fv fv in + uu____15653.FStar_Ident.str in + add_one1 env se uu____15651 + | uu____15654 -> ()) se.FStar_Syntax_Syntax.sigattrs let rec (add_sigelt : env -> FStar_Syntax_Syntax.sigelt -> unit) = fun env -> fun se -> match se.FStar_Syntax_Syntax.sigel with - | FStar_Syntax_Syntax.Sig_bundle (ses,uu____15746) -> + | FStar_Syntax_Syntax.Sig_bundle (ses,uu____15677) -> add_sigelts env ses - | uu____15755 -> + | uu____15686 -> let lids = FStar_Syntax_Util.lids_of_sigelt se in (FStar_List.iter (fun l -> FStar_Util.smap_add (sigtab env) l.FStar_Ident.str se) @@ -2453,7 +2440,7 @@ let rec (add_sigelt : env -> FStar_Syntax_Syntax.sigelt -> unit) = FStar_Util.smap_add (sigtab env) (a.FStar_Syntax_Syntax.action_name).FStar_Ident.str se_let)) - | uu____15770 -> ())) + | uu____15701 -> ())) and (add_sigelts : env -> FStar_Syntax_Syntax.sigelt Prims.list -> unit) = fun env -> @@ -2468,14 +2455,14 @@ let (try_lookup_bv : fun env -> fun bv -> FStar_Util.find_map env.gamma - (fun uu___236_15802 -> - match uu___236_15802 with + (fun uu___235_15733 -> + match uu___235_15733 with | FStar_Syntax_Syntax.Binding_var id1 when FStar_Syntax_Syntax.bv_eq id1 bv -> FStar_Pervasives_Native.Some ((id1.FStar_Syntax_Syntax.sort), ((id1.FStar_Syntax_Syntax.ppname).FStar_Ident.idRange)) - | uu____15820 -> FStar_Pervasives_Native.None) + | uu____15751 -> FStar_Pervasives_Native.None) let (lookup_type_of_let : FStar_Syntax_Syntax.universes FStar_Pervasives_Native.option -> @@ -2493,41 +2480,41 @@ let (lookup_type_of_let : | FStar_Pervasives_Native.None -> inst_tscheme ts | FStar_Pervasives_Native.Some us -> inst_tscheme_with ts us in match se.FStar_Syntax_Syntax.sigel with - | FStar_Syntax_Syntax.Sig_let ((uu____15882,lb::[]),uu____15884) -> - let uu____15893 = - let uu____15902 = + | FStar_Syntax_Syntax.Sig_let ((uu____15813,lb::[]),uu____15815) -> + let uu____15824 = + let uu____15833 = inst_tscheme1 ((lb.FStar_Syntax_Syntax.lbunivs), (lb.FStar_Syntax_Syntax.lbtyp)) in - let uu____15911 = + let uu____15842 = FStar_Syntax_Syntax.range_of_lbname lb.FStar_Syntax_Syntax.lbname in - (uu____15902, uu____15911) in - FStar_Pervasives_Native.Some uu____15893 - | FStar_Syntax_Syntax.Sig_let ((uu____15924,lbs),uu____15926) -> + (uu____15833, uu____15842) in + FStar_Pervasives_Native.Some uu____15824 + | FStar_Syntax_Syntax.Sig_let ((uu____15855,lbs),uu____15857) -> FStar_Util.find_map lbs (fun lb -> match lb.FStar_Syntax_Syntax.lbname with - | FStar_Util.Inl uu____15958 -> failwith "impossible" + | FStar_Util.Inl uu____15889 -> failwith "impossible" | FStar_Util.Inr fv -> - let uu____15971 = FStar_Syntax_Syntax.fv_eq_lid fv lid + let uu____15902 = FStar_Syntax_Syntax.fv_eq_lid fv lid in - if uu____15971 + if uu____15902 then - let uu____15984 = - let uu____15993 = + let uu____15915 = + let uu____15924 = inst_tscheme1 ((lb.FStar_Syntax_Syntax.lbunivs), (lb.FStar_Syntax_Syntax.lbtyp)) in - let uu____16002 = FStar_Syntax_Syntax.range_of_fv fv + let uu____15933 = FStar_Syntax_Syntax.range_of_fv fv in - (uu____15993, uu____16002) in - FStar_Pervasives_Native.Some uu____15984 + (uu____15924, uu____15933) in + FStar_Pervasives_Native.Some uu____15915 else FStar_Pervasives_Native.None) - | uu____16025 -> FStar_Pervasives_Native.None + | uu____15956 -> FStar_Pervasives_Native.None let (effect_signature : FStar_Syntax_Syntax.universes FStar_Pervasives_Native.option -> @@ -2544,35 +2531,35 @@ let (effect_signature : | FStar_Pervasives_Native.Some us -> inst_tscheme_with ts us in match se.FStar_Syntax_Syntax.sigel with | FStar_Syntax_Syntax.Sig_new_effect ne -> - let uu____16085 = - let uu____16094 = - let uu____16099 = - let uu____16100 = - let uu____16103 = + let uu____16016 = + let uu____16025 = + let uu____16030 = + let uu____16031 = + let uu____16034 = FStar_Syntax_Syntax.mk_Total ne.FStar_Syntax_Syntax.signature in FStar_Syntax_Util.arrow ne.FStar_Syntax_Syntax.binders - uu____16103 + uu____16034 in - ((ne.FStar_Syntax_Syntax.univs), uu____16100) in - inst_tscheme1 uu____16099 in - (uu____16094, (se.FStar_Syntax_Syntax.sigrng)) in - FStar_Pervasives_Native.Some uu____16085 + ((ne.FStar_Syntax_Syntax.univs), uu____16031) in + inst_tscheme1 uu____16030 in + (uu____16025, (se.FStar_Syntax_Syntax.sigrng)) in + FStar_Pervasives_Native.Some uu____16016 | FStar_Syntax_Syntax.Sig_effect_abbrev - (lid,us,binders,uu____16125,uu____16126) -> - let uu____16131 = - let uu____16140 = - let uu____16145 = - let uu____16146 = - let uu____16149 = + (lid,us,binders,uu____16056,uu____16057) -> + let uu____16062 = + let uu____16071 = + let uu____16076 = + let uu____16077 = + let uu____16080 = FStar_Syntax_Syntax.mk_Total FStar_Syntax_Syntax.teff in - FStar_Syntax_Util.arrow binders uu____16149 in - (us, uu____16146) in - inst_tscheme1 uu____16145 in - (uu____16140, (se.FStar_Syntax_Syntax.sigrng)) in - FStar_Pervasives_Native.Some uu____16131 - | uu____16168 -> FStar_Pervasives_Native.None + FStar_Syntax_Util.arrow binders uu____16080 in + (us, uu____16077) in + inst_tscheme1 uu____16076 in + (uu____16071, (se.FStar_Syntax_Syntax.sigrng)) in + FStar_Pervasives_Native.Some uu____16062 + | uu____16099 -> FStar_Pervasives_Native.None let (try_lookup_lid_aux : FStar_Syntax_Syntax.universes FStar_Pervasives_Native.option -> @@ -2590,8 +2577,8 @@ let (try_lookup_lid_aux : match us_opt with | FStar_Pervasives_Native.None -> inst_tscheme ts | FStar_Pervasives_Native.Some us -> inst_tscheme_with ts us in - let mapper uu____16257 = - match uu____16257 with + let mapper uu____16188 = + match uu____16188 with | (lr,rng) -> (match lr with | FStar_Util.Inl t -> FStar_Pervasives_Native.Some (t, rng) @@ -2599,161 +2586,161 @@ let (try_lookup_lid_aux : ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_datacon - (uu____16353,uvs,t,uu____16356,uu____16357,uu____16358); - FStar_Syntax_Syntax.sigrng = uu____16359; - FStar_Syntax_Syntax.sigquals = uu____16360; - FStar_Syntax_Syntax.sigmeta = uu____16361; - FStar_Syntax_Syntax.sigattrs = uu____16362;_},FStar_Pervasives_Native.None + (uu____16284,uvs,t,uu____16287,uu____16288,uu____16289); + FStar_Syntax_Syntax.sigrng = uu____16290; + FStar_Syntax_Syntax.sigquals = uu____16291; + FStar_Syntax_Syntax.sigmeta = uu____16292; + FStar_Syntax_Syntax.sigattrs = uu____16293;_},FStar_Pervasives_Native.None ) -> - let uu____16385 = - let uu____16394 = inst_tscheme1 (uvs, t) in - (uu____16394, rng) in - FStar_Pervasives_Native.Some uu____16385 + let uu____16316 = + let uu____16325 = inst_tscheme1 (uvs, t) in + (uu____16325, rng) in + FStar_Pervasives_Native.Some uu____16316 | FStar_Util.Inr ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_declare_typ (l,uvs,t); - FStar_Syntax_Syntax.sigrng = uu____16418; + FStar_Syntax_Syntax.sigrng = uu____16349; FStar_Syntax_Syntax.sigquals = qs; - FStar_Syntax_Syntax.sigmeta = uu____16420; - FStar_Syntax_Syntax.sigattrs = uu____16421;_},FStar_Pervasives_Native.None + FStar_Syntax_Syntax.sigmeta = uu____16351; + FStar_Syntax_Syntax.sigattrs = uu____16352;_},FStar_Pervasives_Native.None ) -> - let uu____16438 = - let uu____16440 = in_cur_mod env l in uu____16440 = Yes + let uu____16369 = + let uu____16371 = in_cur_mod env l in uu____16371 = Yes in - if uu____16438 + if uu____16369 then - let uu____16452 = + let uu____16383 = (FStar_All.pipe_right qs (FStar_List.contains FStar_Syntax_Syntax.Assumption)) || env.is_iface in - (if uu____16452 + (if uu____16383 then - let uu____16468 = - let uu____16477 = inst_tscheme1 (uvs, t) in - (uu____16477, rng) in - FStar_Pervasives_Native.Some uu____16468 + let uu____16399 = + let uu____16408 = inst_tscheme1 (uvs, t) in + (uu____16408, rng) in + FStar_Pervasives_Native.Some uu____16399 else FStar_Pervasives_Native.None) else - (let uu____16510 = - let uu____16519 = inst_tscheme1 (uvs, t) in - (uu____16519, rng) in - FStar_Pervasives_Native.Some uu____16510) + (let uu____16441 = + let uu____16450 = inst_tscheme1 (uvs, t) in + (uu____16450, rng) in + FStar_Pervasives_Native.Some uu____16441) | FStar_Util.Inr ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_inductive_typ - (lid1,uvs,tps,k,uu____16544,uu____16545); - FStar_Syntax_Syntax.sigrng = uu____16546; - FStar_Syntax_Syntax.sigquals = uu____16547; - FStar_Syntax_Syntax.sigmeta = uu____16548; - FStar_Syntax_Syntax.sigattrs = uu____16549;_},FStar_Pervasives_Native.None + (lid1,uvs,tps,k,uu____16475,uu____16476); + FStar_Syntax_Syntax.sigrng = uu____16477; + FStar_Syntax_Syntax.sigquals = uu____16478; + FStar_Syntax_Syntax.sigmeta = uu____16479; + FStar_Syntax_Syntax.sigattrs = uu____16480;_},FStar_Pervasives_Native.None ) -> (match tps with | [] -> - let uu____16590 = - let uu____16599 = inst_tscheme1 (uvs, k) in - (uu____16599, rng) in - FStar_Pervasives_Native.Some uu____16590 - | uu____16620 -> - let uu____16621 = - let uu____16630 = - let uu____16635 = - let uu____16636 = - let uu____16639 = + let uu____16521 = + let uu____16530 = inst_tscheme1 (uvs, k) in + (uu____16530, rng) in + FStar_Pervasives_Native.Some uu____16521 + | uu____16551 -> + let uu____16552 = + let uu____16561 = + let uu____16566 = + let uu____16567 = + let uu____16570 = FStar_Syntax_Syntax.mk_Total k in - FStar_Syntax_Util.flat_arrow tps uu____16639 + FStar_Syntax_Util.flat_arrow tps uu____16570 in - (uvs, uu____16636) in - inst_tscheme1 uu____16635 in - (uu____16630, rng) in - FStar_Pervasives_Native.Some uu____16621) + (uvs, uu____16567) in + inst_tscheme1 uu____16566 in + (uu____16561, rng) in + FStar_Pervasives_Native.Some uu____16552) | FStar_Util.Inr ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_inductive_typ - (lid1,uvs,tps,k,uu____16662,uu____16663); - FStar_Syntax_Syntax.sigrng = uu____16664; - FStar_Syntax_Syntax.sigquals = uu____16665; - FStar_Syntax_Syntax.sigmeta = uu____16666; - FStar_Syntax_Syntax.sigattrs = uu____16667;_},FStar_Pervasives_Native.Some + (lid1,uvs,tps,k,uu____16593,uu____16594); + FStar_Syntax_Syntax.sigrng = uu____16595; + FStar_Syntax_Syntax.sigquals = uu____16596; + FStar_Syntax_Syntax.sigmeta = uu____16597; + FStar_Syntax_Syntax.sigattrs = uu____16598;_},FStar_Pervasives_Native.Some us) -> (match tps with | [] -> - let uu____16709 = - let uu____16718 = inst_tscheme_with (uvs, k) us in - (uu____16718, rng) in - FStar_Pervasives_Native.Some uu____16709 - | uu____16739 -> - let uu____16740 = - let uu____16749 = - let uu____16754 = - let uu____16755 = - let uu____16758 = + let uu____16640 = + let uu____16649 = inst_tscheme_with (uvs, k) us in + (uu____16649, rng) in + FStar_Pervasives_Native.Some uu____16640 + | uu____16670 -> + let uu____16671 = + let uu____16680 = + let uu____16685 = + let uu____16686 = + let uu____16689 = FStar_Syntax_Syntax.mk_Total k in - FStar_Syntax_Util.flat_arrow tps uu____16758 + FStar_Syntax_Util.flat_arrow tps uu____16689 in - (uvs, uu____16755) in - inst_tscheme_with uu____16754 us in - (uu____16749, rng) in - FStar_Pervasives_Native.Some uu____16740) + (uvs, uu____16686) in + inst_tscheme_with uu____16685 us in + (uu____16680, rng) in + FStar_Pervasives_Native.Some uu____16671) | FStar_Util.Inr se -> - let uu____16794 = + let uu____16725 = match se with | ({ FStar_Syntax_Syntax.sigel = - FStar_Syntax_Syntax.Sig_let uu____16815; - FStar_Syntax_Syntax.sigrng = uu____16816; - FStar_Syntax_Syntax.sigquals = uu____16817; - FStar_Syntax_Syntax.sigmeta = uu____16818; - FStar_Syntax_Syntax.sigattrs = uu____16819;_},FStar_Pervasives_Native.None + FStar_Syntax_Syntax.Sig_let uu____16746; + FStar_Syntax_Syntax.sigrng = uu____16747; + FStar_Syntax_Syntax.sigquals = uu____16748; + FStar_Syntax_Syntax.sigmeta = uu____16749; + FStar_Syntax_Syntax.sigattrs = uu____16750;_},FStar_Pervasives_Native.None ) -> lookup_type_of_let us_opt (FStar_Pervasives_Native.fst se) lid - | uu____16834 -> + | uu____16765 -> effect_signature us_opt (FStar_Pervasives_Native.fst se) in - FStar_All.pipe_right uu____16794 + FStar_All.pipe_right uu____16725 (FStar_Util.map_option - (fun uu____16882 -> - match uu____16882 with + (fun uu____16813 -> + match uu____16813 with | (us_t,rng1) -> (us_t, rng1)))) in - let uu____16913 = - let uu____16924 = lookup_qname env lid in - FStar_Util.bind_opt uu____16924 mapper in - match uu____16913 with + let uu____16844 = + let uu____16855 = lookup_qname env lid in + FStar_Util.bind_opt uu____16855 mapper in + match uu____16844 with | FStar_Pervasives_Native.Some ((us,t),r) -> - let uu____16998 = - let uu____17009 = - let uu____17016 = - let uu___256_17019 = t in - let uu____17020 = FStar_Ident.range_of_lid lid in + let uu____16929 = + let uu____16940 = + let uu____16947 = + let uu___255_16950 = t in + let uu____16951 = FStar_Ident.range_of_lid lid in { FStar_Syntax_Syntax.n = - (uu___256_17019.FStar_Syntax_Syntax.n); - FStar_Syntax_Syntax.pos = uu____17020; + (uu___255_16950.FStar_Syntax_Syntax.n); + FStar_Syntax_Syntax.pos = uu____16951; FStar_Syntax_Syntax.vars = - (uu___256_17019.FStar_Syntax_Syntax.vars) + (uu___255_16950.FStar_Syntax_Syntax.vars) } in - (us, uu____17016) in - (uu____17009, r) in - FStar_Pervasives_Native.Some uu____16998 + (us, uu____16947) in + (uu____16940, r) in + FStar_Pervasives_Native.Some uu____16929 | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None let (lid_exists : env -> FStar_Ident.lident -> Prims.bool) = fun env -> fun l -> - let uu____17069 = lookup_qname env l in - match uu____17069 with + let uu____17000 = lookup_qname env l in + match uu____17000 with | FStar_Pervasives_Native.None -> false - | FStar_Pervasives_Native.Some uu____17090 -> true + | FStar_Pervasives_Native.Some uu____17021 -> true let (lookup_bv : env -> @@ -2764,17 +2751,17 @@ let (lookup_bv : fun env -> fun bv -> let bvr = FStar_Syntax_Syntax.range_of_bv bv in - let uu____17144 = try_lookup_bv env bv in - match uu____17144 with + let uu____17075 = try_lookup_bv env bv in + match uu____17075 with | FStar_Pervasives_Native.None -> - let uu____17159 = variable_not_found bv in - FStar_Errors.raise_error uu____17159 bvr + let uu____17090 = variable_not_found bv in + FStar_Errors.raise_error uu____17090 bvr | FStar_Pervasives_Native.Some (t,r) -> - let uu____17175 = FStar_Syntax_Subst.set_use_range bvr t in - let uu____17176 = - let uu____17177 = FStar_Range.use_range bvr in - FStar_Range.set_use_range r uu____17177 in - (uu____17175, uu____17176) + let uu____17106 = FStar_Syntax_Subst.set_use_range bvr t in + let uu____17107 = + let uu____17108 = FStar_Range.use_range bvr in + FStar_Range.set_use_range r uu____17108 in + (uu____17106, uu____17107) let (try_lookup_lid : env -> @@ -2785,22 +2772,22 @@ let (try_lookup_lid : = fun env -> fun l -> - let uu____17199 = try_lookup_lid_aux FStar_Pervasives_Native.None env l + let uu____17130 = try_lookup_lid_aux FStar_Pervasives_Native.None env l in - match uu____17199 with + match uu____17130 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some ((us,t),r) -> let use_range1 = FStar_Ident.range_of_lid l in let r1 = - let uu____17265 = FStar_Range.use_range use_range1 in - FStar_Range.set_use_range r uu____17265 in - let uu____17266 = - let uu____17275 = - let uu____17280 = FStar_Syntax_Subst.set_use_range use_range1 t + let uu____17196 = FStar_Range.use_range use_range1 in + FStar_Range.set_use_range r uu____17196 in + let uu____17197 = + let uu____17206 = + let uu____17211 = FStar_Syntax_Subst.set_use_range use_range1 t in - (us, uu____17280) in - (uu____17275, r1) in - FStar_Pervasives_Native.Some uu____17266 + (us, uu____17211) in + (uu____17206, r1) in + FStar_Pervasives_Native.Some uu____17197 let (try_lookup_and_inst_lid : env -> @@ -2812,20 +2799,20 @@ let (try_lookup_and_inst_lid : fun env -> fun us -> fun l -> - let uu____17315 = + let uu____17246 = try_lookup_lid_aux (FStar_Pervasives_Native.Some us) env l in - match uu____17315 with + match uu____17246 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None - | FStar_Pervasives_Native.Some ((uu____17348,t),r) -> + | FStar_Pervasives_Native.Some ((uu____17279,t),r) -> let use_range1 = FStar_Ident.range_of_lid l in let r1 = - let uu____17373 = FStar_Range.use_range use_range1 in - FStar_Range.set_use_range r uu____17373 in - let uu____17374 = - let uu____17379 = FStar_Syntax_Subst.set_use_range use_range1 t + let uu____17304 = FStar_Range.use_range use_range1 in + FStar_Range.set_use_range r uu____17304 in + let uu____17305 = + let uu____17310 = FStar_Syntax_Subst.set_use_range use_range1 t in - (uu____17379, r1) in - FStar_Pervasives_Native.Some uu____17374 + (uu____17310, r1) in + FStar_Pervasives_Native.Some uu____17305 let (lookup_lid : env -> @@ -2836,12 +2823,12 @@ let (lookup_lid : = fun env -> fun l -> - let uu____17403 = try_lookup_lid env l in - match uu____17403 with + let uu____17334 = try_lookup_lid env l in + match uu____17334 with | FStar_Pervasives_Native.None -> - let uu____17430 = name_not_found l in - let uu____17436 = FStar_Ident.range_of_lid l in - FStar_Errors.raise_error uu____17430 uu____17436 + let uu____17361 = name_not_found l in + let uu____17367 = FStar_Ident.range_of_lid l in + FStar_Errors.raise_error uu____17361 uu____17367 | FStar_Pervasives_Native.Some v1 -> v1 let (lookup_univ : env -> FStar_Syntax_Syntax.univ_name -> Prims.bool) = @@ -2849,11 +2836,11 @@ let (lookup_univ : env -> FStar_Syntax_Syntax.univ_name -> Prims.bool) = fun x -> FStar_All.pipe_right (FStar_List.find - (fun uu___237_17479 -> - match uu___237_17479 with + (fun uu___236_17410 -> + match uu___236_17410 with | FStar_Syntax_Syntax.Binding_univ y -> x.FStar_Ident.idText = y.FStar_Ident.idText - | uu____17483 -> false) env.gamma) FStar_Option.isSome + | uu____17414 -> false) env.gamma) FStar_Option.isSome let (try_lookup_val_decl : env -> @@ -2863,28 +2850,28 @@ let (try_lookup_val_decl : = fun env -> fun lid -> - let uu____17504 = lookup_qname env lid in - match uu____17504 with + let uu____17435 = lookup_qname env lid in + match uu____17435 with | FStar_Pervasives_Native.Some (FStar_Util.Inr ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_declare_typ - (uu____17513,uvs,t); - FStar_Syntax_Syntax.sigrng = uu____17516; + (uu____17444,uvs,t); + FStar_Syntax_Syntax.sigrng = uu____17447; FStar_Syntax_Syntax.sigquals = q; - FStar_Syntax_Syntax.sigmeta = uu____17518; - FStar_Syntax_Syntax.sigattrs = uu____17519;_},FStar_Pervasives_Native.None - ),uu____17520) + FStar_Syntax_Syntax.sigmeta = uu____17449; + FStar_Syntax_Syntax.sigattrs = uu____17450;_},FStar_Pervasives_Native.None + ),uu____17451) -> - let uu____17569 = - let uu____17576 = - let uu____17577 = - let uu____17580 = FStar_Ident.range_of_lid lid in - FStar_Syntax_Subst.set_use_range uu____17580 t in - (uvs, uu____17577) in - (uu____17576, q) in - FStar_Pervasives_Native.Some uu____17569 - | uu____17593 -> FStar_Pervasives_Native.None + let uu____17500 = + let uu____17507 = + let uu____17508 = + let uu____17511 = FStar_Ident.range_of_lid lid in + FStar_Syntax_Subst.set_use_range uu____17511 t in + (uvs, uu____17508) in + (uu____17507, q) in + FStar_Pervasives_Native.Some uu____17500 + | uu____17524 -> FStar_Pervasives_Native.None let (lookup_val_decl : env -> @@ -2894,25 +2881,25 @@ let (lookup_val_decl : = fun env -> fun lid -> - let uu____17615 = lookup_qname env lid in - match uu____17615 with + let uu____17546 = lookup_qname env lid in + match uu____17546 with | FStar_Pervasives_Native.Some (FStar_Util.Inr ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_declare_typ - (uu____17620,uvs,t); - FStar_Syntax_Syntax.sigrng = uu____17623; - FStar_Syntax_Syntax.sigquals = uu____17624; - FStar_Syntax_Syntax.sigmeta = uu____17625; - FStar_Syntax_Syntax.sigattrs = uu____17626;_},FStar_Pervasives_Native.None - ),uu____17627) + (uu____17551,uvs,t); + FStar_Syntax_Syntax.sigrng = uu____17554; + FStar_Syntax_Syntax.sigquals = uu____17555; + FStar_Syntax_Syntax.sigmeta = uu____17556; + FStar_Syntax_Syntax.sigattrs = uu____17557;_},FStar_Pervasives_Native.None + ),uu____17558) -> - let uu____17676 = FStar_Ident.range_of_lid lid in - inst_tscheme_with_range uu____17676 (uvs, t) - | uu____17681 -> - let uu____17682 = name_not_found lid in - let uu____17688 = FStar_Ident.range_of_lid lid in - FStar_Errors.raise_error uu____17682 uu____17688 + let uu____17607 = FStar_Ident.range_of_lid lid in + inst_tscheme_with_range uu____17607 (uvs, t) + | uu____17612 -> + let uu____17613 = name_not_found lid in + let uu____17619 = FStar_Ident.range_of_lid lid in + FStar_Errors.raise_error uu____17613 uu____17619 let (lookup_datacon : env -> @@ -2922,25 +2909,25 @@ let (lookup_datacon : = fun env -> fun lid -> - let uu____17708 = lookup_qname env lid in - match uu____17708 with + let uu____17639 = lookup_qname env lid in + match uu____17639 with | FStar_Pervasives_Native.Some (FStar_Util.Inr ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_datacon - (uu____17713,uvs,t,uu____17716,uu____17717,uu____17718); - FStar_Syntax_Syntax.sigrng = uu____17719; - FStar_Syntax_Syntax.sigquals = uu____17720; - FStar_Syntax_Syntax.sigmeta = uu____17721; - FStar_Syntax_Syntax.sigattrs = uu____17722;_},FStar_Pervasives_Native.None - ),uu____17723) + (uu____17644,uvs,t,uu____17647,uu____17648,uu____17649); + FStar_Syntax_Syntax.sigrng = uu____17650; + FStar_Syntax_Syntax.sigquals = uu____17651; + FStar_Syntax_Syntax.sigmeta = uu____17652; + FStar_Syntax_Syntax.sigattrs = uu____17653;_},FStar_Pervasives_Native.None + ),uu____17654) -> - let uu____17778 = FStar_Ident.range_of_lid lid in - inst_tscheme_with_range uu____17778 (uvs, t) - | uu____17783 -> - let uu____17784 = name_not_found lid in - let uu____17790 = FStar_Ident.range_of_lid lid in - FStar_Errors.raise_error uu____17784 uu____17790 + let uu____17709 = FStar_Ident.range_of_lid lid in + inst_tscheme_with_range uu____17709 (uvs, t) + | uu____17714 -> + let uu____17715 = name_not_found lid in + let uu____17721 = FStar_Ident.range_of_lid lid in + FStar_Errors.raise_error uu____17715 uu____17721 let (datacons_of_typ : env -> @@ -2950,41 +2937,41 @@ let (datacons_of_typ : = fun env -> fun lid -> - let uu____17813 = lookup_qname env lid in - match uu____17813 with + let uu____17744 = lookup_qname env lid in + match uu____17744 with | FStar_Pervasives_Native.Some (FStar_Util.Inr ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_inductive_typ - (uu____17821,uu____17822,uu____17823,uu____17824,uu____17825,dcs); - FStar_Syntax_Syntax.sigrng = uu____17827; - FStar_Syntax_Syntax.sigquals = uu____17828; - FStar_Syntax_Syntax.sigmeta = uu____17829; - FStar_Syntax_Syntax.sigattrs = uu____17830;_},uu____17831),uu____17832) + (uu____17752,uu____17753,uu____17754,uu____17755,uu____17756,dcs); + FStar_Syntax_Syntax.sigrng = uu____17758; + FStar_Syntax_Syntax.sigquals = uu____17759; + FStar_Syntax_Syntax.sigmeta = uu____17760; + FStar_Syntax_Syntax.sigattrs = uu____17761;_},uu____17762),uu____17763) -> (true, dcs) - | uu____17895 -> (false, []) + | uu____17826 -> (false, []) let (typ_of_datacon : env -> FStar_Ident.lident -> FStar_Ident.lident) = fun env -> fun lid -> - let uu____17911 = lookup_qname env lid in - match uu____17911 with + let uu____17842 = lookup_qname env lid in + match uu____17842 with | FStar_Pervasives_Native.Some (FStar_Util.Inr ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_datacon - (uu____17912,uu____17913,uu____17914,l,uu____17916,uu____17917); - FStar_Syntax_Syntax.sigrng = uu____17918; - FStar_Syntax_Syntax.sigquals = uu____17919; - FStar_Syntax_Syntax.sigmeta = uu____17920; - FStar_Syntax_Syntax.sigattrs = uu____17921;_},uu____17922),uu____17923) + (uu____17843,uu____17844,uu____17845,l,uu____17847,uu____17848); + FStar_Syntax_Syntax.sigrng = uu____17849; + FStar_Syntax_Syntax.sigquals = uu____17850; + FStar_Syntax_Syntax.sigmeta = uu____17851; + FStar_Syntax_Syntax.sigattrs = uu____17852;_},uu____17853),uu____17854) -> l - | uu____17980 -> - let uu____17981 = - let uu____17983 = FStar_Syntax_Print.lid_to_string lid in - FStar_Util.format1 "Not a datacon: %s" uu____17983 in - failwith uu____17981 + | uu____17911 -> + let uu____17912 = + let uu____17914 = FStar_Syntax_Print.lid_to_string lid in + FStar_Util.format1 "Not a datacon: %s" uu____17914 in + failwith uu____17912 let (lookup_definition_qninfo_aux : Prims.bool -> @@ -3008,10 +2995,10 @@ let (lookup_definition_qninfo_aux : in match qninfo with | FStar_Pervasives_Native.Some - (FStar_Util.Inr (se,FStar_Pervasives_Native.None ),uu____18053) + (FStar_Util.Inr (se,FStar_Pervasives_Native.None ),uu____17984) -> (match se.FStar_Syntax_Syntax.sigel with - | FStar_Syntax_Syntax.Sig_let ((is_rec,lbs),uu____18110) when + | FStar_Syntax_Syntax.Sig_let ((is_rec,lbs),uu____18041) when (visible se.FStar_Syntax_Syntax.sigquals) && ((Prims.op_Negation is_rec) || rec_ok) -> @@ -3019,16 +3006,16 @@ let (lookup_definition_qninfo_aux : (fun lb -> let fv = FStar_Util.right lb.FStar_Syntax_Syntax.lbname in - let uu____18134 = + let uu____18065 = FStar_Syntax_Syntax.fv_eq_lid fv lid in - if uu____18134 + if uu____18065 then FStar_Pervasives_Native.Some ((lb.FStar_Syntax_Syntax.lbunivs), (lb.FStar_Syntax_Syntax.lbdef)) else FStar_Pervasives_Native.None) - | uu____18169 -> FStar_Pervasives_Native.None) - | uu____18178 -> FStar_Pervasives_Native.None + | uu____18100 -> FStar_Pervasives_Native.None) + | uu____18109 -> FStar_Pervasives_Native.None let (lookup_definition_qninfo : delta_level Prims.list -> @@ -3052,9 +3039,9 @@ let (lookup_definition : fun delta_levels -> fun env -> fun lid -> - let uu____18240 = lookup_qname env lid in + let uu____18171 = lookup_qname env lid in FStar_All.pipe_left (lookup_definition_qninfo delta_levels lid) - uu____18240 + uu____18171 let (lookup_nonrec_definition : delta_level Prims.list -> @@ -3066,9 +3053,9 @@ let (lookup_nonrec_definition : fun delta_levels -> fun env -> fun lid -> - let uu____18273 = lookup_qname env lid in + let uu____18204 = lookup_qname env lid in FStar_All.pipe_left - (lookup_definition_qninfo_aux false delta_levels lid) uu____18273 + (lookup_definition_qninfo_aux false delta_levels lid) uu____18204 let (delta_depth_of_qninfo : FStar_Syntax_Syntax.fv -> @@ -3086,61 +3073,61 @@ let (delta_depth_of_qninfo : (FStar_Syntax_Syntax.Delta_constant_at_level (Prims.parse_int "0")) | FStar_Pervasives_Native.Some - (FStar_Util.Inl uu____18325,uu____18326) -> + (FStar_Util.Inl uu____18256,uu____18257) -> FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Delta_constant_at_level (Prims.parse_int "0")) | FStar_Pervasives_Native.Some - (FStar_Util.Inr (se,uu____18375),uu____18376) -> + (FStar_Util.Inr (se,uu____18306),uu____18307) -> (match se.FStar_Syntax_Syntax.sigel with - | FStar_Syntax_Syntax.Sig_inductive_typ uu____18425 -> + | FStar_Syntax_Syntax.Sig_inductive_typ uu____18356 -> FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Delta_constant_at_level (Prims.parse_int "0")) - | FStar_Syntax_Syntax.Sig_bundle uu____18443 -> + | FStar_Syntax_Syntax.Sig_bundle uu____18374 -> FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Delta_constant_at_level (Prims.parse_int "0")) - | FStar_Syntax_Syntax.Sig_datacon uu____18453 -> + | FStar_Syntax_Syntax.Sig_datacon uu____18384 -> FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Delta_constant_at_level (Prims.parse_int "0")) - | FStar_Syntax_Syntax.Sig_declare_typ uu____18470 -> - let uu____18477 = + | FStar_Syntax_Syntax.Sig_declare_typ uu____18401 -> + let uu____18408 = FStar_Syntax_DsEnv.delta_depth_of_declaration lid se.FStar_Syntax_Syntax.sigquals in - FStar_Pervasives_Native.Some uu____18477 - | FStar_Syntax_Syntax.Sig_let ((uu____18478,lbs),uu____18480) + FStar_Pervasives_Native.Some uu____18408 + | FStar_Syntax_Syntax.Sig_let ((uu____18409,lbs),uu____18411) -> FStar_Util.find_map lbs (fun lb -> let fv1 = FStar_Util.right lb.FStar_Syntax_Syntax.lbname in - let uu____18496 = + let uu____18427 = FStar_Syntax_Syntax.fv_eq_lid fv1 lid in - if uu____18496 + if uu____18427 then FStar_Pervasives_Native.Some (fv1.FStar_Syntax_Syntax.fv_delta) else FStar_Pervasives_Native.None) - | FStar_Syntax_Syntax.Sig_splice uu____18503 -> + | FStar_Syntax_Syntax.Sig_splice uu____18434 -> FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Delta_constant_at_level (Prims.parse_int "1")) - | FStar_Syntax_Syntax.Sig_main uu____18511 -> + | FStar_Syntax_Syntax.Sig_main uu____18442 -> FStar_Pervasives_Native.None - | FStar_Syntax_Syntax.Sig_assume uu____18512 -> + | FStar_Syntax_Syntax.Sig_assume uu____18443 -> FStar_Pervasives_Native.None - | FStar_Syntax_Syntax.Sig_new_effect uu____18519 -> + | FStar_Syntax_Syntax.Sig_new_effect uu____18450 -> FStar_Pervasives_Native.None - | FStar_Syntax_Syntax.Sig_new_effect_for_free uu____18520 -> + | FStar_Syntax_Syntax.Sig_new_effect_for_free uu____18451 -> FStar_Pervasives_Native.None - | FStar_Syntax_Syntax.Sig_sub_effect uu____18521 -> + | FStar_Syntax_Syntax.Sig_sub_effect uu____18452 -> FStar_Pervasives_Native.None - | FStar_Syntax_Syntax.Sig_effect_abbrev uu____18522 -> + | FStar_Syntax_Syntax.Sig_effect_abbrev uu____18453 -> FStar_Pervasives_Native.None - | FStar_Syntax_Syntax.Sig_pragma uu____18535 -> + | FStar_Syntax_Syntax.Sig_pragma uu____18466 -> FStar_Pervasives_Native.None)) let (delta_depth_of_fv : @@ -3151,50 +3138,50 @@ let (delta_depth_of_fv : if lid.FStar_Ident.nsstr = "Prims" then fv.FStar_Syntax_Syntax.fv_delta else - (let uu____18553 = + (let uu____18484 = FStar_All.pipe_right lid.FStar_Ident.str (FStar_Util.smap_try_find env.fv_delta_depths) in - FStar_All.pipe_right uu____18553 + FStar_All.pipe_right uu____18484 (fun d_opt -> - let uu____18566 = FStar_All.pipe_right d_opt FStar_Util.is_some + let uu____18497 = FStar_All.pipe_right d_opt FStar_Util.is_some in - if uu____18566 + if uu____18497 then FStar_All.pipe_right d_opt FStar_Util.must else - (let uu____18576 = - let uu____18579 = + (let uu____18507 = + let uu____18510 = lookup_qname env (fv.FStar_Syntax_Syntax.fv_name).FStar_Syntax_Syntax.v in - delta_depth_of_qninfo fv uu____18579 in - match uu____18576 with + delta_depth_of_qninfo fv uu____18510 in + match uu____18507 with | FStar_Pervasives_Native.None -> - let uu____18580 = - let uu____18582 = FStar_Syntax_Print.fv_to_string fv + let uu____18511 = + let uu____18513 = FStar_Syntax_Print.fv_to_string fv in FStar_Util.format1 "Delta depth not found for %s" - uu____18582 + uu____18513 in - failwith uu____18580 + failwith uu____18511 | FStar_Pervasives_Native.Some d -> - ((let uu____18587 = + ((let uu____18518 = (d <> fv.FStar_Syntax_Syntax.fv_delta) && (FStar_Options.debug_any ()) in - if uu____18587 + if uu____18518 then - let uu____18590 = FStar_Syntax_Print.fv_to_string fv + let uu____18521 = FStar_Syntax_Print.fv_to_string fv in - let uu____18592 = + let uu____18523 = FStar_Syntax_Print.delta_depth_to_string fv.FStar_Syntax_Syntax.fv_delta in - let uu____18594 = + let uu____18525 = FStar_Syntax_Print.delta_depth_to_string d in FStar_Util.print3 "WARNING WARNING WARNING fv=%s, delta_depth=%s, env.delta_depth=%s\n" - uu____18590 uu____18592 uu____18594 + uu____18521 uu____18523 uu____18525 else ()); FStar_Util.smap_add env.fv_delta_depths lid.FStar_Ident.str d; @@ -3207,9 +3194,9 @@ let (quals_of_qninfo : fun qninfo -> match qninfo with | FStar_Pervasives_Native.Some - (FStar_Util.Inr (se,uu____18619),uu____18620) -> + (FStar_Util.Inr (se,uu____18550),uu____18551) -> FStar_Pervasives_Native.Some (se.FStar_Syntax_Syntax.sigquals) - | uu____18669 -> FStar_Pervasives_Native.None + | uu____18600 -> FStar_Pervasives_Native.None let (attrs_of_qninfo : qninfo -> @@ -3218,9 +3205,9 @@ let (attrs_of_qninfo : fun qninfo -> match qninfo with | FStar_Pervasives_Native.Some - (FStar_Util.Inr (se,uu____18691),uu____18692) -> + (FStar_Util.Inr (se,uu____18622),uu____18623) -> FStar_Pervasives_Native.Some (se.FStar_Syntax_Syntax.sigattrs) - | uu____18741 -> FStar_Pervasives_Native.None + | uu____18672 -> FStar_Pervasives_Native.None let (lookup_attrs_of_lid : env -> @@ -3229,32 +3216,32 @@ let (lookup_attrs_of_lid : = fun env -> fun lid -> - let uu____18763 = lookup_qname env lid in - FStar_All.pipe_left attrs_of_qninfo uu____18763 + let uu____18694 = lookup_qname env lid in + FStar_All.pipe_left attrs_of_qninfo uu____18694 let (fv_has_attr : env -> FStar_Syntax_Syntax.fv -> FStar_Ident.lid -> Prims.bool) = fun env -> fun fv -> fun attr_lid -> - let uu____18786 = + let uu____18717 = lookup_attrs_of_lid env (fv.FStar_Syntax_Syntax.fv_name).FStar_Syntax_Syntax.v in - match uu____18786 with + match uu____18717 with | FStar_Pervasives_Native.None -> false | FStar_Pervasives_Native.Some [] -> false | FStar_Pervasives_Native.Some attrs -> FStar_All.pipe_right attrs (FStar_Util.for_some (fun tm -> - let uu____18810 = - let uu____18811 = FStar_Syntax_Util.un_uinst tm in - uu____18811.FStar_Syntax_Syntax.n in - match uu____18810 with + let uu____18741 = + let uu____18742 = FStar_Syntax_Util.un_uinst tm in + uu____18742.FStar_Syntax_Syntax.n in + match uu____18741 with | FStar_Syntax_Syntax.Tm_fvar fv1 -> FStar_Syntax_Syntax.fv_eq_lid fv1 attr_lid - | uu____18816 -> false)) + | uu____18747 -> false)) let (try_lookup_effect_lid : env -> @@ -3263,31 +3250,31 @@ let (try_lookup_effect_lid : = fun env -> fun ftv -> - let uu____18833 = lookup_qname env ftv in - match uu____18833 with + let uu____18764 = lookup_qname env ftv in + match uu____18764 with | FStar_Pervasives_Native.Some - (FStar_Util.Inr (se,FStar_Pervasives_Native.None ),uu____18837) -> - let uu____18882 = effect_signature FStar_Pervasives_Native.None se + (FStar_Util.Inr (se,FStar_Pervasives_Native.None ),uu____18768) -> + let uu____18813 = effect_signature FStar_Pervasives_Native.None se in - (match uu____18882 with + (match uu____18813 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None - | FStar_Pervasives_Native.Some ((uu____18903,t),r) -> - let uu____18918 = - let uu____18919 = FStar_Ident.range_of_lid ftv in - FStar_Syntax_Subst.set_use_range uu____18919 t in - FStar_Pervasives_Native.Some uu____18918) - | uu____18920 -> FStar_Pervasives_Native.None + | FStar_Pervasives_Native.Some ((uu____18834,t),r) -> + let uu____18849 = + let uu____18850 = FStar_Ident.range_of_lid ftv in + FStar_Syntax_Subst.set_use_range uu____18850 t in + FStar_Pervasives_Native.Some uu____18849) + | uu____18851 -> FStar_Pervasives_Native.None let (lookup_effect_lid : env -> FStar_Ident.lident -> FStar_Syntax_Syntax.term) = fun env -> fun ftv -> - let uu____18932 = try_lookup_effect_lid env ftv in - match uu____18932 with + let uu____18863 = try_lookup_effect_lid env ftv in + match uu____18863 with | FStar_Pervasives_Native.None -> - let uu____18935 = name_not_found ftv in - let uu____18941 = FStar_Ident.range_of_lid ftv in - FStar_Errors.raise_error uu____18935 uu____18941 + let uu____18866 = name_not_found ftv in + let uu____18872 = FStar_Ident.range_of_lid ftv in + FStar_Errors.raise_error uu____18866 uu____18872 | FStar_Pervasives_Native.Some k -> k let (lookup_effect_abbrev : @@ -3300,37 +3287,37 @@ let (lookup_effect_abbrev : fun env -> fun univ_insts -> fun lid0 -> - let uu____18965 = lookup_qname env lid0 in - match uu____18965 with + let uu____18896 = lookup_qname env lid0 in + match uu____18896 with | FStar_Pervasives_Native.Some (FStar_Util.Inr ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_effect_abbrev - (lid,univs1,binders,c,uu____18976); - FStar_Syntax_Syntax.sigrng = uu____18977; + (lid,univs1,binders,c,uu____18907); + FStar_Syntax_Syntax.sigrng = uu____18908; FStar_Syntax_Syntax.sigquals = quals; - FStar_Syntax_Syntax.sigmeta = uu____18979; - FStar_Syntax_Syntax.sigattrs = uu____18980;_},FStar_Pervasives_Native.None - ),uu____18981) + FStar_Syntax_Syntax.sigmeta = uu____18910; + FStar_Syntax_Syntax.sigattrs = uu____18911;_},FStar_Pervasives_Native.None + ),uu____18912) -> let lid1 = - let uu____19035 = - let uu____19036 = FStar_Ident.range_of_lid lid in - let uu____19037 = - let uu____19038 = FStar_Ident.range_of_lid lid0 in - FStar_Range.use_range uu____19038 in - FStar_Range.set_use_range uu____19036 uu____19037 in - FStar_Ident.set_lid_range lid uu____19035 in - let uu____19039 = + let uu____18966 = + let uu____18967 = FStar_Ident.range_of_lid lid in + let uu____18968 = + let uu____18969 = FStar_Ident.range_of_lid lid0 in + FStar_Range.use_range uu____18969 in + FStar_Range.set_use_range uu____18967 uu____18968 in + FStar_Ident.set_lid_range lid uu____18966 in + let uu____18970 = FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___238_19045 -> - match uu___238_19045 with + (fun uu___237_18976 -> + match uu___237_18976 with | FStar_Syntax_Syntax.Irreducible -> true - | uu____19048 -> false)) + | uu____18979 -> false)) in - if uu____19039 + if uu____18970 then FStar_Pervasives_Native.None else (let insts = @@ -3339,213 +3326,213 @@ let (lookup_effect_abbrev : (FStar_List.length univs1) then univ_insts else - (let uu____19067 = - let uu____19069 = - let uu____19071 = get_range env in - FStar_Range.string_of_range uu____19071 in - let uu____19072 = FStar_Syntax_Print.lid_to_string lid1 + (let uu____18998 = + let uu____19000 = + let uu____19002 = get_range env in + FStar_Range.string_of_range uu____19002 in + let uu____19003 = FStar_Syntax_Print.lid_to_string lid1 in - let uu____19074 = + let uu____19005 = FStar_All.pipe_right (FStar_List.length univ_insts) FStar_Util.string_of_int in FStar_Util.format3 "(%s) Unexpected instantiation of effect %s with %s universes" - uu____19069 uu____19072 uu____19074 + uu____19000 uu____19003 uu____19005 in - failwith uu____19067) + failwith uu____18998) in match (binders, univs1) with - | ([],uu____19095) -> + | ([],uu____19026) -> failwith "Unexpected effect abbreviation with no arguments" - | (uu____19121,uu____19122::uu____19123::uu____19124) -> - let uu____19145 = - let uu____19147 = FStar_Syntax_Print.lid_to_string lid1 + | (uu____19052,uu____19053::uu____19054::uu____19055) -> + let uu____19076 = + let uu____19078 = FStar_Syntax_Print.lid_to_string lid1 in - let uu____19149 = + let uu____19080 = FStar_All.pipe_left FStar_Util.string_of_int (FStar_List.length univs1) in FStar_Util.format2 "Unexpected effect abbreviation %s; polymorphic in %s universes" - uu____19147 uu____19149 + uu____19078 uu____19080 in - failwith uu____19145 - | uu____19160 -> - let uu____19175 = - let uu____19180 = - let uu____19181 = FStar_Syntax_Util.arrow binders c + failwith uu____19076 + | uu____19091 -> + let uu____19106 = + let uu____19111 = + let uu____19112 = FStar_Syntax_Util.arrow binders c in - (univs1, uu____19181) in - inst_tscheme_with uu____19180 insts in - (match uu____19175 with - | (uu____19194,t) -> + (univs1, uu____19112) in + inst_tscheme_with uu____19111 insts in + (match uu____19106 with + | (uu____19125,t) -> let t1 = - let uu____19197 = FStar_Ident.range_of_lid lid1 in - FStar_Syntax_Subst.set_use_range uu____19197 t in - let uu____19198 = - let uu____19199 = FStar_Syntax_Subst.compress t1 + let uu____19128 = FStar_Ident.range_of_lid lid1 in + FStar_Syntax_Subst.set_use_range uu____19128 t in + let uu____19129 = + let uu____19130 = FStar_Syntax_Subst.compress t1 in - uu____19199.FStar_Syntax_Syntax.n in - (match uu____19198 with + uu____19130.FStar_Syntax_Syntax.n in + (match uu____19129 with | FStar_Syntax_Syntax.Tm_arrow (binders1,c1) -> FStar_Pervasives_Native.Some (binders1, c1) - | uu____19234 -> failwith "Impossible"))) - | uu____19242 -> FStar_Pervasives_Native.None + | uu____19165 -> failwith "Impossible"))) + | uu____19173 -> FStar_Pervasives_Native.None let (norm_eff_name : env -> FStar_Ident.lident -> FStar_Ident.lident) = fun env -> fun l -> let rec find1 l1 = - let uu____19266 = + let uu____19197 = lookup_effect_abbrev env [FStar_Syntax_Syntax.U_unknown] l1 in - match uu____19266 with + match uu____19197 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None - | FStar_Pervasives_Native.Some (uu____19279,c) -> + | FStar_Pervasives_Native.Some (uu____19210,c) -> let l2 = FStar_Syntax_Util.comp_effect_name c in - let uu____19286 = find1 l2 in - (match uu____19286 with + let uu____19217 = find1 l2 in + (match uu____19217 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.Some l2 | FStar_Pervasives_Native.Some l' -> FStar_Pervasives_Native.Some l') in let res = - let uu____19293 = + let uu____19224 = FStar_Util.smap_try_find env.normalized_eff_names l.FStar_Ident.str in - match uu____19293 with + match uu____19224 with | FStar_Pervasives_Native.Some l1 -> l1 | FStar_Pervasives_Native.None -> - let uu____19297 = find1 l in - (match uu____19297 with + let uu____19228 = find1 l in + (match uu____19228 with | FStar_Pervasives_Native.None -> l | FStar_Pervasives_Native.Some m -> (FStar_Util.smap_add env.normalized_eff_names l.FStar_Ident.str m; m)) in - let uu____19302 = FStar_Ident.range_of_lid l in - FStar_Ident.set_lid_range res uu____19302 + let uu____19233 = FStar_Ident.range_of_lid l in + FStar_Ident.set_lid_range res uu____19233 let (lookup_effect_quals : env -> FStar_Ident.lident -> FStar_Syntax_Syntax.qualifier Prims.list) = fun env -> fun l -> let l1 = norm_eff_name env l in - let uu____19317 = lookup_qname env l1 in - match uu____19317 with + let uu____19248 = lookup_qname env l1 in + match uu____19248 with | FStar_Pervasives_Native.Some (FStar_Util.Inr ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_new_effect - uu____19320; - FStar_Syntax_Syntax.sigrng = uu____19321; + uu____19251; + FStar_Syntax_Syntax.sigrng = uu____19252; FStar_Syntax_Syntax.sigquals = q; - FStar_Syntax_Syntax.sigmeta = uu____19323; - FStar_Syntax_Syntax.sigattrs = uu____19324;_},uu____19325),uu____19326) + FStar_Syntax_Syntax.sigmeta = uu____19254; + FStar_Syntax_Syntax.sigattrs = uu____19255;_},uu____19256),uu____19257) -> q - | uu____19377 -> [] + | uu____19308 -> [] let (lookup_projector : env -> FStar_Ident.lident -> Prims.int -> FStar_Ident.lident) = fun env -> fun lid -> fun i -> - let fail1 uu____19401 = - let uu____19402 = - let uu____19404 = FStar_Util.string_of_int i in - let uu____19406 = FStar_Syntax_Print.lid_to_string lid in + let fail1 uu____19332 = + let uu____19333 = + let uu____19335 = FStar_Util.string_of_int i in + let uu____19337 = FStar_Syntax_Print.lid_to_string lid in FStar_Util.format2 "Impossible: projecting field #%s from constructor %s is undefined" - uu____19404 uu____19406 + uu____19335 uu____19337 in - failwith uu____19402 in - let uu____19409 = lookup_datacon env lid in - match uu____19409 with - | (uu____19414,t) -> - let uu____19416 = - let uu____19417 = FStar_Syntax_Subst.compress t in - uu____19417.FStar_Syntax_Syntax.n in - (match uu____19416 with - | FStar_Syntax_Syntax.Tm_arrow (binders,uu____19421) -> + failwith uu____19333 in + let uu____19340 = lookup_datacon env lid in + match uu____19340 with + | (uu____19345,t) -> + let uu____19347 = + let uu____19348 = FStar_Syntax_Subst.compress t in + uu____19348.FStar_Syntax_Syntax.n in + (match uu____19347 with + | FStar_Syntax_Syntax.Tm_arrow (binders,uu____19352) -> if (i < (Prims.parse_int "0")) || (i >= (FStar_List.length binders)) then fail1 () else (let b = FStar_List.nth binders i in - let uu____19465 = + let uu____19396 = FStar_Syntax_Util.mk_field_projector_name lid (FStar_Pervasives_Native.fst b) i in - FStar_All.pipe_right uu____19465 + FStar_All.pipe_right uu____19396 FStar_Pervasives_Native.fst) - | uu____19476 -> fail1 ()) + | uu____19407 -> fail1 ()) let (is_projector : env -> FStar_Ident.lident -> Prims.bool) = fun env -> fun l -> - let uu____19490 = lookup_qname env l in - match uu____19490 with + let uu____19421 = lookup_qname env l in + match uu____19421 with | FStar_Pervasives_Native.Some (FStar_Util.Inr ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_declare_typ - (uu____19492,uu____19493,uu____19494); - FStar_Syntax_Syntax.sigrng = uu____19495; + (uu____19423,uu____19424,uu____19425); + FStar_Syntax_Syntax.sigrng = uu____19426; FStar_Syntax_Syntax.sigquals = quals; - FStar_Syntax_Syntax.sigmeta = uu____19497; - FStar_Syntax_Syntax.sigattrs = uu____19498;_},uu____19499),uu____19500) + FStar_Syntax_Syntax.sigmeta = uu____19428; + FStar_Syntax_Syntax.sigattrs = uu____19429;_},uu____19430),uu____19431) -> FStar_Util.for_some - (fun uu___239_19553 -> - match uu___239_19553 with - | FStar_Syntax_Syntax.Projector uu____19555 -> true - | uu____19561 -> false) quals - | uu____19563 -> false + (fun uu___238_19484 -> + match uu___238_19484 with + | FStar_Syntax_Syntax.Projector uu____19486 -> true + | uu____19492 -> false) quals + | uu____19494 -> false let (is_datacon : env -> FStar_Ident.lident -> Prims.bool) = fun env -> fun lid -> - let uu____19577 = lookup_qname env lid in - match uu____19577 with + let uu____19508 = lookup_qname env lid in + match uu____19508 with | FStar_Pervasives_Native.Some (FStar_Util.Inr ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_datacon - (uu____19579,uu____19580,uu____19581,uu____19582,uu____19583,uu____19584); - FStar_Syntax_Syntax.sigrng = uu____19585; - FStar_Syntax_Syntax.sigquals = uu____19586; - FStar_Syntax_Syntax.sigmeta = uu____19587; - FStar_Syntax_Syntax.sigattrs = uu____19588;_},uu____19589),uu____19590) + (uu____19510,uu____19511,uu____19512,uu____19513,uu____19514,uu____19515); + FStar_Syntax_Syntax.sigrng = uu____19516; + FStar_Syntax_Syntax.sigquals = uu____19517; + FStar_Syntax_Syntax.sigmeta = uu____19518; + FStar_Syntax_Syntax.sigattrs = uu____19519;_},uu____19520),uu____19521) -> true - | uu____19648 -> false + | uu____19579 -> false let (is_record : env -> FStar_Ident.lident -> Prims.bool) = fun env -> fun lid -> - let uu____19662 = lookup_qname env lid in - match uu____19662 with + let uu____19593 = lookup_qname env lid in + match uu____19593 with | FStar_Pervasives_Native.Some (FStar_Util.Inr ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_inductive_typ - (uu____19664,uu____19665,uu____19666,uu____19667,uu____19668,uu____19669); - FStar_Syntax_Syntax.sigrng = uu____19670; + (uu____19595,uu____19596,uu____19597,uu____19598,uu____19599,uu____19600); + FStar_Syntax_Syntax.sigrng = uu____19601; FStar_Syntax_Syntax.sigquals = quals; - FStar_Syntax_Syntax.sigmeta = uu____19672; - FStar_Syntax_Syntax.sigattrs = uu____19673;_},uu____19674),uu____19675) + FStar_Syntax_Syntax.sigmeta = uu____19603; + FStar_Syntax_Syntax.sigattrs = uu____19604;_},uu____19605),uu____19606) -> FStar_Util.for_some - (fun uu___240_19736 -> - match uu___240_19736 with - | FStar_Syntax_Syntax.RecordType uu____19738 -> true - | FStar_Syntax_Syntax.RecordConstructor uu____19748 -> true - | uu____19758 -> false) quals - | uu____19760 -> false + (fun uu___239_19667 -> + match uu___239_19667 with + | FStar_Syntax_Syntax.RecordType uu____19669 -> true + | FStar_Syntax_Syntax.RecordConstructor uu____19679 -> true + | uu____19689 -> false) quals + | uu____19691 -> false let (qninfo_is_action : qninfo -> Prims.bool) = fun qninfo -> @@ -3554,24 +3541,24 @@ let (qninfo_is_action : qninfo -> Prims.bool) = (FStar_Util.Inr ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_let - (uu____19770,uu____19771); - FStar_Syntax_Syntax.sigrng = uu____19772; + (uu____19701,uu____19702); + FStar_Syntax_Syntax.sigrng = uu____19703; FStar_Syntax_Syntax.sigquals = quals; - FStar_Syntax_Syntax.sigmeta = uu____19774; - FStar_Syntax_Syntax.sigattrs = uu____19775;_},uu____19776),uu____19777) + FStar_Syntax_Syntax.sigmeta = uu____19705; + FStar_Syntax_Syntax.sigattrs = uu____19706;_},uu____19707),uu____19708) -> FStar_Util.for_some - (fun uu___241_19834 -> - match uu___241_19834 with - | FStar_Syntax_Syntax.Action uu____19836 -> true - | uu____19838 -> false) quals - | uu____19840 -> false + (fun uu___240_19765 -> + match uu___240_19765 with + | FStar_Syntax_Syntax.Action uu____19767 -> true + | uu____19769 -> false) quals + | uu____19771 -> false let (is_action : env -> FStar_Ident.lident -> Prims.bool) = fun env -> fun lid -> - let uu____19854 = lookup_qname env lid in - FStar_All.pipe_left qninfo_is_action uu____19854 + let uu____19785 = lookup_qname env lid in + FStar_All.pipe_left qninfo_is_action uu____19785 let (is_interpreted : env -> FStar_Syntax_Syntax.term -> Prims.bool) = let interpreted_symbols = @@ -3592,51 +3579,51 @@ let (is_interpreted : env -> FStar_Syntax_Syntax.term -> Prims.bool) = FStar_Parser_Const.op_Negation] in fun env -> fun head1 -> - let uu____19871 = - let uu____19872 = FStar_Syntax_Util.un_uinst head1 in - uu____19872.FStar_Syntax_Syntax.n in - match uu____19871 with + let uu____19802 = + let uu____19803 = FStar_Syntax_Util.un_uinst head1 in + uu____19803.FStar_Syntax_Syntax.n in + match uu____19802 with | FStar_Syntax_Syntax.Tm_fvar fv -> (match fv.FStar_Syntax_Syntax.fv_delta with - | FStar_Syntax_Syntax.Delta_equational_at_level uu____19878 -> + | FStar_Syntax_Syntax.Delta_equational_at_level uu____19809 -> true - | uu____19881 -> false) - | uu____19883 -> false + | uu____19812 -> false) + | uu____19814 -> false let (is_irreducible : env -> FStar_Ident.lident -> Prims.bool) = fun env -> fun l -> - let uu____19897 = lookup_qname env l in - match uu____19897 with + let uu____19828 = lookup_qname env l in + match uu____19828 with | FStar_Pervasives_Native.Some - (FStar_Util.Inr (se,uu____19900),uu____19901) -> + (FStar_Util.Inr (se,uu____19831),uu____19832) -> FStar_Util.for_some - (fun uu___242_19949 -> - match uu___242_19949 with + (fun uu___241_19880 -> + match uu___241_19880 with | FStar_Syntax_Syntax.Irreducible -> true - | uu____19952 -> false) se.FStar_Syntax_Syntax.sigquals - | uu____19954 -> false + | uu____19883 -> false) se.FStar_Syntax_Syntax.sigquals + | uu____19885 -> false let (is_type_constructor : env -> FStar_Ident.lident -> Prims.bool) = fun env -> fun lid -> let mapper x = match FStar_Pervasives_Native.fst x with - | FStar_Util.Inl uu____20030 -> FStar_Pervasives_Native.Some false - | FStar_Util.Inr (se,uu____20048) -> + | FStar_Util.Inl uu____19961 -> FStar_Pervasives_Native.Some false + | FStar_Util.Inr (se,uu____19979) -> (match se.FStar_Syntax_Syntax.sigel with - | FStar_Syntax_Syntax.Sig_declare_typ uu____20066 -> + | FStar_Syntax_Syntax.Sig_declare_typ uu____19997 -> FStar_Pervasives_Native.Some (FStar_List.contains FStar_Syntax_Syntax.New se.FStar_Syntax_Syntax.sigquals) - | FStar_Syntax_Syntax.Sig_inductive_typ uu____20074 -> + | FStar_Syntax_Syntax.Sig_inductive_typ uu____20005 -> FStar_Pervasives_Native.Some true - | uu____20093 -> FStar_Pervasives_Native.Some false) + | uu____20024 -> FStar_Pervasives_Native.Some false) in - let uu____20096 = - let uu____20100 = lookup_qname env lid in - FStar_Util.bind_opt uu____20100 mapper in - match uu____20096 with + let uu____20027 = + let uu____20031 = lookup_qname env lid in + FStar_Util.bind_opt uu____20031 mapper in + match uu____20027 with | FStar_Pervasives_Native.Some b -> b | FStar_Pervasives_Native.None -> false @@ -3644,20 +3631,20 @@ let (num_inductive_ty_params : env -> FStar_Ident.lident -> Prims.int FStar_Pervasives_Native.option) = fun env -> fun lid -> - let uu____20160 = lookup_qname env lid in - match uu____20160 with + let uu____20091 = lookup_qname env lid in + match uu____20091 with | FStar_Pervasives_Native.Some (FStar_Util.Inr ({ FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_inductive_typ - (uu____20164,uu____20165,tps,uu____20167,uu____20168,uu____20169); - FStar_Syntax_Syntax.sigrng = uu____20170; - FStar_Syntax_Syntax.sigquals = uu____20171; - FStar_Syntax_Syntax.sigmeta = uu____20172; - FStar_Syntax_Syntax.sigattrs = uu____20173;_},uu____20174),uu____20175) + (uu____20095,uu____20096,tps,uu____20098,uu____20099,uu____20100); + FStar_Syntax_Syntax.sigrng = uu____20101; + FStar_Syntax_Syntax.sigquals = uu____20102; + FStar_Syntax_Syntax.sigmeta = uu____20103; + FStar_Syntax_Syntax.sigattrs = uu____20104;_},uu____20105),uu____20106) -> FStar_Pervasives_Native.Some (FStar_List.length tps) - | uu____20241 -> FStar_Pervasives_Native.None + | uu____20172 -> FStar_Pervasives_Native.None let (effect_decl_opt : env -> @@ -3669,29 +3656,29 @@ let (effect_decl_opt : fun l -> FStar_All.pipe_right (env.effects).decls (FStar_Util.find_opt - (fun uu____20287 -> - match uu____20287 with - | (d,uu____20296) -> + (fun uu____20218 -> + match uu____20218 with + | (d,uu____20227) -> FStar_Ident.lid_equals d.FStar_Syntax_Syntax.mname l)) let (get_effect_decl : env -> FStar_Ident.lident -> FStar_Syntax_Syntax.eff_decl) = fun env -> fun l -> - let uu____20312 = effect_decl_opt env l in - match uu____20312 with + let uu____20243 = effect_decl_opt env l in + match uu____20243 with | FStar_Pervasives_Native.None -> - let uu____20327 = name_not_found l in - let uu____20333 = FStar_Ident.range_of_lid l in - FStar_Errors.raise_error uu____20327 uu____20333 + let uu____20258 = name_not_found l in + let uu____20264 = FStar_Ident.range_of_lid l in + FStar_Errors.raise_error uu____20258 uu____20264 | FStar_Pervasives_Native.Some md -> FStar_Pervasives_Native.fst md let (identity_mlift : mlift) = { - mlift_wp = (fun uu____20356 -> fun t -> fun wp -> wp); + mlift_wp = (fun uu____20287 -> fun t -> fun wp -> wp); mlift_term = (FStar_Pervasives_Native.Some - (fun uu____20375 -> + (fun uu____20306 -> fun t -> fun wp -> fun e -> FStar_Util.return_all e)) } let (join : @@ -3703,11 +3690,11 @@ let (join : fun env -> fun l1 -> fun l2 -> - let uu____20407 = FStar_Ident.lid_equals l1 l2 in - if uu____20407 + let uu____20338 = FStar_Ident.lid_equals l1 l2 in + if uu____20338 then (l1, identity_mlift, identity_mlift) else - (let uu____20418 = + (let uu____20349 = ((FStar_Ident.lid_equals l1 FStar_Parser_Const.effect_GTot_lid) && (FStar_Ident.lid_equals l2 FStar_Parser_Const.effect_Tot_lid)) @@ -3717,37 +3704,37 @@ let (join : (FStar_Ident.lid_equals l1 FStar_Parser_Const.effect_Tot_lid)) in - if uu____20418 + if uu____20349 then (FStar_Parser_Const.effect_GTot_lid, identity_mlift, identity_mlift) else - (let uu____20429 = + (let uu____20360 = FStar_All.pipe_right (env.effects).joins (FStar_Util.find_opt - (fun uu____20482 -> - match uu____20482 with - | (m1,m2,uu____20496,uu____20497,uu____20498) -> + (fun uu____20413 -> + match uu____20413 with + | (m1,m2,uu____20427,uu____20428,uu____20429) -> (FStar_Ident.lid_equals l1 m1) && (FStar_Ident.lid_equals l2 m2))) in - match uu____20429 with + match uu____20360 with | FStar_Pervasives_Native.None -> - let uu____20515 = - let uu____20521 = - let uu____20523 = FStar_Syntax_Print.lid_to_string l1 + let uu____20446 = + let uu____20452 = + let uu____20454 = FStar_Syntax_Print.lid_to_string l1 in - let uu____20525 = FStar_Syntax_Print.lid_to_string l2 + let uu____20456 = FStar_Syntax_Print.lid_to_string l2 in FStar_Util.format2 - "Effects %s and %s cannot be composed" uu____20523 - uu____20525 + "Effects %s and %s cannot be composed" uu____20454 + uu____20456 in - (FStar_Errors.Fatal_EffectsCannotBeComposed, uu____20521) + (FStar_Errors.Fatal_EffectsCannotBeComposed, uu____20452) in - FStar_Errors.raise_error uu____20515 env.range + FStar_Errors.raise_error uu____20446 env.range | FStar_Pervasives_Native.Some - (uu____20535,uu____20536,m3,j1,j2) -> (m3, j1, j2))) + (uu____20466,uu____20467,m3,j1,j2) -> (m3, j1, j2))) let (monad_leq : env -> @@ -3757,12 +3744,12 @@ let (monad_leq : fun env -> fun l1 -> fun l2 -> - let uu____20570 = + let uu____20501 = (FStar_Ident.lid_equals l1 l2) || ((FStar_Ident.lid_equals l1 FStar_Parser_Const.effect_Tot_lid) && (FStar_Ident.lid_equals l2 FStar_Parser_Const.effect_GTot_lid)) in - if uu____20570 + if uu____20501 then FStar_Pervasives_Native.Some { msource = l1; mtarget = l2; mlift = identity_mlift } @@ -3774,8 +3761,8 @@ let (monad_leq : (FStar_Ident.lid_equals l2 e.mtarget))) let wp_sig_aux : - 'Auu____20590 . - (FStar_Syntax_Syntax.eff_decl,'Auu____20590) + 'Auu____20521 . + (FStar_Syntax_Syntax.eff_decl,'Auu____20521) FStar_Pervasives_Native.tuple2 Prims.list -> FStar_Ident.lident -> (FStar_Syntax_Syntax.bv,FStar_Syntax_Syntax.term' @@ -3784,40 +3771,40 @@ let wp_sig_aux : = fun decls -> fun m -> - let uu____20619 = + let uu____20550 = FStar_All.pipe_right decls (FStar_Util.find_opt - (fun uu____20645 -> - match uu____20645 with - | (d,uu____20652) -> + (fun uu____20576 -> + match uu____20576 with + | (d,uu____20583) -> FStar_Ident.lid_equals d.FStar_Syntax_Syntax.mname m)) in - match uu____20619 with + match uu____20550 with | FStar_Pervasives_Native.None -> - let uu____20663 = + let uu____20594 = FStar_Util.format1 "Impossible: declaration for monad %s not found" m.FStar_Ident.str in - failwith uu____20663 + failwith uu____20594 | FStar_Pervasives_Native.Some (md,_q) -> - let uu____20678 = + let uu____20609 = inst_tscheme ((md.FStar_Syntax_Syntax.univs), (md.FStar_Syntax_Syntax.signature)) in - (match uu____20678 with - | (uu____20693,s) -> + (match uu____20609 with + | (uu____20624,s) -> let s1 = FStar_Syntax_Subst.compress s in (match ((md.FStar_Syntax_Syntax.binders), (s1.FStar_Syntax_Syntax.n)) with | ([],FStar_Syntax_Syntax.Tm_arrow - ((a,uu____20711)::(wp,uu____20713)::[],c)) when + ((a,uu____20642)::(wp,uu____20644)::[],c)) when FStar_Syntax_Syntax.is_teff (FStar_Syntax_Util.comp_result c) -> (a, (wp.FStar_Syntax_Syntax.sort)) - | uu____20769 -> failwith "Impossible")) + | uu____20700 -> failwith "Impossible")) let (wp_signature : env -> @@ -3835,19 +3822,19 @@ let (null_wp_for_eff : fun eff_name -> fun res_u -> fun res_t -> - let uu____20827 = + let uu____20758 = FStar_Ident.lid_equals eff_name FStar_Parser_Const.effect_Tot_lid in - if uu____20827 + if uu____20758 then FStar_Syntax_Syntax.mk_Total' res_t (FStar_Pervasives_Native.Some res_u) else - (let uu____20832 = + (let uu____20763 = FStar_Ident.lid_equals eff_name FStar_Parser_Const.effect_GTot_lid in - if uu____20832 + if uu____20763 then FStar_Syntax_Syntax.mk_GTotal' res_t (FStar_Pervasives_Native.Some res_u) @@ -3859,31 +3846,31 @@ let (null_wp_for_eff : ed.FStar_Syntax_Syntax.null_wp in let null_wp_res = - let uu____20843 = get_range env in - let uu____20844 = - let uu____20851 = - let uu____20852 = - let uu____20869 = - let uu____20880 = FStar_Syntax_Syntax.as_arg res_t + let uu____20774 = get_range env in + let uu____20775 = + let uu____20782 = + let uu____20783 = + let uu____20800 = + let uu____20811 = FStar_Syntax_Syntax.as_arg res_t in - [uu____20880] in - (null_wp, uu____20869) in - FStar_Syntax_Syntax.Tm_app uu____20852 in - FStar_Syntax_Syntax.mk uu____20851 in - uu____20844 FStar_Pervasives_Native.None uu____20843 in - let uu____20920 = - let uu____20921 = - let uu____20932 = FStar_Syntax_Syntax.as_arg null_wp_res + [uu____20811] in + (null_wp, uu____20800) in + FStar_Syntax_Syntax.Tm_app uu____20783 in + FStar_Syntax_Syntax.mk uu____20782 in + uu____20775 FStar_Pervasives_Native.None uu____20774 in + let uu____20851 = + let uu____20852 = + let uu____20863 = FStar_Syntax_Syntax.as_arg null_wp_res in - [uu____20932] in + [uu____20863] in { FStar_Syntax_Syntax.comp_univs = [res_u]; FStar_Syntax_Syntax.effect_name = eff_name1; FStar_Syntax_Syntax.result_typ = res_t; - FStar_Syntax_Syntax.effect_args = uu____20921; + FStar_Syntax_Syntax.effect_args = uu____20852; FStar_Syntax_Syntax.flags = [] } in - FStar_Syntax_Syntax.mk_Comp uu____20920)) + FStar_Syntax_Syntax.mk_Comp uu____20851)) let (build_lattice : env -> FStar_Syntax_Syntax.sigelt -> env) = fun env -> @@ -3891,65 +3878,65 @@ let (build_lattice : env -> FStar_Syntax_Syntax.sigelt -> env) = match se.FStar_Syntax_Syntax.sigel with | FStar_Syntax_Syntax.Sig_new_effect ne -> let effects = - let uu___257_20970 = env.effects in + let uu___256_20901 = env.effects in { decls = ((ne, (se.FStar_Syntax_Syntax.sigquals)) :: ((env.effects).decls)); - order = (uu___257_20970.order); - joins = (uu___257_20970.joins) + order = (uu___256_20901.order); + joins = (uu___256_20901.joins) } in - let uu___258_20979 = env in + let uu___257_20910 = env in { - solver = (uu___258_20979.solver); - range = (uu___258_20979.range); - curmodule = (uu___258_20979.curmodule); - gamma = (uu___258_20979.gamma); - gamma_sig = (uu___258_20979.gamma_sig); - gamma_cache = (uu___258_20979.gamma_cache); - modules = (uu___258_20979.modules); - expected_typ = (uu___258_20979.expected_typ); - sigtab = (uu___258_20979.sigtab); - attrtab = (uu___258_20979.attrtab); - is_pattern = (uu___258_20979.is_pattern); - instantiate_imp = (uu___258_20979.instantiate_imp); + solver = (uu___257_20910.solver); + range = (uu___257_20910.range); + curmodule = (uu___257_20910.curmodule); + gamma = (uu___257_20910.gamma); + gamma_sig = (uu___257_20910.gamma_sig); + gamma_cache = (uu___257_20910.gamma_cache); + modules = (uu___257_20910.modules); + expected_typ = (uu___257_20910.expected_typ); + sigtab = (uu___257_20910.sigtab); + attrtab = (uu___257_20910.attrtab); + is_pattern = (uu___257_20910.is_pattern); + instantiate_imp = (uu___257_20910.instantiate_imp); effects; - generalize = (uu___258_20979.generalize); - letrecs = (uu___258_20979.letrecs); - top_level = (uu___258_20979.top_level); - check_uvars = (uu___258_20979.check_uvars); - use_eq = (uu___258_20979.use_eq); - is_iface = (uu___258_20979.is_iface); - admit = (uu___258_20979.admit); - lax = (uu___258_20979.lax); - lax_universes = (uu___258_20979.lax_universes); - phase1 = (uu___258_20979.phase1); - failhard = (uu___258_20979.failhard); - nosynth = (uu___258_20979.nosynth); - uvar_subtyping = (uu___258_20979.uvar_subtyping); - tc_term = (uu___258_20979.tc_term); - type_of = (uu___258_20979.type_of); - universe_of = (uu___258_20979.universe_of); - check_type_of = (uu___258_20979.check_type_of); - use_bv_sorts = (uu___258_20979.use_bv_sorts); - qtbl_name_and_index = (uu___258_20979.qtbl_name_and_index); - normalized_eff_names = (uu___258_20979.normalized_eff_names); - fv_delta_depths = (uu___258_20979.fv_delta_depths); - proof_ns = (uu___258_20979.proof_ns); - synth_hook = (uu___258_20979.synth_hook); - splice = (uu___258_20979.splice); - postprocess = (uu___258_20979.postprocess); - is_native_tactic = (uu___258_20979.is_native_tactic); - identifier_info = (uu___258_20979.identifier_info); - tc_hooks = (uu___258_20979.tc_hooks); - dsenv = (uu___258_20979.dsenv); - nbe = (uu___258_20979.nbe) + generalize = (uu___257_20910.generalize); + letrecs = (uu___257_20910.letrecs); + top_level = (uu___257_20910.top_level); + check_uvars = (uu___257_20910.check_uvars); + use_eq = (uu___257_20910.use_eq); + is_iface = (uu___257_20910.is_iface); + admit = (uu___257_20910.admit); + lax = (uu___257_20910.lax); + lax_universes = (uu___257_20910.lax_universes); + phase1 = (uu___257_20910.phase1); + failhard = (uu___257_20910.failhard); + nosynth = (uu___257_20910.nosynth); + uvar_subtyping = (uu___257_20910.uvar_subtyping); + tc_term = (uu___257_20910.tc_term); + type_of = (uu___257_20910.type_of); + universe_of = (uu___257_20910.universe_of); + check_type_of = (uu___257_20910.check_type_of); + use_bv_sorts = (uu___257_20910.use_bv_sorts); + qtbl_name_and_index = (uu___257_20910.qtbl_name_and_index); + normalized_eff_names = (uu___257_20910.normalized_eff_names); + fv_delta_depths = (uu___257_20910.fv_delta_depths); + proof_ns = (uu___257_20910.proof_ns); + synth_hook = (uu___257_20910.synth_hook); + splice = (uu___257_20910.splice); + postprocess = (uu___257_20910.postprocess); + is_native_tactic = (uu___257_20910.is_native_tactic); + identifier_info = (uu___257_20910.identifier_info); + tc_hooks = (uu___257_20910.tc_hooks); + dsenv = (uu___257_20910.dsenv); + nbe = (uu___257_20910.nbe) } | FStar_Syntax_Syntax.Sig_sub_effect sub1 -> let compose_edges e1 e2 = let composed_lift = let mlift_wp u r wp1 = - let uu____21009 = (e1.mlift).mlift_wp u r wp1 in - (e2.mlift).mlift_wp u r uu____21009 in + let uu____20940 = (e1.mlift).mlift_wp u r wp1 in + (e2.mlift).mlift_wp u r uu____20940 in let mlift_term = match (((e1.mlift).mlift_term), ((e2.mlift).mlift_term)) with | (FStar_Pervasives_Native.Some @@ -3959,11 +3946,11 @@ let (build_lattice : env -> FStar_Syntax_Syntax.sigelt -> env) = fun t -> fun wp -> fun e -> - let uu____21167 = (e1.mlift).mlift_wp u t wp + let uu____21098 = (e1.mlift).mlift_wp u t wp in - let uu____21168 = l1 u t wp e in - l2 u t uu____21167 uu____21168)) - | uu____21169 -> FStar_Pervasives_Native.None in + let uu____21099 = l1 u t wp e in + l2 u t uu____21098 uu____21099)) + | uu____21100 -> FStar_Pervasives_Native.None in { mlift_wp; mlift_term } in { msource = (e1.msource); @@ -3971,23 +3958,23 @@ let (build_lattice : env -> FStar_Syntax_Syntax.sigelt -> env) = mlift = composed_lift } in let mk_mlift_wp lift_t u r wp1 = - let uu____21241 = inst_tscheme_with lift_t [u] in - match uu____21241 with - | (uu____21248,lift_t1) -> - let uu____21250 = - let uu____21257 = - let uu____21258 = - let uu____21275 = - let uu____21286 = FStar_Syntax_Syntax.as_arg r in - let uu____21295 = - let uu____21306 = FStar_Syntax_Syntax.as_arg wp1 + let uu____21172 = inst_tscheme_with lift_t [u] in + match uu____21172 with + | (uu____21179,lift_t1) -> + let uu____21181 = + let uu____21188 = + let uu____21189 = + let uu____21206 = + let uu____21217 = FStar_Syntax_Syntax.as_arg r in + let uu____21226 = + let uu____21237 = FStar_Syntax_Syntax.as_arg wp1 in - [uu____21306] in - uu____21286 :: uu____21295 in - (lift_t1, uu____21275) in - FStar_Syntax_Syntax.Tm_app uu____21258 in - FStar_Syntax_Syntax.mk uu____21257 in - uu____21250 FStar_Pervasives_Native.None + [uu____21237] in + uu____21217 :: uu____21226 in + (lift_t1, uu____21206) in + FStar_Syntax_Syntax.Tm_app uu____21189 in + FStar_Syntax_Syntax.mk uu____21188 in + uu____21181 FStar_Pervasives_Native.None wp1.FStar_Syntax_Syntax.pos in let sub_mlift_wp = @@ -3998,27 +3985,27 @@ let (build_lattice : env -> FStar_Syntax_Syntax.sigelt -> env) = failwith "sub effect should've been elaborated at this stage" in let mk_mlift_term lift_t u r wp1 e = - let uu____21419 = inst_tscheme_with lift_t [u] in - match uu____21419 with - | (uu____21426,lift_t1) -> - let uu____21428 = - let uu____21435 = - let uu____21436 = - let uu____21453 = - let uu____21464 = FStar_Syntax_Syntax.as_arg r in - let uu____21473 = - let uu____21484 = FStar_Syntax_Syntax.as_arg wp1 + let uu____21350 = inst_tscheme_with lift_t [u] in + match uu____21350 with + | (uu____21357,lift_t1) -> + let uu____21359 = + let uu____21366 = + let uu____21367 = + let uu____21384 = + let uu____21395 = FStar_Syntax_Syntax.as_arg r in + let uu____21404 = + let uu____21415 = FStar_Syntax_Syntax.as_arg wp1 in - let uu____21493 = - let uu____21504 = FStar_Syntax_Syntax.as_arg e + let uu____21424 = + let uu____21435 = FStar_Syntax_Syntax.as_arg e in - [uu____21504] in - uu____21484 :: uu____21493 in - uu____21464 :: uu____21473 in - (lift_t1, uu____21453) in - FStar_Syntax_Syntax.Tm_app uu____21436 in - FStar_Syntax_Syntax.mk uu____21435 in - uu____21428 FStar_Pervasives_Native.None + [uu____21435] in + uu____21415 :: uu____21424 in + uu____21395 :: uu____21404 in + (lift_t1, uu____21384) in + FStar_Syntax_Syntax.Tm_app uu____21367 in + FStar_Syntax_Syntax.mk uu____21366 in + uu____21359 FStar_Pervasives_Native.None e.FStar_Syntax_Syntax.pos in let sub_mlift_term = @@ -4039,46 +4026,46 @@ let (build_lattice : env -> FStar_Syntax_Syntax.sigelt -> env) = } in let print_mlift l = let bogus_term s = - let uu____21609 = - let uu____21610 = + let uu____21540 = + let uu____21541 = FStar_Ident.lid_of_path [s] FStar_Range.dummyRange in - FStar_Syntax_Syntax.lid_as_fv uu____21610 + FStar_Syntax_Syntax.lid_as_fv uu____21541 FStar_Syntax_Syntax.delta_constant FStar_Pervasives_Native.None in - FStar_Syntax_Syntax.fv_to_tm uu____21609 in + FStar_Syntax_Syntax.fv_to_tm uu____21540 in let arg = bogus_term "ARG" in let wp = bogus_term "WP" in let e = bogus_term "COMP" in - let uu____21619 = - let uu____21621 = l.mlift_wp FStar_Syntax_Syntax.U_zero arg wp + let uu____21550 = + let uu____21552 = l.mlift_wp FStar_Syntax_Syntax.U_zero arg wp in - FStar_Syntax_Print.term_to_string uu____21621 in - let uu____21622 = - let uu____21624 = + FStar_Syntax_Print.term_to_string uu____21552 in + let uu____21553 = + let uu____21555 = FStar_Util.map_opt l.mlift_term (fun l1 -> - let uu____21652 = l1 FStar_Syntax_Syntax.U_zero arg wp e + let uu____21583 = l1 FStar_Syntax_Syntax.U_zero arg wp e in - FStar_Syntax_Print.term_to_string uu____21652) + FStar_Syntax_Print.term_to_string uu____21583) in - FStar_Util.dflt "none" uu____21624 in - FStar_Util.format2 "{ wp : %s ; term : %s }" uu____21619 - uu____21622 + FStar_Util.dflt "none" uu____21555 in + FStar_Util.format2 "{ wp : %s ; term : %s }" uu____21550 + uu____21553 in let order = edge :: ((env.effects).order) in let ms = FStar_All.pipe_right (env.effects).decls (FStar_List.map - (fun uu____21681 -> - match uu____21681 with - | (e,uu____21689) -> e.FStar_Syntax_Syntax.mname)) + (fun uu____21612 -> + match uu____21612 with + | (e,uu____21620) -> e.FStar_Syntax_Syntax.mname)) in - let find_edge order1 uu____21712 = - match uu____21712 with + let find_edge order1 uu____21643 = + match uu____21643 with | (i,j) -> - let uu____21723 = FStar_Ident.lid_equals i j in - if uu____21723 + let uu____21654 = FStar_Ident.lid_equals i j in + if uu____21654 then FStar_All.pipe_right (id_edge i) (fun _0_1 -> FStar_Pervasives_Native.Some _0_1) @@ -4091,38 +4078,38 @@ let (build_lattice : env -> FStar_Syntax_Syntax.sigelt -> env) = in let order1 = let fold_fun order1 k = - let uu____21758 = + let uu____21689 = FStar_All.pipe_right ms (FStar_List.collect (fun i -> - let uu____21768 = FStar_Ident.lid_equals i k in - if uu____21768 + let uu____21699 = FStar_Ident.lid_equals i k in + if uu____21699 then [] else FStar_All.pipe_right ms (FStar_List.collect (fun j -> - let uu____21782 = + let uu____21713 = FStar_Ident.lid_equals j k in - if uu____21782 + if uu____21713 then [] else - (let uu____21789 = - let uu____21798 = + (let uu____21720 = + let uu____21729 = find_edge order1 (i, k) in - let uu____21801 = + let uu____21732 = find_edge order1 (k, j) in - (uu____21798, uu____21801) in - match uu____21789 with + (uu____21729, uu____21732) in + match uu____21720 with | (FStar_Pervasives_Native.Some e1,FStar_Pervasives_Native.Some e2) -> - let uu____21816 = + let uu____21747 = compose_edges e1 e2 in - [uu____21816] - | uu____21817 -> []))))) + [uu____21747] + | uu____21748 -> []))))) in - FStar_List.append order1 uu____21758 in + FStar_List.append order1 uu____21689 in FStar_All.pipe_right ms (FStar_List.fold_left fold_fun order) in let order2 = FStar_Util.remove_dups @@ -4134,29 +4121,29 @@ let (build_lattice : env -> FStar_Syntax_Syntax.sigelt -> env) = (FStar_All.pipe_right order2 (FStar_List.iter (fun edge1 -> - let uu____21847 = + let uu____21778 = (FStar_Ident.lid_equals edge1.msource FStar_Parser_Const.effect_DIV_lid) && - (let uu____21850 = + (let uu____21781 = lookup_effect_quals env edge1.mtarget in - FStar_All.pipe_right uu____21850 + FStar_All.pipe_right uu____21781 (FStar_List.contains FStar_Syntax_Syntax.TotalEffect)) in - if uu____21847 + if uu____21778 then - let uu____21857 = - let uu____21863 = + let uu____21788 = + let uu____21794 = FStar_Util.format1 "Divergent computations cannot be included in an effect %s marked 'total'" (edge1.mtarget).FStar_Ident.str in (FStar_Errors.Fatal_DivergentComputationCannotBeIncludedInTotal, - uu____21863) + uu____21794) in - let uu____21867 = get_range env in - FStar_Errors.raise_error uu____21857 uu____21867 + let uu____21798 = get_range env in + FStar_Errors.raise_error uu____21788 uu____21798 else ())); (let joins = FStar_All.pipe_right ms @@ -4166,9 +4153,9 @@ let (build_lattice : env -> FStar_Syntax_Syntax.sigelt -> env) = (FStar_List.collect (fun j -> let join_opt = - let uu____21945 = FStar_Ident.lid_equals i j + let uu____21876 = FStar_Ident.lid_equals i j in - if uu____21945 + if uu____21876 then FStar_Pervasives_Native.Some (i, (id_edge i), (id_edge i)) @@ -4177,13 +4164,13 @@ let (build_lattice : env -> FStar_Syntax_Syntax.sigelt -> env) = (FStar_List.fold_left (fun bopt -> fun k -> - let uu____21997 = - let uu____22006 = + let uu____21928 = + let uu____21937 = find_edge order2 (i, k) in - let uu____22009 = + let uu____21940 = find_edge order2 (j, k) in - (uu____22006, uu____22009) in - match uu____21997 with + (uu____21937, uu____21940) in + match uu____21928 with | (FStar_Pervasives_Native.Some ik,FStar_Pervasives_Native.Some jk) -> @@ -4193,35 +4180,35 @@ let (build_lattice : env -> FStar_Syntax_Syntax.sigelt -> env) = FStar_Pervasives_Native.Some (k, ik, jk) | FStar_Pervasives_Native.Some - (ub,uu____22051,uu____22052) + (ub,uu____21982,uu____21983) -> - let uu____22059 = - let uu____22066 = - let uu____22068 = + let uu____21990 = + let uu____21997 = + let uu____21999 = find_edge order2 (k, ub) in FStar_Util.is_some - uu____22068 + uu____21999 in - let uu____22071 = - let uu____22073 = + let uu____22002 = + let uu____22004 = find_edge order2 (ub, k) in FStar_Util.is_some - uu____22073 + uu____22004 in - (uu____22066, - uu____22071) + (uu____21997, + uu____22002) in - (match uu____22059 with + (match uu____21990 with | (true ,true ) -> - let uu____22090 = + let uu____22021 = FStar_Ident.lid_equals k ub in - if uu____22090 + if uu____22021 then (FStar_Errors.log_issue FStar_Range.dummyRange @@ -4238,7 +4225,7 @@ let (build_lattice : env -> FStar_Syntax_Syntax.sigelt -> env) = (k, ik, jk) | (false ,true ) -> bopt)) - | uu____22133 -> bopt) + | uu____22064 -> bopt) FStar_Pervasives_Native.None) in match join_opt with @@ -4247,55 +4234,55 @@ let (build_lattice : env -> FStar_Syntax_Syntax.sigelt -> env) = [(i, j, k, (e1.mlift), (e2.mlift))])))) in let effects = - let uu___259_22206 = env.effects in - { decls = (uu___259_22206.decls); order = order2; joins } in - let uu___260_22207 = env in + let uu___258_22137 = env.effects in + { decls = (uu___258_22137.decls); order = order2; joins } in + let uu___259_22138 = env in { - solver = (uu___260_22207.solver); - range = (uu___260_22207.range); - curmodule = (uu___260_22207.curmodule); - gamma = (uu___260_22207.gamma); - gamma_sig = (uu___260_22207.gamma_sig); - gamma_cache = (uu___260_22207.gamma_cache); - modules = (uu___260_22207.modules); - expected_typ = (uu___260_22207.expected_typ); - sigtab = (uu___260_22207.sigtab); - attrtab = (uu___260_22207.attrtab); - is_pattern = (uu___260_22207.is_pattern); - instantiate_imp = (uu___260_22207.instantiate_imp); + solver = (uu___259_22138.solver); + range = (uu___259_22138.range); + curmodule = (uu___259_22138.curmodule); + gamma = (uu___259_22138.gamma); + gamma_sig = (uu___259_22138.gamma_sig); + gamma_cache = (uu___259_22138.gamma_cache); + modules = (uu___259_22138.modules); + expected_typ = (uu___259_22138.expected_typ); + sigtab = (uu___259_22138.sigtab); + attrtab = (uu___259_22138.attrtab); + is_pattern = (uu___259_22138.is_pattern); + instantiate_imp = (uu___259_22138.instantiate_imp); effects; - generalize = (uu___260_22207.generalize); - letrecs = (uu___260_22207.letrecs); - top_level = (uu___260_22207.top_level); - check_uvars = (uu___260_22207.check_uvars); - use_eq = (uu___260_22207.use_eq); - is_iface = (uu___260_22207.is_iface); - admit = (uu___260_22207.admit); - lax = (uu___260_22207.lax); - lax_universes = (uu___260_22207.lax_universes); - phase1 = (uu___260_22207.phase1); - failhard = (uu___260_22207.failhard); - nosynth = (uu___260_22207.nosynth); - uvar_subtyping = (uu___260_22207.uvar_subtyping); - tc_term = (uu___260_22207.tc_term); - type_of = (uu___260_22207.type_of); - universe_of = (uu___260_22207.universe_of); - check_type_of = (uu___260_22207.check_type_of); - use_bv_sorts = (uu___260_22207.use_bv_sorts); - qtbl_name_and_index = (uu___260_22207.qtbl_name_and_index); - normalized_eff_names = (uu___260_22207.normalized_eff_names); - fv_delta_depths = (uu___260_22207.fv_delta_depths); - proof_ns = (uu___260_22207.proof_ns); - synth_hook = (uu___260_22207.synth_hook); - splice = (uu___260_22207.splice); - postprocess = (uu___260_22207.postprocess); - is_native_tactic = (uu___260_22207.is_native_tactic); - identifier_info = (uu___260_22207.identifier_info); - tc_hooks = (uu___260_22207.tc_hooks); - dsenv = (uu___260_22207.dsenv); - nbe = (uu___260_22207.nbe) + generalize = (uu___259_22138.generalize); + letrecs = (uu___259_22138.letrecs); + top_level = (uu___259_22138.top_level); + check_uvars = (uu___259_22138.check_uvars); + use_eq = (uu___259_22138.use_eq); + is_iface = (uu___259_22138.is_iface); + admit = (uu___259_22138.admit); + lax = (uu___259_22138.lax); + lax_universes = (uu___259_22138.lax_universes); + phase1 = (uu___259_22138.phase1); + failhard = (uu___259_22138.failhard); + nosynth = (uu___259_22138.nosynth); + uvar_subtyping = (uu___259_22138.uvar_subtyping); + tc_term = (uu___259_22138.tc_term); + type_of = (uu___259_22138.type_of); + universe_of = (uu___259_22138.universe_of); + check_type_of = (uu___259_22138.check_type_of); + use_bv_sorts = (uu___259_22138.use_bv_sorts); + qtbl_name_and_index = (uu___259_22138.qtbl_name_and_index); + normalized_eff_names = (uu___259_22138.normalized_eff_names); + fv_delta_depths = (uu___259_22138.fv_delta_depths); + proof_ns = (uu___259_22138.proof_ns); + synth_hook = (uu___259_22138.synth_hook); + splice = (uu___259_22138.splice); + postprocess = (uu___259_22138.postprocess); + is_native_tactic = (uu___259_22138.is_native_tactic); + identifier_info = (uu___259_22138.identifier_info); + tc_hooks = (uu___259_22138.tc_hooks); + dsenv = (uu___259_22138.dsenv); + nbe = (uu___259_22138.nbe) })) - | uu____22208 -> env + | uu____22139 -> env let (comp_to_comp_typ : env -> FStar_Syntax_Syntax.comp -> FStar_Syntax_Syntax.comp_typ) = @@ -4309,7 +4296,7 @@ let (comp_to_comp_typ : | FStar_Syntax_Syntax.GTotal (t,FStar_Pervasives_Native.None ) -> let u = env.universe_of env t in FStar_Syntax_Syntax.mk_GTotal' t (FStar_Pervasives_Native.Some u) - | uu____22237 -> c in + | uu____22168 -> c in FStar_Syntax_Util.comp_to_comp_typ c1 let rec (unfold_effect_abbrev : @@ -4317,85 +4304,85 @@ let rec (unfold_effect_abbrev : fun env -> fun comp -> let c = comp_to_comp_typ env comp in - let uu____22250 = + let uu____22181 = lookup_effect_abbrev env c.FStar_Syntax_Syntax.comp_univs c.FStar_Syntax_Syntax.effect_name in - match uu____22250 with + match uu____22181 with | FStar_Pervasives_Native.None -> c | FStar_Pervasives_Native.Some (binders,cdef) -> - let uu____22267 = FStar_Syntax_Subst.open_comp binders cdef in - (match uu____22267 with + let uu____22198 = FStar_Syntax_Subst.open_comp binders cdef in + (match uu____22198 with | (binders1,cdef1) -> (if (FStar_List.length binders1) <> ((FStar_List.length c.FStar_Syntax_Syntax.effect_args) + (Prims.parse_int "1")) then - (let uu____22292 = - let uu____22298 = - let uu____22300 = + (let uu____22223 = + let uu____22229 = + let uu____22231 = FStar_Util.string_of_int (FStar_List.length binders1) in - let uu____22308 = + let uu____22239 = FStar_Util.string_of_int ((FStar_List.length c.FStar_Syntax_Syntax.effect_args) + (Prims.parse_int "1")) in - let uu____22319 = - let uu____22321 = FStar_Syntax_Syntax.mk_Comp c in - FStar_Syntax_Print.comp_to_string uu____22321 in + let uu____22250 = + let uu____22252 = FStar_Syntax_Syntax.mk_Comp c in + FStar_Syntax_Print.comp_to_string uu____22252 in FStar_Util.format3 "Effect constructor is not fully applied; expected %s args, got %s args, i.e., %s" - uu____22300 uu____22308 uu____22319 + uu____22231 uu____22239 uu____22250 in (FStar_Errors.Fatal_ConstructorArgLengthMismatch, - uu____22298) + uu____22229) in - FStar_Errors.raise_error uu____22292 + FStar_Errors.raise_error uu____22223 comp.FStar_Syntax_Syntax.pos) else (); (let inst1 = - let uu____22329 = - let uu____22340 = + let uu____22260 = + let uu____22271 = FStar_Syntax_Syntax.as_arg c.FStar_Syntax_Syntax.result_typ in - uu____22340 :: (c.FStar_Syntax_Syntax.effect_args) in + uu____22271 :: (c.FStar_Syntax_Syntax.effect_args) in FStar_List.map2 - (fun uu____22377 -> - fun uu____22378 -> - match (uu____22377, uu____22378) with - | ((x,uu____22408),(t,uu____22410)) -> + (fun uu____22308 -> + fun uu____22309 -> + match (uu____22308, uu____22309) with + | ((x,uu____22339),(t,uu____22341)) -> FStar_Syntax_Syntax.NT (x, t)) binders1 - uu____22329 + uu____22260 in let c1 = FStar_Syntax_Subst.subst_comp inst1 cdef1 in let c2 = - let uu____22441 = - let uu___261_22442 = comp_to_comp_typ env c1 in + let uu____22372 = + let uu___260_22373 = comp_to_comp_typ env c1 in { FStar_Syntax_Syntax.comp_univs = - (uu___261_22442.FStar_Syntax_Syntax.comp_univs); + (uu___260_22373.FStar_Syntax_Syntax.comp_univs); FStar_Syntax_Syntax.effect_name = - (uu___261_22442.FStar_Syntax_Syntax.effect_name); + (uu___260_22373.FStar_Syntax_Syntax.effect_name); FStar_Syntax_Syntax.result_typ = - (uu___261_22442.FStar_Syntax_Syntax.result_typ); + (uu___260_22373.FStar_Syntax_Syntax.result_typ); FStar_Syntax_Syntax.effect_args = - (uu___261_22442.FStar_Syntax_Syntax.effect_args); + (uu___260_22373.FStar_Syntax_Syntax.effect_args); FStar_Syntax_Syntax.flags = (c.FStar_Syntax_Syntax.flags) } in - FStar_All.pipe_right uu____22441 + FStar_All.pipe_right uu____22372 FStar_Syntax_Syntax.mk_Comp in unfold_effect_abbrev env c2))) let effect_repr_aux : - 'Auu____22454 . - 'Auu____22454 -> + 'Auu____22385 . + 'Auu____22385 -> env -> FStar_Syntax_Syntax.comp' FStar_Syntax_Syntax.syntax -> FStar_Syntax_Syntax.universe -> @@ -4408,54 +4395,54 @@ let effect_repr_aux : fun u_c -> let effect_name = norm_eff_name env (FStar_Syntax_Util.comp_effect_name c) in - let uu____22484 = effect_decl_opt env effect_name in - match uu____22484 with + let uu____22415 = effect_decl_opt env effect_name in + match uu____22415 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some (ed,qualifiers) -> (match (ed.FStar_Syntax_Syntax.repr).FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_unknown -> FStar_Pervasives_Native.None - | uu____22523 -> + | uu____22454 -> let c1 = unfold_effect_abbrev env c in let res_typ = c1.FStar_Syntax_Syntax.result_typ in let wp = match c1.FStar_Syntax_Syntax.effect_args with - | hd1::uu____22546 -> hd1 + | hd1::uu____22477 -> hd1 | [] -> let name = FStar_Ident.string_of_lid effect_name in let message = - let uu____22585 = + let uu____22516 = FStar_Util.format1 "Not enough arguments for effect %s. " name in - Prims.strcat uu____22585 + Prims.strcat uu____22516 (Prims.strcat "This usually happens when you use a partially applied DM4F effect, " "like [TAC int] instead of [Tac int].") in - let uu____22590 = get_range env in + let uu____22521 = get_range env in FStar_Errors.raise_error (FStar_Errors.Fatal_NotEnoughArgumentsForEffect, - message) uu____22590 + message) uu____22521 in let repr = inst_effect_fun_with [u_c] env ed ([], (ed.FStar_Syntax_Syntax.repr)) in - let uu____22605 = - let uu____22608 = get_range env in - let uu____22609 = - let uu____22616 = - let uu____22617 = - let uu____22634 = - let uu____22645 = + let uu____22536 = + let uu____22539 = get_range env in + let uu____22540 = + let uu____22547 = + let uu____22548 = + let uu____22565 = + let uu____22576 = FStar_Syntax_Syntax.as_arg res_typ in - [uu____22645; wp] in - (repr, uu____22634) in - FStar_Syntax_Syntax.Tm_app uu____22617 in - FStar_Syntax_Syntax.mk uu____22616 in - uu____22609 FStar_Pervasives_Native.None uu____22608 in - FStar_Pervasives_Native.Some uu____22605) + [uu____22576; wp] in + (repr, uu____22565) in + FStar_Syntax_Syntax.Tm_app uu____22548 in + FStar_Syntax_Syntax.mk uu____22547 in + uu____22540 FStar_Pervasives_Native.None uu____22539 in + FStar_Pervasives_Native.Some uu____22536) let (effect_repr : env -> @@ -4495,18 +4482,18 @@ let (is_reifiable_comp : env -> FStar_Syntax_Syntax.comp -> Prims.bool) = match c.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Comp ct -> is_reifiable_effect env ct.FStar_Syntax_Syntax.effect_name - | uu____22792 -> false + | uu____22723 -> false let (is_reifiable_function : env -> FStar_Syntax_Syntax.term -> Prims.bool) = fun env -> fun t -> - let uu____22807 = - let uu____22808 = FStar_Syntax_Subst.compress t in - uu____22808.FStar_Syntax_Syntax.n in - match uu____22807 with - | FStar_Syntax_Syntax.Tm_arrow (uu____22812,c) -> + let uu____22738 = + let uu____22739 = FStar_Syntax_Subst.compress t in + uu____22739.FStar_Syntax_Syntax.n in + match uu____22738 with + | FStar_Syntax_Syntax.Tm_arrow (uu____22743,c) -> is_reifiable_comp env c - | uu____22834 -> false + | uu____22765 -> false let (reify_comp : env -> @@ -4517,22 +4504,22 @@ let (reify_comp : fun c -> fun u_c -> let l = FStar_Syntax_Util.comp_effect_name c in - (let uu____22854 = - let uu____22856 = is_reifiable_effect env l in - Prims.op_Negation uu____22856 in - if uu____22854 + (let uu____22785 = + let uu____22787 = is_reifiable_effect env l in + Prims.op_Negation uu____22787 in + if uu____22785 then - let uu____22859 = - let uu____22865 = - let uu____22867 = FStar_Ident.string_of_lid l in - FStar_Util.format1 "Effect %s cannot be reified" uu____22867 + let uu____22790 = + let uu____22796 = + let uu____22798 = FStar_Ident.string_of_lid l in + FStar_Util.format1 "Effect %s cannot be reified" uu____22798 in - (FStar_Errors.Fatal_EffectCannotBeReified, uu____22865) in - let uu____22871 = get_range env in - FStar_Errors.raise_error uu____22859 uu____22871 + (FStar_Errors.Fatal_EffectCannotBeReified, uu____22796) in + let uu____22802 = get_range env in + FStar_Errors.raise_error uu____22790 uu____22802 else ()); - (let uu____22874 = effect_repr_aux true env c u_c in - match uu____22874 with + (let uu____22805 = effect_repr_aux true env c u_c in + match uu____22805 with | FStar_Pervasives_Native.None -> failwith "internal error: reifiable effect has no repr?" | FStar_Pervasives_Native.Some tm -> tm) @@ -4542,51 +4529,51 @@ let (push_sigelt : env -> FStar_Syntax_Syntax.sigelt -> env) = fun s -> let sb = ((FStar_Syntax_Util.lids_of_sigelt s), s) in let env1 = - let uu___262_22910 = env in + let uu___261_22841 = env in { - solver = (uu___262_22910.solver); - range = (uu___262_22910.range); - curmodule = (uu___262_22910.curmodule); - gamma = (uu___262_22910.gamma); + solver = (uu___261_22841.solver); + range = (uu___261_22841.range); + curmodule = (uu___261_22841.curmodule); + gamma = (uu___261_22841.gamma); gamma_sig = (sb :: (env.gamma_sig)); - gamma_cache = (uu___262_22910.gamma_cache); - modules = (uu___262_22910.modules); - expected_typ = (uu___262_22910.expected_typ); - sigtab = (uu___262_22910.sigtab); - attrtab = (uu___262_22910.attrtab); - is_pattern = (uu___262_22910.is_pattern); - instantiate_imp = (uu___262_22910.instantiate_imp); - effects = (uu___262_22910.effects); - generalize = (uu___262_22910.generalize); - letrecs = (uu___262_22910.letrecs); - top_level = (uu___262_22910.top_level); - check_uvars = (uu___262_22910.check_uvars); - use_eq = (uu___262_22910.use_eq); - is_iface = (uu___262_22910.is_iface); - admit = (uu___262_22910.admit); - lax = (uu___262_22910.lax); - lax_universes = (uu___262_22910.lax_universes); - phase1 = (uu___262_22910.phase1); - failhard = (uu___262_22910.failhard); - nosynth = (uu___262_22910.nosynth); - uvar_subtyping = (uu___262_22910.uvar_subtyping); - tc_term = (uu___262_22910.tc_term); - type_of = (uu___262_22910.type_of); - universe_of = (uu___262_22910.universe_of); - check_type_of = (uu___262_22910.check_type_of); - use_bv_sorts = (uu___262_22910.use_bv_sorts); - qtbl_name_and_index = (uu___262_22910.qtbl_name_and_index); - normalized_eff_names = (uu___262_22910.normalized_eff_names); - fv_delta_depths = (uu___262_22910.fv_delta_depths); - proof_ns = (uu___262_22910.proof_ns); - synth_hook = (uu___262_22910.synth_hook); - splice = (uu___262_22910.splice); - postprocess = (uu___262_22910.postprocess); - is_native_tactic = (uu___262_22910.is_native_tactic); - identifier_info = (uu___262_22910.identifier_info); - tc_hooks = (uu___262_22910.tc_hooks); - dsenv = (uu___262_22910.dsenv); - nbe = (uu___262_22910.nbe) + gamma_cache = (uu___261_22841.gamma_cache); + modules = (uu___261_22841.modules); + expected_typ = (uu___261_22841.expected_typ); + sigtab = (uu___261_22841.sigtab); + attrtab = (uu___261_22841.attrtab); + is_pattern = (uu___261_22841.is_pattern); + instantiate_imp = (uu___261_22841.instantiate_imp); + effects = (uu___261_22841.effects); + generalize = (uu___261_22841.generalize); + letrecs = (uu___261_22841.letrecs); + top_level = (uu___261_22841.top_level); + check_uvars = (uu___261_22841.check_uvars); + use_eq = (uu___261_22841.use_eq); + is_iface = (uu___261_22841.is_iface); + admit = (uu___261_22841.admit); + lax = (uu___261_22841.lax); + lax_universes = (uu___261_22841.lax_universes); + phase1 = (uu___261_22841.phase1); + failhard = (uu___261_22841.failhard); + nosynth = (uu___261_22841.nosynth); + uvar_subtyping = (uu___261_22841.uvar_subtyping); + tc_term = (uu___261_22841.tc_term); + type_of = (uu___261_22841.type_of); + universe_of = (uu___261_22841.universe_of); + check_type_of = (uu___261_22841.check_type_of); + use_bv_sorts = (uu___261_22841.use_bv_sorts); + qtbl_name_and_index = (uu___261_22841.qtbl_name_and_index); + normalized_eff_names = (uu___261_22841.normalized_eff_names); + fv_delta_depths = (uu___261_22841.fv_delta_depths); + proof_ns = (uu___261_22841.proof_ns); + synth_hook = (uu___261_22841.synth_hook); + splice = (uu___261_22841.splice); + postprocess = (uu___261_22841.postprocess); + is_native_tactic = (uu___261_22841.is_native_tactic); + identifier_info = (uu___261_22841.identifier_info); + tc_hooks = (uu___261_22841.tc_hooks); + dsenv = (uu___261_22841.dsenv); + nbe = (uu___261_22841.nbe) } in add_sigelt env1 s; (env1.tc_hooks).tc_push_in_gamma_hook env1 (FStar_Util.Inr sb); @@ -4595,51 +4582,51 @@ let (push_sigelt : env -> FStar_Syntax_Syntax.sigelt -> env) = let (push_local_binding : env -> FStar_Syntax_Syntax.binding -> env) = fun env -> fun b -> - let uu___263_22924 = env in + let uu___262_22855 = env in { - solver = (uu___263_22924.solver); - range = (uu___263_22924.range); - curmodule = (uu___263_22924.curmodule); + solver = (uu___262_22855.solver); + range = (uu___262_22855.range); + curmodule = (uu___262_22855.curmodule); gamma = (b :: (env.gamma)); - gamma_sig = (uu___263_22924.gamma_sig); - gamma_cache = (uu___263_22924.gamma_cache); - modules = (uu___263_22924.modules); - expected_typ = (uu___263_22924.expected_typ); - sigtab = (uu___263_22924.sigtab); - attrtab = (uu___263_22924.attrtab); - is_pattern = (uu___263_22924.is_pattern); - instantiate_imp = (uu___263_22924.instantiate_imp); - effects = (uu___263_22924.effects); - generalize = (uu___263_22924.generalize); - letrecs = (uu___263_22924.letrecs); - top_level = (uu___263_22924.top_level); - check_uvars = (uu___263_22924.check_uvars); - use_eq = (uu___263_22924.use_eq); - is_iface = (uu___263_22924.is_iface); - admit = (uu___263_22924.admit); - lax = (uu___263_22924.lax); - lax_universes = (uu___263_22924.lax_universes); - phase1 = (uu___263_22924.phase1); - failhard = (uu___263_22924.failhard); - nosynth = (uu___263_22924.nosynth); - uvar_subtyping = (uu___263_22924.uvar_subtyping); - tc_term = (uu___263_22924.tc_term); - type_of = (uu___263_22924.type_of); - universe_of = (uu___263_22924.universe_of); - check_type_of = (uu___263_22924.check_type_of); - use_bv_sorts = (uu___263_22924.use_bv_sorts); - qtbl_name_and_index = (uu___263_22924.qtbl_name_and_index); - normalized_eff_names = (uu___263_22924.normalized_eff_names); - fv_delta_depths = (uu___263_22924.fv_delta_depths); - proof_ns = (uu___263_22924.proof_ns); - synth_hook = (uu___263_22924.synth_hook); - splice = (uu___263_22924.splice); - postprocess = (uu___263_22924.postprocess); - is_native_tactic = (uu___263_22924.is_native_tactic); - identifier_info = (uu___263_22924.identifier_info); - tc_hooks = (uu___263_22924.tc_hooks); - dsenv = (uu___263_22924.dsenv); - nbe = (uu___263_22924.nbe) + gamma_sig = (uu___262_22855.gamma_sig); + gamma_cache = (uu___262_22855.gamma_cache); + modules = (uu___262_22855.modules); + expected_typ = (uu___262_22855.expected_typ); + sigtab = (uu___262_22855.sigtab); + attrtab = (uu___262_22855.attrtab); + is_pattern = (uu___262_22855.is_pattern); + instantiate_imp = (uu___262_22855.instantiate_imp); + effects = (uu___262_22855.effects); + generalize = (uu___262_22855.generalize); + letrecs = (uu___262_22855.letrecs); + top_level = (uu___262_22855.top_level); + check_uvars = (uu___262_22855.check_uvars); + use_eq = (uu___262_22855.use_eq); + is_iface = (uu___262_22855.is_iface); + admit = (uu___262_22855.admit); + lax = (uu___262_22855.lax); + lax_universes = (uu___262_22855.lax_universes); + phase1 = (uu___262_22855.phase1); + failhard = (uu___262_22855.failhard); + nosynth = (uu___262_22855.nosynth); + uvar_subtyping = (uu___262_22855.uvar_subtyping); + tc_term = (uu___262_22855.tc_term); + type_of = (uu___262_22855.type_of); + universe_of = (uu___262_22855.universe_of); + check_type_of = (uu___262_22855.check_type_of); + use_bv_sorts = (uu___262_22855.use_bv_sorts); + qtbl_name_and_index = (uu___262_22855.qtbl_name_and_index); + normalized_eff_names = (uu___262_22855.normalized_eff_names); + fv_delta_depths = (uu___262_22855.fv_delta_depths); + proof_ns = (uu___262_22855.proof_ns); + synth_hook = (uu___262_22855.synth_hook); + splice = (uu___262_22855.splice); + postprocess = (uu___262_22855.postprocess); + is_native_tactic = (uu___262_22855.is_native_tactic); + identifier_info = (uu___262_22855.identifier_info); + tc_hooks = (uu___262_22855.tc_hooks); + dsenv = (uu___262_22855.dsenv); + nbe = (uu___262_22855.nbe) } let (push_bv : env -> FStar_Syntax_Syntax.bv -> env) = @@ -4661,61 +4648,61 @@ let (pop_bv : | (FStar_Syntax_Syntax.Binding_var x)::rest -> FStar_Pervasives_Native.Some (x, - (let uu___264_22982 = env in + (let uu___263_22913 = env in { - solver = (uu___264_22982.solver); - range = (uu___264_22982.range); - curmodule = (uu___264_22982.curmodule); + solver = (uu___263_22913.solver); + range = (uu___263_22913.range); + curmodule = (uu___263_22913.curmodule); gamma = rest; - gamma_sig = (uu___264_22982.gamma_sig); - gamma_cache = (uu___264_22982.gamma_cache); - modules = (uu___264_22982.modules); - expected_typ = (uu___264_22982.expected_typ); - sigtab = (uu___264_22982.sigtab); - attrtab = (uu___264_22982.attrtab); - is_pattern = (uu___264_22982.is_pattern); - instantiate_imp = (uu___264_22982.instantiate_imp); - effects = (uu___264_22982.effects); - generalize = (uu___264_22982.generalize); - letrecs = (uu___264_22982.letrecs); - top_level = (uu___264_22982.top_level); - check_uvars = (uu___264_22982.check_uvars); - use_eq = (uu___264_22982.use_eq); - is_iface = (uu___264_22982.is_iface); - admit = (uu___264_22982.admit); - lax = (uu___264_22982.lax); - lax_universes = (uu___264_22982.lax_universes); - phase1 = (uu___264_22982.phase1); - failhard = (uu___264_22982.failhard); - nosynth = (uu___264_22982.nosynth); - uvar_subtyping = (uu___264_22982.uvar_subtyping); - tc_term = (uu___264_22982.tc_term); - type_of = (uu___264_22982.type_of); - universe_of = (uu___264_22982.universe_of); - check_type_of = (uu___264_22982.check_type_of); - use_bv_sorts = (uu___264_22982.use_bv_sorts); - qtbl_name_and_index = (uu___264_22982.qtbl_name_and_index); - normalized_eff_names = (uu___264_22982.normalized_eff_names); - fv_delta_depths = (uu___264_22982.fv_delta_depths); - proof_ns = (uu___264_22982.proof_ns); - synth_hook = (uu___264_22982.synth_hook); - splice = (uu___264_22982.splice); - postprocess = (uu___264_22982.postprocess); - is_native_tactic = (uu___264_22982.is_native_tactic); - identifier_info = (uu___264_22982.identifier_info); - tc_hooks = (uu___264_22982.tc_hooks); - dsenv = (uu___264_22982.dsenv); - nbe = (uu___264_22982.nbe) + gamma_sig = (uu___263_22913.gamma_sig); + gamma_cache = (uu___263_22913.gamma_cache); + modules = (uu___263_22913.modules); + expected_typ = (uu___263_22913.expected_typ); + sigtab = (uu___263_22913.sigtab); + attrtab = (uu___263_22913.attrtab); + is_pattern = (uu___263_22913.is_pattern); + instantiate_imp = (uu___263_22913.instantiate_imp); + effects = (uu___263_22913.effects); + generalize = (uu___263_22913.generalize); + letrecs = (uu___263_22913.letrecs); + top_level = (uu___263_22913.top_level); + check_uvars = (uu___263_22913.check_uvars); + use_eq = (uu___263_22913.use_eq); + is_iface = (uu___263_22913.is_iface); + admit = (uu___263_22913.admit); + lax = (uu___263_22913.lax); + lax_universes = (uu___263_22913.lax_universes); + phase1 = (uu___263_22913.phase1); + failhard = (uu___263_22913.failhard); + nosynth = (uu___263_22913.nosynth); + uvar_subtyping = (uu___263_22913.uvar_subtyping); + tc_term = (uu___263_22913.tc_term); + type_of = (uu___263_22913.type_of); + universe_of = (uu___263_22913.universe_of); + check_type_of = (uu___263_22913.check_type_of); + use_bv_sorts = (uu___263_22913.use_bv_sorts); + qtbl_name_and_index = (uu___263_22913.qtbl_name_and_index); + normalized_eff_names = (uu___263_22913.normalized_eff_names); + fv_delta_depths = (uu___263_22913.fv_delta_depths); + proof_ns = (uu___263_22913.proof_ns); + synth_hook = (uu___263_22913.synth_hook); + splice = (uu___263_22913.splice); + postprocess = (uu___263_22913.postprocess); + is_native_tactic = (uu___263_22913.is_native_tactic); + identifier_info = (uu___263_22913.identifier_info); + tc_hooks = (uu___263_22913.tc_hooks); + dsenv = (uu___263_22913.dsenv); + nbe = (uu___263_22913.nbe) })) - | uu____22983 -> FStar_Pervasives_Native.None + | uu____22914 -> FStar_Pervasives_Native.None let (push_binders : env -> FStar_Syntax_Syntax.binders -> env) = fun env -> fun bs -> FStar_List.fold_left (fun env1 -> - fun uu____23012 -> - match uu____23012 with | (x,uu____23020) -> push_bv env1 x) env + fun uu____22943 -> + match uu____22943 with | (x,uu____22951) -> push_bv env1 x) env bs let (binding_of_lb : @@ -4729,12 +4716,12 @@ let (binding_of_lb : match x with | FStar_Util.Inl x1 -> let x2 = - let uu___265_23055 = x1 in + let uu___264_22986 = x1 in { FStar_Syntax_Syntax.ppname = - (uu___265_23055.FStar_Syntax_Syntax.ppname); + (uu___264_22986.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___265_23055.FStar_Syntax_Syntax.index); + (uu___264_22986.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = (FStar_Pervasives_Native.snd t) } in FStar_Syntax_Syntax.Binding_var x2 @@ -4751,51 +4738,51 @@ let (push_module : env -> FStar_Syntax_Syntax.modul -> env) = fun env -> fun m -> add_sigelts env m.FStar_Syntax_Syntax.exports; - (let uu___266_23097 = env in + (let uu___265_23028 = env in { - solver = (uu___266_23097.solver); - range = (uu___266_23097.range); - curmodule = (uu___266_23097.curmodule); + solver = (uu___265_23028.solver); + range = (uu___265_23028.range); + curmodule = (uu___265_23028.curmodule); gamma = []; gamma_sig = []; - gamma_cache = (uu___266_23097.gamma_cache); + gamma_cache = (uu___265_23028.gamma_cache); modules = (m :: (env.modules)); expected_typ = FStar_Pervasives_Native.None; - sigtab = (uu___266_23097.sigtab); - attrtab = (uu___266_23097.attrtab); - is_pattern = (uu___266_23097.is_pattern); - instantiate_imp = (uu___266_23097.instantiate_imp); - effects = (uu___266_23097.effects); - generalize = (uu___266_23097.generalize); - letrecs = (uu___266_23097.letrecs); - top_level = (uu___266_23097.top_level); - check_uvars = (uu___266_23097.check_uvars); - use_eq = (uu___266_23097.use_eq); - is_iface = (uu___266_23097.is_iface); - admit = (uu___266_23097.admit); - lax = (uu___266_23097.lax); - lax_universes = (uu___266_23097.lax_universes); - phase1 = (uu___266_23097.phase1); - failhard = (uu___266_23097.failhard); - nosynth = (uu___266_23097.nosynth); - uvar_subtyping = (uu___266_23097.uvar_subtyping); - tc_term = (uu___266_23097.tc_term); - type_of = (uu___266_23097.type_of); - universe_of = (uu___266_23097.universe_of); - check_type_of = (uu___266_23097.check_type_of); - use_bv_sorts = (uu___266_23097.use_bv_sorts); - qtbl_name_and_index = (uu___266_23097.qtbl_name_and_index); - normalized_eff_names = (uu___266_23097.normalized_eff_names); - fv_delta_depths = (uu___266_23097.fv_delta_depths); - proof_ns = (uu___266_23097.proof_ns); - synth_hook = (uu___266_23097.synth_hook); - splice = (uu___266_23097.splice); - postprocess = (uu___266_23097.postprocess); - is_native_tactic = (uu___266_23097.is_native_tactic); - identifier_info = (uu___266_23097.identifier_info); - tc_hooks = (uu___266_23097.tc_hooks); - dsenv = (uu___266_23097.dsenv); - nbe = (uu___266_23097.nbe) + sigtab = (uu___265_23028.sigtab); + attrtab = (uu___265_23028.attrtab); + is_pattern = (uu___265_23028.is_pattern); + instantiate_imp = (uu___265_23028.instantiate_imp); + effects = (uu___265_23028.effects); + generalize = (uu___265_23028.generalize); + letrecs = (uu___265_23028.letrecs); + top_level = (uu___265_23028.top_level); + check_uvars = (uu___265_23028.check_uvars); + use_eq = (uu___265_23028.use_eq); + is_iface = (uu___265_23028.is_iface); + admit = (uu___265_23028.admit); + lax = (uu___265_23028.lax); + lax_universes = (uu___265_23028.lax_universes); + phase1 = (uu___265_23028.phase1); + failhard = (uu___265_23028.failhard); + nosynth = (uu___265_23028.nosynth); + uvar_subtyping = (uu___265_23028.uvar_subtyping); + tc_term = (uu___265_23028.tc_term); + type_of = (uu___265_23028.type_of); + universe_of = (uu___265_23028.universe_of); + check_type_of = (uu___265_23028.check_type_of); + use_bv_sorts = (uu___265_23028.use_bv_sorts); + qtbl_name_and_index = (uu___265_23028.qtbl_name_and_index); + normalized_eff_names = (uu___265_23028.normalized_eff_names); + fv_delta_depths = (uu___265_23028.fv_delta_depths); + proof_ns = (uu___265_23028.proof_ns); + synth_hook = (uu___265_23028.synth_hook); + splice = (uu___265_23028.splice); + postprocess = (uu___265_23028.postprocess); + is_native_tactic = (uu___265_23028.is_native_tactic); + identifier_info = (uu___265_23028.identifier_info); + tc_hooks = (uu___265_23028.tc_hooks); + dsenv = (uu___265_23028.dsenv); + nbe = (uu___265_23028.nbe) }) let (push_univ_vars : env -> FStar_Syntax_Syntax.univ_names -> env) = @@ -4818,62 +4805,62 @@ let (open_universes_in : fun env -> fun uvs -> fun terms -> - let uu____23141 = FStar_Syntax_Subst.univ_var_opening uvs in - match uu____23141 with + let uu____23072 = FStar_Syntax_Subst.univ_var_opening uvs in + match uu____23072 with | (univ_subst,univ_vars) -> let env' = push_univ_vars env univ_vars in - let uu____23169 = + let uu____23100 = FStar_List.map (FStar_Syntax_Subst.subst univ_subst) terms in - (env', univ_vars, uu____23169) + (env', univ_vars, uu____23100) let (set_expected_typ : env -> FStar_Syntax_Syntax.typ -> env) = fun env -> fun t -> - let uu___267_23185 = env in + let uu___266_23116 = env in { - solver = (uu___267_23185.solver); - range = (uu___267_23185.range); - curmodule = (uu___267_23185.curmodule); - gamma = (uu___267_23185.gamma); - gamma_sig = (uu___267_23185.gamma_sig); - gamma_cache = (uu___267_23185.gamma_cache); - modules = (uu___267_23185.modules); + solver = (uu___266_23116.solver); + range = (uu___266_23116.range); + curmodule = (uu___266_23116.curmodule); + gamma = (uu___266_23116.gamma); + gamma_sig = (uu___266_23116.gamma_sig); + gamma_cache = (uu___266_23116.gamma_cache); + modules = (uu___266_23116.modules); expected_typ = (FStar_Pervasives_Native.Some t); - sigtab = (uu___267_23185.sigtab); - attrtab = (uu___267_23185.attrtab); - is_pattern = (uu___267_23185.is_pattern); - instantiate_imp = (uu___267_23185.instantiate_imp); - effects = (uu___267_23185.effects); - generalize = (uu___267_23185.generalize); - letrecs = (uu___267_23185.letrecs); - top_level = (uu___267_23185.top_level); - check_uvars = (uu___267_23185.check_uvars); + sigtab = (uu___266_23116.sigtab); + attrtab = (uu___266_23116.attrtab); + is_pattern = (uu___266_23116.is_pattern); + instantiate_imp = (uu___266_23116.instantiate_imp); + effects = (uu___266_23116.effects); + generalize = (uu___266_23116.generalize); + letrecs = (uu___266_23116.letrecs); + top_level = (uu___266_23116.top_level); + check_uvars = (uu___266_23116.check_uvars); use_eq = false; - is_iface = (uu___267_23185.is_iface); - admit = (uu___267_23185.admit); - lax = (uu___267_23185.lax); - lax_universes = (uu___267_23185.lax_universes); - phase1 = (uu___267_23185.phase1); - failhard = (uu___267_23185.failhard); - nosynth = (uu___267_23185.nosynth); - uvar_subtyping = (uu___267_23185.uvar_subtyping); - tc_term = (uu___267_23185.tc_term); - type_of = (uu___267_23185.type_of); - universe_of = (uu___267_23185.universe_of); - check_type_of = (uu___267_23185.check_type_of); - use_bv_sorts = (uu___267_23185.use_bv_sorts); - qtbl_name_and_index = (uu___267_23185.qtbl_name_and_index); - normalized_eff_names = (uu___267_23185.normalized_eff_names); - fv_delta_depths = (uu___267_23185.fv_delta_depths); - proof_ns = (uu___267_23185.proof_ns); - synth_hook = (uu___267_23185.synth_hook); - splice = (uu___267_23185.splice); - postprocess = (uu___267_23185.postprocess); - is_native_tactic = (uu___267_23185.is_native_tactic); - identifier_info = (uu___267_23185.identifier_info); - tc_hooks = (uu___267_23185.tc_hooks); - dsenv = (uu___267_23185.dsenv); - nbe = (uu___267_23185.nbe) + is_iface = (uu___266_23116.is_iface); + admit = (uu___266_23116.admit); + lax = (uu___266_23116.lax); + lax_universes = (uu___266_23116.lax_universes); + phase1 = (uu___266_23116.phase1); + failhard = (uu___266_23116.failhard); + nosynth = (uu___266_23116.nosynth); + uvar_subtyping = (uu___266_23116.uvar_subtyping); + tc_term = (uu___266_23116.tc_term); + type_of = (uu___266_23116.type_of); + universe_of = (uu___266_23116.universe_of); + check_type_of = (uu___266_23116.check_type_of); + use_bv_sorts = (uu___266_23116.use_bv_sorts); + qtbl_name_and_index = (uu___266_23116.qtbl_name_and_index); + normalized_eff_names = (uu___266_23116.normalized_eff_names); + fv_delta_depths = (uu___266_23116.fv_delta_depths); + proof_ns = (uu___266_23116.proof_ns); + synth_hook = (uu___266_23116.synth_hook); + splice = (uu___266_23116.splice); + postprocess = (uu___266_23116.postprocess); + is_native_tactic = (uu___266_23116.is_native_tactic); + identifier_info = (uu___266_23116.identifier_info); + tc_hooks = (uu___266_23116.tc_hooks); + dsenv = (uu___266_23116.dsenv); + nbe = (uu___266_23116.nbe) } let (expected_typ : @@ -4889,120 +4876,120 @@ let (clear_expected_typ : FStar_Pervasives_Native.tuple2) = fun env_ -> - let uu____23216 = expected_typ env_ in - ((let uu___268_23222 = env_ in + let uu____23147 = expected_typ env_ in + ((let uu___267_23153 = env_ in { - solver = (uu___268_23222.solver); - range = (uu___268_23222.range); - curmodule = (uu___268_23222.curmodule); - gamma = (uu___268_23222.gamma); - gamma_sig = (uu___268_23222.gamma_sig); - gamma_cache = (uu___268_23222.gamma_cache); - modules = (uu___268_23222.modules); + solver = (uu___267_23153.solver); + range = (uu___267_23153.range); + curmodule = (uu___267_23153.curmodule); + gamma = (uu___267_23153.gamma); + gamma_sig = (uu___267_23153.gamma_sig); + gamma_cache = (uu___267_23153.gamma_cache); + modules = (uu___267_23153.modules); expected_typ = FStar_Pervasives_Native.None; - sigtab = (uu___268_23222.sigtab); - attrtab = (uu___268_23222.attrtab); - is_pattern = (uu___268_23222.is_pattern); - instantiate_imp = (uu___268_23222.instantiate_imp); - effects = (uu___268_23222.effects); - generalize = (uu___268_23222.generalize); - letrecs = (uu___268_23222.letrecs); - top_level = (uu___268_23222.top_level); - check_uvars = (uu___268_23222.check_uvars); + sigtab = (uu___267_23153.sigtab); + attrtab = (uu___267_23153.attrtab); + is_pattern = (uu___267_23153.is_pattern); + instantiate_imp = (uu___267_23153.instantiate_imp); + effects = (uu___267_23153.effects); + generalize = (uu___267_23153.generalize); + letrecs = (uu___267_23153.letrecs); + top_level = (uu___267_23153.top_level); + check_uvars = (uu___267_23153.check_uvars); use_eq = false; - is_iface = (uu___268_23222.is_iface); - admit = (uu___268_23222.admit); - lax = (uu___268_23222.lax); - lax_universes = (uu___268_23222.lax_universes); - phase1 = (uu___268_23222.phase1); - failhard = (uu___268_23222.failhard); - nosynth = (uu___268_23222.nosynth); - uvar_subtyping = (uu___268_23222.uvar_subtyping); - tc_term = (uu___268_23222.tc_term); - type_of = (uu___268_23222.type_of); - universe_of = (uu___268_23222.universe_of); - check_type_of = (uu___268_23222.check_type_of); - use_bv_sorts = (uu___268_23222.use_bv_sorts); - qtbl_name_and_index = (uu___268_23222.qtbl_name_and_index); - normalized_eff_names = (uu___268_23222.normalized_eff_names); - fv_delta_depths = (uu___268_23222.fv_delta_depths); - proof_ns = (uu___268_23222.proof_ns); - synth_hook = (uu___268_23222.synth_hook); - splice = (uu___268_23222.splice); - postprocess = (uu___268_23222.postprocess); - is_native_tactic = (uu___268_23222.is_native_tactic); - identifier_info = (uu___268_23222.identifier_info); - tc_hooks = (uu___268_23222.tc_hooks); - dsenv = (uu___268_23222.dsenv); - nbe = (uu___268_23222.nbe) - }), uu____23216) + is_iface = (uu___267_23153.is_iface); + admit = (uu___267_23153.admit); + lax = (uu___267_23153.lax); + lax_universes = (uu___267_23153.lax_universes); + phase1 = (uu___267_23153.phase1); + failhard = (uu___267_23153.failhard); + nosynth = (uu___267_23153.nosynth); + uvar_subtyping = (uu___267_23153.uvar_subtyping); + tc_term = (uu___267_23153.tc_term); + type_of = (uu___267_23153.type_of); + universe_of = (uu___267_23153.universe_of); + check_type_of = (uu___267_23153.check_type_of); + use_bv_sorts = (uu___267_23153.use_bv_sorts); + qtbl_name_and_index = (uu___267_23153.qtbl_name_and_index); + normalized_eff_names = (uu___267_23153.normalized_eff_names); + fv_delta_depths = (uu___267_23153.fv_delta_depths); + proof_ns = (uu___267_23153.proof_ns); + synth_hook = (uu___267_23153.synth_hook); + splice = (uu___267_23153.splice); + postprocess = (uu___267_23153.postprocess); + is_native_tactic = (uu___267_23153.is_native_tactic); + identifier_info = (uu___267_23153.identifier_info); + tc_hooks = (uu___267_23153.tc_hooks); + dsenv = (uu___267_23153.dsenv); + nbe = (uu___267_23153.nbe) + }), uu____23147) let (finish_module : env -> FStar_Syntax_Syntax.modul -> env) = let empty_lid = - let uu____23234 = - let uu____23237 = FStar_Ident.id_of_text "" in [uu____23237] in - FStar_Ident.lid_of_ids uu____23234 in + let uu____23165 = + let uu____23168 = FStar_Ident.id_of_text "" in [uu____23168] in + FStar_Ident.lid_of_ids uu____23165 in fun env -> fun m -> let sigs = - let uu____23244 = + let uu____23175 = FStar_Ident.lid_equals m.FStar_Syntax_Syntax.name FStar_Parser_Const.prims_lid in - if uu____23244 + if uu____23175 then - let uu____23249 = + let uu____23180 = FStar_All.pipe_right env.gamma_sig (FStar_List.map FStar_Pervasives_Native.snd) in - FStar_All.pipe_right uu____23249 FStar_List.rev + FStar_All.pipe_right uu____23180 FStar_List.rev else m.FStar_Syntax_Syntax.exports in add_sigelts env sigs; - (let uu___269_23277 = env in + (let uu___268_23208 = env in { - solver = (uu___269_23277.solver); - range = (uu___269_23277.range); + solver = (uu___268_23208.solver); + range = (uu___268_23208.range); curmodule = empty_lid; gamma = []; gamma_sig = []; - gamma_cache = (uu___269_23277.gamma_cache); + gamma_cache = (uu___268_23208.gamma_cache); modules = (m :: (env.modules)); - expected_typ = (uu___269_23277.expected_typ); - sigtab = (uu___269_23277.sigtab); - attrtab = (uu___269_23277.attrtab); - is_pattern = (uu___269_23277.is_pattern); - instantiate_imp = (uu___269_23277.instantiate_imp); - effects = (uu___269_23277.effects); - generalize = (uu___269_23277.generalize); - letrecs = (uu___269_23277.letrecs); - top_level = (uu___269_23277.top_level); - check_uvars = (uu___269_23277.check_uvars); - use_eq = (uu___269_23277.use_eq); - is_iface = (uu___269_23277.is_iface); - admit = (uu___269_23277.admit); - lax = (uu___269_23277.lax); - lax_universes = (uu___269_23277.lax_universes); - phase1 = (uu___269_23277.phase1); - failhard = (uu___269_23277.failhard); - nosynth = (uu___269_23277.nosynth); - uvar_subtyping = (uu___269_23277.uvar_subtyping); - tc_term = (uu___269_23277.tc_term); - type_of = (uu___269_23277.type_of); - universe_of = (uu___269_23277.universe_of); - check_type_of = (uu___269_23277.check_type_of); - use_bv_sorts = (uu___269_23277.use_bv_sorts); - qtbl_name_and_index = (uu___269_23277.qtbl_name_and_index); - normalized_eff_names = (uu___269_23277.normalized_eff_names); - fv_delta_depths = (uu___269_23277.fv_delta_depths); - proof_ns = (uu___269_23277.proof_ns); - synth_hook = (uu___269_23277.synth_hook); - splice = (uu___269_23277.splice); - postprocess = (uu___269_23277.postprocess); - is_native_tactic = (uu___269_23277.is_native_tactic); - identifier_info = (uu___269_23277.identifier_info); - tc_hooks = (uu___269_23277.tc_hooks); - dsenv = (uu___269_23277.dsenv); - nbe = (uu___269_23277.nbe) + expected_typ = (uu___268_23208.expected_typ); + sigtab = (uu___268_23208.sigtab); + attrtab = (uu___268_23208.attrtab); + is_pattern = (uu___268_23208.is_pattern); + instantiate_imp = (uu___268_23208.instantiate_imp); + effects = (uu___268_23208.effects); + generalize = (uu___268_23208.generalize); + letrecs = (uu___268_23208.letrecs); + top_level = (uu___268_23208.top_level); + check_uvars = (uu___268_23208.check_uvars); + use_eq = (uu___268_23208.use_eq); + is_iface = (uu___268_23208.is_iface); + admit = (uu___268_23208.admit); + lax = (uu___268_23208.lax); + lax_universes = (uu___268_23208.lax_universes); + phase1 = (uu___268_23208.phase1); + failhard = (uu___268_23208.failhard); + nosynth = (uu___268_23208.nosynth); + uvar_subtyping = (uu___268_23208.uvar_subtyping); + tc_term = (uu___268_23208.tc_term); + type_of = (uu___268_23208.type_of); + universe_of = (uu___268_23208.universe_of); + check_type_of = (uu___268_23208.check_type_of); + use_bv_sorts = (uu___268_23208.use_bv_sorts); + qtbl_name_and_index = (uu___268_23208.qtbl_name_and_index); + normalized_eff_names = (uu___268_23208.normalized_eff_names); + fv_delta_depths = (uu___268_23208.fv_delta_depths); + proof_ns = (uu___268_23208.proof_ns); + synth_hook = (uu___268_23208.synth_hook); + splice = (uu___268_23208.splice); + postprocess = (uu___268_23208.postprocess); + is_native_tactic = (uu___268_23208.is_native_tactic); + identifier_info = (uu___268_23208.identifier_info); + tc_hooks = (uu___268_23208.tc_hooks); + dsenv = (uu___268_23208.dsenv); + nbe = (uu___268_23208.nbe) }) let (uvars_in_env : env -> FStar_Syntax_Syntax.uvars) = @@ -5012,22 +4999,22 @@ let (uvars_in_env : env -> FStar_Syntax_Syntax.uvars) = let rec aux out g = match g with | [] -> out - | (FStar_Syntax_Syntax.Binding_univ uu____23329)::tl1 -> aux out tl1 - | (FStar_Syntax_Syntax.Binding_lid (uu____23333,(uu____23334,t)))::tl1 + | (FStar_Syntax_Syntax.Binding_univ uu____23260)::tl1 -> aux out tl1 + | (FStar_Syntax_Syntax.Binding_lid (uu____23264,(uu____23265,t)))::tl1 -> - let uu____23355 = - let uu____23358 = FStar_Syntax_Free.uvars t in - ext out uu____23358 in - aux uu____23355 tl1 + let uu____23286 = + let uu____23289 = FStar_Syntax_Free.uvars t in + ext out uu____23289 in + aux uu____23286 tl1 | (FStar_Syntax_Syntax.Binding_var - { FStar_Syntax_Syntax.ppname = uu____23361; - FStar_Syntax_Syntax.index = uu____23362; + { FStar_Syntax_Syntax.ppname = uu____23292; + FStar_Syntax_Syntax.index = uu____23293; FStar_Syntax_Syntax.sort = t;_})::tl1 -> - let uu____23370 = - let uu____23373 = FStar_Syntax_Free.uvars t in - ext out uu____23373 in - aux uu____23370 tl1 + let uu____23301 = + let uu____23304 = FStar_Syntax_Free.uvars t in + ext out uu____23304 in + aux uu____23301 tl1 in aux no_uvs env.gamma @@ -5038,22 +5025,22 @@ let (univ_vars : env -> FStar_Syntax_Syntax.universe_uvar FStar_Util.set) = let rec aux out g = match g with | [] -> out - | (FStar_Syntax_Syntax.Binding_univ uu____23431)::tl1 -> aux out tl1 - | (FStar_Syntax_Syntax.Binding_lid (uu____23435,(uu____23436,t)))::tl1 + | (FStar_Syntax_Syntax.Binding_univ uu____23362)::tl1 -> aux out tl1 + | (FStar_Syntax_Syntax.Binding_lid (uu____23366,(uu____23367,t)))::tl1 -> - let uu____23457 = - let uu____23460 = FStar_Syntax_Free.univs t in - ext out uu____23460 in - aux uu____23457 tl1 + let uu____23388 = + let uu____23391 = FStar_Syntax_Free.univs t in + ext out uu____23391 in + aux uu____23388 tl1 | (FStar_Syntax_Syntax.Binding_var - { FStar_Syntax_Syntax.ppname = uu____23463; - FStar_Syntax_Syntax.index = uu____23464; + { FStar_Syntax_Syntax.ppname = uu____23394; + FStar_Syntax_Syntax.index = uu____23395; FStar_Syntax_Syntax.sort = t;_})::tl1 -> - let uu____23472 = - let uu____23475 = FStar_Syntax_Free.univs t in - ext out uu____23475 in - aux uu____23472 tl1 + let uu____23403 = + let uu____23406 = FStar_Syntax_Free.univs t in + ext out uu____23406 in + aux uu____23403 tl1 in aux no_univs env.gamma @@ -5065,23 +5052,23 @@ let (univnames : env -> FStar_Syntax_Syntax.univ_name FStar_Util.set) = match g with | [] -> out | (FStar_Syntax_Syntax.Binding_univ uname)::tl1 -> - let uu____23537 = FStar_Util.set_add uname out in - aux uu____23537 tl1 - | (FStar_Syntax_Syntax.Binding_lid (uu____23540,(uu____23541,t)))::tl1 + let uu____23468 = FStar_Util.set_add uname out in + aux uu____23468 tl1 + | (FStar_Syntax_Syntax.Binding_lid (uu____23471,(uu____23472,t)))::tl1 -> - let uu____23562 = - let uu____23565 = FStar_Syntax_Free.univnames t in - ext out uu____23565 in - aux uu____23562 tl1 + let uu____23493 = + let uu____23496 = FStar_Syntax_Free.univnames t in + ext out uu____23496 in + aux uu____23493 tl1 | (FStar_Syntax_Syntax.Binding_var - { FStar_Syntax_Syntax.ppname = uu____23568; - FStar_Syntax_Syntax.index = uu____23569; + { FStar_Syntax_Syntax.ppname = uu____23499; + FStar_Syntax_Syntax.index = uu____23500; FStar_Syntax_Syntax.sort = t;_})::tl1 -> - let uu____23577 = - let uu____23580 = FStar_Syntax_Free.univnames t in - ext out uu____23580 in - aux uu____23577 tl1 + let uu____23508 = + let uu____23511 = FStar_Syntax_Free.univnames t in + ext out uu____23511 in + aux uu____23508 tl1 in aux no_univ_names env.gamma @@ -5091,21 +5078,21 @@ let (bound_vars_of_bindings : fun bs -> FStar_All.pipe_right bs (FStar_List.collect - (fun uu___243_23601 -> - match uu___243_23601 with + (fun uu___242_23532 -> + match uu___242_23532 with | FStar_Syntax_Syntax.Binding_var x -> [x] - | FStar_Syntax_Syntax.Binding_lid uu____23605 -> [] - | FStar_Syntax_Syntax.Binding_univ uu____23618 -> [])) + | FStar_Syntax_Syntax.Binding_lid uu____23536 -> [] + | FStar_Syntax_Syntax.Binding_univ uu____23549 -> [])) let (binders_of_bindings : FStar_Syntax_Syntax.binding Prims.list -> FStar_Syntax_Syntax.binders) = fun bs -> - let uu____23629 = - let uu____23638 = bound_vars_of_bindings bs in - FStar_All.pipe_right uu____23638 + let uu____23560 = + let uu____23569 = bound_vars_of_bindings bs in + FStar_All.pipe_right uu____23569 (FStar_List.map FStar_Syntax_Syntax.mk_binder) in - FStar_All.pipe_right uu____23629 FStar_List.rev + FStar_All.pipe_right uu____23560 FStar_List.rev let (bound_vars : env -> FStar_Syntax_Syntax.bv Prims.list) = fun env -> bound_vars_of_bindings env.gamma @@ -5113,38 +5100,38 @@ let (all_binders : env -> FStar_Syntax_Syntax.binders) = fun env -> binders_of_bindings env.gamma let (print_gamma : FStar_Syntax_Syntax.gamma -> Prims.string) = fun gamma -> - let uu____23686 = + let uu____23617 = FStar_All.pipe_right gamma (FStar_List.map - (fun uu___244_23699 -> - match uu___244_23699 with + (fun uu___243_23630 -> + match uu___243_23630 with | FStar_Syntax_Syntax.Binding_var x -> - let uu____23702 = FStar_Syntax_Print.bv_to_string x in - Prims.strcat "Binding_var " uu____23702 + let uu____23633 = FStar_Syntax_Print.bv_to_string x in + Prims.strcat "Binding_var " uu____23633 | FStar_Syntax_Syntax.Binding_univ u -> Prims.strcat "Binding_univ " u.FStar_Ident.idText - | FStar_Syntax_Syntax.Binding_lid (l,uu____23708) -> - let uu____23725 = FStar_Ident.string_of_lid l in - Prims.strcat "Binding_lid " uu____23725)) + | FStar_Syntax_Syntax.Binding_lid (l,uu____23639) -> + let uu____23656 = FStar_Ident.string_of_lid l in + Prims.strcat "Binding_lid " uu____23656)) in - FStar_All.pipe_right uu____23686 (FStar_String.concat "::\n") + FStar_All.pipe_right uu____23617 (FStar_String.concat "::\n") let (string_of_delta_level : delta_level -> Prims.string) = - fun uu___245_23739 -> - match uu___245_23739 with + fun uu___244_23670 -> + match uu___244_23670 with | NoDelta -> "NoDelta" | InliningDelta -> "Inlining" | Eager_unfolding_only -> "Eager_unfolding_only" | Unfold d -> - let uu____23745 = FStar_Syntax_Print.delta_depth_to_string d in - Prims.strcat "Unfold " uu____23745 + let uu____23676 = FStar_Syntax_Print.delta_depth_to_string d in + Prims.strcat "Unfold " uu____23676 let (lidents : env -> FStar_Ident.lident Prims.list) = fun env -> let keys = FStar_List.collect FStar_Pervasives_Native.fst env.gamma_sig in FStar_Util.smap_fold (sigtab env) - (fun uu____23768 -> + (fun uu____23699 -> fun v1 -> fun keys1 -> FStar_List.append (FStar_Syntax_Util.lids_of_sigelt v1) keys1) @@ -5155,74 +5142,74 @@ let (should_enc_path : env -> Prims.string Prims.list -> Prims.bool) = fun path -> let rec list_prefix xs ys = match (xs, ys) with - | ([],uu____23823) -> true + | ([],uu____23754) -> true | (x::xs1,y::ys1) -> (x = y) && (list_prefix xs1 ys1) - | (uu____23856,uu____23857) -> false in - let uu____23871 = + | (uu____23787,uu____23788) -> false in + let uu____23802 = FStar_List.tryFind - (fun uu____23893 -> - match uu____23893 with | (p,uu____23904) -> list_prefix p path) + (fun uu____23824 -> + match uu____23824 with | (p,uu____23835) -> list_prefix p path) env.proof_ns in - match uu____23871 with + match uu____23802 with | FStar_Pervasives_Native.None -> false - | FStar_Pervasives_Native.Some (uu____23923,b) -> b + | FStar_Pervasives_Native.Some (uu____23854,b) -> b let (should_enc_lid : env -> FStar_Ident.lident -> Prims.bool) = fun env -> fun lid -> - let uu____23953 = FStar_Ident.path_of_lid lid in - should_enc_path env uu____23953 + let uu____23884 = FStar_Ident.path_of_lid lid in + should_enc_path env uu____23884 let (cons_proof_ns : Prims.bool -> env -> name_prefix -> env) = fun b -> fun e -> fun path -> - let uu___270_23975 = e in + let uu___269_23906 = e in { - solver = (uu___270_23975.solver); - range = (uu___270_23975.range); - curmodule = (uu___270_23975.curmodule); - gamma = (uu___270_23975.gamma); - gamma_sig = (uu___270_23975.gamma_sig); - gamma_cache = (uu___270_23975.gamma_cache); - modules = (uu___270_23975.modules); - expected_typ = (uu___270_23975.expected_typ); - sigtab = (uu___270_23975.sigtab); - attrtab = (uu___270_23975.attrtab); - is_pattern = (uu___270_23975.is_pattern); - instantiate_imp = (uu___270_23975.instantiate_imp); - effects = (uu___270_23975.effects); - generalize = (uu___270_23975.generalize); - letrecs = (uu___270_23975.letrecs); - top_level = (uu___270_23975.top_level); - check_uvars = (uu___270_23975.check_uvars); - use_eq = (uu___270_23975.use_eq); - is_iface = (uu___270_23975.is_iface); - admit = (uu___270_23975.admit); - lax = (uu___270_23975.lax); - lax_universes = (uu___270_23975.lax_universes); - phase1 = (uu___270_23975.phase1); - failhard = (uu___270_23975.failhard); - nosynth = (uu___270_23975.nosynth); - uvar_subtyping = (uu___270_23975.uvar_subtyping); - tc_term = (uu___270_23975.tc_term); - type_of = (uu___270_23975.type_of); - universe_of = (uu___270_23975.universe_of); - check_type_of = (uu___270_23975.check_type_of); - use_bv_sorts = (uu___270_23975.use_bv_sorts); - qtbl_name_and_index = (uu___270_23975.qtbl_name_and_index); - normalized_eff_names = (uu___270_23975.normalized_eff_names); - fv_delta_depths = (uu___270_23975.fv_delta_depths); + solver = (uu___269_23906.solver); + range = (uu___269_23906.range); + curmodule = (uu___269_23906.curmodule); + gamma = (uu___269_23906.gamma); + gamma_sig = (uu___269_23906.gamma_sig); + gamma_cache = (uu___269_23906.gamma_cache); + modules = (uu___269_23906.modules); + expected_typ = (uu___269_23906.expected_typ); + sigtab = (uu___269_23906.sigtab); + attrtab = (uu___269_23906.attrtab); + is_pattern = (uu___269_23906.is_pattern); + instantiate_imp = (uu___269_23906.instantiate_imp); + effects = (uu___269_23906.effects); + generalize = (uu___269_23906.generalize); + letrecs = (uu___269_23906.letrecs); + top_level = (uu___269_23906.top_level); + check_uvars = (uu___269_23906.check_uvars); + use_eq = (uu___269_23906.use_eq); + is_iface = (uu___269_23906.is_iface); + admit = (uu___269_23906.admit); + lax = (uu___269_23906.lax); + lax_universes = (uu___269_23906.lax_universes); + phase1 = (uu___269_23906.phase1); + failhard = (uu___269_23906.failhard); + nosynth = (uu___269_23906.nosynth); + uvar_subtyping = (uu___269_23906.uvar_subtyping); + tc_term = (uu___269_23906.tc_term); + type_of = (uu___269_23906.type_of); + universe_of = (uu___269_23906.universe_of); + check_type_of = (uu___269_23906.check_type_of); + use_bv_sorts = (uu___269_23906.use_bv_sorts); + qtbl_name_and_index = (uu___269_23906.qtbl_name_and_index); + normalized_eff_names = (uu___269_23906.normalized_eff_names); + fv_delta_depths = (uu___269_23906.fv_delta_depths); proof_ns = ((path, b) :: (e.proof_ns)); - synth_hook = (uu___270_23975.synth_hook); - splice = (uu___270_23975.splice); - postprocess = (uu___270_23975.postprocess); - is_native_tactic = (uu___270_23975.is_native_tactic); - identifier_info = (uu___270_23975.identifier_info); - tc_hooks = (uu___270_23975.tc_hooks); - dsenv = (uu___270_23975.dsenv); - nbe = (uu___270_23975.nbe) + synth_hook = (uu___269_23906.synth_hook); + splice = (uu___269_23906.splice); + postprocess = (uu___269_23906.postprocess); + is_native_tactic = (uu___269_23906.is_native_tactic); + identifier_info = (uu___269_23906.identifier_info); + tc_hooks = (uu___269_23906.tc_hooks); + dsenv = (uu___269_23906.dsenv); + nbe = (uu___269_23906.nbe) } let (add_proof_ns : env -> name_prefix -> env) = @@ -5233,88 +5220,88 @@ let (get_proof_ns : env -> proof_namespace) = fun e -> e.proof_ns let (set_proof_ns : proof_namespace -> env -> env) = fun ns -> fun e -> - let uu___271_24023 = e in + let uu___270_23954 = e in { - solver = (uu___271_24023.solver); - range = (uu___271_24023.range); - curmodule = (uu___271_24023.curmodule); - gamma = (uu___271_24023.gamma); - gamma_sig = (uu___271_24023.gamma_sig); - gamma_cache = (uu___271_24023.gamma_cache); - modules = (uu___271_24023.modules); - expected_typ = (uu___271_24023.expected_typ); - sigtab = (uu___271_24023.sigtab); - attrtab = (uu___271_24023.attrtab); - is_pattern = (uu___271_24023.is_pattern); - instantiate_imp = (uu___271_24023.instantiate_imp); - effects = (uu___271_24023.effects); - generalize = (uu___271_24023.generalize); - letrecs = (uu___271_24023.letrecs); - top_level = (uu___271_24023.top_level); - check_uvars = (uu___271_24023.check_uvars); - use_eq = (uu___271_24023.use_eq); - is_iface = (uu___271_24023.is_iface); - admit = (uu___271_24023.admit); - lax = (uu___271_24023.lax); - lax_universes = (uu___271_24023.lax_universes); - phase1 = (uu___271_24023.phase1); - failhard = (uu___271_24023.failhard); - nosynth = (uu___271_24023.nosynth); - uvar_subtyping = (uu___271_24023.uvar_subtyping); - tc_term = (uu___271_24023.tc_term); - type_of = (uu___271_24023.type_of); - universe_of = (uu___271_24023.universe_of); - check_type_of = (uu___271_24023.check_type_of); - use_bv_sorts = (uu___271_24023.use_bv_sorts); - qtbl_name_and_index = (uu___271_24023.qtbl_name_and_index); - normalized_eff_names = (uu___271_24023.normalized_eff_names); - fv_delta_depths = (uu___271_24023.fv_delta_depths); + solver = (uu___270_23954.solver); + range = (uu___270_23954.range); + curmodule = (uu___270_23954.curmodule); + gamma = (uu___270_23954.gamma); + gamma_sig = (uu___270_23954.gamma_sig); + gamma_cache = (uu___270_23954.gamma_cache); + modules = (uu___270_23954.modules); + expected_typ = (uu___270_23954.expected_typ); + sigtab = (uu___270_23954.sigtab); + attrtab = (uu___270_23954.attrtab); + is_pattern = (uu___270_23954.is_pattern); + instantiate_imp = (uu___270_23954.instantiate_imp); + effects = (uu___270_23954.effects); + generalize = (uu___270_23954.generalize); + letrecs = (uu___270_23954.letrecs); + top_level = (uu___270_23954.top_level); + check_uvars = (uu___270_23954.check_uvars); + use_eq = (uu___270_23954.use_eq); + is_iface = (uu___270_23954.is_iface); + admit = (uu___270_23954.admit); + lax = (uu___270_23954.lax); + lax_universes = (uu___270_23954.lax_universes); + phase1 = (uu___270_23954.phase1); + failhard = (uu___270_23954.failhard); + nosynth = (uu___270_23954.nosynth); + uvar_subtyping = (uu___270_23954.uvar_subtyping); + tc_term = (uu___270_23954.tc_term); + type_of = (uu___270_23954.type_of); + universe_of = (uu___270_23954.universe_of); + check_type_of = (uu___270_23954.check_type_of); + use_bv_sorts = (uu___270_23954.use_bv_sorts); + qtbl_name_and_index = (uu___270_23954.qtbl_name_and_index); + normalized_eff_names = (uu___270_23954.normalized_eff_names); + fv_delta_depths = (uu___270_23954.fv_delta_depths); proof_ns = ns; - synth_hook = (uu___271_24023.synth_hook); - splice = (uu___271_24023.splice); - postprocess = (uu___271_24023.postprocess); - is_native_tactic = (uu___271_24023.is_native_tactic); - identifier_info = (uu___271_24023.identifier_info); - tc_hooks = (uu___271_24023.tc_hooks); - dsenv = (uu___271_24023.dsenv); - nbe = (uu___271_24023.nbe) + synth_hook = (uu___270_23954.synth_hook); + splice = (uu___270_23954.splice); + postprocess = (uu___270_23954.postprocess); + is_native_tactic = (uu___270_23954.is_native_tactic); + identifier_info = (uu___270_23954.identifier_info); + tc_hooks = (uu___270_23954.tc_hooks); + dsenv = (uu___270_23954.dsenv); + nbe = (uu___270_23954.nbe) } let (unbound_vars : env -> FStar_Syntax_Syntax.term -> FStar_Syntax_Syntax.bv FStar_Util.set) = fun e -> fun t -> - let uu____24039 = FStar_Syntax_Free.names t in - let uu____24042 = bound_vars e in + let uu____23970 = FStar_Syntax_Free.names t in + let uu____23973 = bound_vars e in FStar_List.fold_left (fun s -> fun bv -> FStar_Util.set_remove bv s) - uu____24039 uu____24042 + uu____23970 uu____23973 let (closed : env -> FStar_Syntax_Syntax.term -> Prims.bool) = fun e -> fun t -> - let uu____24065 = unbound_vars e t in - FStar_Util.set_is_empty uu____24065 + let uu____23996 = unbound_vars e t in + FStar_Util.set_is_empty uu____23996 let (closed' : FStar_Syntax_Syntax.term -> Prims.bool) = fun t -> - let uu____24075 = FStar_Syntax_Free.names t in - FStar_Util.set_is_empty uu____24075 + let uu____24006 = FStar_Syntax_Free.names t in + FStar_Util.set_is_empty uu____24006 let (string_of_proof_ns : env -> Prims.string) = fun env -> - let aux uu____24096 = - match uu____24096 with + let aux uu____24027 = + match uu____24027 with | (p,b) -> if (p = []) && b then "*" else - (let uu____24116 = FStar_Ident.text_of_path p in - Prims.strcat (if b then "+" else "-") uu____24116) + (let uu____24047 = FStar_Ident.text_of_path p in + Prims.strcat (if b then "+" else "-") uu____24047) in - let uu____24124 = - let uu____24128 = FStar_List.map aux env.proof_ns in - FStar_All.pipe_right uu____24128 FStar_List.rev in - FStar_All.pipe_right uu____24124 (FStar_String.concat " ") + let uu____24055 = + let uu____24059 = FStar_List.map aux env.proof_ns in + FStar_All.pipe_right uu____24059 FStar_List.rev in + FStar_All.pipe_right uu____24055 (FStar_String.concat " ") let (guard_of_guard_formula : FStar_TypeChecker_Common.guard_formula -> guard_t) = @@ -5334,21 +5321,21 @@ let (is_trivial : guard_t -> Prims.bool) = ((imp.imp_uvar).FStar_Syntax_Syntax.ctx_uvar_should_check = FStar_Syntax_Syntax.Allow_unresolved) || - (let uu____24198 = + (let uu____24129 = FStar_Syntax_Unionfind.find (imp.imp_uvar).FStar_Syntax_Syntax.ctx_uvar_head in - match uu____24198 with - | FStar_Pervasives_Native.Some uu____24202 -> true + match uu____24129 with + | FStar_Pervasives_Native.Some uu____24133 -> true | FStar_Pervasives_Native.None -> false))) - | uu____24205 -> false + | uu____24136 -> false let (is_trivial_guard_formula : guard_t -> Prims.bool) = fun g -> match g with - | { guard_f = FStar_TypeChecker_Common.Trivial ; deferred = uu____24215; - univ_ineqs = uu____24216; implicits = uu____24217;_} -> true - | uu____24229 -> false + | { guard_f = FStar_TypeChecker_Common.Trivial ; deferred = uu____24146; + univ_ineqs = uu____24147; implicits = uu____24148;_} -> true + | uu____24160 -> false let (trivial_guard : guard_t) = { @@ -5369,12 +5356,12 @@ let (abstract_guard_n : (FStar_Pervasives_Native.Some (FStar_Syntax_Util.residual_tot FStar_Syntax_Util.ktype0)) in - let uu___272_24260 = g in + let uu___271_24191 = g in { guard_f = (FStar_TypeChecker_Common.NonTrivial f'); - deferred = (uu___272_24260.deferred); - univ_ineqs = (uu___272_24260.univ_ineqs); - implicits = (uu___272_24260.implicits) + deferred = (uu___271_24191.deferred); + univ_ineqs = (uu___271_24191.univ_ineqs); + implicits = (uu___271_24191.implicits) } let (abstract_guard : FStar_Syntax_Syntax.binder -> guard_t -> guard_t) = @@ -5389,31 +5376,31 @@ let (def_check_vars_in_set : fun msg -> fun vset -> fun t -> - let uu____24299 = FStar_Options.defensive () in - if uu____24299 + let uu____24230 = FStar_Options.defensive () in + if uu____24230 then let s = FStar_Syntax_Free.names t in - let uu____24305 = - let uu____24307 = - let uu____24309 = FStar_Util.set_difference s vset in - FStar_All.pipe_left FStar_Util.set_is_empty uu____24309 in - Prims.op_Negation uu____24307 in - (if uu____24305 + let uu____24236 = + let uu____24238 = + let uu____24240 = FStar_Util.set_difference s vset in + FStar_All.pipe_left FStar_Util.set_is_empty uu____24240 in + Prims.op_Negation uu____24238 in + (if uu____24236 then - let uu____24316 = - let uu____24322 = - let uu____24324 = FStar_Syntax_Print.term_to_string t in - let uu____24326 = - let uu____24328 = FStar_Util.set_elements s in - FStar_All.pipe_right uu____24328 + let uu____24247 = + let uu____24253 = + let uu____24255 = FStar_Syntax_Print.term_to_string t in + let uu____24257 = + let uu____24259 = FStar_Util.set_elements s in + FStar_All.pipe_right uu____24259 (FStar_Syntax_Print.bvs_to_string ",\n\t") in FStar_Util.format3 "Internal: term is not closed (%s).\nt = (%s)\nFVs = (%s)\n" - msg uu____24324 uu____24326 + msg uu____24255 uu____24257 in - (FStar_Errors.Warning_Defensive, uu____24322) in - FStar_Errors.log_issue rng uu____24316 + (FStar_Errors.Warning_Defensive, uu____24253) in + FStar_Errors.log_issue rng uu____24247 else ()) else () @@ -5426,15 +5413,15 @@ let (def_check_closed_in : fun msg -> fun l -> fun t -> - let uu____24368 = - let uu____24370 = FStar_Options.defensive () in - Prims.op_Negation uu____24370 in - if uu____24368 + let uu____24299 = + let uu____24301 = FStar_Options.defensive () in + Prims.op_Negation uu____24301 in + if uu____24299 then () else - (let uu____24375 = + (let uu____24306 = FStar_Util.as_set l FStar_Syntax_Syntax.order_bv in - def_check_vars_in_set rng msg uu____24375 t) + def_check_vars_in_set rng msg uu____24306 t) let (def_check_closed_in_env : FStar_Range.range -> @@ -5444,14 +5431,14 @@ let (def_check_closed_in_env : fun msg -> fun e -> fun t -> - let uu____24401 = - let uu____24403 = FStar_Options.defensive () in - Prims.op_Negation uu____24403 in - if uu____24401 + let uu____24332 = + let uu____24334 = FStar_Options.defensive () in + Prims.op_Negation uu____24334 in + if uu____24332 then () else - (let uu____24408 = bound_vars e in - def_check_closed_in rng msg uu____24408 t) + (let uu____24339 = bound_vars e in + def_check_closed_in rng msg uu____24339 t) let (def_check_guard_wf : FStar_Range.range -> Prims.string -> env -> guard_t -> unit) = @@ -5470,30 +5457,30 @@ let (apply_guard : guard_t -> FStar_Syntax_Syntax.term -> guard_t) = match g.guard_f with | FStar_TypeChecker_Common.Trivial -> g | FStar_TypeChecker_Common.NonTrivial f -> - let uu___273_24447 = g in - let uu____24448 = - let uu____24449 = - let uu____24450 = - let uu____24457 = - let uu____24458 = - let uu____24475 = - let uu____24486 = FStar_Syntax_Syntax.as_arg e in - [uu____24486] in - (f, uu____24475) in - FStar_Syntax_Syntax.Tm_app uu____24458 in - FStar_Syntax_Syntax.mk uu____24457 in - uu____24450 FStar_Pervasives_Native.None + let uu___272_24378 = g in + let uu____24379 = + let uu____24380 = + let uu____24381 = + let uu____24388 = + let uu____24389 = + let uu____24406 = + let uu____24417 = FStar_Syntax_Syntax.as_arg e in + [uu____24417] in + (f, uu____24406) in + FStar_Syntax_Syntax.Tm_app uu____24389 in + FStar_Syntax_Syntax.mk uu____24388 in + uu____24381 FStar_Pervasives_Native.None f.FStar_Syntax_Syntax.pos in FStar_All.pipe_left (fun _0_2 -> FStar_TypeChecker_Common.NonTrivial _0_2) - uu____24449 + uu____24380 in { - guard_f = uu____24448; - deferred = (uu___273_24447.deferred); - univ_ineqs = (uu___273_24447.univ_ineqs); - implicits = (uu___273_24447.implicits) + guard_f = uu____24379; + deferred = (uu___272_24378.deferred); + univ_ineqs = (uu___272_24378.univ_ineqs); + implicits = (uu___272_24378.implicits) } let (map_guard : @@ -5505,15 +5492,15 @@ let (map_guard : match g.guard_f with | FStar_TypeChecker_Common.Trivial -> g | FStar_TypeChecker_Common.NonTrivial f -> - let uu___274_24543 = g in - let uu____24544 = - let uu____24545 = map1 f in - FStar_TypeChecker_Common.NonTrivial uu____24545 in + let uu___273_24474 = g in + let uu____24475 = + let uu____24476 = map1 f in + FStar_TypeChecker_Common.NonTrivial uu____24476 in { - guard_f = uu____24544; - deferred = (uu___274_24543.deferred); - univ_ineqs = (uu___274_24543.univ_ineqs); - implicits = (uu___274_24543.implicits) + guard_f = uu____24475; + deferred = (uu___273_24474.deferred); + univ_ineqs = (uu___273_24474.univ_ineqs); + implicits = (uu___273_24474.implicits) } let (always_map_guard : @@ -5524,33 +5511,33 @@ let (always_map_guard : fun map1 -> match g.guard_f with | FStar_TypeChecker_Common.Trivial -> - let uu___275_24562 = g in - let uu____24563 = - let uu____24564 = map1 FStar_Syntax_Util.t_true in - FStar_TypeChecker_Common.NonTrivial uu____24564 in + let uu___274_24493 = g in + let uu____24494 = + let uu____24495 = map1 FStar_Syntax_Util.t_true in + FStar_TypeChecker_Common.NonTrivial uu____24495 in { - guard_f = uu____24563; - deferred = (uu___275_24562.deferred); - univ_ineqs = (uu___275_24562.univ_ineqs); - implicits = (uu___275_24562.implicits) + guard_f = uu____24494; + deferred = (uu___274_24493.deferred); + univ_ineqs = (uu___274_24493.univ_ineqs); + implicits = (uu___274_24493.implicits) } | FStar_TypeChecker_Common.NonTrivial f -> - let uu___276_24566 = g in - let uu____24567 = - let uu____24568 = map1 f in - FStar_TypeChecker_Common.NonTrivial uu____24568 in + let uu___275_24497 = g in + let uu____24498 = + let uu____24499 = map1 f in + FStar_TypeChecker_Common.NonTrivial uu____24499 in { - guard_f = uu____24567; - deferred = (uu___276_24566.deferred); - univ_ineqs = (uu___276_24566.univ_ineqs); - implicits = (uu___276_24566.implicits) + guard_f = uu____24498; + deferred = (uu___275_24497.deferred); + univ_ineqs = (uu___275_24497.univ_ineqs); + implicits = (uu___275_24497.implicits) } let (trivial : FStar_TypeChecker_Common.guard_formula -> unit) = fun t -> match t with | FStar_TypeChecker_Common.Trivial -> () - | FStar_TypeChecker_Common.NonTrivial uu____24575 -> + | FStar_TypeChecker_Common.NonTrivial uu____24506 -> failwith "impossible" let (conj_guard_f : @@ -5565,20 +5552,20 @@ let (conj_guard_f : | (g,FStar_TypeChecker_Common.Trivial ) -> g | (FStar_TypeChecker_Common.NonTrivial f1,FStar_TypeChecker_Common.NonTrivial f2) -> - let uu____24592 = FStar_Syntax_Util.mk_conj f1 f2 in - FStar_TypeChecker_Common.NonTrivial uu____24592 + let uu____24523 = FStar_Syntax_Util.mk_conj f1 f2 in + FStar_TypeChecker_Common.NonTrivial uu____24523 let (check_trivial : FStar_Syntax_Syntax.term -> FStar_TypeChecker_Common.guard_formula) = fun t -> - let uu____24599 = - let uu____24600 = FStar_Syntax_Util.unmeta t in - uu____24600.FStar_Syntax_Syntax.n in - match uu____24599 with + let uu____24530 = + let uu____24531 = FStar_Syntax_Util.unmeta t in + uu____24531.FStar_Syntax_Syntax.n in + match uu____24530 with | FStar_Syntax_Syntax.Tm_fvar tc when FStar_Syntax_Syntax.fv_eq_lid tc FStar_Parser_Const.true_lid -> FStar_TypeChecker_Common.Trivial - | uu____24604 -> FStar_TypeChecker_Common.NonTrivial t + | uu____24535 -> FStar_TypeChecker_Common.NonTrivial t let (imp_guard_f : FStar_TypeChecker_Common.guard_formula -> @@ -5604,9 +5591,9 @@ let (binop_guard : fun f -> fun g1 -> fun g2 -> - let uu____24647 = f g1.guard_f g2.guard_f in + let uu____24578 = f g1.guard_f g2.guard_f in { - guard_f = uu____24647; + guard_f = uu____24578; deferred = (FStar_List.append g1.deferred g2.deferred); univ_ineqs = ((FStar_List.append (FStar_Pervasives_Native.fst g1.univ_ineqs) @@ -5637,20 +5624,20 @@ let (close_guard_univs : (fun u -> fun b -> fun f1 -> - let uu____24742 = FStar_Syntax_Syntax.is_null_binder b + let uu____24673 = FStar_Syntax_Syntax.is_null_binder b in - if uu____24742 + if uu____24673 then f1 else FStar_Syntax_Util.mk_forall u (FStar_Pervasives_Native.fst b) f1) us bs f in - let uu___277_24749 = g in + let uu___276_24680 = g in { guard_f = (FStar_TypeChecker_Common.NonTrivial f1); - deferred = (uu___277_24749.deferred); - univ_ineqs = (uu___277_24749.univ_ineqs); - implicits = (uu___277_24749.implicits) + deferred = (uu___276_24680.deferred); + univ_ineqs = (uu___276_24680.univ_ineqs); + implicits = (uu___276_24680.implicits) } let (close_forall : @@ -5664,8 +5651,8 @@ let (close_forall : FStar_List.fold_right (fun b -> fun f1 -> - let uu____24783 = FStar_Syntax_Syntax.is_null_binder b in - if uu____24783 + let uu____24714 = FStar_Syntax_Syntax.is_null_binder b in + if uu____24714 then f1 else (let u = @@ -5683,15 +5670,15 @@ let (close_guard : env -> FStar_Syntax_Syntax.binders -> guard_t -> guard_t) match g.guard_f with | FStar_TypeChecker_Common.Trivial -> g | FStar_TypeChecker_Common.NonTrivial f -> - let uu___278_24810 = g in - let uu____24811 = - let uu____24812 = close_forall env binders f in - FStar_TypeChecker_Common.NonTrivial uu____24812 in + let uu___277_24741 = g in + let uu____24742 = + let uu____24743 = close_forall env binders f in + FStar_TypeChecker_Common.NonTrivial uu____24743 in { - guard_f = uu____24811; - deferred = (uu___278_24810.deferred); - univ_ineqs = (uu___278_24810.univ_ineqs); - implicits = (uu___278_24810.implicits) + guard_f = uu____24742; + deferred = (uu___277_24741.deferred); + univ_ineqs = (uu___277_24741.univ_ineqs); + implicits = (uu___277_24741.implicits) } let (new_implicit_var_aux : @@ -5700,89 +5687,96 @@ let (new_implicit_var_aux : env -> FStar_Syntax_Syntax.typ -> FStar_Syntax_Syntax.should_check_uvar -> - (FStar_Syntax_Syntax.term,(FStar_Syntax_Syntax.ctx_uvar,FStar_Range.range) - FStar_Pervasives_Native.tuple2 - Prims.list,guard_t) - FStar_Pervasives_Native.tuple3) + (FStar_Dyn.dyn,FStar_Syntax_Syntax.term) + FStar_Pervasives_Native.tuple2 FStar_Pervasives_Native.option + -> + (FStar_Syntax_Syntax.term,(FStar_Syntax_Syntax.ctx_uvar, + FStar_Range.range) + FStar_Pervasives_Native.tuple2 + Prims.list,guard_t) + FStar_Pervasives_Native.tuple3) = fun reason -> fun r -> fun env -> fun k -> fun should_check -> - let uu____24853 = - FStar_Syntax_Util.destruct k FStar_Parser_Const.range_of_lid - in - match uu____24853 with - | FStar_Pervasives_Native.Some - (uu____24878::(tm,uu____24880)::[]) -> - let t = - FStar_Syntax_Syntax.mk - (FStar_Syntax_Syntax.Tm_constant - (FStar_Const.Const_range (tm.FStar_Syntax_Syntax.pos))) - FStar_Pervasives_Native.None tm.FStar_Syntax_Syntax.pos - in - (t, [], trivial_guard) - | uu____24944 -> - let binders = all_binders env in - let gamma = env.gamma in - let ctx_uvar = - let uu____24962 = FStar_Syntax_Unionfind.fresh () in - { - FStar_Syntax_Syntax.ctx_uvar_head = uu____24962; - FStar_Syntax_Syntax.ctx_uvar_gamma = gamma; - FStar_Syntax_Syntax.ctx_uvar_binders = binders; - FStar_Syntax_Syntax.ctx_uvar_typ = k; - FStar_Syntax_Syntax.ctx_uvar_reason = reason; - FStar_Syntax_Syntax.ctx_uvar_should_check = should_check; - FStar_Syntax_Syntax.ctx_uvar_range = r - } in - (FStar_TypeChecker_Common.check_uvar_ctx_invariant reason r - true gamma binders; - (let t = + fun meta -> + let uu____24801 = + FStar_Syntax_Util.destruct k FStar_Parser_Const.range_of_lid + in + match uu____24801 with + | FStar_Pervasives_Native.Some + (uu____24826::(tm,uu____24828)::[]) -> + let t = FStar_Syntax_Syntax.mk - (FStar_Syntax_Syntax.Tm_uvar - (ctx_uvar, ([], FStar_Syntax_Syntax.NoUseRange))) - FStar_Pervasives_Native.None r + (FStar_Syntax_Syntax.Tm_constant + (FStar_Const.Const_range + (tm.FStar_Syntax_Syntax.pos))) + FStar_Pervasives_Native.None tm.FStar_Syntax_Syntax.pos in - let imp = - { - imp_reason = reason; - imp_uvar = ctx_uvar; - imp_tm = t; - imp_range = r; - imp_meta = FStar_Pervasives_Native.None - } in - let g = - let uu___279_24998 = trivial_guard in + (t, [], trivial_guard) + | uu____24892 -> + let binders = all_binders env in + let gamma = env.gamma in + let ctx_uvar = + let uu____24910 = FStar_Syntax_Unionfind.fresh () in { - guard_f = (uu___279_24998.guard_f); - deferred = (uu___279_24998.deferred); - univ_ineqs = (uu___279_24998.univ_ineqs); - implicits = [imp] + FStar_Syntax_Syntax.ctx_uvar_head = uu____24910; + FStar_Syntax_Syntax.ctx_uvar_gamma = gamma; + FStar_Syntax_Syntax.ctx_uvar_binders = binders; + FStar_Syntax_Syntax.ctx_uvar_typ = k; + FStar_Syntax_Syntax.ctx_uvar_reason = reason; + FStar_Syntax_Syntax.ctx_uvar_should_check = + should_check; + FStar_Syntax_Syntax.ctx_uvar_range = r; + FStar_Syntax_Syntax.ctx_uvar_meta = meta } in - (t, [(ctx_uvar, r)], g))) + (FStar_TypeChecker_Common.check_uvar_ctx_invariant reason r + true gamma binders; + (let t = + FStar_Syntax_Syntax.mk + (FStar_Syntax_Syntax.Tm_uvar + (ctx_uvar, ([], FStar_Syntax_Syntax.NoUseRange))) + FStar_Pervasives_Native.None r + in + let imp = + { + imp_reason = reason; + imp_uvar = ctx_uvar; + imp_tm = t; + imp_range = r + } in + let g = + let uu___278_24942 = trivial_guard in + { + guard_f = (uu___278_24942.guard_f); + deferred = (uu___278_24942.deferred); + univ_ineqs = (uu___278_24942.univ_ineqs); + implicits = [imp] + } in + (t, [(ctx_uvar, r)], g))) let (dummy_solver : solver_t) = { - init = (fun uu____25016 -> ()); - push = (fun uu____25018 -> ()); - pop = (fun uu____25021 -> ()); + init = (fun uu____24960 -> ()); + push = (fun uu____24962 -> ()); + pop = (fun uu____24965 -> ()); snapshot = - (fun uu____25024 -> + (fun uu____24968 -> (((Prims.parse_int "0"), (Prims.parse_int "0"), (Prims.parse_int "0")), ())); - rollback = (fun uu____25043 -> fun uu____25044 -> ()); - encode_modul = (fun uu____25059 -> fun uu____25060 -> ()); - encode_sig = (fun uu____25063 -> fun uu____25064 -> ()); + rollback = (fun uu____24987 -> fun uu____24988 -> ()); + encode_modul = (fun uu____25003 -> fun uu____25004 -> ()); + encode_sig = (fun uu____25007 -> fun uu____25008 -> ()); preprocess = (fun e -> fun g -> - let uu____25070 = - let uu____25077 = FStar_Options.peek () in (e, g, uu____25077) + let uu____25014 = + let uu____25021 = FStar_Options.peek () in (e, g, uu____25021) in - [uu____25070]); - solve = (fun uu____25093 -> fun uu____25094 -> fun uu____25095 -> ()); - finish = (fun uu____25102 -> ()); - refresh = (fun uu____25104 -> ()) + [uu____25014]); + solve = (fun uu____25037 -> fun uu____25038 -> fun uu____25039 -> ()); + finish = (fun uu____25046 -> ()); + refresh = (fun uu____25048 -> ()) } \ No newline at end of file diff --git a/src/ocaml-output/FStar_TypeChecker_NBE.ml b/src/ocaml-output/FStar_TypeChecker_NBE.ml index 692ca70954e..e8cb6918d47 100644 --- a/src/ocaml-output/FStar_TypeChecker_NBE.ml +++ b/src/ocaml-output/FStar_TypeChecker_NBE.ml @@ -203,8 +203,8 @@ let (pickBranch : else FStar_Util.Inr false | uu____1017 -> FStar_Util.Inr true) in - let res_to_string uu___260_1035 = - match uu___260_1035 with + let res_to_string uu___259_1035 = + match uu___259_1035 with | FStar_Util.Inr b -> let uu____1049 = FStar_Util.string_of_bool b in Prims.strcat "Inr " uu____1049 @@ -1091,24 +1091,24 @@ and (translate : FStar_Syntax_Syntax.vars = uu____4850;_},arg::[]) when cfg.FStar_TypeChecker_Cfg.reifying -> let cfg1 = - let uu___262_4891 = cfg in + let uu___261_4891 = cfg in { FStar_TypeChecker_Cfg.steps = - (uu___262_4891.FStar_TypeChecker_Cfg.steps); + (uu___261_4891.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = - (uu___262_4891.FStar_TypeChecker_Cfg.tcenv); + (uu___261_4891.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___262_4891.FStar_TypeChecker_Cfg.debug); + (uu___261_4891.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___262_4891.FStar_TypeChecker_Cfg.delta_level); + (uu___261_4891.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___262_4891.FStar_TypeChecker_Cfg.primitive_steps); + (uu___261_4891.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___262_4891.FStar_TypeChecker_Cfg.strong); + (uu___261_4891.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___262_4891.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___261_4891.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___262_4891.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___261_4891.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = false } in translate cfg1 bs (FStar_Pervasives_Native.fst arg) @@ -1132,24 +1132,24 @@ and (translate : (cfg.FStar_TypeChecker_Cfg.steps).FStar_TypeChecker_Cfg.reify_ -> let cfg1 = - let uu___263_4987 = cfg in + let uu___262_4987 = cfg in { FStar_TypeChecker_Cfg.steps = - (uu___263_4987.FStar_TypeChecker_Cfg.steps); + (uu___262_4987.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = - (uu___263_4987.FStar_TypeChecker_Cfg.tcenv); + (uu___262_4987.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___263_4987.FStar_TypeChecker_Cfg.debug); + (uu___262_4987.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___263_4987.FStar_TypeChecker_Cfg.delta_level); + (uu___262_4987.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___263_4987.FStar_TypeChecker_Cfg.primitive_steps); + (uu___262_4987.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___263_4987.FStar_TypeChecker_Cfg.strong); + (uu___262_4987.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___263_4987.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___262_4987.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___263_4987.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___262_4987.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = true } in translate cfg1 bs (FStar_Pervasives_Native.fst arg) @@ -1174,80 +1174,80 @@ and (translate : | FStar_Syntax_Syntax.Tm_match (scrut,branches) -> let make_branches readback1 = let cfg1 = - let uu___264_5116 = cfg in + let uu___263_5116 = cfg in { FStar_TypeChecker_Cfg.steps = - (let uu___265_5119 = cfg.FStar_TypeChecker_Cfg.steps in + (let uu___264_5119 = cfg.FStar_TypeChecker_Cfg.steps in { FStar_TypeChecker_Cfg.beta = - (uu___265_5119.FStar_TypeChecker_Cfg.beta); + (uu___264_5119.FStar_TypeChecker_Cfg.beta); FStar_TypeChecker_Cfg.iota = - (uu___265_5119.FStar_TypeChecker_Cfg.iota); + (uu___264_5119.FStar_TypeChecker_Cfg.iota); FStar_TypeChecker_Cfg.zeta = false; FStar_TypeChecker_Cfg.weak = - (uu___265_5119.FStar_TypeChecker_Cfg.weak); + (uu___264_5119.FStar_TypeChecker_Cfg.weak); FStar_TypeChecker_Cfg.hnf = - (uu___265_5119.FStar_TypeChecker_Cfg.hnf); + (uu___264_5119.FStar_TypeChecker_Cfg.hnf); FStar_TypeChecker_Cfg.primops = - (uu___265_5119.FStar_TypeChecker_Cfg.primops); + (uu___264_5119.FStar_TypeChecker_Cfg.primops); FStar_TypeChecker_Cfg.do_not_unfold_pure_lets = - (uu___265_5119.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); + (uu___264_5119.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); FStar_TypeChecker_Cfg.unfold_until = - (uu___265_5119.FStar_TypeChecker_Cfg.unfold_until); + (uu___264_5119.FStar_TypeChecker_Cfg.unfold_until); FStar_TypeChecker_Cfg.unfold_only = - (uu___265_5119.FStar_TypeChecker_Cfg.unfold_only); + (uu___264_5119.FStar_TypeChecker_Cfg.unfold_only); FStar_TypeChecker_Cfg.unfold_fully = - (uu___265_5119.FStar_TypeChecker_Cfg.unfold_fully); + (uu___264_5119.FStar_TypeChecker_Cfg.unfold_fully); FStar_TypeChecker_Cfg.unfold_attr = - (uu___265_5119.FStar_TypeChecker_Cfg.unfold_attr); + (uu___264_5119.FStar_TypeChecker_Cfg.unfold_attr); FStar_TypeChecker_Cfg.unfold_tac = - (uu___265_5119.FStar_TypeChecker_Cfg.unfold_tac); + (uu___264_5119.FStar_TypeChecker_Cfg.unfold_tac); FStar_TypeChecker_Cfg.pure_subterms_within_computations = - (uu___265_5119.FStar_TypeChecker_Cfg.pure_subterms_within_computations); + (uu___264_5119.FStar_TypeChecker_Cfg.pure_subterms_within_computations); FStar_TypeChecker_Cfg.simplify = - (uu___265_5119.FStar_TypeChecker_Cfg.simplify); + (uu___264_5119.FStar_TypeChecker_Cfg.simplify); FStar_TypeChecker_Cfg.erase_universes = - (uu___265_5119.FStar_TypeChecker_Cfg.erase_universes); + (uu___264_5119.FStar_TypeChecker_Cfg.erase_universes); FStar_TypeChecker_Cfg.allow_unbound_universes = - (uu___265_5119.FStar_TypeChecker_Cfg.allow_unbound_universes); + (uu___264_5119.FStar_TypeChecker_Cfg.allow_unbound_universes); FStar_TypeChecker_Cfg.reify_ = - (uu___265_5119.FStar_TypeChecker_Cfg.reify_); + (uu___264_5119.FStar_TypeChecker_Cfg.reify_); FStar_TypeChecker_Cfg.compress_uvars = - (uu___265_5119.FStar_TypeChecker_Cfg.compress_uvars); + (uu___264_5119.FStar_TypeChecker_Cfg.compress_uvars); FStar_TypeChecker_Cfg.no_full_norm = - (uu___265_5119.FStar_TypeChecker_Cfg.no_full_norm); + (uu___264_5119.FStar_TypeChecker_Cfg.no_full_norm); FStar_TypeChecker_Cfg.check_no_uvars = - (uu___265_5119.FStar_TypeChecker_Cfg.check_no_uvars); + (uu___264_5119.FStar_TypeChecker_Cfg.check_no_uvars); FStar_TypeChecker_Cfg.unmeta = - (uu___265_5119.FStar_TypeChecker_Cfg.unmeta); + (uu___264_5119.FStar_TypeChecker_Cfg.unmeta); FStar_TypeChecker_Cfg.unascribe = - (uu___265_5119.FStar_TypeChecker_Cfg.unascribe); + (uu___264_5119.FStar_TypeChecker_Cfg.unascribe); FStar_TypeChecker_Cfg.in_full_norm_request = - (uu___265_5119.FStar_TypeChecker_Cfg.in_full_norm_request); + (uu___264_5119.FStar_TypeChecker_Cfg.in_full_norm_request); FStar_TypeChecker_Cfg.weakly_reduce_scrutinee = - (uu___265_5119.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); + (uu___264_5119.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); FStar_TypeChecker_Cfg.nbe_step = - (uu___265_5119.FStar_TypeChecker_Cfg.nbe_step); + (uu___264_5119.FStar_TypeChecker_Cfg.nbe_step); FStar_TypeChecker_Cfg.for_extraction = - (uu___265_5119.FStar_TypeChecker_Cfg.for_extraction) + (uu___264_5119.FStar_TypeChecker_Cfg.for_extraction) }); FStar_TypeChecker_Cfg.tcenv = - (uu___264_5116.FStar_TypeChecker_Cfg.tcenv); + (uu___263_5116.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___264_5116.FStar_TypeChecker_Cfg.debug); + (uu___263_5116.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___264_5116.FStar_TypeChecker_Cfg.delta_level); + (uu___263_5116.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___264_5116.FStar_TypeChecker_Cfg.primitive_steps); + (uu___263_5116.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___264_5116.FStar_TypeChecker_Cfg.strong); + (uu___263_5116.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___264_5116.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___263_5116.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___264_5116.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___263_5116.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___264_5116.FStar_TypeChecker_Cfg.reifying) + (uu___263_5116.FStar_TypeChecker_Cfg.reifying) } in let rec process_pattern bs1 p = let uu____5148 = @@ -1325,11 +1325,11 @@ and (translate : match uu____5148 with | (bs2,p_new) -> (bs2, - (let uu___266_5475 = p in + (let uu___265_5475 = p in { FStar_Syntax_Syntax.v = p_new; FStar_Syntax_Syntax.p = - (uu___266_5475.FStar_Syntax_Syntax.p) + (uu___265_5475.FStar_Syntax_Syntax.p) })) in FStar_List.map @@ -1728,24 +1728,24 @@ and (translate_monadic : failwith uu____6290 | FStar_Pervasives_Native.Some (ed,q) -> let cfg' = - let uu___267_6308 = cfg in + let uu___266_6308 = cfg in { FStar_TypeChecker_Cfg.steps = - (uu___267_6308.FStar_TypeChecker_Cfg.steps); + (uu___266_6308.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = - (uu___267_6308.FStar_TypeChecker_Cfg.tcenv); + (uu___266_6308.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___267_6308.FStar_TypeChecker_Cfg.debug); + (uu___266_6308.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___267_6308.FStar_TypeChecker_Cfg.delta_level); + (uu___266_6308.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___267_6308.FStar_TypeChecker_Cfg.primitive_steps); + (uu___266_6308.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___267_6308.FStar_TypeChecker_Cfg.strong); + (uu___266_6308.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___267_6308.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___266_6308.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___267_6308.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___266_6308.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = false } in let body_lam = @@ -1891,24 +1891,24 @@ and (translate_monadic : FStar_Syntax_Syntax.vars = uu____6587;_},(e2,uu____6589)::[]) -> translate - (let uu___268_6630 = cfg in + (let uu___267_6630 = cfg in { FStar_TypeChecker_Cfg.steps = - (uu___268_6630.FStar_TypeChecker_Cfg.steps); + (uu___267_6630.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = - (uu___268_6630.FStar_TypeChecker_Cfg.tcenv); + (uu___267_6630.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___268_6630.FStar_TypeChecker_Cfg.debug); + (uu___267_6630.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___268_6630.FStar_TypeChecker_Cfg.delta_level); + (uu___267_6630.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___268_6630.FStar_TypeChecker_Cfg.primitive_steps); + (uu___267_6630.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___268_6630.FStar_TypeChecker_Cfg.strong); + (uu___267_6630.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___268_6630.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___267_6630.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___268_6630.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___267_6630.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = false }) bs e2 | FStar_Syntax_Syntax.Tm_app (head1,args) -> @@ -1932,24 +1932,24 @@ and (translate_monadic : e1.FStar_Syntax_Syntax.pos in translate - (let uu___269_6687 = cfg in + (let uu___268_6687 = cfg in { FStar_TypeChecker_Cfg.steps = - (uu___269_6687.FStar_TypeChecker_Cfg.steps); + (uu___268_6687.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = - (uu___269_6687.FStar_TypeChecker_Cfg.tcenv); + (uu___268_6687.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___269_6687.FStar_TypeChecker_Cfg.debug); + (uu___268_6687.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___269_6687.FStar_TypeChecker_Cfg.delta_level); + (uu___268_6687.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___269_6687.FStar_TypeChecker_Cfg.primitive_steps); + (uu___268_6687.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___269_6687.FStar_TypeChecker_Cfg.strong); + (uu___268_6687.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___269_6687.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___268_6687.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___269_6687.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___268_6687.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = false }) bs uu____6680 in @@ -1994,25 +1994,25 @@ and (translate_monadic : e1.FStar_Syntax_Syntax.pos in translate - (let uu___270_6732 = cfg in + (let uu___269_6732 = cfg in { FStar_TypeChecker_Cfg.steps = - (uu___270_6732.FStar_TypeChecker_Cfg.steps); + (uu___269_6732.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = - (uu___270_6732.FStar_TypeChecker_Cfg.tcenv); + (uu___269_6732.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___270_6732.FStar_TypeChecker_Cfg.debug); + (uu___269_6732.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___270_6732.FStar_TypeChecker_Cfg.delta_level); + (uu___269_6732.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___270_6732.FStar_TypeChecker_Cfg.primitive_steps); + (uu___269_6732.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___270_6732.FStar_TypeChecker_Cfg.strong); + (uu___269_6732.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___270_6732.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___269_6732.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___270_6732.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___269_6732.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = false }) bs e2)) | uu____6734 -> fallback1 ())) @@ -2034,24 +2034,24 @@ and (translate_monadic : e1.FStar_Syntax_Syntax.pos in translate - (let uu___271_6937 = cfg in + (let uu___270_6937 = cfg in { FStar_TypeChecker_Cfg.steps = - (uu___271_6937.FStar_TypeChecker_Cfg.steps); + (uu___270_6937.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = - (uu___271_6937.FStar_TypeChecker_Cfg.tcenv); + (uu___270_6937.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___271_6937.FStar_TypeChecker_Cfg.debug); + (uu___270_6937.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___271_6937.FStar_TypeChecker_Cfg.delta_level); + (uu___270_6937.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___271_6937.FStar_TypeChecker_Cfg.primitive_steps); + (uu___270_6937.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___271_6937.FStar_TypeChecker_Cfg.strong); + (uu___270_6937.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___271_6937.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___270_6937.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___271_6937.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___270_6937.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = false }) bs tm | FStar_Syntax_Syntax.Tm_meta @@ -2117,24 +2117,24 @@ and (translate_monadic_lift : failwith "NYI: Reification of indexed effect (NBE)" in let cfg' = - let uu___272_7022 = cfg in + let uu___271_7022 = cfg in { FStar_TypeChecker_Cfg.steps = - (uu___272_7022.FStar_TypeChecker_Cfg.steps); + (uu___271_7022.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = - (uu___272_7022.FStar_TypeChecker_Cfg.tcenv); + (uu___271_7022.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___272_7022.FStar_TypeChecker_Cfg.debug); + (uu___271_7022.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___272_7022.FStar_TypeChecker_Cfg.delta_level); + (uu___271_7022.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___272_7022.FStar_TypeChecker_Cfg.primitive_steps); + (uu___271_7022.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___272_7022.FStar_TypeChecker_Cfg.strong); + (uu___271_7022.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___272_7022.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___271_7022.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___272_7022.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___271_7022.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = false } in let t = @@ -2219,24 +2219,24 @@ and (translate_monadic_lift : FStar_Pervasives_Native.None in let cfg' = - let uu___273_7177 = cfg in + let uu___272_7177 = cfg in { FStar_TypeChecker_Cfg.steps = - (uu___273_7177.FStar_TypeChecker_Cfg.steps); + (uu___272_7177.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = - (uu___273_7177.FStar_TypeChecker_Cfg.tcenv); + (uu___272_7177.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___273_7177.FStar_TypeChecker_Cfg.debug); + (uu___272_7177.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___273_7177.FStar_TypeChecker_Cfg.delta_level); + (uu___272_7177.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___273_7177.FStar_TypeChecker_Cfg.primitive_steps); + (uu___272_7177.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___273_7177.FStar_TypeChecker_Cfg.strong); + (uu___272_7177.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___273_7177.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___272_7177.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___273_7177.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___272_7177.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = false } in let t = @@ -2542,8 +2542,8 @@ let (uu___is_Reify : step -> Prims.bool) = match projectee with | Reify -> true | uu____8354 -> false let (step_as_normalizer_step : step -> FStar_TypeChecker_Env.step) = - fun uu___261_8361 -> - match uu___261_8361 with + fun uu___260_8361 -> + match uu___260_8361 with | Primops -> FStar_TypeChecker_Env.Primops | UnfoldUntil d -> FStar_TypeChecker_Env.UnfoldUntil d | UnfoldOnly lids -> FStar_TypeChecker_Env.UnfoldOnly lids @@ -2563,79 +2563,79 @@ let (normalize : fun e -> let cfg = FStar_TypeChecker_Cfg.config' psteps steps env in let cfg1 = - let uu___274_8400 = cfg in + let uu___273_8400 = cfg in { FStar_TypeChecker_Cfg.steps = - (let uu___275_8403 = cfg.FStar_TypeChecker_Cfg.steps in + (let uu___274_8403 = cfg.FStar_TypeChecker_Cfg.steps in { FStar_TypeChecker_Cfg.beta = - (uu___275_8403.FStar_TypeChecker_Cfg.beta); + (uu___274_8403.FStar_TypeChecker_Cfg.beta); FStar_TypeChecker_Cfg.iota = - (uu___275_8403.FStar_TypeChecker_Cfg.iota); + (uu___274_8403.FStar_TypeChecker_Cfg.iota); FStar_TypeChecker_Cfg.zeta = - (uu___275_8403.FStar_TypeChecker_Cfg.zeta); + (uu___274_8403.FStar_TypeChecker_Cfg.zeta); FStar_TypeChecker_Cfg.weak = - (uu___275_8403.FStar_TypeChecker_Cfg.weak); + (uu___274_8403.FStar_TypeChecker_Cfg.weak); FStar_TypeChecker_Cfg.hnf = - (uu___275_8403.FStar_TypeChecker_Cfg.hnf); + (uu___274_8403.FStar_TypeChecker_Cfg.hnf); FStar_TypeChecker_Cfg.primops = - (uu___275_8403.FStar_TypeChecker_Cfg.primops); + (uu___274_8403.FStar_TypeChecker_Cfg.primops); FStar_TypeChecker_Cfg.do_not_unfold_pure_lets = - (uu___275_8403.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); + (uu___274_8403.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); FStar_TypeChecker_Cfg.unfold_until = - (uu___275_8403.FStar_TypeChecker_Cfg.unfold_until); + (uu___274_8403.FStar_TypeChecker_Cfg.unfold_until); FStar_TypeChecker_Cfg.unfold_only = - (uu___275_8403.FStar_TypeChecker_Cfg.unfold_only); + (uu___274_8403.FStar_TypeChecker_Cfg.unfold_only); FStar_TypeChecker_Cfg.unfold_fully = - (uu___275_8403.FStar_TypeChecker_Cfg.unfold_fully); + (uu___274_8403.FStar_TypeChecker_Cfg.unfold_fully); FStar_TypeChecker_Cfg.unfold_attr = - (uu___275_8403.FStar_TypeChecker_Cfg.unfold_attr); + (uu___274_8403.FStar_TypeChecker_Cfg.unfold_attr); FStar_TypeChecker_Cfg.unfold_tac = - (uu___275_8403.FStar_TypeChecker_Cfg.unfold_tac); + (uu___274_8403.FStar_TypeChecker_Cfg.unfold_tac); FStar_TypeChecker_Cfg.pure_subterms_within_computations = - (uu___275_8403.FStar_TypeChecker_Cfg.pure_subterms_within_computations); + (uu___274_8403.FStar_TypeChecker_Cfg.pure_subterms_within_computations); FStar_TypeChecker_Cfg.simplify = - (uu___275_8403.FStar_TypeChecker_Cfg.simplify); + (uu___274_8403.FStar_TypeChecker_Cfg.simplify); FStar_TypeChecker_Cfg.erase_universes = - (uu___275_8403.FStar_TypeChecker_Cfg.erase_universes); + (uu___274_8403.FStar_TypeChecker_Cfg.erase_universes); FStar_TypeChecker_Cfg.allow_unbound_universes = - (uu___275_8403.FStar_TypeChecker_Cfg.allow_unbound_universes); + (uu___274_8403.FStar_TypeChecker_Cfg.allow_unbound_universes); FStar_TypeChecker_Cfg.reify_ = true; FStar_TypeChecker_Cfg.compress_uvars = - (uu___275_8403.FStar_TypeChecker_Cfg.compress_uvars); + (uu___274_8403.FStar_TypeChecker_Cfg.compress_uvars); FStar_TypeChecker_Cfg.no_full_norm = - (uu___275_8403.FStar_TypeChecker_Cfg.no_full_norm); + (uu___274_8403.FStar_TypeChecker_Cfg.no_full_norm); FStar_TypeChecker_Cfg.check_no_uvars = - (uu___275_8403.FStar_TypeChecker_Cfg.check_no_uvars); + (uu___274_8403.FStar_TypeChecker_Cfg.check_no_uvars); FStar_TypeChecker_Cfg.unmeta = - (uu___275_8403.FStar_TypeChecker_Cfg.unmeta); + (uu___274_8403.FStar_TypeChecker_Cfg.unmeta); FStar_TypeChecker_Cfg.unascribe = - (uu___275_8403.FStar_TypeChecker_Cfg.unascribe); + (uu___274_8403.FStar_TypeChecker_Cfg.unascribe); FStar_TypeChecker_Cfg.in_full_norm_request = - (uu___275_8403.FStar_TypeChecker_Cfg.in_full_norm_request); + (uu___274_8403.FStar_TypeChecker_Cfg.in_full_norm_request); FStar_TypeChecker_Cfg.weakly_reduce_scrutinee = - (uu___275_8403.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); + (uu___274_8403.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); FStar_TypeChecker_Cfg.nbe_step = - (uu___275_8403.FStar_TypeChecker_Cfg.nbe_step); + (uu___274_8403.FStar_TypeChecker_Cfg.nbe_step); FStar_TypeChecker_Cfg.for_extraction = - (uu___275_8403.FStar_TypeChecker_Cfg.for_extraction) + (uu___274_8403.FStar_TypeChecker_Cfg.for_extraction) }); FStar_TypeChecker_Cfg.tcenv = - (uu___274_8400.FStar_TypeChecker_Cfg.tcenv); + (uu___273_8400.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___274_8400.FStar_TypeChecker_Cfg.debug); + (uu___273_8400.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___274_8400.FStar_TypeChecker_Cfg.delta_level); + (uu___273_8400.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___274_8400.FStar_TypeChecker_Cfg.primitive_steps); + (uu___273_8400.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___274_8400.FStar_TypeChecker_Cfg.strong); + (uu___273_8400.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___274_8400.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___273_8400.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___274_8400.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___273_8400.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___274_8400.FStar_TypeChecker_Cfg.reifying) + (uu___273_8400.FStar_TypeChecker_Cfg.reifying) } in debug cfg1 (fun uu____8408 -> @@ -2660,79 +2660,79 @@ let (normalize_for_unit_test : fun e -> let cfg = FStar_TypeChecker_Cfg.config steps env in let cfg1 = - let uu___276_8443 = cfg in + let uu___275_8443 = cfg in { FStar_TypeChecker_Cfg.steps = - (let uu___277_8446 = cfg.FStar_TypeChecker_Cfg.steps in + (let uu___276_8446 = cfg.FStar_TypeChecker_Cfg.steps in { FStar_TypeChecker_Cfg.beta = - (uu___277_8446.FStar_TypeChecker_Cfg.beta); + (uu___276_8446.FStar_TypeChecker_Cfg.beta); FStar_TypeChecker_Cfg.iota = - (uu___277_8446.FStar_TypeChecker_Cfg.iota); + (uu___276_8446.FStar_TypeChecker_Cfg.iota); FStar_TypeChecker_Cfg.zeta = - (uu___277_8446.FStar_TypeChecker_Cfg.zeta); + (uu___276_8446.FStar_TypeChecker_Cfg.zeta); FStar_TypeChecker_Cfg.weak = - (uu___277_8446.FStar_TypeChecker_Cfg.weak); + (uu___276_8446.FStar_TypeChecker_Cfg.weak); FStar_TypeChecker_Cfg.hnf = - (uu___277_8446.FStar_TypeChecker_Cfg.hnf); + (uu___276_8446.FStar_TypeChecker_Cfg.hnf); FStar_TypeChecker_Cfg.primops = - (uu___277_8446.FStar_TypeChecker_Cfg.primops); + (uu___276_8446.FStar_TypeChecker_Cfg.primops); FStar_TypeChecker_Cfg.do_not_unfold_pure_lets = - (uu___277_8446.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); + (uu___276_8446.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); FStar_TypeChecker_Cfg.unfold_until = - (uu___277_8446.FStar_TypeChecker_Cfg.unfold_until); + (uu___276_8446.FStar_TypeChecker_Cfg.unfold_until); FStar_TypeChecker_Cfg.unfold_only = - (uu___277_8446.FStar_TypeChecker_Cfg.unfold_only); + (uu___276_8446.FStar_TypeChecker_Cfg.unfold_only); FStar_TypeChecker_Cfg.unfold_fully = - (uu___277_8446.FStar_TypeChecker_Cfg.unfold_fully); + (uu___276_8446.FStar_TypeChecker_Cfg.unfold_fully); FStar_TypeChecker_Cfg.unfold_attr = - (uu___277_8446.FStar_TypeChecker_Cfg.unfold_attr); + (uu___276_8446.FStar_TypeChecker_Cfg.unfold_attr); FStar_TypeChecker_Cfg.unfold_tac = - (uu___277_8446.FStar_TypeChecker_Cfg.unfold_tac); + (uu___276_8446.FStar_TypeChecker_Cfg.unfold_tac); FStar_TypeChecker_Cfg.pure_subterms_within_computations = - (uu___277_8446.FStar_TypeChecker_Cfg.pure_subterms_within_computations); + (uu___276_8446.FStar_TypeChecker_Cfg.pure_subterms_within_computations); FStar_TypeChecker_Cfg.simplify = - (uu___277_8446.FStar_TypeChecker_Cfg.simplify); + (uu___276_8446.FStar_TypeChecker_Cfg.simplify); FStar_TypeChecker_Cfg.erase_universes = - (uu___277_8446.FStar_TypeChecker_Cfg.erase_universes); + (uu___276_8446.FStar_TypeChecker_Cfg.erase_universes); FStar_TypeChecker_Cfg.allow_unbound_universes = - (uu___277_8446.FStar_TypeChecker_Cfg.allow_unbound_universes); + (uu___276_8446.FStar_TypeChecker_Cfg.allow_unbound_universes); FStar_TypeChecker_Cfg.reify_ = true; FStar_TypeChecker_Cfg.compress_uvars = - (uu___277_8446.FStar_TypeChecker_Cfg.compress_uvars); + (uu___276_8446.FStar_TypeChecker_Cfg.compress_uvars); FStar_TypeChecker_Cfg.no_full_norm = - (uu___277_8446.FStar_TypeChecker_Cfg.no_full_norm); + (uu___276_8446.FStar_TypeChecker_Cfg.no_full_norm); FStar_TypeChecker_Cfg.check_no_uvars = - (uu___277_8446.FStar_TypeChecker_Cfg.check_no_uvars); + (uu___276_8446.FStar_TypeChecker_Cfg.check_no_uvars); FStar_TypeChecker_Cfg.unmeta = - (uu___277_8446.FStar_TypeChecker_Cfg.unmeta); + (uu___276_8446.FStar_TypeChecker_Cfg.unmeta); FStar_TypeChecker_Cfg.unascribe = - (uu___277_8446.FStar_TypeChecker_Cfg.unascribe); + (uu___276_8446.FStar_TypeChecker_Cfg.unascribe); FStar_TypeChecker_Cfg.in_full_norm_request = - (uu___277_8446.FStar_TypeChecker_Cfg.in_full_norm_request); + (uu___276_8446.FStar_TypeChecker_Cfg.in_full_norm_request); FStar_TypeChecker_Cfg.weakly_reduce_scrutinee = - (uu___277_8446.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); + (uu___276_8446.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); FStar_TypeChecker_Cfg.nbe_step = - (uu___277_8446.FStar_TypeChecker_Cfg.nbe_step); + (uu___276_8446.FStar_TypeChecker_Cfg.nbe_step); FStar_TypeChecker_Cfg.for_extraction = - (uu___277_8446.FStar_TypeChecker_Cfg.for_extraction) + (uu___276_8446.FStar_TypeChecker_Cfg.for_extraction) }); FStar_TypeChecker_Cfg.tcenv = - (uu___276_8443.FStar_TypeChecker_Cfg.tcenv); + (uu___275_8443.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___276_8443.FStar_TypeChecker_Cfg.debug); + (uu___275_8443.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___276_8443.FStar_TypeChecker_Cfg.delta_level); + (uu___275_8443.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___276_8443.FStar_TypeChecker_Cfg.primitive_steps); + (uu___275_8443.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___276_8443.FStar_TypeChecker_Cfg.strong); + (uu___275_8443.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___276_8443.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___275_8443.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___276_8443.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___275_8443.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___276_8443.FStar_TypeChecker_Cfg.reifying) + (uu___275_8443.FStar_TypeChecker_Cfg.reifying) } in debug cfg1 (fun uu____8451 -> diff --git a/src/ocaml-output/FStar_TypeChecker_NBETerm.ml b/src/ocaml-output/FStar_TypeChecker_NBETerm.ml index 06cd0e79c23..3408c9ea758 100644 --- a/src/ocaml-output/FStar_TypeChecker_NBETerm.ml +++ b/src/ocaml-output/FStar_TypeChecker_NBETerm.ml @@ -420,14 +420,14 @@ let (mkAccuMatch : -> t) = fun s -> fun cases -> fun bs -> Accu ((Match (s, cases, bs)), []) let (equal_if : Prims.bool -> FStar_Syntax_Util.eq_result) = - fun uu___236_2118 -> - if uu___236_2118 + fun uu___235_2118 -> + if uu___235_2118 then FStar_Syntax_Util.Equal else FStar_Syntax_Util.Unknown let (equal_iff : Prims.bool -> FStar_Syntax_Util.eq_result) = - fun uu___237_2129 -> - if uu___237_2129 + fun uu___236_2129 -> + if uu___236_2129 then FStar_Syntax_Util.Equal else FStar_Syntax_Util.NotEqual @@ -1795,13 +1795,13 @@ let (string_substring' : args -> t FStar_Pervasives_Native.option) = let n11 = FStar_BigInt.to_int_fs n1 in let n21 = FStar_BigInt.to_int_fs n2 in (try - (fun uu___239_7696 -> + (fun uu___238_7696 -> match () with | () -> let r = FStar_String.substring s1 n11 n21 in let uu____7701 = embed e_string bogus_cbs r in FStar_Pervasives_Native.Some uu____7701) () - with | uu___238_7704 -> FStar_Pervasives_Native.None) + with | uu___237_7704 -> FStar_Pervasives_Native.None) | uu____7707 -> FStar_Pervasives_Native.None) | uu____7721 -> FStar_Pervasives_Native.None diff --git a/src/ocaml-output/FStar_TypeChecker_Normalize.ml b/src/ocaml-output/FStar_TypeChecker_Normalize.ml index dba9da64afc..62945513b69 100644 --- a/src/ocaml-output/FStar_TypeChecker_Normalize.ml +++ b/src/ocaml-output/FStar_TypeChecker_Normalize.ml @@ -6,8 +6,8 @@ let cases : = fun f -> fun d -> - fun uu___258_32 -> - match uu___258_32 with + fun uu___257_32 -> + match uu___257_32 with | FStar_Pervasives_Native.Some x -> f x | FStar_Pervasives_Native.None -> d @@ -216,8 +216,8 @@ let rec (env_to_string : FStar_All.pipe_right uu____1157 (FStar_String.concat "; ") and (closure_to_string : closure -> Prims.string) = - fun uu___259_1200 -> - match uu___259_1200 with + fun uu___258_1200 -> + match uu___258_1200 with | Clos (env,t,uu____1204,uu____1205) -> let uu____1252 = FStar_All.pipe_right (FStar_List.length env) @@ -229,8 +229,8 @@ and (closure_to_string : closure -> Prims.string) = | Dummy -> "dummy" let (stack_elt_to_string : stack_elt -> Prims.string) = - fun uu___260_1274 -> - match uu___260_1274 with + fun uu___259_1274 -> + match uu___259_1274 with | Arg (c,uu____1277,uu____1278) -> let uu____1279 = closure_to_string c in FStar_Util.format1 "Closure %s" uu____1279 @@ -258,8 +258,8 @@ let (stack_to_string : stack_elt Prims.list -> Prims.string) = FStar_All.pipe_right uu____1367 (FStar_String.concat "; ") let is_empty : 'Auu____1382 . 'Auu____1382 Prims.list -> Prims.bool = - fun uu___261_1390 -> - match uu___261_1390 with | [] -> true | uu____1394 -> false + fun uu___260_1390 -> + match uu___260_1390 with | [] -> true | uu____1394 -> false let (lookup_bvar : (FStar_Syntax_Syntax.binder FStar_Pervasives_Native.option,closure) @@ -269,14 +269,14 @@ let (lookup_bvar : fun env -> fun x -> try - (fun uu___280_1427 -> + (fun uu___279_1427 -> match () with | () -> let uu____1428 = FStar_List.nth env x.FStar_Syntax_Syntax.index in FStar_Pervasives_Native.snd uu____1428) () with - | uu___279_1445 -> + | uu___278_1445 -> let uu____1446 = let uu____1448 = FStar_Syntax_Print.db_to_string x in let uu____1450 = env_to_string env in @@ -339,7 +339,7 @@ let (norm_universe : match u2 with | FStar_Syntax_Syntax.U_bvar x -> (try - (fun uu___282_1629 -> + (fun uu___281_1629 -> match () with | () -> let uu____1632 = @@ -497,8 +497,8 @@ let rec (inline_closure_env : (fun s1 -> FStar_All.pipe_right s1 (FStar_List.map - (fun uu___262_2083 -> - match uu___262_2083 with + (fun uu___261_2083 -> + match uu___261_2083 with | FStar_Syntax_Syntax.NT (x,t1) -> let uu____2090 = let uu____2097 = @@ -511,16 +511,16 @@ let rec (inline_closure_env : | FStar_Syntax_Syntax.NM (x,i) -> let x_i = FStar_Syntax_Syntax.bv_to_tm - (let uu___283_2109 = x in + (let uu___282_2109 = x in { FStar_Syntax_Syntax.ppname = - (uu___283_2109.FStar_Syntax_Syntax.ppname); + (uu___282_2109.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = i; FStar_Syntax_Syntax.sort = - (uu___283_2109.FStar_Syntax_Syntax.sort) + (uu___282_2109.FStar_Syntax_Syntax.sort) }) in let t1 = @@ -542,15 +542,15 @@ let rec (inline_closure_env : "Impossible: subst invariant of uvar nodes")))) in let t1 = - let uu___284_2123 = t in + let uu___283_2123 = t in { FStar_Syntax_Syntax.n = (FStar_Syntax_Syntax.Tm_uvar (uv, (s', (FStar_Pervasives_Native.snd s)))); FStar_Syntax_Syntax.pos = - (uu___284_2123.FStar_Syntax_Syntax.pos); + (uu___283_2123.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___284_2123.FStar_Syntax_Syntax.vars) + (uu___283_2123.FStar_Syntax_Syntax.vars) } in rebuild_closure cfg env stack t1) | FStar_Syntax_Syntax.Tm_type u -> @@ -574,12 +574,12 @@ let rec (inline_closure_env : "Impossible: term variable is bound to a universe" | Dummy -> let x1 = - let uu___285_2163 = x in + let uu___284_2163 = x in { FStar_Syntax_Syntax.ppname = - (uu___285_2163.FStar_Syntax_Syntax.ppname); + (uu___284_2163.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___285_2163.FStar_Syntax_Syntax.index); + (uu___284_2163.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = FStar_Syntax_Syntax.tun } in @@ -736,31 +736,31 @@ let rec (inline_closure_env : body in ((FStar_Util.Inl - (let uu___286_2974 = x in + (let uu___285_2974 = x in { FStar_Syntax_Syntax.ppname = - (uu___286_2974.FStar_Syntax_Syntax.ppname); + (uu___285_2974.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___286_2974.FStar_Syntax_Syntax.index); + (uu___285_2974.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = typ })), uu____2958)) in (match uu____2925 with | (nm,body1) -> let lb1 = - let uu___287_2992 = lb in + let uu___286_2992 = lb in { FStar_Syntax_Syntax.lbname = nm; FStar_Syntax_Syntax.lbunivs = - (uu___287_2992.FStar_Syntax_Syntax.lbunivs); + (uu___286_2992.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = typ; FStar_Syntax_Syntax.lbeff = - (uu___287_2992.FStar_Syntax_Syntax.lbeff); + (uu___286_2992.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = def; FStar_Syntax_Syntax.lbattrs = - (uu___287_2992.FStar_Syntax_Syntax.lbattrs); + (uu___286_2992.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___287_2992.FStar_Syntax_Syntax.lbpos) + (uu___286_2992.FStar_Syntax_Syntax.lbpos) } in let t1 = mk @@ -800,16 +800,16 @@ let rec (inline_closure_env : FStar_Util.left lb.FStar_Syntax_Syntax.lbname in FStar_Util.Inl - (let uu___288_3142 = x in + (let uu___287_3142 = x in { FStar_Syntax_Syntax.ppname = - (uu___288_3142.FStar_Syntax_Syntax.ppname); + (uu___287_3142.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___288_3142.FStar_Syntax_Syntax.index); + (uu___287_3142.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = ty })) in - let uu___289_3143 = lb in + let uu___288_3143 = lb in let uu____3144 = non_tail_inline_closure_env cfg env2 lb.FStar_Syntax_Syntax.lbdef @@ -817,15 +817,15 @@ let rec (inline_closure_env : { FStar_Syntax_Syntax.lbname = nm; FStar_Syntax_Syntax.lbunivs = - (uu___289_3143.FStar_Syntax_Syntax.lbunivs); + (uu___288_3143.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = ty; FStar_Syntax_Syntax.lbeff = - (uu___289_3143.FStar_Syntax_Syntax.lbeff); + (uu___288_3143.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = uu____3144; FStar_Syntax_Syntax.lbattrs = - (uu___289_3143.FStar_Syntax_Syntax.lbattrs); + (uu___288_3143.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___289_3143.FStar_Syntax_Syntax.lbpos) + (uu___288_3143.FStar_Syntax_Syntax.lbpos) } in let lbs1 = FStar_All.pipe_right lbs @@ -894,14 +894,14 @@ and (rebuild_closure : | (bs1,uu____3380) -> let lopt1 = close_lcomp_opt cfg env'' lopt in let uu____3400 = - let uu___290_3403 = FStar_Syntax_Util.abs bs1 t lopt1 + let uu___289_3403 = FStar_Syntax_Util.abs bs1 t lopt1 in { FStar_Syntax_Syntax.n = - (uu___290_3403.FStar_Syntax_Syntax.n); + (uu___289_3403.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = r; FStar_Syntax_Syntax.vars = - (uu___290_3403.FStar_Syntax_Syntax.vars) + (uu___289_3403.FStar_Syntax_Syntax.vars) } in rebuild_closure cfg env stack1 uu____3400) | (Match (env1,branches,cfg1,r))::stack1 -> @@ -929,78 +929,78 @@ and (rebuild_closure : in (match uu____3605 with | (pats1,env4) -> - ((let uu___291_4015 = p in + ((let uu___290_4015 = p in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_cons (fv, (FStar_List.rev pats1))); FStar_Syntax_Syntax.p = - (uu___291_4015.FStar_Syntax_Syntax.p) + (uu___290_4015.FStar_Syntax_Syntax.p) }), env4)) | FStar_Syntax_Syntax.Pat_var x -> let x1 = - let uu___292_4036 = x in + let uu___291_4036 = x in let uu____4037 = non_tail_inline_closure_env cfg1 env3 x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___292_4036.FStar_Syntax_Syntax.ppname); + (uu___291_4036.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___292_4036.FStar_Syntax_Syntax.index); + (uu___291_4036.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____4037 } in - ((let uu___293_4051 = p in + ((let uu___292_4051 = p in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_var x1); FStar_Syntax_Syntax.p = - (uu___293_4051.FStar_Syntax_Syntax.p) + (uu___292_4051.FStar_Syntax_Syntax.p) }), (dummy :: env3)) | FStar_Syntax_Syntax.Pat_wild x -> let x1 = - let uu___294_4062 = x in + let uu___293_4062 = x in let uu____4063 = non_tail_inline_closure_env cfg1 env3 x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___294_4062.FStar_Syntax_Syntax.ppname); + (uu___293_4062.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___294_4062.FStar_Syntax_Syntax.index); + (uu___293_4062.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____4063 } in - ((let uu___295_4077 = p in + ((let uu___294_4077 = p in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_wild x1); FStar_Syntax_Syntax.p = - (uu___295_4077.FStar_Syntax_Syntax.p) + (uu___294_4077.FStar_Syntax_Syntax.p) }), (dummy :: env3)) | FStar_Syntax_Syntax.Pat_dot_term (x,t1) -> let x1 = - let uu___296_4093 = x in + let uu___295_4093 = x in let uu____4094 = non_tail_inline_closure_env cfg1 env3 x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___296_4093.FStar_Syntax_Syntax.ppname); + (uu___295_4093.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___296_4093.FStar_Syntax_Syntax.index); + (uu___295_4093.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____4094 } in let t2 = non_tail_inline_closure_env cfg1 env3 t1 in - ((let uu___297_4111 = p in + ((let uu___296_4111 = p in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_dot_term (x1, t2)); FStar_Syntax_Syntax.p = - (uu___297_4111.FStar_Syntax_Syntax.p) + (uu___296_4111.FStar_Syntax_Syntax.p) }), env3) in let uu____4116 = norm_pat env2 pat in @@ -1106,16 +1106,16 @@ and (close_binders : match (uu____4649, uu____4650) with | ((env1,out),(b,imp)) -> let b1 = - let uu___298_4790 = b in + let uu___297_4790 = b in let uu____4791 = inline_closure_env cfg env1 [] b.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___298_4790.FStar_Syntax_Syntax.ppname); + (uu___297_4790.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___298_4790.FStar_Syntax_Syntax.index); + (uu___297_4790.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____4791 } in let imp1 = close_imp cfg env1 imp in @@ -1168,8 +1168,8 @@ and (close_comp : let flags1 = FStar_All.pipe_right c1.FStar_Syntax_Syntax.flags (FStar_List.map - (fun uu___263_5053 -> - match uu___263_5053 with + (fun uu___262_5053 -> + match uu___262_5053 with | FStar_Syntax_Syntax.DECREASES t -> let uu____5057 = inline_closure_env cfg env [] t in @@ -1177,7 +1177,7 @@ and (close_comp : | f -> f)) in let uu____5061 = - let uu___299_5062 = c1 in + let uu___298_5062 = c1 in let uu____5063 = FStar_List.map (norm_universe cfg env) c1.FStar_Syntax_Syntax.comp_univs @@ -1185,7 +1185,7 @@ and (close_comp : { FStar_Syntax_Syntax.comp_univs = uu____5063; FStar_Syntax_Syntax.effect_name = - (uu___299_5062.FStar_Syntax_Syntax.effect_name); + (uu___298_5062.FStar_Syntax_Syntax.effect_name); FStar_Syntax_Syntax.result_typ = rt; FStar_Syntax_Syntax.effect_args = args; FStar_Syntax_Syntax.flags = flags1 @@ -1199,8 +1199,8 @@ and (filter_out_lcomp_cflags : fun flags1 -> FStar_All.pipe_right flags1 (FStar_List.filter - (fun uu___264_5073 -> - match uu___264_5073 with + (fun uu___263_5073 -> + match uu___263_5073 with | FStar_Syntax_Syntax.DECREASES uu____5075 -> false | uu____5079 -> true)) @@ -1218,20 +1218,20 @@ and (close_lcomp_opt : let flags1 = FStar_All.pipe_right rc.FStar_Syntax_Syntax.residual_flags (FStar_List.filter - (fun uu___265_5098 -> - match uu___265_5098 with + (fun uu___264_5098 -> + match uu___264_5098 with | FStar_Syntax_Syntax.DECREASES uu____5100 -> false | uu____5104 -> true)) in let rc1 = - let uu___300_5107 = rc in + let uu___299_5107 = rc in let uu____5108 = FStar_Util.map_opt rc.FStar_Syntax_Syntax.residual_typ (inline_closure_env cfg env []) in { FStar_Syntax_Syntax.residual_effect = - (uu___300_5107.FStar_Syntax_Syntax.residual_effect); + (uu___299_5107.FStar_Syntax_Syntax.residual_effect); FStar_Syntax_Syntax.residual_typ = uu____5108; FStar_Syntax_Syntax.residual_flags = flags1 } in @@ -1300,16 +1300,16 @@ let mk_psc_subst : | FStar_Pervasives_Native.Some x -> let b1 = let uu____5441 = - let uu___301_5442 = bv in + let uu___300_5442 = bv in let uu____5443 = FStar_Syntax_Subst.subst subst1 (FStar_Pervasives_Native.fst x).FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___301_5442.FStar_Syntax_Syntax.ppname); + (uu___300_5442.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___301_5442.FStar_Syntax_Syntax.index); + (uu___300_5442.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____5443 } in FStar_Syntax_Syntax.freshen_bv uu____5441 @@ -1324,8 +1324,8 @@ let mk_psc_subst : FStar_Syntax_Syntax.NT uu____5449 in let subst2 = FStar_List.filter - (fun uu___266_5472 -> - match uu___266_5472 with + (fun uu___265_5472 -> + match uu___265_5472 with | FStar_Syntax_Syntax.NT (uu____5474,{ FStar_Syntax_Syntax.n @@ -1530,79 +1530,79 @@ let reduce_equality : fun cfg -> fun tm -> reduce_primops norm_cb - (let uu___302_5976 = cfg in + (let uu___301_5976 = cfg in { FStar_TypeChecker_Cfg.steps = - (let uu___303_5979 = FStar_TypeChecker_Cfg.default_steps in + (let uu___302_5979 = FStar_TypeChecker_Cfg.default_steps in { FStar_TypeChecker_Cfg.beta = - (uu___303_5979.FStar_TypeChecker_Cfg.beta); + (uu___302_5979.FStar_TypeChecker_Cfg.beta); FStar_TypeChecker_Cfg.iota = - (uu___303_5979.FStar_TypeChecker_Cfg.iota); + (uu___302_5979.FStar_TypeChecker_Cfg.iota); FStar_TypeChecker_Cfg.zeta = - (uu___303_5979.FStar_TypeChecker_Cfg.zeta); + (uu___302_5979.FStar_TypeChecker_Cfg.zeta); FStar_TypeChecker_Cfg.weak = - (uu___303_5979.FStar_TypeChecker_Cfg.weak); + (uu___302_5979.FStar_TypeChecker_Cfg.weak); FStar_TypeChecker_Cfg.hnf = - (uu___303_5979.FStar_TypeChecker_Cfg.hnf); + (uu___302_5979.FStar_TypeChecker_Cfg.hnf); FStar_TypeChecker_Cfg.primops = true; FStar_TypeChecker_Cfg.do_not_unfold_pure_lets = - (uu___303_5979.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); + (uu___302_5979.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); FStar_TypeChecker_Cfg.unfold_until = - (uu___303_5979.FStar_TypeChecker_Cfg.unfold_until); + (uu___302_5979.FStar_TypeChecker_Cfg.unfold_until); FStar_TypeChecker_Cfg.unfold_only = - (uu___303_5979.FStar_TypeChecker_Cfg.unfold_only); + (uu___302_5979.FStar_TypeChecker_Cfg.unfold_only); FStar_TypeChecker_Cfg.unfold_fully = - (uu___303_5979.FStar_TypeChecker_Cfg.unfold_fully); + (uu___302_5979.FStar_TypeChecker_Cfg.unfold_fully); FStar_TypeChecker_Cfg.unfold_attr = - (uu___303_5979.FStar_TypeChecker_Cfg.unfold_attr); + (uu___302_5979.FStar_TypeChecker_Cfg.unfold_attr); FStar_TypeChecker_Cfg.unfold_tac = - (uu___303_5979.FStar_TypeChecker_Cfg.unfold_tac); + (uu___302_5979.FStar_TypeChecker_Cfg.unfold_tac); FStar_TypeChecker_Cfg.pure_subterms_within_computations = - (uu___303_5979.FStar_TypeChecker_Cfg.pure_subterms_within_computations); + (uu___302_5979.FStar_TypeChecker_Cfg.pure_subterms_within_computations); FStar_TypeChecker_Cfg.simplify = - (uu___303_5979.FStar_TypeChecker_Cfg.simplify); + (uu___302_5979.FStar_TypeChecker_Cfg.simplify); FStar_TypeChecker_Cfg.erase_universes = - (uu___303_5979.FStar_TypeChecker_Cfg.erase_universes); + (uu___302_5979.FStar_TypeChecker_Cfg.erase_universes); FStar_TypeChecker_Cfg.allow_unbound_universes = - (uu___303_5979.FStar_TypeChecker_Cfg.allow_unbound_universes); + (uu___302_5979.FStar_TypeChecker_Cfg.allow_unbound_universes); FStar_TypeChecker_Cfg.reify_ = - (uu___303_5979.FStar_TypeChecker_Cfg.reify_); + (uu___302_5979.FStar_TypeChecker_Cfg.reify_); FStar_TypeChecker_Cfg.compress_uvars = - (uu___303_5979.FStar_TypeChecker_Cfg.compress_uvars); + (uu___302_5979.FStar_TypeChecker_Cfg.compress_uvars); FStar_TypeChecker_Cfg.no_full_norm = - (uu___303_5979.FStar_TypeChecker_Cfg.no_full_norm); + (uu___302_5979.FStar_TypeChecker_Cfg.no_full_norm); FStar_TypeChecker_Cfg.check_no_uvars = - (uu___303_5979.FStar_TypeChecker_Cfg.check_no_uvars); + (uu___302_5979.FStar_TypeChecker_Cfg.check_no_uvars); FStar_TypeChecker_Cfg.unmeta = - (uu___303_5979.FStar_TypeChecker_Cfg.unmeta); + (uu___302_5979.FStar_TypeChecker_Cfg.unmeta); FStar_TypeChecker_Cfg.unascribe = - (uu___303_5979.FStar_TypeChecker_Cfg.unascribe); + (uu___302_5979.FStar_TypeChecker_Cfg.unascribe); FStar_TypeChecker_Cfg.in_full_norm_request = - (uu___303_5979.FStar_TypeChecker_Cfg.in_full_norm_request); + (uu___302_5979.FStar_TypeChecker_Cfg.in_full_norm_request); FStar_TypeChecker_Cfg.weakly_reduce_scrutinee = - (uu___303_5979.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); + (uu___302_5979.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); FStar_TypeChecker_Cfg.nbe_step = - (uu___303_5979.FStar_TypeChecker_Cfg.nbe_step); + (uu___302_5979.FStar_TypeChecker_Cfg.nbe_step); FStar_TypeChecker_Cfg.for_extraction = - (uu___303_5979.FStar_TypeChecker_Cfg.for_extraction) + (uu___302_5979.FStar_TypeChecker_Cfg.for_extraction) }); FStar_TypeChecker_Cfg.tcenv = - (uu___302_5976.FStar_TypeChecker_Cfg.tcenv); + (uu___301_5976.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___302_5976.FStar_TypeChecker_Cfg.debug); + (uu___301_5976.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___302_5976.FStar_TypeChecker_Cfg.delta_level); + (uu___301_5976.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = FStar_TypeChecker_Cfg.equality_ops; FStar_TypeChecker_Cfg.strong = - (uu___302_5976.FStar_TypeChecker_Cfg.strong); + (uu___301_5976.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___302_5976.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___301_5976.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___302_5976.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___301_5976.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___302_5976.FStar_TypeChecker_Cfg.reifying) + (uu___301_5976.FStar_TypeChecker_Cfg.reifying) }) tm type norm_request_t = @@ -1721,8 +1721,8 @@ let (is_nbe_request : FStar_TypeChecker_Env.step Prims.list -> Prims.bool) = let (tr_norm_step : FStar_Syntax_Embeddings.norm_step -> FStar_TypeChecker_Env.step Prims.list) = - fun uu___267_6377 -> - match uu___267_6377 with + fun uu___266_6377 -> + match uu___266_6377 with | FStar_Syntax_Embeddings.Zeta -> [FStar_TypeChecker_Env.Zeta] | FStar_Syntax_Embeddings.Iota -> [FStar_TypeChecker_Env.Iota] | FStar_Syntax_Embeddings.Delta -> @@ -1851,8 +1851,8 @@ let (nbe_eval : let uu____6715 = FStar_All.pipe_right s (FStar_Util.for_some - (fun uu___268_6722 -> - match uu___268_6722 with + (fun uu___267_6722 -> + match uu___267_6722 with | FStar_TypeChecker_Env.UnfoldUntil uu____6724 -> true | FStar_TypeChecker_Env.UnfoldOnly uu____6726 -> true | FStar_TypeChecker_Env.UnfoldFully uu____6730 -> true @@ -1878,8 +1878,8 @@ let (nbe_eval : tm_norm) let (is_reify_head : stack_elt Prims.list -> Prims.bool) = - fun uu___269_6780 -> - match uu___269_6780 with + fun uu___268_6780 -> + match uu___268_6780 with | (App (uu____6784,{ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_constant @@ -1904,8 +1904,8 @@ let (should_reify : FStar_TypeChecker_Cfg.cfg -> stack_elt Prims.list -> Prims.bool) = fun cfg -> fun stack -> - let rec drop_irrel uu___270_6863 = - match uu___270_6863 with + let rec drop_irrel uu___269_6863 = + match uu___269_6863 with | (MemoLazy uu____6868)::s -> drop_irrel s | (UnivArgs uu____6878)::s -> drop_irrel s | s -> s in @@ -2309,8 +2309,8 @@ let (should_unfold : FStar_All.pipe_right cfg.FStar_TypeChecker_Cfg.delta_level (FStar_Util.for_some - (fun uu___271_9044 -> - match uu___271_9044 with + (fun uu___270_9044 -> + match uu___270_9044 with | FStar_TypeChecker_Env.NoDelta -> false | FStar_TypeChecker_Env.InliningDelta -> true @@ -2377,26 +2377,26 @@ let decide_unfolding : FStar_Pervasives_Native.Some (cfg, stack) | Should_unfold_fully -> let cfg' = - let uu___304_9201 = cfg in + let uu___303_9201 = cfg in { FStar_TypeChecker_Cfg.steps = - (let uu___305_9204 = cfg.FStar_TypeChecker_Cfg.steps + (let uu___304_9204 = cfg.FStar_TypeChecker_Cfg.steps in { FStar_TypeChecker_Cfg.beta = - (uu___305_9204.FStar_TypeChecker_Cfg.beta); + (uu___304_9204.FStar_TypeChecker_Cfg.beta); FStar_TypeChecker_Cfg.iota = - (uu___305_9204.FStar_TypeChecker_Cfg.iota); + (uu___304_9204.FStar_TypeChecker_Cfg.iota); FStar_TypeChecker_Cfg.zeta = - (uu___305_9204.FStar_TypeChecker_Cfg.zeta); + (uu___304_9204.FStar_TypeChecker_Cfg.zeta); FStar_TypeChecker_Cfg.weak = - (uu___305_9204.FStar_TypeChecker_Cfg.weak); + (uu___304_9204.FStar_TypeChecker_Cfg.weak); FStar_TypeChecker_Cfg.hnf = - (uu___305_9204.FStar_TypeChecker_Cfg.hnf); + (uu___304_9204.FStar_TypeChecker_Cfg.hnf); FStar_TypeChecker_Cfg.primops = - (uu___305_9204.FStar_TypeChecker_Cfg.primops); + (uu___304_9204.FStar_TypeChecker_Cfg.primops); FStar_TypeChecker_Cfg.do_not_unfold_pure_lets = - (uu___305_9204.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); + (uu___304_9204.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); FStar_TypeChecker_Cfg.unfold_until = (FStar_Pervasives_Native.Some FStar_Syntax_Syntax.delta_constant); @@ -2407,53 +2407,53 @@ let decide_unfolding : FStar_TypeChecker_Cfg.unfold_attr = FStar_Pervasives_Native.None; FStar_TypeChecker_Cfg.unfold_tac = - (uu___305_9204.FStar_TypeChecker_Cfg.unfold_tac); + (uu___304_9204.FStar_TypeChecker_Cfg.unfold_tac); FStar_TypeChecker_Cfg.pure_subterms_within_computations = - (uu___305_9204.FStar_TypeChecker_Cfg.pure_subterms_within_computations); + (uu___304_9204.FStar_TypeChecker_Cfg.pure_subterms_within_computations); FStar_TypeChecker_Cfg.simplify = - (uu___305_9204.FStar_TypeChecker_Cfg.simplify); + (uu___304_9204.FStar_TypeChecker_Cfg.simplify); FStar_TypeChecker_Cfg.erase_universes = - (uu___305_9204.FStar_TypeChecker_Cfg.erase_universes); + (uu___304_9204.FStar_TypeChecker_Cfg.erase_universes); FStar_TypeChecker_Cfg.allow_unbound_universes = - (uu___305_9204.FStar_TypeChecker_Cfg.allow_unbound_universes); + (uu___304_9204.FStar_TypeChecker_Cfg.allow_unbound_universes); FStar_TypeChecker_Cfg.reify_ = - (uu___305_9204.FStar_TypeChecker_Cfg.reify_); + (uu___304_9204.FStar_TypeChecker_Cfg.reify_); FStar_TypeChecker_Cfg.compress_uvars = - (uu___305_9204.FStar_TypeChecker_Cfg.compress_uvars); + (uu___304_9204.FStar_TypeChecker_Cfg.compress_uvars); FStar_TypeChecker_Cfg.no_full_norm = - (uu___305_9204.FStar_TypeChecker_Cfg.no_full_norm); + (uu___304_9204.FStar_TypeChecker_Cfg.no_full_norm); FStar_TypeChecker_Cfg.check_no_uvars = - (uu___305_9204.FStar_TypeChecker_Cfg.check_no_uvars); + (uu___304_9204.FStar_TypeChecker_Cfg.check_no_uvars); FStar_TypeChecker_Cfg.unmeta = - (uu___305_9204.FStar_TypeChecker_Cfg.unmeta); + (uu___304_9204.FStar_TypeChecker_Cfg.unmeta); FStar_TypeChecker_Cfg.unascribe = - (uu___305_9204.FStar_TypeChecker_Cfg.unascribe); + (uu___304_9204.FStar_TypeChecker_Cfg.unascribe); FStar_TypeChecker_Cfg.in_full_norm_request = - (uu___305_9204.FStar_TypeChecker_Cfg.in_full_norm_request); + (uu___304_9204.FStar_TypeChecker_Cfg.in_full_norm_request); FStar_TypeChecker_Cfg.weakly_reduce_scrutinee = - (uu___305_9204.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); + (uu___304_9204.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); FStar_TypeChecker_Cfg.nbe_step = - (uu___305_9204.FStar_TypeChecker_Cfg.nbe_step); + (uu___304_9204.FStar_TypeChecker_Cfg.nbe_step); FStar_TypeChecker_Cfg.for_extraction = - (uu___305_9204.FStar_TypeChecker_Cfg.for_extraction) + (uu___304_9204.FStar_TypeChecker_Cfg.for_extraction) }); FStar_TypeChecker_Cfg.tcenv = - (uu___304_9201.FStar_TypeChecker_Cfg.tcenv); + (uu___303_9201.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___304_9201.FStar_TypeChecker_Cfg.debug); + (uu___303_9201.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___304_9201.FStar_TypeChecker_Cfg.delta_level); + (uu___303_9201.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___304_9201.FStar_TypeChecker_Cfg.primitive_steps); + (uu___303_9201.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___304_9201.FStar_TypeChecker_Cfg.strong); + (uu___303_9201.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___304_9201.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___303_9201.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___304_9201.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___303_9201.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___304_9201.FStar_TypeChecker_Cfg.reifying) + (uu___303_9201.FStar_TypeChecker_Cfg.reifying) } in let stack' = match stack with @@ -2686,82 +2686,82 @@ let rec (norm : then FStar_Util.print_string "Potential norm request ... \n" else (); (let cfg' = - let uu___306_10066 = cfg in + let uu___305_10066 = cfg in { FStar_TypeChecker_Cfg.steps = - (let uu___307_10069 = cfg.FStar_TypeChecker_Cfg.steps + (let uu___306_10069 = cfg.FStar_TypeChecker_Cfg.steps in { FStar_TypeChecker_Cfg.beta = - (uu___307_10069.FStar_TypeChecker_Cfg.beta); + (uu___306_10069.FStar_TypeChecker_Cfg.beta); FStar_TypeChecker_Cfg.iota = - (uu___307_10069.FStar_TypeChecker_Cfg.iota); + (uu___306_10069.FStar_TypeChecker_Cfg.iota); FStar_TypeChecker_Cfg.zeta = - (uu___307_10069.FStar_TypeChecker_Cfg.zeta); + (uu___306_10069.FStar_TypeChecker_Cfg.zeta); FStar_TypeChecker_Cfg.weak = - (uu___307_10069.FStar_TypeChecker_Cfg.weak); + (uu___306_10069.FStar_TypeChecker_Cfg.weak); FStar_TypeChecker_Cfg.hnf = - (uu___307_10069.FStar_TypeChecker_Cfg.hnf); + (uu___306_10069.FStar_TypeChecker_Cfg.hnf); FStar_TypeChecker_Cfg.primops = - (uu___307_10069.FStar_TypeChecker_Cfg.primops); + (uu___306_10069.FStar_TypeChecker_Cfg.primops); FStar_TypeChecker_Cfg.do_not_unfold_pure_lets = false; FStar_TypeChecker_Cfg.unfold_until = - (uu___307_10069.FStar_TypeChecker_Cfg.unfold_until); + (uu___306_10069.FStar_TypeChecker_Cfg.unfold_until); FStar_TypeChecker_Cfg.unfold_only = FStar_Pervasives_Native.None; FStar_TypeChecker_Cfg.unfold_fully = FStar_Pervasives_Native.None; FStar_TypeChecker_Cfg.unfold_attr = - (uu___307_10069.FStar_TypeChecker_Cfg.unfold_attr); + (uu___306_10069.FStar_TypeChecker_Cfg.unfold_attr); FStar_TypeChecker_Cfg.unfold_tac = - (uu___307_10069.FStar_TypeChecker_Cfg.unfold_tac); + (uu___306_10069.FStar_TypeChecker_Cfg.unfold_tac); FStar_TypeChecker_Cfg.pure_subterms_within_computations = - (uu___307_10069.FStar_TypeChecker_Cfg.pure_subterms_within_computations); + (uu___306_10069.FStar_TypeChecker_Cfg.pure_subterms_within_computations); FStar_TypeChecker_Cfg.simplify = - (uu___307_10069.FStar_TypeChecker_Cfg.simplify); + (uu___306_10069.FStar_TypeChecker_Cfg.simplify); FStar_TypeChecker_Cfg.erase_universes = - (uu___307_10069.FStar_TypeChecker_Cfg.erase_universes); + (uu___306_10069.FStar_TypeChecker_Cfg.erase_universes); FStar_TypeChecker_Cfg.allow_unbound_universes = - (uu___307_10069.FStar_TypeChecker_Cfg.allow_unbound_universes); + (uu___306_10069.FStar_TypeChecker_Cfg.allow_unbound_universes); FStar_TypeChecker_Cfg.reify_ = - (uu___307_10069.FStar_TypeChecker_Cfg.reify_); + (uu___306_10069.FStar_TypeChecker_Cfg.reify_); FStar_TypeChecker_Cfg.compress_uvars = - (uu___307_10069.FStar_TypeChecker_Cfg.compress_uvars); + (uu___306_10069.FStar_TypeChecker_Cfg.compress_uvars); FStar_TypeChecker_Cfg.no_full_norm = - (uu___307_10069.FStar_TypeChecker_Cfg.no_full_norm); + (uu___306_10069.FStar_TypeChecker_Cfg.no_full_norm); FStar_TypeChecker_Cfg.check_no_uvars = - (uu___307_10069.FStar_TypeChecker_Cfg.check_no_uvars); + (uu___306_10069.FStar_TypeChecker_Cfg.check_no_uvars); FStar_TypeChecker_Cfg.unmeta = - (uu___307_10069.FStar_TypeChecker_Cfg.unmeta); + (uu___306_10069.FStar_TypeChecker_Cfg.unmeta); FStar_TypeChecker_Cfg.unascribe = - (uu___307_10069.FStar_TypeChecker_Cfg.unascribe); + (uu___306_10069.FStar_TypeChecker_Cfg.unascribe); FStar_TypeChecker_Cfg.in_full_norm_request = - (uu___307_10069.FStar_TypeChecker_Cfg.in_full_norm_request); + (uu___306_10069.FStar_TypeChecker_Cfg.in_full_norm_request); FStar_TypeChecker_Cfg.weakly_reduce_scrutinee = - (uu___307_10069.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); + (uu___306_10069.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); FStar_TypeChecker_Cfg.nbe_step = - (uu___307_10069.FStar_TypeChecker_Cfg.nbe_step); + (uu___306_10069.FStar_TypeChecker_Cfg.nbe_step); FStar_TypeChecker_Cfg.for_extraction = - (uu___307_10069.FStar_TypeChecker_Cfg.for_extraction) + (uu___306_10069.FStar_TypeChecker_Cfg.for_extraction) }); FStar_TypeChecker_Cfg.tcenv = - (uu___306_10066.FStar_TypeChecker_Cfg.tcenv); + (uu___305_10066.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___306_10066.FStar_TypeChecker_Cfg.debug); + (uu___305_10066.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = [FStar_TypeChecker_Env.Unfold FStar_Syntax_Syntax.delta_constant]; FStar_TypeChecker_Cfg.primitive_steps = - (uu___306_10066.FStar_TypeChecker_Cfg.primitive_steps); + (uu___305_10066.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___306_10066.FStar_TypeChecker_Cfg.strong); + (uu___305_10066.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___306_10066.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___305_10066.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = true; FStar_TypeChecker_Cfg.reifying = - (uu___306_10066.FStar_TypeChecker_Cfg.reifying) + (uu___305_10066.FStar_TypeChecker_Cfg.reifying) } in let uu____10076 = get_norm_request cfg (norm cfg' env []) args in @@ -2848,8 +2848,8 @@ let rec (norm : let uu____10334 = FStar_All.pipe_right s (FStar_Util.for_some - (fun uu___272_10341 -> - match uu___272_10341 with + (fun uu___271_10341 -> + match uu___271_10341 with | FStar_TypeChecker_Env.UnfoldUntil uu____10343 -> true | FStar_TypeChecker_Env.UnfoldOnly @@ -2864,81 +2864,81 @@ let rec (norm : FStar_Syntax_Syntax.delta_constant] else [FStar_TypeChecker_Env.NoDelta] in let cfg'1 = - let uu___308_10361 = cfg in + let uu___307_10361 = cfg in let uu____10362 = - let uu___309_10363 = + let uu___308_10363 = FStar_TypeChecker_Cfg.to_fsteps s in { FStar_TypeChecker_Cfg.beta = - (uu___309_10363.FStar_TypeChecker_Cfg.beta); + (uu___308_10363.FStar_TypeChecker_Cfg.beta); FStar_TypeChecker_Cfg.iota = - (uu___309_10363.FStar_TypeChecker_Cfg.iota); + (uu___308_10363.FStar_TypeChecker_Cfg.iota); FStar_TypeChecker_Cfg.zeta = - (uu___309_10363.FStar_TypeChecker_Cfg.zeta); + (uu___308_10363.FStar_TypeChecker_Cfg.zeta); FStar_TypeChecker_Cfg.weak = - (uu___309_10363.FStar_TypeChecker_Cfg.weak); + (uu___308_10363.FStar_TypeChecker_Cfg.weak); FStar_TypeChecker_Cfg.hnf = - (uu___309_10363.FStar_TypeChecker_Cfg.hnf); + (uu___308_10363.FStar_TypeChecker_Cfg.hnf); FStar_TypeChecker_Cfg.primops = - (uu___309_10363.FStar_TypeChecker_Cfg.primops); + (uu___308_10363.FStar_TypeChecker_Cfg.primops); FStar_TypeChecker_Cfg.do_not_unfold_pure_lets = - (uu___309_10363.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); + (uu___308_10363.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); FStar_TypeChecker_Cfg.unfold_until = - (uu___309_10363.FStar_TypeChecker_Cfg.unfold_until); + (uu___308_10363.FStar_TypeChecker_Cfg.unfold_until); FStar_TypeChecker_Cfg.unfold_only = - (uu___309_10363.FStar_TypeChecker_Cfg.unfold_only); + (uu___308_10363.FStar_TypeChecker_Cfg.unfold_only); FStar_TypeChecker_Cfg.unfold_fully = - (uu___309_10363.FStar_TypeChecker_Cfg.unfold_fully); + (uu___308_10363.FStar_TypeChecker_Cfg.unfold_fully); FStar_TypeChecker_Cfg.unfold_attr = - (uu___309_10363.FStar_TypeChecker_Cfg.unfold_attr); + (uu___308_10363.FStar_TypeChecker_Cfg.unfold_attr); FStar_TypeChecker_Cfg.unfold_tac = - (uu___309_10363.FStar_TypeChecker_Cfg.unfold_tac); + (uu___308_10363.FStar_TypeChecker_Cfg.unfold_tac); FStar_TypeChecker_Cfg.pure_subterms_within_computations = - (uu___309_10363.FStar_TypeChecker_Cfg.pure_subterms_within_computations); + (uu___308_10363.FStar_TypeChecker_Cfg.pure_subterms_within_computations); FStar_TypeChecker_Cfg.simplify = - (uu___309_10363.FStar_TypeChecker_Cfg.simplify); + (uu___308_10363.FStar_TypeChecker_Cfg.simplify); FStar_TypeChecker_Cfg.erase_universes = - (uu___309_10363.FStar_TypeChecker_Cfg.erase_universes); + (uu___308_10363.FStar_TypeChecker_Cfg.erase_universes); FStar_TypeChecker_Cfg.allow_unbound_universes = - (uu___309_10363.FStar_TypeChecker_Cfg.allow_unbound_universes); + (uu___308_10363.FStar_TypeChecker_Cfg.allow_unbound_universes); FStar_TypeChecker_Cfg.reify_ = - (uu___309_10363.FStar_TypeChecker_Cfg.reify_); + (uu___308_10363.FStar_TypeChecker_Cfg.reify_); FStar_TypeChecker_Cfg.compress_uvars = - (uu___309_10363.FStar_TypeChecker_Cfg.compress_uvars); + (uu___308_10363.FStar_TypeChecker_Cfg.compress_uvars); FStar_TypeChecker_Cfg.no_full_norm = - (uu___309_10363.FStar_TypeChecker_Cfg.no_full_norm); + (uu___308_10363.FStar_TypeChecker_Cfg.no_full_norm); FStar_TypeChecker_Cfg.check_no_uvars = - (uu___309_10363.FStar_TypeChecker_Cfg.check_no_uvars); + (uu___308_10363.FStar_TypeChecker_Cfg.check_no_uvars); FStar_TypeChecker_Cfg.unmeta = - (uu___309_10363.FStar_TypeChecker_Cfg.unmeta); + (uu___308_10363.FStar_TypeChecker_Cfg.unmeta); FStar_TypeChecker_Cfg.unascribe = - (uu___309_10363.FStar_TypeChecker_Cfg.unascribe); + (uu___308_10363.FStar_TypeChecker_Cfg.unascribe); FStar_TypeChecker_Cfg.in_full_norm_request = true; FStar_TypeChecker_Cfg.weakly_reduce_scrutinee = - (uu___309_10363.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); + (uu___308_10363.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); FStar_TypeChecker_Cfg.nbe_step = - (uu___309_10363.FStar_TypeChecker_Cfg.nbe_step); + (uu___308_10363.FStar_TypeChecker_Cfg.nbe_step); FStar_TypeChecker_Cfg.for_extraction = - (uu___309_10363.FStar_TypeChecker_Cfg.for_extraction) + (uu___308_10363.FStar_TypeChecker_Cfg.for_extraction) } in { FStar_TypeChecker_Cfg.steps = uu____10362; FStar_TypeChecker_Cfg.tcenv = - (uu___308_10361.FStar_TypeChecker_Cfg.tcenv); + (uu___307_10361.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___308_10361.FStar_TypeChecker_Cfg.debug); + (uu___307_10361.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = delta_level; FStar_TypeChecker_Cfg.primitive_steps = - (uu___308_10361.FStar_TypeChecker_Cfg.primitive_steps); + (uu___307_10361.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___308_10361.FStar_TypeChecker_Cfg.strong); + (uu___307_10361.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___308_10361.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___307_10361.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = true; FStar_TypeChecker_Cfg.reifying = - (uu___308_10361.FStar_TypeChecker_Cfg.reifying) + (uu___307_10361.FStar_TypeChecker_Cfg.reifying) } in let stack' = let tail1 = (Cfg cfg) :: stack in @@ -3094,13 +3094,13 @@ let rec (norm : (FStar_Syntax_Subst.subst opening) in FStar_Pervasives_Native.Some - (let uu___310_10940 = rc in + (let uu___309_10940 = rc in { FStar_Syntax_Syntax.residual_effect = - (uu___310_10940.FStar_Syntax_Syntax.residual_effect); + (uu___309_10940.FStar_Syntax_Syntax.residual_effect); FStar_Syntax_Syntax.residual_typ = rct; FStar_Syntax_Syntax.residual_flags = - (uu___310_10940.FStar_Syntax_Syntax.residual_flags) + (uu___309_10940.FStar_Syntax_Syntax.residual_flags) }) | uu____10941 -> lopt in (FStar_TypeChecker_Cfg.log cfg @@ -3114,25 +3114,25 @@ let rec (norm : uu____10948); (let stack1 = (Cfg cfg) :: stack in let cfg1 = - let uu___311_10963 = cfg in + let uu___310_10963 = cfg in { FStar_TypeChecker_Cfg.steps = - (uu___311_10963.FStar_TypeChecker_Cfg.steps); + (uu___310_10963.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = - (uu___311_10963.FStar_TypeChecker_Cfg.tcenv); + (uu___310_10963.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___311_10963.FStar_TypeChecker_Cfg.debug); + (uu___310_10963.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___311_10963.FStar_TypeChecker_Cfg.delta_level); + (uu___310_10963.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___311_10963.FStar_TypeChecker_Cfg.primitive_steps); + (uu___310_10963.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = true; FStar_TypeChecker_Cfg.memoize_lazy = - (uu___311_10963.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___310_10963.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___311_10963.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___310_10963.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___311_10963.FStar_TypeChecker_Cfg.reifying) + (uu___310_10963.FStar_TypeChecker_Cfg.reifying) } in norm cfg1 env' ((Abs @@ -3177,13 +3177,13 @@ let rec (norm : (FStar_Syntax_Subst.subst opening) in FStar_Pervasives_Native.Some - (let uu___310_11067 = rc in + (let uu___309_11067 = rc in { FStar_Syntax_Syntax.residual_effect = - (uu___310_11067.FStar_Syntax_Syntax.residual_effect); + (uu___309_11067.FStar_Syntax_Syntax.residual_effect); FStar_Syntax_Syntax.residual_typ = rct; FStar_Syntax_Syntax.residual_flags = - (uu___310_11067.FStar_Syntax_Syntax.residual_flags) + (uu___309_11067.FStar_Syntax_Syntax.residual_flags) }) | uu____11068 -> lopt in (FStar_TypeChecker_Cfg.log cfg @@ -3197,25 +3197,25 @@ let rec (norm : uu____11075); (let stack1 = (Cfg cfg) :: stack in let cfg1 = - let uu___311_11090 = cfg in + let uu___310_11090 = cfg in { FStar_TypeChecker_Cfg.steps = - (uu___311_11090.FStar_TypeChecker_Cfg.steps); + (uu___310_11090.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = - (uu___311_11090.FStar_TypeChecker_Cfg.tcenv); + (uu___310_11090.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___311_11090.FStar_TypeChecker_Cfg.debug); + (uu___310_11090.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___311_11090.FStar_TypeChecker_Cfg.delta_level); + (uu___310_11090.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___311_11090.FStar_TypeChecker_Cfg.primitive_steps); + (uu___310_11090.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = true; FStar_TypeChecker_Cfg.memoize_lazy = - (uu___311_11090.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___310_11090.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___311_11090.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___310_11090.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___311_11090.FStar_TypeChecker_Cfg.reifying) + (uu___310_11090.FStar_TypeChecker_Cfg.reifying) } in norm cfg1 env' ((Abs @@ -3260,13 +3260,13 @@ let rec (norm : (FStar_Syntax_Subst.subst opening) in FStar_Pervasives_Native.Some - (let uu___310_11196 = rc in + (let uu___309_11196 = rc in { FStar_Syntax_Syntax.residual_effect = - (uu___310_11196.FStar_Syntax_Syntax.residual_effect); + (uu___309_11196.FStar_Syntax_Syntax.residual_effect); FStar_Syntax_Syntax.residual_typ = rct; FStar_Syntax_Syntax.residual_flags = - (uu___310_11196.FStar_Syntax_Syntax.residual_flags) + (uu___309_11196.FStar_Syntax_Syntax.residual_flags) }) | uu____11197 -> lopt in (FStar_TypeChecker_Cfg.log cfg @@ -3280,25 +3280,25 @@ let rec (norm : uu____11204); (let stack1 = (Cfg cfg) :: stack in let cfg1 = - let uu___311_11219 = cfg in + let uu___310_11219 = cfg in { FStar_TypeChecker_Cfg.steps = - (uu___311_11219.FStar_TypeChecker_Cfg.steps); + (uu___310_11219.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = - (uu___311_11219.FStar_TypeChecker_Cfg.tcenv); + (uu___310_11219.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___311_11219.FStar_TypeChecker_Cfg.debug); + (uu___310_11219.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___311_11219.FStar_TypeChecker_Cfg.delta_level); + (uu___310_11219.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___311_11219.FStar_TypeChecker_Cfg.primitive_steps); + (uu___310_11219.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = true; FStar_TypeChecker_Cfg.memoize_lazy = - (uu___311_11219.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___310_11219.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___311_11219.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___310_11219.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___311_11219.FStar_TypeChecker_Cfg.reifying) + (uu___310_11219.FStar_TypeChecker_Cfg.reifying) } in norm cfg1 env' ((Abs @@ -3343,13 +3343,13 @@ let rec (norm : (FStar_Syntax_Subst.subst opening) in FStar_Pervasives_Native.Some - (let uu___310_11327 = rc in + (let uu___309_11327 = rc in { FStar_Syntax_Syntax.residual_effect = - (uu___310_11327.FStar_Syntax_Syntax.residual_effect); + (uu___309_11327.FStar_Syntax_Syntax.residual_effect); FStar_Syntax_Syntax.residual_typ = rct; FStar_Syntax_Syntax.residual_flags = - (uu___310_11327.FStar_Syntax_Syntax.residual_flags) + (uu___309_11327.FStar_Syntax_Syntax.residual_flags) }) | uu____11328 -> lopt in (FStar_TypeChecker_Cfg.log cfg @@ -3363,25 +3363,25 @@ let rec (norm : uu____11335); (let stack1 = (Cfg cfg) :: stack in let cfg1 = - let uu___311_11350 = cfg in + let uu___310_11350 = cfg in { FStar_TypeChecker_Cfg.steps = - (uu___311_11350.FStar_TypeChecker_Cfg.steps); + (uu___310_11350.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = - (uu___311_11350.FStar_TypeChecker_Cfg.tcenv); + (uu___310_11350.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___311_11350.FStar_TypeChecker_Cfg.debug); + (uu___310_11350.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___311_11350.FStar_TypeChecker_Cfg.delta_level); + (uu___310_11350.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___311_11350.FStar_TypeChecker_Cfg.primitive_steps); + (uu___310_11350.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = true; FStar_TypeChecker_Cfg.memoize_lazy = - (uu___311_11350.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___310_11350.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___311_11350.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___310_11350.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___311_11350.FStar_TypeChecker_Cfg.reifying) + (uu___310_11350.FStar_TypeChecker_Cfg.reifying) } in norm cfg1 env' ((Abs @@ -3426,13 +3426,13 @@ let rec (norm : (FStar_Syntax_Subst.subst opening) in FStar_Pervasives_Native.Some - (let uu___310_11458 = rc in + (let uu___309_11458 = rc in { FStar_Syntax_Syntax.residual_effect = - (uu___310_11458.FStar_Syntax_Syntax.residual_effect); + (uu___309_11458.FStar_Syntax_Syntax.residual_effect); FStar_Syntax_Syntax.residual_typ = rct; FStar_Syntax_Syntax.residual_flags = - (uu___310_11458.FStar_Syntax_Syntax.residual_flags) + (uu___309_11458.FStar_Syntax_Syntax.residual_flags) }) | uu____11459 -> lopt in (FStar_TypeChecker_Cfg.log cfg @@ -3446,25 +3446,25 @@ let rec (norm : uu____11466); (let stack1 = (Cfg cfg) :: stack in let cfg1 = - let uu___311_11481 = cfg in + let uu___310_11481 = cfg in { FStar_TypeChecker_Cfg.steps = - (uu___311_11481.FStar_TypeChecker_Cfg.steps); + (uu___310_11481.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = - (uu___311_11481.FStar_TypeChecker_Cfg.tcenv); + (uu___310_11481.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___311_11481.FStar_TypeChecker_Cfg.debug); + (uu___310_11481.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___311_11481.FStar_TypeChecker_Cfg.delta_level); + (uu___310_11481.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___311_11481.FStar_TypeChecker_Cfg.primitive_steps); + (uu___310_11481.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = true; FStar_TypeChecker_Cfg.memoize_lazy = - (uu___311_11481.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___310_11481.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___311_11481.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___310_11481.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___311_11481.FStar_TypeChecker_Cfg.reifying) + (uu___310_11481.FStar_TypeChecker_Cfg.reifying) } in norm cfg1 env' ((Abs @@ -3509,13 +3509,13 @@ let rec (norm : (FStar_Syntax_Subst.subst opening) in FStar_Pervasives_Native.Some - (let uu___310_11593 = rc in + (let uu___309_11593 = rc in { FStar_Syntax_Syntax.residual_effect = - (uu___310_11593.FStar_Syntax_Syntax.residual_effect); + (uu___309_11593.FStar_Syntax_Syntax.residual_effect); FStar_Syntax_Syntax.residual_typ = rct; FStar_Syntax_Syntax.residual_flags = - (uu___310_11593.FStar_Syntax_Syntax.residual_flags) + (uu___309_11593.FStar_Syntax_Syntax.residual_flags) }) | uu____11594 -> lopt in (FStar_TypeChecker_Cfg.log cfg @@ -3529,25 +3529,25 @@ let rec (norm : uu____11601); (let stack1 = (Cfg cfg) :: stack in let cfg1 = - let uu___311_11616 = cfg in + let uu___310_11616 = cfg in { FStar_TypeChecker_Cfg.steps = - (uu___311_11616.FStar_TypeChecker_Cfg.steps); + (uu___310_11616.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = - (uu___311_11616.FStar_TypeChecker_Cfg.tcenv); + (uu___310_11616.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___311_11616.FStar_TypeChecker_Cfg.debug); + (uu___310_11616.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___311_11616.FStar_TypeChecker_Cfg.delta_level); + (uu___310_11616.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___311_11616.FStar_TypeChecker_Cfg.primitive_steps); + (uu___310_11616.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = true; FStar_TypeChecker_Cfg.memoize_lazy = - (uu___311_11616.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___310_11616.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___311_11616.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___310_11616.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___311_11616.FStar_TypeChecker_Cfg.reifying) + (uu___310_11616.FStar_TypeChecker_Cfg.reifying) } in norm cfg1 env' ((Abs @@ -3592,13 +3592,13 @@ let rec (norm : (FStar_Syntax_Subst.subst opening) in FStar_Pervasives_Native.Some - (let uu___310_11712 = rc in + (let uu___309_11712 = rc in { FStar_Syntax_Syntax.residual_effect = - (uu___310_11712.FStar_Syntax_Syntax.residual_effect); + (uu___309_11712.FStar_Syntax_Syntax.residual_effect); FStar_Syntax_Syntax.residual_typ = rct; FStar_Syntax_Syntax.residual_flags = - (uu___310_11712.FStar_Syntax_Syntax.residual_flags) + (uu___309_11712.FStar_Syntax_Syntax.residual_flags) }) | uu____11713 -> lopt in (FStar_TypeChecker_Cfg.log cfg @@ -3612,25 +3612,25 @@ let rec (norm : uu____11720); (let stack1 = (Cfg cfg) :: stack in let cfg1 = - let uu___311_11735 = cfg in + let uu___310_11735 = cfg in { FStar_TypeChecker_Cfg.steps = - (uu___311_11735.FStar_TypeChecker_Cfg.steps); + (uu___310_11735.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = - (uu___311_11735.FStar_TypeChecker_Cfg.tcenv); + (uu___310_11735.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___311_11735.FStar_TypeChecker_Cfg.debug); + (uu___310_11735.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___311_11735.FStar_TypeChecker_Cfg.delta_level); + (uu___310_11735.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___311_11735.FStar_TypeChecker_Cfg.primitive_steps); + (uu___310_11735.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = true; FStar_TypeChecker_Cfg.memoize_lazy = - (uu___311_11735.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___310_11735.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___311_11735.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___310_11735.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___311_11735.FStar_TypeChecker_Cfg.reifying) + (uu___310_11735.FStar_TypeChecker_Cfg.reifying) } in norm cfg1 env' ((Abs @@ -3680,12 +3680,12 @@ let rec (norm : let t2 = mk (FStar_Syntax_Syntax.Tm_refine - ((let uu___312_11976 = x in + ((let uu___311_11976 = x in { FStar_Syntax_Syntax.ppname = - (uu___312_11976.FStar_Syntax_Syntax.ppname); + (uu___311_11976.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___312_11976.FStar_Syntax_Syntax.index); + (uu___311_11976.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t_x }), f)) t1.FStar_Syntax_Syntax.pos in @@ -3707,12 +3707,12 @@ let rec (norm : let uu____12028 = let uu____12035 = FStar_Syntax_Subst.close closing f2 in - ((let uu___313_12041 = x in + ((let uu___312_12041 = x in { FStar_Syntax_Syntax.ppname = - (uu___313_12041.FStar_Syntax_Syntax.ppname); + (uu___312_12041.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___313_12041.FStar_Syntax_Syntax.index); + (uu___312_12041.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t_x }), uu____12035) in @@ -3841,81 +3841,81 @@ let rec (norm : (cfg.FStar_TypeChecker_Cfg.steps).FStar_TypeChecker_Cfg.weak) then let cfg' = - let uu___314_12539 = cfg in + let uu___313_12539 = cfg in { FStar_TypeChecker_Cfg.steps = - (let uu___315_12542 = cfg.FStar_TypeChecker_Cfg.steps + (let uu___314_12542 = cfg.FStar_TypeChecker_Cfg.steps in { FStar_TypeChecker_Cfg.beta = - (uu___315_12542.FStar_TypeChecker_Cfg.beta); + (uu___314_12542.FStar_TypeChecker_Cfg.beta); FStar_TypeChecker_Cfg.iota = - (uu___315_12542.FStar_TypeChecker_Cfg.iota); + (uu___314_12542.FStar_TypeChecker_Cfg.iota); FStar_TypeChecker_Cfg.zeta = - (uu___315_12542.FStar_TypeChecker_Cfg.zeta); + (uu___314_12542.FStar_TypeChecker_Cfg.zeta); FStar_TypeChecker_Cfg.weak = true; FStar_TypeChecker_Cfg.hnf = - (uu___315_12542.FStar_TypeChecker_Cfg.hnf); + (uu___314_12542.FStar_TypeChecker_Cfg.hnf); FStar_TypeChecker_Cfg.primops = - (uu___315_12542.FStar_TypeChecker_Cfg.primops); + (uu___314_12542.FStar_TypeChecker_Cfg.primops); FStar_TypeChecker_Cfg.do_not_unfold_pure_lets = - (uu___315_12542.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); + (uu___314_12542.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); FStar_TypeChecker_Cfg.unfold_until = - (uu___315_12542.FStar_TypeChecker_Cfg.unfold_until); + (uu___314_12542.FStar_TypeChecker_Cfg.unfold_until); FStar_TypeChecker_Cfg.unfold_only = - (uu___315_12542.FStar_TypeChecker_Cfg.unfold_only); + (uu___314_12542.FStar_TypeChecker_Cfg.unfold_only); FStar_TypeChecker_Cfg.unfold_fully = - (uu___315_12542.FStar_TypeChecker_Cfg.unfold_fully); + (uu___314_12542.FStar_TypeChecker_Cfg.unfold_fully); FStar_TypeChecker_Cfg.unfold_attr = - (uu___315_12542.FStar_TypeChecker_Cfg.unfold_attr); + (uu___314_12542.FStar_TypeChecker_Cfg.unfold_attr); FStar_TypeChecker_Cfg.unfold_tac = - (uu___315_12542.FStar_TypeChecker_Cfg.unfold_tac); + (uu___314_12542.FStar_TypeChecker_Cfg.unfold_tac); FStar_TypeChecker_Cfg.pure_subterms_within_computations = - (uu___315_12542.FStar_TypeChecker_Cfg.pure_subterms_within_computations); + (uu___314_12542.FStar_TypeChecker_Cfg.pure_subterms_within_computations); FStar_TypeChecker_Cfg.simplify = - (uu___315_12542.FStar_TypeChecker_Cfg.simplify); + (uu___314_12542.FStar_TypeChecker_Cfg.simplify); FStar_TypeChecker_Cfg.erase_universes = - (uu___315_12542.FStar_TypeChecker_Cfg.erase_universes); + (uu___314_12542.FStar_TypeChecker_Cfg.erase_universes); FStar_TypeChecker_Cfg.allow_unbound_universes = - (uu___315_12542.FStar_TypeChecker_Cfg.allow_unbound_universes); + (uu___314_12542.FStar_TypeChecker_Cfg.allow_unbound_universes); FStar_TypeChecker_Cfg.reify_ = - (uu___315_12542.FStar_TypeChecker_Cfg.reify_); + (uu___314_12542.FStar_TypeChecker_Cfg.reify_); FStar_TypeChecker_Cfg.compress_uvars = - (uu___315_12542.FStar_TypeChecker_Cfg.compress_uvars); + (uu___314_12542.FStar_TypeChecker_Cfg.compress_uvars); FStar_TypeChecker_Cfg.no_full_norm = - (uu___315_12542.FStar_TypeChecker_Cfg.no_full_norm); + (uu___314_12542.FStar_TypeChecker_Cfg.no_full_norm); FStar_TypeChecker_Cfg.check_no_uvars = - (uu___315_12542.FStar_TypeChecker_Cfg.check_no_uvars); + (uu___314_12542.FStar_TypeChecker_Cfg.check_no_uvars); FStar_TypeChecker_Cfg.unmeta = - (uu___315_12542.FStar_TypeChecker_Cfg.unmeta); + (uu___314_12542.FStar_TypeChecker_Cfg.unmeta); FStar_TypeChecker_Cfg.unascribe = - (uu___315_12542.FStar_TypeChecker_Cfg.unascribe); + (uu___314_12542.FStar_TypeChecker_Cfg.unascribe); FStar_TypeChecker_Cfg.in_full_norm_request = - (uu___315_12542.FStar_TypeChecker_Cfg.in_full_norm_request); + (uu___314_12542.FStar_TypeChecker_Cfg.in_full_norm_request); FStar_TypeChecker_Cfg.weakly_reduce_scrutinee = - (uu___315_12542.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); + (uu___314_12542.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); FStar_TypeChecker_Cfg.nbe_step = - (uu___315_12542.FStar_TypeChecker_Cfg.nbe_step); + (uu___314_12542.FStar_TypeChecker_Cfg.nbe_step); FStar_TypeChecker_Cfg.for_extraction = - (uu___315_12542.FStar_TypeChecker_Cfg.for_extraction) + (uu___314_12542.FStar_TypeChecker_Cfg.for_extraction) }); FStar_TypeChecker_Cfg.tcenv = - (uu___314_12539.FStar_TypeChecker_Cfg.tcenv); + (uu___313_12539.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___314_12539.FStar_TypeChecker_Cfg.debug); + (uu___313_12539.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___314_12539.FStar_TypeChecker_Cfg.delta_level); + (uu___313_12539.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___314_12539.FStar_TypeChecker_Cfg.primitive_steps); + (uu___313_12539.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___314_12539.FStar_TypeChecker_Cfg.strong); + (uu___313_12539.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___314_12539.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___313_12539.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___314_12539.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___313_12539.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___314_12539.FStar_TypeChecker_Cfg.reifying) + (uu___313_12539.FStar_TypeChecker_Cfg.reifying) } in norm cfg' env ((Cfg cfg) :: stack1) head1 else norm cfg env stack1 head1 @@ -3934,29 +3934,29 @@ let rec (norm : match uu____12583 with | (openings,lbunivs) -> let cfg1 = - let uu___316_12603 = cfg in + let uu___315_12603 = cfg in let uu____12604 = FStar_TypeChecker_Env.push_univ_vars cfg.FStar_TypeChecker_Cfg.tcenv lbunivs in { FStar_TypeChecker_Cfg.steps = - (uu___316_12603.FStar_TypeChecker_Cfg.steps); + (uu___315_12603.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = uu____12604; FStar_TypeChecker_Cfg.debug = - (uu___316_12603.FStar_TypeChecker_Cfg.debug); + (uu___315_12603.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___316_12603.FStar_TypeChecker_Cfg.delta_level); + (uu___315_12603.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___316_12603.FStar_TypeChecker_Cfg.primitive_steps); + (uu___315_12603.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___316_12603.FStar_TypeChecker_Cfg.strong); + (uu___315_12603.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___316_12603.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___315_12603.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___316_12603.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___315_12603.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___316_12603.FStar_TypeChecker_Cfg.reifying) + (uu___315_12603.FStar_TypeChecker_Cfg.reifying) } in let norm1 t2 = let uu____12611 = @@ -3970,19 +3970,19 @@ let rec (norm : in let lbdef = norm1 lb.FStar_Syntax_Syntax.lbdef in - let uu___317_12615 = lb in + let uu___316_12615 = lb in { FStar_Syntax_Syntax.lbname = - (uu___317_12615.FStar_Syntax_Syntax.lbname); + (uu___316_12615.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = lbunivs; FStar_Syntax_Syntax.lbtyp = lbtyp; FStar_Syntax_Syntax.lbeff = - (uu___317_12615.FStar_Syntax_Syntax.lbeff); + (uu___316_12615.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = lbdef; FStar_Syntax_Syntax.lbattrs = - (uu___317_12615.FStar_Syntax_Syntax.lbattrs); + (uu___316_12615.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___317_12615.FStar_Syntax_Syntax.lbpos) + (uu___316_12615.FStar_Syntax_Syntax.lbpos) })) in let uu____12616 = @@ -4084,12 +4084,12 @@ let rec (norm : let uu____12896 = FStar_List.hd bs in FStar_Pervasives_Native.fst uu____12896 in FStar_Util.Inl - (let uu___318_12912 = x in + (let uu___317_12912 = x in { FStar_Syntax_Syntax.ppname = - (uu___318_12912.FStar_Syntax_Syntax.ppname); + (uu___317_12912.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___318_12912.FStar_Syntax_Syntax.index); + (uu___317_12912.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = ty }) in @@ -4098,22 +4098,22 @@ let rec (norm : FStar_Util.print_string "+++ Normalizing Tm_let -- definiens\n"); (let lb1 = - let uu___319_12918 = lb in + let uu___318_12918 = lb in let uu____12919 = norm cfg env [] lb.FStar_Syntax_Syntax.lbdef in { FStar_Syntax_Syntax.lbname = lbname; FStar_Syntax_Syntax.lbunivs = - (uu___319_12918.FStar_Syntax_Syntax.lbunivs); + (uu___318_12918.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = ty; FStar_Syntax_Syntax.lbeff = - (uu___319_12918.FStar_Syntax_Syntax.lbeff); + (uu___318_12918.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = uu____12919; FStar_Syntax_Syntax.lbattrs = - (uu___319_12918.FStar_Syntax_Syntax.lbattrs); + (uu___318_12918.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___319_12918.FStar_Syntax_Syntax.lbpos) + (uu___318_12918.FStar_Syntax_Syntax.lbpos) } in let env' = FStar_All.pipe_right bs @@ -4123,25 +4123,25 @@ let rec (norm : in let stack1 = (Cfg cfg) :: stack in let cfg1 = - let uu___320_12973 = cfg in + let uu___319_12973 = cfg in { FStar_TypeChecker_Cfg.steps = - (uu___320_12973.FStar_TypeChecker_Cfg.steps); + (uu___319_12973.FStar_TypeChecker_Cfg.steps); FStar_TypeChecker_Cfg.tcenv = - (uu___320_12973.FStar_TypeChecker_Cfg.tcenv); + (uu___319_12973.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___320_12973.FStar_TypeChecker_Cfg.debug); + (uu___319_12973.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___320_12973.FStar_TypeChecker_Cfg.delta_level); + (uu___319_12973.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___320_12973.FStar_TypeChecker_Cfg.primitive_steps); + (uu___319_12973.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = true; FStar_TypeChecker_Cfg.memoize_lazy = - (uu___320_12973.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___319_12973.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___320_12973.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___319_12973.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___320_12973.FStar_TypeChecker_Cfg.reifying) + (uu___319_12973.FStar_TypeChecker_Cfg.reifying) } in FStar_TypeChecker_Cfg.log cfg1 (fun uu____12977 -> @@ -4169,15 +4169,15 @@ let rec (norm : norm cfg env [] lb.FStar_Syntax_Syntax.lbtyp in let lbname = let uu____13034 = - let uu___321_13035 = + let uu___320_13035 = FStar_Util.left lb.FStar_Syntax_Syntax.lbname in { FStar_Syntax_Syntax.ppname = - (uu___321_13035.FStar_Syntax_Syntax.ppname); + (uu___320_13035.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___321_13035.FStar_Syntax_Syntax.index); + (uu___320_13035.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = ty } in FStar_Util.Inl uu____13034 in @@ -4206,7 +4206,7 @@ let rec (norm : match lopt with | FStar_Pervasives_Native.Some rc -> let uu____13136 = - let uu___322_13137 = rc in + let uu___321_13137 = rc in let uu____13138 = FStar_Util.map_opt rc.FStar_Syntax_Syntax.residual_typ @@ -4215,30 +4215,30 @@ let rec (norm : { FStar_Syntax_Syntax.residual_effect = - (uu___322_13137.FStar_Syntax_Syntax.residual_effect); + (uu___321_13137.FStar_Syntax_Syntax.residual_effect); FStar_Syntax_Syntax.residual_typ = uu____13138; FStar_Syntax_Syntax.residual_flags = - (uu___322_13137.FStar_Syntax_Syntax.residual_flags) + (uu___321_13137.FStar_Syntax_Syntax.residual_flags) } in FStar_Pervasives_Native.Some uu____13136 | uu____13147 -> lopt in let def = FStar_Syntax_Util.abs xs1 def_body1 lopt1 in - let uu___323_13153 = lb in + let uu___322_13153 = lb in { FStar_Syntax_Syntax.lbname = lbname; FStar_Syntax_Syntax.lbunivs = - (uu___323_13153.FStar_Syntax_Syntax.lbunivs); + (uu___322_13153.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = ty; FStar_Syntax_Syntax.lbeff = - (uu___323_13153.FStar_Syntax_Syntax.lbeff); + (uu___322_13153.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = def; FStar_Syntax_Syntax.lbattrs = - (uu___323_13153.FStar_Syntax_Syntax.lbattrs); + (uu___322_13153.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___323_13153.FStar_Syntax_Syntax.lbpos) + (uu___322_13153.FStar_Syntax_Syntax.lbpos) }) lbs1 in let env' = @@ -4251,15 +4251,15 @@ let rec (norm : (match uu____13187 with | (lbs3,body3) -> let t2 = - let uu___324_13203 = t1 in + let uu___323_13203 = t1 in { FStar_Syntax_Syntax.n = (FStar_Syntax_Syntax.Tm_let ((true, lbs3), body3)); FStar_Syntax_Syntax.pos = - (uu___324_13203.FStar_Syntax_Syntax.pos); + (uu___323_13203.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___324_13203.FStar_Syntax_Syntax.vars) + (uu___323_13203.FStar_Syntax_Syntax.vars) } in rebuild cfg env stack t2)) | FStar_Syntax_Syntax.Tm_let (lbs,body) when @@ -4276,15 +4276,15 @@ let rec (norm : match uu____13336 with | (rec_env,memos,i) -> let bv = - let uu___325_13461 = + let uu___324_13461 = FStar_Util.left lb.FStar_Syntax_Syntax.lbname in { FStar_Syntax_Syntax.ppname = - (uu___325_13461.FStar_Syntax_Syntax.ppname); + (uu___324_13461.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = i; FStar_Syntax_Syntax.sort = - (uu___325_13461.FStar_Syntax_Syntax.sort) + (uu___324_13461.FStar_Syntax_Syntax.sort) } in let f_i = FStar_Syntax_Syntax.bv_to_tm bv in let fix_f_i = @@ -4540,7 +4540,7 @@ and (reduce_impure_comp : FStar_TypeChecker_Env.EraseUniverses; FStar_TypeChecker_Env.Exclude FStar_TypeChecker_Env.Zeta; FStar_TypeChecker_Env.Inlining] in - let uu___326_14521 = cfg in + let uu___325_14521 = cfg in let uu____14522 = FStar_List.fold_right FStar_TypeChecker_Cfg.fstep_add_one new_steps cfg.FStar_TypeChecker_Cfg.steps @@ -4548,22 +4548,22 @@ and (reduce_impure_comp : { FStar_TypeChecker_Cfg.steps = uu____14522; FStar_TypeChecker_Cfg.tcenv = - (uu___326_14521.FStar_TypeChecker_Cfg.tcenv); + (uu___325_14521.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___326_14521.FStar_TypeChecker_Cfg.debug); + (uu___325_14521.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = [FStar_TypeChecker_Env.InliningDelta; FStar_TypeChecker_Env.Eager_unfolding_only]; FStar_TypeChecker_Cfg.primitive_steps = - (uu___326_14521.FStar_TypeChecker_Cfg.primitive_steps); + (uu___325_14521.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___326_14521.FStar_TypeChecker_Cfg.strong); + (uu___325_14521.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___326_14521.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___325_14521.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___326_14521.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___325_14521.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___326_14521.FStar_TypeChecker_Cfg.reifying) + (uu___325_14521.FStar_TypeChecker_Cfg.reifying) } else cfg in let metadata = @@ -4679,21 +4679,21 @@ and (do_reify_monadic : (match uu____14667 with | FStar_Pervasives_Native.Some e -> let lb1 = - let uu___327_14672 = lb in + let uu___326_14672 = lb in { FStar_Syntax_Syntax.lbname = - (uu___327_14672.FStar_Syntax_Syntax.lbname); + (uu___326_14672.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___327_14672.FStar_Syntax_Syntax.lbunivs); + (uu___326_14672.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = - (uu___327_14672.FStar_Syntax_Syntax.lbtyp); + (uu___326_14672.FStar_Syntax_Syntax.lbtyp); FStar_Syntax_Syntax.lbeff = FStar_Parser_Const.effect_PURE_lid; FStar_Syntax_Syntax.lbdef = e; FStar_Syntax_Syntax.lbattrs = - (uu___327_14672.FStar_Syntax_Syntax.lbattrs); + (uu___326_14672.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___327_14672.FStar_Syntax_Syntax.lbpos) + (uu___326_14672.FStar_Syntax_Syntax.lbpos) } in let uu____14673 = FStar_List.tl stack in @@ -5272,14 +5272,14 @@ and (norm_comp : | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None in - let uu___328_16080 = comp in + let uu___327_16080 = comp in { FStar_Syntax_Syntax.n = (FStar_Syntax_Syntax.Total (t1, uopt1)); FStar_Syntax_Syntax.pos = - (uu___328_16080.FStar_Syntax_Syntax.pos); + (uu___327_16080.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___328_16080.FStar_Syntax_Syntax.vars) + (uu___327_16080.FStar_Syntax_Syntax.vars) } | FStar_Syntax_Syntax.GTotal (t,uopt) -> let t1 = norm cfg env [] t in @@ -5293,14 +5293,14 @@ and (norm_comp : | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None in - let uu___329_16105 = comp in + let uu___328_16105 = comp in { FStar_Syntax_Syntax.n = (FStar_Syntax_Syntax.GTotal (t1, uopt1)); FStar_Syntax_Syntax.pos = - (uu___329_16105.FStar_Syntax_Syntax.pos); + (uu___328_16105.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___329_16105.FStar_Syntax_Syntax.vars) + (uu___328_16105.FStar_Syntax_Syntax.vars) } | FStar_Syntax_Syntax.Comp ct -> let norm_args = @@ -5317,8 +5317,8 @@ and (norm_comp : let flags1 = FStar_All.pipe_right ct.FStar_Syntax_Syntax.flags (FStar_List.map - (fun uu___273_16192 -> - match uu___273_16192 with + (fun uu___272_16192 -> + match uu___272_16192 with | FStar_Syntax_Syntax.DECREASES t -> let uu____16196 = norm cfg env [] t in FStar_Syntax_Syntax.DECREASES uu____16196 @@ -5330,23 +5330,23 @@ and (norm_comp : in let result_typ = norm cfg env [] ct.FStar_Syntax_Syntax.result_typ in - let uu___330_16204 = comp in + let uu___329_16204 = comp in { FStar_Syntax_Syntax.n = (FStar_Syntax_Syntax.Comp - (let uu___331_16207 = ct in + (let uu___330_16207 = ct in { FStar_Syntax_Syntax.comp_univs = comp_univs; FStar_Syntax_Syntax.effect_name = - (uu___331_16207.FStar_Syntax_Syntax.effect_name); + (uu___330_16207.FStar_Syntax_Syntax.effect_name); FStar_Syntax_Syntax.result_typ = result_typ; FStar_Syntax_Syntax.effect_args = effect_args; FStar_Syntax_Syntax.flags = flags1 })); FStar_Syntax_Syntax.pos = - (uu___330_16204.FStar_Syntax_Syntax.pos); + (uu___329_16204.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___330_16204.FStar_Syntax_Syntax.vars) + (uu___329_16204.FStar_Syntax_Syntax.vars) }) and (norm_binder : @@ -5360,14 +5360,14 @@ and (norm_binder : match uu____16211 with | (x,imp) -> let x1 = - let uu___332_16219 = x in + let uu___331_16219 = x in let uu____16220 = norm cfg env [] x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___332_16219.FStar_Syntax_Syntax.ppname); + (uu___331_16219.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___332_16219.FStar_Syntax_Syntax.index); + (uu___331_16219.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____16220 } in let imp1 = @@ -5413,17 +5413,17 @@ and (norm_lcomp_opt : filter_out_lcomp_cflags rc.FStar_Syntax_Syntax.residual_flags in let uu____16389 = - let uu___333_16390 = rc in + let uu___332_16390 = rc in let uu____16391 = FStar_Util.map_opt rc.FStar_Syntax_Syntax.residual_typ (norm cfg env []) in { FStar_Syntax_Syntax.residual_effect = - (uu___333_16390.FStar_Syntax_Syntax.residual_effect); + (uu___332_16390.FStar_Syntax_Syntax.residual_effect); FStar_Syntax_Syntax.residual_typ = uu____16391; FStar_Syntax_Syntax.residual_flags = - (uu___333_16390.FStar_Syntax_Syntax.residual_flags) + (uu___332_16390.FStar_Syntax_Syntax.residual_flags) } in FStar_Pervasives_Native.Some uu____16389 | uu____16400 -> lopt @@ -5452,8 +5452,8 @@ and (maybe_simplify : and (norm_cb : FStar_TypeChecker_Cfg.cfg -> FStar_Syntax_Embeddings.norm_cb) = fun cfg -> - fun uu___274_16424 -> - match uu___274_16424 with + fun uu___273_16424 -> + match uu___273_16424 with | FStar_Util.Inr x -> norm cfg [] [] x | FStar_Util.Inl l -> let uu____16437 = @@ -5489,13 +5489,13 @@ and (maybe_simplify_aux : then tm1 else (let w t = - let uu___334_16475 = t in + let uu___333_16475 = t in { FStar_Syntax_Syntax.n = - (uu___334_16475.FStar_Syntax_Syntax.n); + (uu___333_16475.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = (tm1.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___334_16475.FStar_Syntax_Syntax.vars) + (uu___333_16475.FStar_Syntax_Syntax.vars) } in let simp_t t = let uu____16487 = @@ -6854,14 +6854,14 @@ and (rebuild : let bs1 = norm_binders cfg env' bs in let lopt1 = norm_lcomp_opt cfg env'' lopt in let uu____23476 = - let uu___335_23477 = FStar_Syntax_Util.abs bs1 t1 lopt1 + let uu___334_23477 = FStar_Syntax_Util.abs bs1 t1 lopt1 in { FStar_Syntax_Syntax.n = - (uu___335_23477.FStar_Syntax_Syntax.n); + (uu___334_23477.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = r; FStar_Syntax_Syntax.vars = - (uu___335_23477.FStar_Syntax_Syntax.vars) + (uu___334_23477.FStar_Syntax_Syntax.vars) } in rebuild cfg env stack1 uu____23476 | (Arg (Univ uu____23480,uu____23481,uu____23482))::uu____23483 @@ -7065,8 +7065,8 @@ and (rebuild : FStar_All.pipe_right cfg1.FStar_TypeChecker_Cfg.delta_level (FStar_List.filter - (fun uu___275_24182 -> - match uu___275_24182 with + (fun uu___274_24182 -> + match uu___274_24182 with | FStar_TypeChecker_Env.InliningDelta -> true | FStar_TypeChecker_Env.Eager_unfolding_only @@ -7074,78 +7074,78 @@ and (rebuild : | uu____24186 -> false)) in let steps = - let uu___336_24189 = + let uu___335_24189 = cfg1.FStar_TypeChecker_Cfg.steps in { FStar_TypeChecker_Cfg.beta = - (uu___336_24189.FStar_TypeChecker_Cfg.beta); + (uu___335_24189.FStar_TypeChecker_Cfg.beta); FStar_TypeChecker_Cfg.iota = - (uu___336_24189.FStar_TypeChecker_Cfg.iota); + (uu___335_24189.FStar_TypeChecker_Cfg.iota); FStar_TypeChecker_Cfg.zeta = false; FStar_TypeChecker_Cfg.weak = - (uu___336_24189.FStar_TypeChecker_Cfg.weak); + (uu___335_24189.FStar_TypeChecker_Cfg.weak); FStar_TypeChecker_Cfg.hnf = - (uu___336_24189.FStar_TypeChecker_Cfg.hnf); + (uu___335_24189.FStar_TypeChecker_Cfg.hnf); FStar_TypeChecker_Cfg.primops = - (uu___336_24189.FStar_TypeChecker_Cfg.primops); + (uu___335_24189.FStar_TypeChecker_Cfg.primops); FStar_TypeChecker_Cfg.do_not_unfold_pure_lets = - (uu___336_24189.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); + (uu___335_24189.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); FStar_TypeChecker_Cfg.unfold_until = FStar_Pervasives_Native.None; FStar_TypeChecker_Cfg.unfold_only = FStar_Pervasives_Native.None; FStar_TypeChecker_Cfg.unfold_fully = - (uu___336_24189.FStar_TypeChecker_Cfg.unfold_fully); + (uu___335_24189.FStar_TypeChecker_Cfg.unfold_fully); FStar_TypeChecker_Cfg.unfold_attr = FStar_Pervasives_Native.None; FStar_TypeChecker_Cfg.unfold_tac = false; FStar_TypeChecker_Cfg.pure_subterms_within_computations = - (uu___336_24189.FStar_TypeChecker_Cfg.pure_subterms_within_computations); + (uu___335_24189.FStar_TypeChecker_Cfg.pure_subterms_within_computations); FStar_TypeChecker_Cfg.simplify = - (uu___336_24189.FStar_TypeChecker_Cfg.simplify); + (uu___335_24189.FStar_TypeChecker_Cfg.simplify); FStar_TypeChecker_Cfg.erase_universes = - (uu___336_24189.FStar_TypeChecker_Cfg.erase_universes); + (uu___335_24189.FStar_TypeChecker_Cfg.erase_universes); FStar_TypeChecker_Cfg.allow_unbound_universes = - (uu___336_24189.FStar_TypeChecker_Cfg.allow_unbound_universes); + (uu___335_24189.FStar_TypeChecker_Cfg.allow_unbound_universes); FStar_TypeChecker_Cfg.reify_ = - (uu___336_24189.FStar_TypeChecker_Cfg.reify_); + (uu___335_24189.FStar_TypeChecker_Cfg.reify_); FStar_TypeChecker_Cfg.compress_uvars = - (uu___336_24189.FStar_TypeChecker_Cfg.compress_uvars); + (uu___335_24189.FStar_TypeChecker_Cfg.compress_uvars); FStar_TypeChecker_Cfg.no_full_norm = - (uu___336_24189.FStar_TypeChecker_Cfg.no_full_norm); + (uu___335_24189.FStar_TypeChecker_Cfg.no_full_norm); FStar_TypeChecker_Cfg.check_no_uvars = - (uu___336_24189.FStar_TypeChecker_Cfg.check_no_uvars); + (uu___335_24189.FStar_TypeChecker_Cfg.check_no_uvars); FStar_TypeChecker_Cfg.unmeta = - (uu___336_24189.FStar_TypeChecker_Cfg.unmeta); + (uu___335_24189.FStar_TypeChecker_Cfg.unmeta); FStar_TypeChecker_Cfg.unascribe = - (uu___336_24189.FStar_TypeChecker_Cfg.unascribe); + (uu___335_24189.FStar_TypeChecker_Cfg.unascribe); FStar_TypeChecker_Cfg.in_full_norm_request = - (uu___336_24189.FStar_TypeChecker_Cfg.in_full_norm_request); + (uu___335_24189.FStar_TypeChecker_Cfg.in_full_norm_request); FStar_TypeChecker_Cfg.weakly_reduce_scrutinee = - (uu___336_24189.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); + (uu___335_24189.FStar_TypeChecker_Cfg.weakly_reduce_scrutinee); FStar_TypeChecker_Cfg.nbe_step = - (uu___336_24189.FStar_TypeChecker_Cfg.nbe_step); + (uu___335_24189.FStar_TypeChecker_Cfg.nbe_step); FStar_TypeChecker_Cfg.for_extraction = - (uu___336_24189.FStar_TypeChecker_Cfg.for_extraction) + (uu___335_24189.FStar_TypeChecker_Cfg.for_extraction) } in - let uu___337_24196 = cfg1 in + let uu___336_24196 = cfg1 in { FStar_TypeChecker_Cfg.steps = steps; FStar_TypeChecker_Cfg.tcenv = - (uu___337_24196.FStar_TypeChecker_Cfg.tcenv); + (uu___336_24196.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___337_24196.FStar_TypeChecker_Cfg.debug); + (uu___336_24196.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = new_delta; FStar_TypeChecker_Cfg.primitive_steps = - (uu___337_24196.FStar_TypeChecker_Cfg.primitive_steps); + (uu___336_24196.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = true; FStar_TypeChecker_Cfg.memoize_lazy = - (uu___337_24196.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___336_24196.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___337_24196.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___336_24196.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___337_24196.FStar_TypeChecker_Cfg.reifying) + (uu___336_24196.FStar_TypeChecker_Cfg.reifying) } in let norm_or_whnf env2 t2 = if whnf @@ -7173,74 +7173,74 @@ and (rebuild : in (match uu____24302 with | (pats1,env3) -> - ((let uu___338_24712 = p in + ((let uu___337_24712 = p in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_cons (fv, (FStar_List.rev pats1))); FStar_Syntax_Syntax.p = - (uu___338_24712.FStar_Syntax_Syntax.p) + (uu___337_24712.FStar_Syntax_Syntax.p) }), env3)) | FStar_Syntax_Syntax.Pat_var x -> let x1 = - let uu___339_24733 = x in + let uu___338_24733 = x in let uu____24734 = norm_or_whnf env2 x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___339_24733.FStar_Syntax_Syntax.ppname); + (uu___338_24733.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___339_24733.FStar_Syntax_Syntax.index); + (uu___338_24733.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____24734 } in - ((let uu___340_24748 = p in + ((let uu___339_24748 = p in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_var x1); FStar_Syntax_Syntax.p = - (uu___340_24748.FStar_Syntax_Syntax.p) + (uu___339_24748.FStar_Syntax_Syntax.p) }), (dummy :: env2)) | FStar_Syntax_Syntax.Pat_wild x -> let x1 = - let uu___341_24759 = x in + let uu___340_24759 = x in let uu____24760 = norm_or_whnf env2 x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___341_24759.FStar_Syntax_Syntax.ppname); + (uu___340_24759.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___341_24759.FStar_Syntax_Syntax.index); + (uu___340_24759.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____24760 } in - ((let uu___342_24774 = p in + ((let uu___341_24774 = p in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_wild x1); FStar_Syntax_Syntax.p = - (uu___342_24774.FStar_Syntax_Syntax.p) + (uu___341_24774.FStar_Syntax_Syntax.p) }), (dummy :: env2)) | FStar_Syntax_Syntax.Pat_dot_term (x,t2) -> let x1 = - let uu___343_24790 = x in + let uu___342_24790 = x in let uu____24791 = norm_or_whnf env2 x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___343_24790.FStar_Syntax_Syntax.ppname); + (uu___342_24790.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___343_24790.FStar_Syntax_Syntax.index); + (uu___342_24790.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____24791 } in let t3 = norm_or_whnf env2 t2 in - ((let uu___344_24806 = p in + ((let uu___343_24806 = p in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_dot_term (x1, t3)); FStar_Syntax_Syntax.p = - (uu___344_24806.FStar_Syntax_Syntax.p) + (uu___343_24806.FStar_Syntax_Syntax.p) }), env2) in let branches1 = @@ -7292,85 +7292,85 @@ and (rebuild : if uu____24972 then norm - (let uu___345_24979 = cfg1 in + (let uu___344_24979 = cfg1 in { FStar_TypeChecker_Cfg.steps = - (let uu___346_24982 = + (let uu___345_24982 = cfg1.FStar_TypeChecker_Cfg.steps in { FStar_TypeChecker_Cfg.beta = - (uu___346_24982.FStar_TypeChecker_Cfg.beta); + (uu___345_24982.FStar_TypeChecker_Cfg.beta); FStar_TypeChecker_Cfg.iota = - (uu___346_24982.FStar_TypeChecker_Cfg.iota); + (uu___345_24982.FStar_TypeChecker_Cfg.iota); FStar_TypeChecker_Cfg.zeta = - (uu___346_24982.FStar_TypeChecker_Cfg.zeta); + (uu___345_24982.FStar_TypeChecker_Cfg.zeta); FStar_TypeChecker_Cfg.weak = - (uu___346_24982.FStar_TypeChecker_Cfg.weak); + (uu___345_24982.FStar_TypeChecker_Cfg.weak); FStar_TypeChecker_Cfg.hnf = - (uu___346_24982.FStar_TypeChecker_Cfg.hnf); + (uu___345_24982.FStar_TypeChecker_Cfg.hnf); FStar_TypeChecker_Cfg.primops = - (uu___346_24982.FStar_TypeChecker_Cfg.primops); + (uu___345_24982.FStar_TypeChecker_Cfg.primops); FStar_TypeChecker_Cfg.do_not_unfold_pure_lets = - (uu___346_24982.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); + (uu___345_24982.FStar_TypeChecker_Cfg.do_not_unfold_pure_lets); FStar_TypeChecker_Cfg.unfold_until = - (uu___346_24982.FStar_TypeChecker_Cfg.unfold_until); + (uu___345_24982.FStar_TypeChecker_Cfg.unfold_until); FStar_TypeChecker_Cfg.unfold_only = - (uu___346_24982.FStar_TypeChecker_Cfg.unfold_only); + (uu___345_24982.FStar_TypeChecker_Cfg.unfold_only); FStar_TypeChecker_Cfg.unfold_fully = - (uu___346_24982.FStar_TypeChecker_Cfg.unfold_fully); + (uu___345_24982.FStar_TypeChecker_Cfg.unfold_fully); FStar_TypeChecker_Cfg.unfold_attr = - (uu___346_24982.FStar_TypeChecker_Cfg.unfold_attr); + (uu___345_24982.FStar_TypeChecker_Cfg.unfold_attr); FStar_TypeChecker_Cfg.unfold_tac = - (uu___346_24982.FStar_TypeChecker_Cfg.unfold_tac); + (uu___345_24982.FStar_TypeChecker_Cfg.unfold_tac); FStar_TypeChecker_Cfg.pure_subterms_within_computations = - (uu___346_24982.FStar_TypeChecker_Cfg.pure_subterms_within_computations); + (uu___345_24982.FStar_TypeChecker_Cfg.pure_subterms_within_computations); FStar_TypeChecker_Cfg.simplify = - (uu___346_24982.FStar_TypeChecker_Cfg.simplify); + (uu___345_24982.FStar_TypeChecker_Cfg.simplify); FStar_TypeChecker_Cfg.erase_universes = - (uu___346_24982.FStar_TypeChecker_Cfg.erase_universes); + (uu___345_24982.FStar_TypeChecker_Cfg.erase_universes); FStar_TypeChecker_Cfg.allow_unbound_universes = - (uu___346_24982.FStar_TypeChecker_Cfg.allow_unbound_universes); + (uu___345_24982.FStar_TypeChecker_Cfg.allow_unbound_universes); FStar_TypeChecker_Cfg.reify_ = - (uu___346_24982.FStar_TypeChecker_Cfg.reify_); + (uu___345_24982.FStar_TypeChecker_Cfg.reify_); FStar_TypeChecker_Cfg.compress_uvars = - (uu___346_24982.FStar_TypeChecker_Cfg.compress_uvars); + (uu___345_24982.FStar_TypeChecker_Cfg.compress_uvars); FStar_TypeChecker_Cfg.no_full_norm = - (uu___346_24982.FStar_TypeChecker_Cfg.no_full_norm); + (uu___345_24982.FStar_TypeChecker_Cfg.no_full_norm); FStar_TypeChecker_Cfg.check_no_uvars = - (uu___346_24982.FStar_TypeChecker_Cfg.check_no_uvars); + (uu___345_24982.FStar_TypeChecker_Cfg.check_no_uvars); FStar_TypeChecker_Cfg.unmeta = - (uu___346_24982.FStar_TypeChecker_Cfg.unmeta); + (uu___345_24982.FStar_TypeChecker_Cfg.unmeta); FStar_TypeChecker_Cfg.unascribe = - (uu___346_24982.FStar_TypeChecker_Cfg.unascribe); + (uu___345_24982.FStar_TypeChecker_Cfg.unascribe); FStar_TypeChecker_Cfg.in_full_norm_request = - (uu___346_24982.FStar_TypeChecker_Cfg.in_full_norm_request); + (uu___345_24982.FStar_TypeChecker_Cfg.in_full_norm_request); FStar_TypeChecker_Cfg.weakly_reduce_scrutinee = false; FStar_TypeChecker_Cfg.nbe_step = - (uu___346_24982.FStar_TypeChecker_Cfg.nbe_step); + (uu___345_24982.FStar_TypeChecker_Cfg.nbe_step); FStar_TypeChecker_Cfg.for_extraction = - (uu___346_24982.FStar_TypeChecker_Cfg.for_extraction) + (uu___345_24982.FStar_TypeChecker_Cfg.for_extraction) }); FStar_TypeChecker_Cfg.tcenv = - (uu___345_24979.FStar_TypeChecker_Cfg.tcenv); + (uu___344_24979.FStar_TypeChecker_Cfg.tcenv); FStar_TypeChecker_Cfg.debug = - (uu___345_24979.FStar_TypeChecker_Cfg.debug); + (uu___344_24979.FStar_TypeChecker_Cfg.debug); FStar_TypeChecker_Cfg.delta_level = - (uu___345_24979.FStar_TypeChecker_Cfg.delta_level); + (uu___344_24979.FStar_TypeChecker_Cfg.delta_level); FStar_TypeChecker_Cfg.primitive_steps = - (uu___345_24979.FStar_TypeChecker_Cfg.primitive_steps); + (uu___344_24979.FStar_TypeChecker_Cfg.primitive_steps); FStar_TypeChecker_Cfg.strong = - (uu___345_24979.FStar_TypeChecker_Cfg.strong); + (uu___344_24979.FStar_TypeChecker_Cfg.strong); FStar_TypeChecker_Cfg.memoize_lazy = - (uu___345_24979.FStar_TypeChecker_Cfg.memoize_lazy); + (uu___344_24979.FStar_TypeChecker_Cfg.memoize_lazy); FStar_TypeChecker_Cfg.normalize_pure_lets = - (uu___345_24979.FStar_TypeChecker_Cfg.normalize_pure_lets); + (uu___344_24979.FStar_TypeChecker_Cfg.normalize_pure_lets); FStar_TypeChecker_Cfg.reifying = - (uu___345_24979.FStar_TypeChecker_Cfg.reifying) + (uu___344_24979.FStar_TypeChecker_Cfg.reifying) }) scrutinee_env [] scrutinee else scrutinee in let uu____24986 = @@ -7639,13 +7639,13 @@ let (ghost_to_pure : match c.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Total uu____26192 -> c | FStar_Syntax_Syntax.GTotal (t,uopt) when non_info t -> - let uu___347_26211 = c in + let uu___346_26211 = c in { FStar_Syntax_Syntax.n = (FStar_Syntax_Syntax.Total (t, uopt)); FStar_Syntax_Syntax.pos = - (uu___347_26211.FStar_Syntax_Syntax.pos); + (uu___346_26211.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___347_26211.FStar_Syntax_Syntax.vars) + (uu___346_26211.FStar_Syntax_Syntax.vars) } | FStar_Syntax_Syntax.Comp ct -> let l = @@ -7675,15 +7675,15 @@ let (ghost_to_pure : then FStar_Syntax_Syntax.TOTAL :: (ct.FStar_Syntax_Syntax.flags) else ct.FStar_Syntax_Syntax.flags in - let uu___348_26236 = ct in + let uu___347_26236 = ct in { FStar_Syntax_Syntax.comp_univs = - (uu___348_26236.FStar_Syntax_Syntax.comp_univs); + (uu___347_26236.FStar_Syntax_Syntax.comp_univs); FStar_Syntax_Syntax.effect_name = pure_eff; FStar_Syntax_Syntax.result_typ = - (uu___348_26236.FStar_Syntax_Syntax.result_typ); + (uu___347_26236.FStar_Syntax_Syntax.result_typ); FStar_Syntax_Syntax.effect_args = - (uu___348_26236.FStar_Syntax_Syntax.effect_args); + (uu___347_26236.FStar_Syntax_Syntax.effect_args); FStar_Syntax_Syntax.flags = flags1 } | FStar_Pervasives_Native.None -> @@ -7691,27 +7691,27 @@ let (ghost_to_pure : FStar_TypeChecker_Env.unfold_effect_abbrev cfg.FStar_TypeChecker_Cfg.tcenv c in - let uu___349_26238 = ct1 in + let uu___348_26238 = ct1 in { FStar_Syntax_Syntax.comp_univs = - (uu___349_26238.FStar_Syntax_Syntax.comp_univs); + (uu___348_26238.FStar_Syntax_Syntax.comp_univs); FStar_Syntax_Syntax.effect_name = FStar_Parser_Const.effect_PURE_lid; FStar_Syntax_Syntax.result_typ = - (uu___349_26238.FStar_Syntax_Syntax.result_typ); + (uu___348_26238.FStar_Syntax_Syntax.result_typ); FStar_Syntax_Syntax.effect_args = - (uu___349_26238.FStar_Syntax_Syntax.effect_args); + (uu___348_26238.FStar_Syntax_Syntax.effect_args); FStar_Syntax_Syntax.flags = - (uu___349_26238.FStar_Syntax_Syntax.flags) + (uu___348_26238.FStar_Syntax_Syntax.flags) } in - let uu___350_26239 = c in + let uu___349_26239 = c in { FStar_Syntax_Syntax.n = (FStar_Syntax_Syntax.Comp ct1); FStar_Syntax_Syntax.pos = - (uu___350_26239.FStar_Syntax_Syntax.pos); + (uu___349_26239.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___350_26239.FStar_Syntax_Syntax.vars) + (uu___349_26239.FStar_Syntax_Syntax.vars) } else c | uu____26242 -> c @@ -7757,16 +7757,16 @@ let (term_to_string : fun t -> let t1 = try - (fun uu___352_26296 -> + (fun uu___351_26296 -> match () with | () -> normalize [FStar_TypeChecker_Env.AllowUnboundUniverses] env t) () with - | uu___351_26299 -> + | uu___350_26299 -> ((let uu____26301 = let uu____26307 = - let uu____26309 = FStar_Util.message_of_exn uu___351_26299 + let uu____26309 = FStar_Util.message_of_exn uu___350_26299 in FStar_Util.format1 "Normalization failed with error %s\n" uu____26309 @@ -7783,7 +7783,7 @@ let (comp_to_string : fun c -> let c1 = try - (fun uu___354_26328 -> + (fun uu___353_26328 -> match () with | () -> let uu____26329 = @@ -7792,10 +7792,10 @@ let (comp_to_string : in norm_comp uu____26329 [] c) () with - | uu___353_26338 -> + | uu___352_26338 -> ((let uu____26340 = let uu____26346 = - let uu____26348 = FStar_Util.message_of_exn uu___353_26338 + let uu____26348 = FStar_Util.message_of_exn uu___352_26338 in FStar_Util.format1 "Normalization failed with error %s\n" uu____26348 @@ -7951,94 +7951,94 @@ let (eta_expand : else (let uu____26729 = env.FStar_TypeChecker_Env.type_of - (let uu___355_26737 = env in + (let uu___354_26737 = env in { FStar_TypeChecker_Env.solver = - (uu___355_26737.FStar_TypeChecker_Env.solver); + (uu___354_26737.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___355_26737.FStar_TypeChecker_Env.range); + (uu___354_26737.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___355_26737.FStar_TypeChecker_Env.curmodule); + (uu___354_26737.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___355_26737.FStar_TypeChecker_Env.gamma); + (uu___354_26737.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___355_26737.FStar_TypeChecker_Env.gamma_sig); + (uu___354_26737.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___355_26737.FStar_TypeChecker_Env.gamma_cache); + (uu___354_26737.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___355_26737.FStar_TypeChecker_Env.modules); + (uu___354_26737.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = FStar_Pervasives_Native.None; FStar_TypeChecker_Env.sigtab = - (uu___355_26737.FStar_TypeChecker_Env.sigtab); + (uu___354_26737.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___355_26737.FStar_TypeChecker_Env.attrtab); + (uu___354_26737.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___355_26737.FStar_TypeChecker_Env.is_pattern); + (uu___354_26737.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___355_26737.FStar_TypeChecker_Env.instantiate_imp); + (uu___354_26737.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___355_26737.FStar_TypeChecker_Env.effects); + (uu___354_26737.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___355_26737.FStar_TypeChecker_Env.generalize); + (uu___354_26737.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___355_26737.FStar_TypeChecker_Env.letrecs); + (uu___354_26737.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___355_26737.FStar_TypeChecker_Env.top_level); + (uu___354_26737.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___355_26737.FStar_TypeChecker_Env.check_uvars); + (uu___354_26737.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___355_26737.FStar_TypeChecker_Env.use_eq); + (uu___354_26737.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___355_26737.FStar_TypeChecker_Env.is_iface); + (uu___354_26737.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___355_26737.FStar_TypeChecker_Env.admit); + (uu___354_26737.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___355_26737.FStar_TypeChecker_Env.lax_universes); + (uu___354_26737.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___355_26737.FStar_TypeChecker_Env.phase1); + (uu___354_26737.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___355_26737.FStar_TypeChecker_Env.failhard); + (uu___354_26737.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___355_26737.FStar_TypeChecker_Env.nosynth); + (uu___354_26737.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___355_26737.FStar_TypeChecker_Env.uvar_subtyping); + (uu___354_26737.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___355_26737.FStar_TypeChecker_Env.tc_term); + (uu___354_26737.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___355_26737.FStar_TypeChecker_Env.type_of); + (uu___354_26737.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___355_26737.FStar_TypeChecker_Env.universe_of); + (uu___354_26737.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___355_26737.FStar_TypeChecker_Env.check_type_of); + (uu___354_26737.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = true; FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___355_26737.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___354_26737.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___355_26737.FStar_TypeChecker_Env.normalized_eff_names); + (uu___354_26737.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___355_26737.FStar_TypeChecker_Env.fv_delta_depths); + (uu___354_26737.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___355_26737.FStar_TypeChecker_Env.proof_ns); + (uu___354_26737.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___355_26737.FStar_TypeChecker_Env.synth_hook); + (uu___354_26737.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___355_26737.FStar_TypeChecker_Env.splice); + (uu___354_26737.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___355_26737.FStar_TypeChecker_Env.postprocess); + (uu___354_26737.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___355_26737.FStar_TypeChecker_Env.is_native_tactic); + (uu___354_26737.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___355_26737.FStar_TypeChecker_Env.identifier_info); + (uu___354_26737.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___355_26737.FStar_TypeChecker_Env.tc_hooks); + (uu___354_26737.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___355_26737.FStar_TypeChecker_Env.dsenv); + (uu___354_26737.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___355_26737.FStar_TypeChecker_Env.nbe) + (uu___354_26737.FStar_TypeChecker_Env.nbe) }) t in match uu____26729 with @@ -8047,92 +8047,92 @@ let (eta_expand : | uu____26743 -> let uu____26744 = env.FStar_TypeChecker_Env.type_of - (let uu___356_26752 = env in + (let uu___355_26752 = env in { FStar_TypeChecker_Env.solver = - (uu___356_26752.FStar_TypeChecker_Env.solver); + (uu___355_26752.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___356_26752.FStar_TypeChecker_Env.range); + (uu___355_26752.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___356_26752.FStar_TypeChecker_Env.curmodule); + (uu___355_26752.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___356_26752.FStar_TypeChecker_Env.gamma); + (uu___355_26752.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___356_26752.FStar_TypeChecker_Env.gamma_sig); + (uu___355_26752.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___356_26752.FStar_TypeChecker_Env.gamma_cache); + (uu___355_26752.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___356_26752.FStar_TypeChecker_Env.modules); + (uu___355_26752.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = FStar_Pervasives_Native.None; FStar_TypeChecker_Env.sigtab = - (uu___356_26752.FStar_TypeChecker_Env.sigtab); + (uu___355_26752.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___356_26752.FStar_TypeChecker_Env.attrtab); + (uu___355_26752.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___356_26752.FStar_TypeChecker_Env.is_pattern); + (uu___355_26752.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___356_26752.FStar_TypeChecker_Env.instantiate_imp); + (uu___355_26752.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___356_26752.FStar_TypeChecker_Env.effects); + (uu___355_26752.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___356_26752.FStar_TypeChecker_Env.generalize); + (uu___355_26752.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___356_26752.FStar_TypeChecker_Env.letrecs); + (uu___355_26752.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___356_26752.FStar_TypeChecker_Env.top_level); + (uu___355_26752.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___356_26752.FStar_TypeChecker_Env.check_uvars); + (uu___355_26752.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___356_26752.FStar_TypeChecker_Env.use_eq); + (uu___355_26752.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___356_26752.FStar_TypeChecker_Env.is_iface); + (uu___355_26752.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___356_26752.FStar_TypeChecker_Env.admit); + (uu___355_26752.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___356_26752.FStar_TypeChecker_Env.lax_universes); + (uu___355_26752.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___356_26752.FStar_TypeChecker_Env.phase1); + (uu___355_26752.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___356_26752.FStar_TypeChecker_Env.failhard); + (uu___355_26752.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___356_26752.FStar_TypeChecker_Env.nosynth); + (uu___355_26752.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___356_26752.FStar_TypeChecker_Env.uvar_subtyping); + (uu___355_26752.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___356_26752.FStar_TypeChecker_Env.tc_term); + (uu___355_26752.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___356_26752.FStar_TypeChecker_Env.type_of); + (uu___355_26752.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___356_26752.FStar_TypeChecker_Env.universe_of); + (uu___355_26752.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___356_26752.FStar_TypeChecker_Env.check_type_of); + (uu___355_26752.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = true; FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___356_26752.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___355_26752.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___356_26752.FStar_TypeChecker_Env.normalized_eff_names); + (uu___355_26752.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___356_26752.FStar_TypeChecker_Env.fv_delta_depths); + (uu___355_26752.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___356_26752.FStar_TypeChecker_Env.proof_ns); + (uu___355_26752.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___356_26752.FStar_TypeChecker_Env.synth_hook); + (uu___355_26752.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___356_26752.FStar_TypeChecker_Env.splice); + (uu___355_26752.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___356_26752.FStar_TypeChecker_Env.postprocess); + (uu___355_26752.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___356_26752.FStar_TypeChecker_Env.is_native_tactic); + (uu___355_26752.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___356_26752.FStar_TypeChecker_Env.identifier_info); + (uu___355_26752.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___356_26752.FStar_TypeChecker_Env.tc_hooks); + (uu___355_26752.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___356_26752.FStar_TypeChecker_Env.dsenv); + (uu___355_26752.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___356_26752.FStar_TypeChecker_Env.nbe) + (uu___355_26752.FStar_TypeChecker_Env.nbe) }) t in (match uu____26744 with @@ -8148,14 +8148,14 @@ let rec (elim_delayed_subst_term : in let t1 = FStar_Syntax_Subst.compress t in let elim_bv x = - let uu___357_26839 = x in + let uu___356_26839 = x in let uu____26840 = elim_delayed_subst_term x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___357_26839.FStar_Syntax_Syntax.ppname); + (uu___356_26839.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___357_26839.FStar_Syntax_Syntax.index); + (uu___356_26839.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____26840 } in match t1.FStar_Syntax_Syntax.n with @@ -8170,7 +8170,7 @@ let rec (elim_delayed_subst_term : | FStar_Syntax_Syntax.Tm_unknown -> t1 | FStar_Syntax_Syntax.Tm_abs (bs,t2,rc_opt) -> let elim_rc rc = - let uu___358_26913 = rc in + let uu___357_26913 = rc in let uu____26914 = FStar_Util.map_opt rc.FStar_Syntax_Syntax.residual_typ elim_delayed_subst_term @@ -8180,7 +8180,7 @@ let rec (elim_delayed_subst_term : in { FStar_Syntax_Syntax.residual_effect = - (uu___358_26913.FStar_Syntax_Syntax.residual_effect); + (uu___357_26913.FStar_Syntax_Syntax.residual_effect); FStar_Syntax_Syntax.residual_typ = uu____26914; FStar_Syntax_Syntax.residual_flags = uu____26923 } in @@ -8220,27 +8220,27 @@ let rec (elim_delayed_subst_term : let rec elim_pat p = match p.FStar_Syntax_Syntax.v with | FStar_Syntax_Syntax.Pat_var x -> - let uu___359_27172 = p in + let uu___358_27172 = p in let uu____27173 = let uu____27174 = elim_bv x in FStar_Syntax_Syntax.Pat_var uu____27174 in { FStar_Syntax_Syntax.v = uu____27173; FStar_Syntax_Syntax.p = - (uu___359_27172.FStar_Syntax_Syntax.p) + (uu___358_27172.FStar_Syntax_Syntax.p) } | FStar_Syntax_Syntax.Pat_wild x -> - let uu___360_27176 = p in + let uu___359_27176 = p in let uu____27177 = let uu____27178 = elim_bv x in FStar_Syntax_Syntax.Pat_wild uu____27178 in { FStar_Syntax_Syntax.v = uu____27177; FStar_Syntax_Syntax.p = - (uu___360_27176.FStar_Syntax_Syntax.p) + (uu___359_27176.FStar_Syntax_Syntax.p) } | FStar_Syntax_Syntax.Pat_dot_term (x,t0) -> - let uu___361_27185 = p in + let uu___360_27185 = p in let uu____27186 = let uu____27187 = let uu____27194 = elim_bv x in @@ -8250,10 +8250,10 @@ let rec (elim_delayed_subst_term : { FStar_Syntax_Syntax.v = uu____27186; FStar_Syntax_Syntax.p = - (uu___361_27185.FStar_Syntax_Syntax.p) + (uu___360_27185.FStar_Syntax_Syntax.p) } | FStar_Syntax_Syntax.Pat_cons (fv,pats) -> - let uu___362_27220 = p in + let uu___361_27220 = p in let uu____27221 = let uu____27222 = let uu____27236 = @@ -8269,7 +8269,7 @@ let rec (elim_delayed_subst_term : { FStar_Syntax_Syntax.v = uu____27221; FStar_Syntax_Syntax.p = - (uu___362_27220.FStar_Syntax_Syntax.p) + (uu___361_27220.FStar_Syntax_Syntax.p) } | uu____27294 -> p in let elim_branch uu____27318 = @@ -8314,24 +8314,24 @@ let rec (elim_delayed_subst_term : mk1 uu____27570 | FStar_Syntax_Syntax.Tm_let (lbs,t2) -> let elim_lb lb = - let uu___363_27664 = lb in + let uu___362_27664 = lb in let uu____27665 = elim_delayed_subst_term lb.FStar_Syntax_Syntax.lbtyp in let uu____27668 = elim_delayed_subst_term lb.FStar_Syntax_Syntax.lbdef in { FStar_Syntax_Syntax.lbname = - (uu___363_27664.FStar_Syntax_Syntax.lbname); + (uu___362_27664.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___363_27664.FStar_Syntax_Syntax.lbunivs); + (uu___362_27664.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = uu____27665; FStar_Syntax_Syntax.lbeff = - (uu___363_27664.FStar_Syntax_Syntax.lbeff); + (uu___362_27664.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = uu____27668; FStar_Syntax_Syntax.lbattrs = - (uu___363_27664.FStar_Syntax_Syntax.lbattrs); + (uu___362_27664.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___363_27664.FStar_Syntax_Syntax.lbpos) + (uu___362_27664.FStar_Syntax_Syntax.lbpos) } in let uu____27671 = let uu____27672 = @@ -8369,8 +8369,8 @@ and (elim_delayed_subst_cflags : = fun flags1 -> FStar_List.map - (fun uu___276_27790 -> - match uu___276_27790 with + (fun uu___275_27790 -> + match uu___275_27790 with | FStar_Syntax_Syntax.DECREASES t -> let uu____27794 = elim_delayed_subst_term t in FStar_Syntax_Syntax.DECREASES uu____27794 @@ -8400,7 +8400,7 @@ and (elim_delayed_subst_comp : mk1 uu____27844 | FStar_Syntax_Syntax.Comp ct -> let ct1 = - let uu___364_27863 = ct in + let uu___363_27863 = ct in let uu____27864 = elim_delayed_subst_term ct.FStar_Syntax_Syntax.result_typ in let uu____27867 = @@ -8409,9 +8409,9 @@ and (elim_delayed_subst_comp : elim_delayed_subst_cflags ct.FStar_Syntax_Syntax.flags in { FStar_Syntax_Syntax.comp_univs = - (uu___364_27863.FStar_Syntax_Syntax.comp_univs); + (uu___363_27863.FStar_Syntax_Syntax.comp_univs); FStar_Syntax_Syntax.effect_name = - (uu___364_27863.FStar_Syntax_Syntax.effect_name); + (uu___363_27863.FStar_Syntax_Syntax.effect_name); FStar_Syntax_Syntax.result_typ = uu____27864; FStar_Syntax_Syntax.effect_args = uu____27867; FStar_Syntax_Syntax.flags = uu____27878 @@ -8420,8 +8420,8 @@ and (elim_delayed_subst_comp : and (elim_delayed_subst_meta : FStar_Syntax_Syntax.metadata -> FStar_Syntax_Syntax.metadata) = - fun uu___277_27881 -> - match uu___277_27881 with + fun uu___276_27881 -> + match uu___276_27881 with | FStar_Syntax_Syntax.Meta_pattern args -> let uu____27895 = FStar_List.map elim_delayed_subst_args args in FStar_Syntax_Syntax.Meta_pattern uu____27895 @@ -8467,14 +8467,14 @@ and (elim_delayed_subst_binders : match uu____28042 with | (x,q) -> let uu____28061 = - let uu___365_28062 = x in + let uu___364_28062 = x in let uu____28063 = elim_delayed_subst_term x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___365_28062.FStar_Syntax_Syntax.ppname); + (uu___364_28062.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___365_28062.FStar_Syntax_Syntax.index); + (uu___364_28062.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____28063 } in (uu____28061, q)) bs @@ -8608,22 +8608,22 @@ let rec (elim_uvars : let uu____28916 = elim_uvars_aux_t env univ_names binders typ in (match uu____28916 with | (univ_names1,binders1,typ1) -> - let uu___366_28956 = s in + let uu___365_28956 = s in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_inductive_typ (lid, univ_names1, binders1, typ1, lids, lids')); FStar_Syntax_Syntax.sigrng = - (uu___366_28956.FStar_Syntax_Syntax.sigrng); + (uu___365_28956.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___366_28956.FStar_Syntax_Syntax.sigquals); + (uu___365_28956.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___366_28956.FStar_Syntax_Syntax.sigmeta); + (uu___365_28956.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___366_28956.FStar_Syntax_Syntax.sigattrs) + (uu___365_28956.FStar_Syntax_Syntax.sigattrs) }) | FStar_Syntax_Syntax.Sig_bundle (sigs,lids) -> - let uu___367_28971 = s in + let uu___366_28971 = s in let uu____28972 = let uu____28973 = let uu____28982 = FStar_List.map (elim_uvars env) sigs in @@ -8632,49 +8632,49 @@ let rec (elim_uvars : { FStar_Syntax_Syntax.sigel = uu____28972; FStar_Syntax_Syntax.sigrng = - (uu___367_28971.FStar_Syntax_Syntax.sigrng); + (uu___366_28971.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___367_28971.FStar_Syntax_Syntax.sigquals); + (uu___366_28971.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___367_28971.FStar_Syntax_Syntax.sigmeta); + (uu___366_28971.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___367_28971.FStar_Syntax_Syntax.sigattrs) + (uu___366_28971.FStar_Syntax_Syntax.sigattrs) } | FStar_Syntax_Syntax.Sig_datacon (lid,univ_names,typ,lident,i,lids) -> let uu____29001 = elim_uvars_aux_t env univ_names [] typ in (match uu____29001 with | (univ_names1,uu____29025,typ1) -> - let uu___368_29047 = s in + let uu___367_29047 = s in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_datacon (lid, univ_names1, typ1, lident, i, lids)); FStar_Syntax_Syntax.sigrng = - (uu___368_29047.FStar_Syntax_Syntax.sigrng); + (uu___367_29047.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___368_29047.FStar_Syntax_Syntax.sigquals); + (uu___367_29047.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___368_29047.FStar_Syntax_Syntax.sigmeta); + (uu___367_29047.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___368_29047.FStar_Syntax_Syntax.sigattrs) + (uu___367_29047.FStar_Syntax_Syntax.sigattrs) }) | FStar_Syntax_Syntax.Sig_declare_typ (lid,univ_names,typ) -> let uu____29054 = elim_uvars_aux_t env univ_names [] typ in (match uu____29054 with | (univ_names1,uu____29078,typ1) -> - let uu___369_29100 = s in + let uu___368_29100 = s in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_declare_typ (lid, univ_names1, typ1)); FStar_Syntax_Syntax.sigrng = - (uu___369_29100.FStar_Syntax_Syntax.sigrng); + (uu___368_29100.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___369_29100.FStar_Syntax_Syntax.sigquals); + (uu___368_29100.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___369_29100.FStar_Syntax_Syntax.sigmeta); + (uu___368_29100.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___369_29100.FStar_Syntax_Syntax.sigattrs) + (uu___368_29100.FStar_Syntax_Syntax.sigattrs) }) | FStar_Syntax_Syntax.Sig_let ((b,lbs),lids) -> let lbs1 = @@ -8699,66 +8699,66 @@ let rec (elim_uvars : elim_delayed_subst_term uu____29155 in let lbtyp = elim lb.FStar_Syntax_Syntax.lbtyp in let lbdef = elim lb.FStar_Syntax_Syntax.lbdef in - let uu___370_29160 = lb in + let uu___369_29160 = lb in { FStar_Syntax_Syntax.lbname = - (uu___370_29160.FStar_Syntax_Syntax.lbname); + (uu___369_29160.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = lbunivs; FStar_Syntax_Syntax.lbtyp = lbtyp; FStar_Syntax_Syntax.lbeff = - (uu___370_29160.FStar_Syntax_Syntax.lbeff); + (uu___369_29160.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = lbdef; FStar_Syntax_Syntax.lbattrs = - (uu___370_29160.FStar_Syntax_Syntax.lbattrs); + (uu___369_29160.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___370_29160.FStar_Syntax_Syntax.lbpos) + (uu___369_29160.FStar_Syntax_Syntax.lbpos) })) in - let uu___371_29161 = s in + let uu___370_29161 = s in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_let ((b, lbs1), lids)); FStar_Syntax_Syntax.sigrng = - (uu___371_29161.FStar_Syntax_Syntax.sigrng); + (uu___370_29161.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___371_29161.FStar_Syntax_Syntax.sigquals); + (uu___370_29161.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___371_29161.FStar_Syntax_Syntax.sigmeta); + (uu___370_29161.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___371_29161.FStar_Syntax_Syntax.sigattrs) + (uu___370_29161.FStar_Syntax_Syntax.sigattrs) } | FStar_Syntax_Syntax.Sig_main t -> - let uu___372_29168 = s in + let uu___371_29168 = s in let uu____29169 = let uu____29170 = remove_uvar_solutions env t in FStar_Syntax_Syntax.Sig_main uu____29170 in { FStar_Syntax_Syntax.sigel = uu____29169; FStar_Syntax_Syntax.sigrng = - (uu___372_29168.FStar_Syntax_Syntax.sigrng); + (uu___371_29168.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___372_29168.FStar_Syntax_Syntax.sigquals); + (uu___371_29168.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___372_29168.FStar_Syntax_Syntax.sigmeta); + (uu___371_29168.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___372_29168.FStar_Syntax_Syntax.sigattrs) + (uu___371_29168.FStar_Syntax_Syntax.sigattrs) } | FStar_Syntax_Syntax.Sig_assume (l,us,t) -> let uu____29174 = elim_uvars_aux_t env us [] t in (match uu____29174 with | (us1,uu____29198,t1) -> - let uu___373_29220 = s in + let uu___372_29220 = s in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_assume (l, us1, t1)); FStar_Syntax_Syntax.sigrng = - (uu___373_29220.FStar_Syntax_Syntax.sigrng); + (uu___372_29220.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___373_29220.FStar_Syntax_Syntax.sigquals); + (uu___372_29220.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___373_29220.FStar_Syntax_Syntax.sigmeta); + (uu___372_29220.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___373_29220.FStar_Syntax_Syntax.sigattrs) + (uu___372_29220.FStar_Syntax_Syntax.sigattrs) }) | FStar_Syntax_Syntax.Sig_new_effect_for_free uu____29221 -> failwith "Impossible: should have been desugared already" @@ -8930,13 +8930,13 @@ let rec (elim_uvars : (match uu____29898 with | (action_params,action_defn,action_typ) -> let a' = - let uu___374_29945 = a in + let uu___373_29945 = a in { FStar_Syntax_Syntax.action_name = - (uu___374_29945.FStar_Syntax_Syntax.action_name); + (uu___373_29945.FStar_Syntax_Syntax.action_name); FStar_Syntax_Syntax.action_unqualified_name = - (uu___374_29945.FStar_Syntax_Syntax.action_unqualified_name); + (uu___373_29945.FStar_Syntax_Syntax.action_unqualified_name); FStar_Syntax_Syntax.action_univs = action_univs; FStar_Syntax_Syntax.action_params = @@ -8949,7 +8949,7 @@ let rec (elim_uvars : a') in let ed1 = - let uu___375_29947 = ed in + let uu___374_29947 = ed in let uu____29948 = elim_tscheme ed.FStar_Syntax_Syntax.ret_wp in let uu____29949 = @@ -8985,9 +8985,9 @@ let rec (elim_uvars : in { FStar_Syntax_Syntax.cattributes = - (uu___375_29947.FStar_Syntax_Syntax.cattributes); + (uu___374_29947.FStar_Syntax_Syntax.cattributes); FStar_Syntax_Syntax.mname = - (uu___375_29947.FStar_Syntax_Syntax.mname); + (uu___374_29947.FStar_Syntax_Syntax.mname); FStar_Syntax_Syntax.univs = univs1; FStar_Syntax_Syntax.binders = binders; FStar_Syntax_Syntax.signature = signature; @@ -9006,24 +9006,24 @@ let rec (elim_uvars : FStar_Syntax_Syntax.bind_repr = uu____29960; FStar_Syntax_Syntax.actions = uu____29961; FStar_Syntax_Syntax.eff_attrs = - (uu___375_29947.FStar_Syntax_Syntax.eff_attrs) + (uu___374_29947.FStar_Syntax_Syntax.eff_attrs) } in - let uu___376_29964 = s in + let uu___375_29964 = s in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_new_effect ed1); FStar_Syntax_Syntax.sigrng = - (uu___376_29964.FStar_Syntax_Syntax.sigrng); + (uu___375_29964.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___376_29964.FStar_Syntax_Syntax.sigquals); + (uu___375_29964.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___376_29964.FStar_Syntax_Syntax.sigmeta); + (uu___375_29964.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___376_29964.FStar_Syntax_Syntax.sigattrs) + (uu___375_29964.FStar_Syntax_Syntax.sigattrs) }))) | FStar_Syntax_Syntax.Sig_sub_effect sub_eff -> - let elim_tscheme_opt uu___278_29985 = - match uu___278_29985 with + let elim_tscheme_opt uu___277_29985 = + match uu___277_29985 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some (us,t) -> let uu____30016 = elim_uvars_aux_t env us [] t in @@ -9032,50 +9032,50 @@ let rec (elim_uvars : FStar_Pervasives_Native.Some (us1, t1)) in let sub_eff1 = - let uu___377_30079 = sub_eff in + let uu___376_30079 = sub_eff in let uu____30080 = elim_tscheme_opt sub_eff.FStar_Syntax_Syntax.lift_wp in let uu____30083 = elim_tscheme_opt sub_eff.FStar_Syntax_Syntax.lift in { FStar_Syntax_Syntax.source = - (uu___377_30079.FStar_Syntax_Syntax.source); + (uu___376_30079.FStar_Syntax_Syntax.source); FStar_Syntax_Syntax.target = - (uu___377_30079.FStar_Syntax_Syntax.target); + (uu___376_30079.FStar_Syntax_Syntax.target); FStar_Syntax_Syntax.lift_wp = uu____30080; FStar_Syntax_Syntax.lift = uu____30083 } in - let uu___378_30086 = s in + let uu___377_30086 = s in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_sub_effect sub_eff1); FStar_Syntax_Syntax.sigrng = - (uu___378_30086.FStar_Syntax_Syntax.sigrng); + (uu___377_30086.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___378_30086.FStar_Syntax_Syntax.sigquals); + (uu___377_30086.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___378_30086.FStar_Syntax_Syntax.sigmeta); + (uu___377_30086.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___378_30086.FStar_Syntax_Syntax.sigattrs) + (uu___377_30086.FStar_Syntax_Syntax.sigattrs) } | FStar_Syntax_Syntax.Sig_effect_abbrev (lid,univ_names,binders,comp,flags1) -> let uu____30096 = elim_uvars_aux_c env univ_names binders comp in (match uu____30096 with | (univ_names1,binders1,comp1) -> - let uu___379_30136 = s in + let uu___378_30136 = s in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_effect_abbrev (lid, univ_names1, binders1, comp1, flags1)); FStar_Syntax_Syntax.sigrng = - (uu___379_30136.FStar_Syntax_Syntax.sigrng); + (uu___378_30136.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___379_30136.FStar_Syntax_Syntax.sigquals); + (uu___378_30136.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___379_30136.FStar_Syntax_Syntax.sigmeta); + (uu___378_30136.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___379_30136.FStar_Syntax_Syntax.sigattrs) + (uu___378_30136.FStar_Syntax_Syntax.sigattrs) }) | FStar_Syntax_Syntax.Sig_pragma uu____30139 -> s | FStar_Syntax_Syntax.Sig_splice uu____30140 -> s diff --git a/src/ocaml-output/FStar_TypeChecker_PatternUtils.ml b/src/ocaml-output/FStar_TypeChecker_PatternUtils.ml index 2456aa4271b..b02a369cb4c 100644 --- a/src/ocaml-output/FStar_TypeChecker_PatternUtils.ml +++ b/src/ocaml-output/FStar_TypeChecker_PatternUtils.ml @@ -164,7 +164,7 @@ let rec (elaborate_pat : let uu____712 = aux formals' pats' in uu____699 :: uu____712) in - let uu___266_729 = p in + let uu___265_729 = p in let uu____730 = let uu____731 = let uu____745 = aux f pats1 in (fv, uu____745) in @@ -172,7 +172,7 @@ let rec (elaborate_pat : { FStar_Syntax_Syntax.v = uu____730; FStar_Syntax_Syntax.p = - (uu___266_729.FStar_Syntax_Syntax.p) + (uu___265_729.FStar_Syntax_Syntax.p) })) | uu____764 -> p @@ -189,12 +189,12 @@ let (pat_as_exp : let intro_bv env1 x = if Prims.op_Negation introduce_bv_uvars then - ((let uu___267_828 = x in + ((let uu___266_828 = x in { FStar_Syntax_Syntax.ppname = - (uu___267_828.FStar_Syntax_Syntax.ppname); + (uu___266_828.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___267_828.FStar_Syntax_Syntax.index); + (uu___266_828.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = FStar_Syntax_Syntax.tun }), FStar_TypeChecker_Env.trivial_guard, env1) else @@ -206,21 +206,22 @@ let (pat_as_exp : FStar_TypeChecker_Env.new_implicit_var_aux "pattern bv type" uu____857 env1 t FStar_Syntax_Syntax.Allow_untyped + FStar_Pervasives_Native.None in (match uu____844 with - | (t_x,uu____866,guard) -> + | (t_x,uu____870,guard) -> let x1 = - let uu___268_881 = x in + let uu___267_885 = x in { FStar_Syntax_Syntax.ppname = - (uu___268_881.FStar_Syntax_Syntax.ppname); + (uu___267_885.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___268_881.FStar_Syntax_Syntax.index); + (uu___267_885.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t_x } in - let uu____882 = FStar_TypeChecker_Env.push_bv env1 x1 + let uu____886 = FStar_TypeChecker_Env.push_bv env1 x1 in - (x1, guard, uu____882))) + (x1, guard, uu____886))) in let rec pat_as_arg_with_env env1 p1 = match p1.FStar_Syntax_Syntax.v with @@ -232,56 +233,58 @@ let (pat_as_exp : FStar_ToSyntax_ToSyntax.desugar_machine_integer env1.FStar_TypeChecker_Env.dsenv repr sw p1.FStar_Syntax_Syntax.p - | uu____954 -> + | uu____958 -> FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_constant c) FStar_Pervasives_Native.None p1.FStar_Syntax_Syntax.p in ([], [], [], env1, e, FStar_TypeChecker_Env.trivial_guard, p1) - | FStar_Syntax_Syntax.Pat_dot_term (x,uu____962) -> - let uu____967 = FStar_Syntax_Util.type_u () in - (match uu____967 with - | (k,uu____993) -> - let uu____994 = - let uu____1007 = FStar_Syntax_Syntax.range_of_bv x in + | FStar_Syntax_Syntax.Pat_dot_term (x,uu____966) -> + let uu____971 = FStar_Syntax_Util.type_u () in + (match uu____971 with + | (k,uu____997) -> + let uu____998 = + let uu____1011 = FStar_Syntax_Syntax.range_of_bv x in FStar_TypeChecker_Env.new_implicit_var_aux - "pat_dot_term type" uu____1007 env1 k + "pat_dot_term type" uu____1011 env1 k FStar_Syntax_Syntax.Allow_untyped + FStar_Pervasives_Native.None in - (match uu____994 with - | (t,uu____1030,g) -> + (match uu____998 with + | (t,uu____1038,g) -> let x1 = - let uu___269_1045 = x in + let uu___268_1053 = x in { FStar_Syntax_Syntax.ppname = - (uu___269_1045.FStar_Syntax_Syntax.ppname); + (uu___268_1053.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___269_1045.FStar_Syntax_Syntax.index); + (uu___268_1053.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t } in - let uu____1046 = - let uu____1059 = FStar_Syntax_Syntax.range_of_bv x1 + let uu____1054 = + let uu____1067 = FStar_Syntax_Syntax.range_of_bv x1 in FStar_TypeChecker_Env.new_implicit_var_aux - "pat_dot_term" uu____1059 env1 t + "pat_dot_term" uu____1067 env1 t FStar_Syntax_Syntax.Allow_untyped + FStar_Pervasives_Native.None in - (match uu____1046 with - | (e,uu____1082,g') -> + (match uu____1054 with + | (e,uu____1094,g') -> let p2 = - let uu___270_1099 = p1 in + let uu___269_1111 = p1 in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_dot_term (x1, e)); FStar_Syntax_Syntax.p = - (uu___270_1099.FStar_Syntax_Syntax.p) + (uu___269_1111.FStar_Syntax_Syntax.p) } in - let uu____1102 = + let uu____1114 = FStar_TypeChecker_Env.conj_guard g g' in - ([], [], [], env1, e, uu____1102, p2)))) + ([], [], [], env1, e, uu____1114, p2)))) | FStar_Syntax_Syntax.Pat_wild x -> - let uu____1110 = intro_bv env1 x in - (match uu____1110 with + let uu____1122 = intro_bv env1 x in + (match uu____1122 with | (x1,g,env2) -> let e = FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_name x1) @@ -289,8 +292,8 @@ let (pat_as_exp : in ([x1], [], [x1], env2, e, g, p1)) | FStar_Syntax_Syntax.Pat_var x -> - let uu____1150 = intro_bv env1 x in - (match uu____1150 with + let uu____1162 = intro_bv env1 x in + (match uu____1162 with | (x1,g,env2) -> let e = FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_name x1) @@ -298,89 +301,89 @@ let (pat_as_exp : in ([x1], [x1], [], env2, e, g, p1)) | FStar_Syntax_Syntax.Pat_cons (fv,pats) -> - let uu____1209 = + let uu____1221 = FStar_All.pipe_right pats (FStar_List.fold_left - (fun uu____1348 -> - fun uu____1349 -> - match (uu____1348, uu____1349) with + (fun uu____1360 -> + fun uu____1361 -> + match (uu____1360, uu____1361) with | ((b,a,w,env2,args,guard,pats1),(p2,imp)) -> - let uu____1558 = pat_as_arg_with_env env2 p2 + let uu____1570 = pat_as_arg_with_env env2 p2 in - (match uu____1558 with + (match uu____1570 with | (b',a',w',env3,te,guard',pat) -> let arg = if imp then FStar_Syntax_Syntax.iarg te else FStar_Syntax_Syntax.as_arg te in - let uu____1637 = + let uu____1649 = FStar_TypeChecker_Env.conj_guard guard guard' in ((b' :: b), (a' :: a), (w' :: w), env3, - (arg :: args), uu____1637, ((pat, imp) + (arg :: args), uu____1649, ((pat, imp) :: pats1)))) ([], [], [], env1, [], FStar_TypeChecker_Env.trivial_guard, [])) in - (match uu____1209 with + (match uu____1221 with | (b,a,w,env2,args,guard,pats1) -> let e = - let uu____1775 = - let uu____1780 = FStar_Syntax_Syntax.fv_to_tm fv in - let uu____1781 = + let uu____1787 = + let uu____1792 = FStar_Syntax_Syntax.fv_to_tm fv in + let uu____1793 = FStar_All.pipe_right args FStar_List.rev in - FStar_Syntax_Syntax.mk_Tm_app uu____1780 uu____1781 + FStar_Syntax_Syntax.mk_Tm_app uu____1792 uu____1793 in - uu____1775 FStar_Pervasives_Native.None + uu____1787 FStar_Pervasives_Native.None p1.FStar_Syntax_Syntax.p in - let uu____1786 = + let uu____1798 = FStar_All.pipe_right (FStar_List.rev b) FStar_List.flatten in - let uu____1797 = + let uu____1809 = FStar_All.pipe_right (FStar_List.rev a) FStar_List.flatten in - let uu____1808 = + let uu____1820 = FStar_All.pipe_right (FStar_List.rev w) FStar_List.flatten in - (uu____1786, uu____1797, uu____1808, env2, e, guard, - (let uu___271_1826 = p1 in + (uu____1798, uu____1809, uu____1820, env2, e, guard, + (let uu___270_1838 = p1 in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_cons (fv, (FStar_List.rev pats1))); FStar_Syntax_Syntax.p = - (uu___271_1826.FStar_Syntax_Syntax.p) + (uu___270_1838.FStar_Syntax_Syntax.p) }))) in let one_pat env1 p1 = let p2 = elaborate_pat env1 p1 in - let uu____1871 = pat_as_arg_with_env env1 p2 in - match uu____1871 with + let uu____1883 = pat_as_arg_with_env env1 p2 in + match uu____1883 with | (b,a,w,env2,arg,guard,p3) -> - let uu____1929 = + let uu____1941 = FStar_All.pipe_right b (FStar_Util.find_dup FStar_Syntax_Syntax.bv_eq) in - (match uu____1929 with + (match uu____1941 with | FStar_Pervasives_Native.Some x -> let m = FStar_Syntax_Print.bv_to_string x in let err = - let uu____1963 = + let uu____1975 = FStar_Util.format1 "The pattern variable \"%s\" was used more than once" m in - (FStar_Errors.Fatal_NonLinearPatternVars, uu____1963) + (FStar_Errors.Fatal_NonLinearPatternVars, uu____1975) in FStar_Errors.raise_error err p3.FStar_Syntax_Syntax.p - | uu____1985 -> (b, a, w, arg, guard, p3)) + | uu____1997 -> (b, a, w, arg, guard, p3)) in - let uu____1994 = one_pat env p in - match uu____1994 with - | (b,uu____2024,uu____2025,tm,guard,p1) -> (b, tm, guard, p1) + let uu____2006 = one_pat env p in + match uu____2006 with + | (b,uu____2036,uu____2037,tm,guard,p1) -> (b, tm, guard, p1) \ No newline at end of file diff --git a/src/ocaml-output/FStar_TypeChecker_Rel.ml b/src/ocaml-output/FStar_TypeChecker_Rel.ml index 2c71fedfb34..a68247e27ca 100644 --- a/src/ocaml-output/FStar_TypeChecker_Rel.ml +++ b/src/ocaml-output/FStar_TypeChecker_Rel.ml @@ -102,8 +102,12 @@ let (new_uvar : FStar_Pervasives_Native.tuple2 Prims.list -> FStar_Syntax_Syntax.term' FStar_Syntax_Syntax.syntax -> FStar_Syntax_Syntax.should_check_uvar -> - (FStar_Syntax_Syntax.ctx_uvar,FStar_Syntax_Syntax.term, - worklist) FStar_Pervasives_Native.tuple3) + (FStar_Dyn.dyn,FStar_Syntax_Syntax.term' + FStar_Syntax_Syntax.syntax) + FStar_Pervasives_Native.tuple2 + FStar_Pervasives_Native.option -> + (FStar_Syntax_Syntax.ctx_uvar,FStar_Syntax_Syntax.term, + worklist) FStar_Pervasives_Native.tuple3) = fun reason -> fun wl -> @@ -112,46 +116,47 @@ let (new_uvar : fun binders -> fun k -> fun should_check -> - let ctx_uvar = - let uu____478 = FStar_Syntax_Unionfind.fresh () in - { - FStar_Syntax_Syntax.ctx_uvar_head = uu____478; - FStar_Syntax_Syntax.ctx_uvar_gamma = gamma; - FStar_Syntax_Syntax.ctx_uvar_binders = binders; - FStar_Syntax_Syntax.ctx_uvar_typ = k; - FStar_Syntax_Syntax.ctx_uvar_reason = reason; - FStar_Syntax_Syntax.ctx_uvar_should_check = should_check; - FStar_Syntax_Syntax.ctx_uvar_range = r - } in - FStar_TypeChecker_Common.check_uvar_ctx_invariant reason r - true gamma binders; - (let t = - FStar_Syntax_Syntax.mk - (FStar_Syntax_Syntax.Tm_uvar - (ctx_uvar, ([], FStar_Syntax_Syntax.NoUseRange))) - FStar_Pervasives_Native.None r - in - let imp = - { - FStar_TypeChecker_Env.imp_reason = reason; - FStar_TypeChecker_Env.imp_uvar = ctx_uvar; - FStar_TypeChecker_Env.imp_tm = t; - FStar_TypeChecker_Env.imp_range = r; - FStar_TypeChecker_Env.imp_meta = - FStar_Pervasives_Native.None - } in - (ctx_uvar, t, - (let uu___354_514 = wl in + fun meta -> + let ctx_uvar = + let uu____499 = FStar_Syntax_Unionfind.fresh () in { - attempting = (uu___354_514.attempting); - wl_deferred = (uu___354_514.wl_deferred); - ctr = (uu___354_514.ctr); - defer_ok = (uu___354_514.defer_ok); - smt_ok = (uu___354_514.smt_ok); - umax_heuristic_ok = (uu___354_514.umax_heuristic_ok); - tcenv = (uu___354_514.tcenv); - wl_implicits = (imp :: (wl.wl_implicits)) - }))) + FStar_Syntax_Syntax.ctx_uvar_head = uu____499; + FStar_Syntax_Syntax.ctx_uvar_gamma = gamma; + FStar_Syntax_Syntax.ctx_uvar_binders = binders; + FStar_Syntax_Syntax.ctx_uvar_typ = k; + FStar_Syntax_Syntax.ctx_uvar_reason = reason; + FStar_Syntax_Syntax.ctx_uvar_should_check = + should_check; + FStar_Syntax_Syntax.ctx_uvar_range = r; + FStar_Syntax_Syntax.ctx_uvar_meta = meta + } in + FStar_TypeChecker_Common.check_uvar_ctx_invariant reason r + true gamma binders; + (let t = + FStar_Syntax_Syntax.mk + (FStar_Syntax_Syntax.Tm_uvar + (ctx_uvar, ([], FStar_Syntax_Syntax.NoUseRange))) + FStar_Pervasives_Native.None r + in + let imp = + { + FStar_TypeChecker_Env.imp_reason = reason; + FStar_TypeChecker_Env.imp_uvar = ctx_uvar; + FStar_TypeChecker_Env.imp_tm = t; + FStar_TypeChecker_Env.imp_range = r + } in + (ctx_uvar, t, + (let uu___353_531 = wl in + { + attempting = (uu___353_531.attempting); + wl_deferred = (uu___353_531.wl_deferred); + ctr = (uu___353_531.ctr); + defer_ok = (uu___353_531.defer_ok); + smt_ok = (uu___353_531.smt_ok); + umax_heuristic_ok = (uu___353_531.umax_heuristic_ok); + tcenv = (uu___353_531.tcenv); + wl_implicits = (imp :: (wl.wl_implicits)) + }))) let (copy_uvar : FStar_Syntax_Syntax.ctx_uvar -> @@ -166,101 +171,103 @@ let (copy_uvar : fun t -> fun wl -> let env = - let uu___355_547 = wl.tcenv in + let uu___354_564 = wl.tcenv in { FStar_TypeChecker_Env.solver = - (uu___355_547.FStar_TypeChecker_Env.solver); + (uu___354_564.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___355_547.FStar_TypeChecker_Env.range); + (uu___354_564.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___355_547.FStar_TypeChecker_Env.curmodule); + (uu___354_564.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = (u.FStar_Syntax_Syntax.ctx_uvar_gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___355_547.FStar_TypeChecker_Env.gamma_sig); + (uu___354_564.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___355_547.FStar_TypeChecker_Env.gamma_cache); + (uu___354_564.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___355_547.FStar_TypeChecker_Env.modules); + (uu___354_564.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___355_547.FStar_TypeChecker_Env.expected_typ); + (uu___354_564.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___355_547.FStar_TypeChecker_Env.sigtab); + (uu___354_564.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___355_547.FStar_TypeChecker_Env.attrtab); + (uu___354_564.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___355_547.FStar_TypeChecker_Env.is_pattern); + (uu___354_564.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___355_547.FStar_TypeChecker_Env.instantiate_imp); + (uu___354_564.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___355_547.FStar_TypeChecker_Env.effects); + (uu___354_564.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___355_547.FStar_TypeChecker_Env.generalize); + (uu___354_564.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___355_547.FStar_TypeChecker_Env.letrecs); + (uu___354_564.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___355_547.FStar_TypeChecker_Env.top_level); + (uu___354_564.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___355_547.FStar_TypeChecker_Env.check_uvars); + (uu___354_564.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___355_547.FStar_TypeChecker_Env.use_eq); + (uu___354_564.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___355_547.FStar_TypeChecker_Env.is_iface); + (uu___354_564.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___355_547.FStar_TypeChecker_Env.admit); + (uu___354_564.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___355_547.FStar_TypeChecker_Env.lax); + (uu___354_564.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___355_547.FStar_TypeChecker_Env.lax_universes); + (uu___354_564.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___355_547.FStar_TypeChecker_Env.phase1); + (uu___354_564.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___355_547.FStar_TypeChecker_Env.failhard); + (uu___354_564.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___355_547.FStar_TypeChecker_Env.nosynth); + (uu___354_564.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___355_547.FStar_TypeChecker_Env.uvar_subtyping); + (uu___354_564.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___355_547.FStar_TypeChecker_Env.tc_term); + (uu___354_564.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___355_547.FStar_TypeChecker_Env.type_of); + (uu___354_564.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___355_547.FStar_TypeChecker_Env.universe_of); + (uu___354_564.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___355_547.FStar_TypeChecker_Env.check_type_of); + (uu___354_564.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___355_547.FStar_TypeChecker_Env.use_bv_sorts); + (uu___354_564.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___355_547.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___354_564.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___355_547.FStar_TypeChecker_Env.normalized_eff_names); + (uu___354_564.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___355_547.FStar_TypeChecker_Env.fv_delta_depths); + (uu___354_564.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___355_547.FStar_TypeChecker_Env.proof_ns); + (uu___354_564.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___355_547.FStar_TypeChecker_Env.synth_hook); + (uu___354_564.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___355_547.FStar_TypeChecker_Env.splice); + (uu___354_564.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___355_547.FStar_TypeChecker_Env.postprocess); + (uu___354_564.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___355_547.FStar_TypeChecker_Env.is_native_tactic); + (uu___354_564.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___355_547.FStar_TypeChecker_Env.identifier_info); + (uu___354_564.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___355_547.FStar_TypeChecker_Env.tc_hooks); + (uu___354_564.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___355_547.FStar_TypeChecker_Env.dsenv); + (uu___354_564.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___355_547.FStar_TypeChecker_Env.nbe) + (uu___354_564.FStar_TypeChecker_Env.nbe) } in let env1 = FStar_TypeChecker_Env.push_binders env bs in - let uu____549 = FStar_TypeChecker_Env.all_binders env1 in - new_uvar u.FStar_Syntax_Syntax.ctx_uvar_reason wl + let uu____566 = FStar_TypeChecker_Env.all_binders env1 in + new_uvar + (Prims.strcat "copy:" u.FStar_Syntax_Syntax.ctx_uvar_reason) wl u.FStar_Syntax_Syntax.ctx_uvar_range - env1.FStar_TypeChecker_Env.gamma uu____549 t + env1.FStar_TypeChecker_Env.gamma uu____566 t u.FStar_Syntax_Syntax.ctx_uvar_should_check + u.FStar_Syntax_Syntax.ctx_uvar_meta type solution = | Success of @@ -270,7 +277,7 @@ type solution = FStar_Pervasives_Native.tuple2 let (uu___is_Success : solution -> Prims.bool) = fun projectee -> - match projectee with | Success _0 -> true | uu____591 -> false + match projectee with | Success _0 -> true | uu____609 -> false let (__proj__Success__item___0 : solution -> @@ -279,7 +286,7 @@ let (__proj__Success__item___0 : = fun projectee -> match projectee with | Success _0 -> _0 let (uu___is_Failed : solution -> Prims.bool) = fun projectee -> - match projectee with | Failed _0 -> true | uu____628 -> false + match projectee with | Failed _0 -> true | uu____646 -> false let (__proj__Failed__item___0 : solution -> @@ -292,147 +299,147 @@ type variance = | INVARIANT let (uu___is_COVARIANT : variance -> Prims.bool) = fun projectee -> - match projectee with | COVARIANT -> true | uu____662 -> false + match projectee with | COVARIANT -> true | uu____680 -> false let (uu___is_CONTRAVARIANT : variance -> Prims.bool) = fun projectee -> - match projectee with | CONTRAVARIANT -> true | uu____673 -> false + match projectee with | CONTRAVARIANT -> true | uu____691 -> false let (uu___is_INVARIANT : variance -> Prims.bool) = fun projectee -> - match projectee with | INVARIANT -> true | uu____684 -> false + match projectee with | INVARIANT -> true | uu____702 -> false type tprob = FStar_Syntax_Syntax.typ FStar_TypeChecker_Common.problem type cprob = FStar_Syntax_Syntax.comp FStar_TypeChecker_Common.problem type 'a problem_t = 'a FStar_TypeChecker_Common.problem let (rel_to_string : FStar_TypeChecker_Common.rel -> Prims.string) = - fun uu___322_702 -> - match uu___322_702 with + fun uu___321_720 -> + match uu___321_720 with | FStar_TypeChecker_Common.EQ -> "=" | FStar_TypeChecker_Common.SUB -> "<:" | FStar_TypeChecker_Common.SUBINV -> ":>" let (term_to_string : FStar_Syntax_Syntax.term -> Prims.string) = fun t -> - let uu____714 = FStar_Syntax_Util.head_and_args t in - match uu____714 with + let uu____732 = FStar_Syntax_Util.head_and_args t in + match uu____732 with | (head1,args) -> (match head1.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_uvar (u,s) -> - let uu____777 = FStar_Syntax_Print.ctx_uvar_to_string u in - let uu____779 = + let uu____795 = FStar_Syntax_Print.ctx_uvar_to_string u in + let uu____797 = match FStar_Pervasives_Native.fst s with | [] -> "" | s1 -> - let uu____794 = - let uu____796 = FStar_List.hd s1 in - FStar_Syntax_Print.subst_to_string uu____796 in - FStar_Util.format1 "@<%s>" uu____794 + let uu____812 = + let uu____814 = FStar_List.hd s1 in + FStar_Syntax_Print.subst_to_string uu____814 in + FStar_Util.format1 "@<%s>" uu____812 in - let uu____800 = FStar_Syntax_Print.args_to_string args in - FStar_Util.format3 "%s%s %s" uu____777 uu____779 uu____800 - | uu____803 -> FStar_Syntax_Print.term_to_string t) + let uu____818 = FStar_Syntax_Print.args_to_string args in + FStar_Util.format3 "%s%s %s" uu____795 uu____797 uu____818 + | uu____821 -> FStar_Syntax_Print.term_to_string t) let (prob_to_string : FStar_TypeChecker_Env.env -> FStar_TypeChecker_Common.prob -> Prims.string) = fun env -> - fun uu___323_815 -> - match uu___323_815 with + fun uu___322_833 -> + match uu___322_833 with | FStar_TypeChecker_Common.TProb p -> - let uu____820 = - let uu____824 = + let uu____838 = + let uu____842 = FStar_Util.string_of_int p.FStar_TypeChecker_Common.pid in - let uu____826 = - let uu____830 = term_to_string p.FStar_TypeChecker_Common.lhs + let uu____844 = + let uu____848 = term_to_string p.FStar_TypeChecker_Common.lhs in - let uu____832 = - let uu____836 = - let uu____840 = + let uu____850 = + let uu____854 = + let uu____858 = term_to_string p.FStar_TypeChecker_Common.rhs in - [uu____840] in + [uu____858] in (rel_to_string p.FStar_TypeChecker_Common.relation) :: - uu____836 + uu____854 in - uu____830 :: uu____832 in - uu____824 :: uu____826 in - FStar_Util.format "\n%s:\t%s \n\t\t%s\n\t%s\n" uu____820 + uu____848 :: uu____850 in + uu____842 :: uu____844 in + FStar_Util.format "\n%s:\t%s \n\t\t%s\n\t%s\n" uu____838 | FStar_TypeChecker_Common.CProb p -> - let uu____851 = + let uu____869 = FStar_Util.string_of_int p.FStar_TypeChecker_Common.pid in - let uu____853 = + let uu____871 = FStar_TypeChecker_Normalize.comp_to_string env p.FStar_TypeChecker_Common.lhs in - let uu____855 = + let uu____873 = FStar_TypeChecker_Normalize.comp_to_string env p.FStar_TypeChecker_Common.rhs in - FStar_Util.format4 "\n%s:\t%s \n\t\t%s\n\t%s" uu____851 uu____853 - (rel_to_string p.FStar_TypeChecker_Common.relation) uu____855 + FStar_Util.format4 "\n%s:\t%s \n\t\t%s\n\t%s" uu____869 uu____871 + (rel_to_string p.FStar_TypeChecker_Common.relation) uu____873 let (uvi_to_string : FStar_TypeChecker_Env.env -> uvi -> Prims.string) = fun env -> - fun uu___324_869 -> - match uu___324_869 with + fun uu___323_887 -> + match uu___323_887 with | UNIV (u,t) -> let x = - let uu____875 = FStar_Options.hide_uvar_nums () in - if uu____875 + let uu____893 = FStar_Options.hide_uvar_nums () in + if uu____893 then "?" else - (let uu____882 = FStar_Syntax_Unionfind.univ_uvar_id u in - FStar_All.pipe_right uu____882 FStar_Util.string_of_int) + (let uu____900 = FStar_Syntax_Unionfind.univ_uvar_id u in + FStar_All.pipe_right uu____900 FStar_Util.string_of_int) in - let uu____886 = FStar_Syntax_Print.univ_to_string t in - FStar_Util.format2 "UNIV %s %s" x uu____886 + let uu____904 = FStar_Syntax_Print.univ_to_string t in + FStar_Util.format2 "UNIV %s %s" x uu____904 | TERM (u,t) -> let x = - let uu____893 = FStar_Options.hide_uvar_nums () in - if uu____893 + let uu____911 = FStar_Options.hide_uvar_nums () in + if uu____911 then "?" else - (let uu____900 = + (let uu____918 = FStar_Syntax_Unionfind.uvar_id u.FStar_Syntax_Syntax.ctx_uvar_head in - FStar_All.pipe_right uu____900 FStar_Util.string_of_int) + FStar_All.pipe_right uu____918 FStar_Util.string_of_int) in - let uu____904 = FStar_TypeChecker_Normalize.term_to_string env t + let uu____922 = FStar_TypeChecker_Normalize.term_to_string env t in - FStar_Util.format2 "TERM %s %s" x uu____904 + FStar_Util.format2 "TERM %s %s" x uu____922 let (uvis_to_string : FStar_TypeChecker_Env.env -> uvi Prims.list -> Prims.string) = fun env -> fun uvis -> - let uu____923 = FStar_List.map (uvi_to_string env) uvis in - FStar_All.pipe_right uu____923 (FStar_String.concat ", ") + let uu____941 = FStar_List.map (uvi_to_string env) uvis in + FStar_All.pipe_right uu____941 (FStar_String.concat ", ") let (names_to_string : FStar_Syntax_Syntax.bv FStar_Util.set -> Prims.string) = fun nms -> - let uu____944 = - let uu____948 = FStar_Util.set_elements nms in - FStar_All.pipe_right uu____948 + let uu____962 = + let uu____966 = FStar_Util.set_elements nms in + FStar_All.pipe_right uu____966 (FStar_List.map FStar_Syntax_Print.bv_to_string) in - FStar_All.pipe_right uu____944 (FStar_String.concat ", ") + FStar_All.pipe_right uu____962 (FStar_String.concat ", ") let args_to_string : - 'Auu____967 . - (FStar_Syntax_Syntax.term,'Auu____967) FStar_Pervasives_Native.tuple2 + 'Auu____985 . + (FStar_Syntax_Syntax.term,'Auu____985) FStar_Pervasives_Native.tuple2 Prims.list -> Prims.string = fun args -> - let uu____986 = + let uu____1004 = FStar_All.pipe_right args (FStar_List.map - (fun uu____1007 -> - match uu____1007 with - | (x,uu____1014) -> FStar_Syntax_Print.term_to_string x)) + (fun uu____1025 -> + match uu____1025 with + | (x,uu____1032) -> FStar_Syntax_Print.term_to_string x)) in - FStar_All.pipe_right uu____986 (FStar_String.concat " ") + FStar_All.pipe_right uu____1004 (FStar_String.concat " ") let (empty_worklist : FStar_TypeChecker_Env.env -> worklist) = fun env -> @@ -454,57 +461,57 @@ let (giveup : fun env -> fun reason -> fun prob -> - (let uu____1057 = + (let uu____1075 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____1057 + if uu____1075 then - let uu____1062 = prob_to_string env prob in - FStar_Util.print2 "Failed %s:\n%s\n" reason uu____1062 + let uu____1080 = prob_to_string env prob in + FStar_Util.print2 "Failed %s:\n%s\n" reason uu____1080 else ()); Failed (prob, reason) let (invert_rel : FStar_TypeChecker_Common.rel -> FStar_TypeChecker_Common.rel) = - fun uu___325_1073 -> - match uu___325_1073 with + fun uu___324_1091 -> + match uu___324_1091 with | FStar_TypeChecker_Common.EQ -> FStar_TypeChecker_Common.EQ | FStar_TypeChecker_Common.SUB -> FStar_TypeChecker_Common.SUBINV | FStar_TypeChecker_Common.SUBINV -> FStar_TypeChecker_Common.SUB let invert : - 'Auu____1079 . - 'Auu____1079 FStar_TypeChecker_Common.problem -> - 'Auu____1079 FStar_TypeChecker_Common.problem + 'Auu____1097 . + 'Auu____1097 FStar_TypeChecker_Common.problem -> + 'Auu____1097 FStar_TypeChecker_Common.problem = fun p -> - let uu___356_1091 = p in + let uu___355_1109 = p in { FStar_TypeChecker_Common.pid = - (uu___356_1091.FStar_TypeChecker_Common.pid); + (uu___355_1109.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = (p.FStar_TypeChecker_Common.rhs); FStar_TypeChecker_Common.relation = (invert_rel p.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = (p.FStar_TypeChecker_Common.lhs); FStar_TypeChecker_Common.element = - (uu___356_1091.FStar_TypeChecker_Common.element); + (uu___355_1109.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___356_1091.FStar_TypeChecker_Common.logical_guard); + (uu___355_1109.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___356_1091.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___355_1109.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___356_1091.FStar_TypeChecker_Common.reason); + (uu___355_1109.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___356_1091.FStar_TypeChecker_Common.loc); + (uu___355_1109.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___356_1091.FStar_TypeChecker_Common.rank) + (uu___355_1109.FStar_TypeChecker_Common.rank) } let maybe_invert : - 'Auu____1099 . - 'Auu____1099 FStar_TypeChecker_Common.problem -> - 'Auu____1099 FStar_TypeChecker_Common.problem + 'Auu____1117 . + 'Auu____1117 FStar_TypeChecker_Common.problem -> + 'Auu____1117 FStar_TypeChecker_Common.problem = fun p -> if p.FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.SUBINV @@ -513,8 +520,8 @@ let maybe_invert : let (maybe_invert_p : FStar_TypeChecker_Common.prob -> FStar_TypeChecker_Common.prob) = - fun uu___326_1119 -> - match uu___326_1119 with + fun uu___325_1137 -> + match uu___325_1137 with | FStar_TypeChecker_Common.TProb p -> FStar_All.pipe_right (maybe_invert p) (fun _0_1 -> FStar_TypeChecker_Common.TProb _0_1) @@ -524,87 +531,87 @@ let (maybe_invert_p : let (make_prob_eq : FStar_TypeChecker_Common.prob -> FStar_TypeChecker_Common.prob) = - fun uu___327_1135 -> - match uu___327_1135 with + fun uu___326_1153 -> + match uu___326_1153 with | FStar_TypeChecker_Common.TProb p -> FStar_TypeChecker_Common.TProb - (let uu___357_1141 = p in + (let uu___356_1159 = p in { FStar_TypeChecker_Common.pid = - (uu___357_1141.FStar_TypeChecker_Common.pid); + (uu___356_1159.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = - (uu___357_1141.FStar_TypeChecker_Common.lhs); + (uu___356_1159.FStar_TypeChecker_Common.lhs); FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ; FStar_TypeChecker_Common.rhs = - (uu___357_1141.FStar_TypeChecker_Common.rhs); + (uu___356_1159.FStar_TypeChecker_Common.rhs); FStar_TypeChecker_Common.element = - (uu___357_1141.FStar_TypeChecker_Common.element); + (uu___356_1159.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___357_1141.FStar_TypeChecker_Common.logical_guard); + (uu___356_1159.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___357_1141.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___356_1159.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___357_1141.FStar_TypeChecker_Common.reason); + (uu___356_1159.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___357_1141.FStar_TypeChecker_Common.loc); + (uu___356_1159.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___357_1141.FStar_TypeChecker_Common.rank) + (uu___356_1159.FStar_TypeChecker_Common.rank) }) | FStar_TypeChecker_Common.CProb p -> FStar_TypeChecker_Common.CProb - (let uu___358_1149 = p in + (let uu___357_1167 = p in { FStar_TypeChecker_Common.pid = - (uu___358_1149.FStar_TypeChecker_Common.pid); + (uu___357_1167.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = - (uu___358_1149.FStar_TypeChecker_Common.lhs); + (uu___357_1167.FStar_TypeChecker_Common.lhs); FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ; FStar_TypeChecker_Common.rhs = - (uu___358_1149.FStar_TypeChecker_Common.rhs); + (uu___357_1167.FStar_TypeChecker_Common.rhs); FStar_TypeChecker_Common.element = - (uu___358_1149.FStar_TypeChecker_Common.element); + (uu___357_1167.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___358_1149.FStar_TypeChecker_Common.logical_guard); + (uu___357_1167.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___358_1149.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___357_1167.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___358_1149.FStar_TypeChecker_Common.reason); + (uu___357_1167.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___358_1149.FStar_TypeChecker_Common.loc); + (uu___357_1167.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___358_1149.FStar_TypeChecker_Common.rank) + (uu___357_1167.FStar_TypeChecker_Common.rank) }) let (vary_rel : FStar_TypeChecker_Common.rel -> variance -> FStar_TypeChecker_Common.rel) = fun rel -> - fun uu___328_1162 -> - match uu___328_1162 with + fun uu___327_1180 -> + match uu___327_1180 with | INVARIANT -> FStar_TypeChecker_Common.EQ | CONTRAVARIANT -> invert_rel rel | COVARIANT -> rel let (p_pid : FStar_TypeChecker_Common.prob -> Prims.int) = - fun uu___329_1169 -> - match uu___329_1169 with + fun uu___328_1187 -> + match uu___328_1187 with | FStar_TypeChecker_Common.TProb p -> p.FStar_TypeChecker_Common.pid | FStar_TypeChecker_Common.CProb p -> p.FStar_TypeChecker_Common.pid let (p_rel : FStar_TypeChecker_Common.prob -> FStar_TypeChecker_Common.rel) = - fun uu___330_1182 -> - match uu___330_1182 with + fun uu___329_1200 -> + match uu___329_1200 with | FStar_TypeChecker_Common.TProb p -> p.FStar_TypeChecker_Common.relation | FStar_TypeChecker_Common.CProb p -> p.FStar_TypeChecker_Common.relation let (p_reason : FStar_TypeChecker_Common.prob -> Prims.string Prims.list) = - fun uu___331_1197 -> - match uu___331_1197 with + fun uu___330_1215 -> + match uu___330_1215 with | FStar_TypeChecker_Common.TProb p -> p.FStar_TypeChecker_Common.reason | FStar_TypeChecker_Common.CProb p -> p.FStar_TypeChecker_Common.reason let (p_loc : FStar_TypeChecker_Common.prob -> FStar_Range.range) = - fun uu___332_1212 -> - match uu___332_1212 with + fun uu___331_1230 -> + match uu___331_1230 with | FStar_TypeChecker_Common.TProb p -> p.FStar_TypeChecker_Common.loc | FStar_TypeChecker_Common.CProb p -> p.FStar_TypeChecker_Common.loc @@ -612,14 +619,14 @@ let (p_element : FStar_TypeChecker_Common.prob -> FStar_Syntax_Syntax.bv FStar_Pervasives_Native.option) = - fun uu___333_1226 -> - match uu___333_1226 with + fun uu___332_1244 -> + match uu___332_1244 with | FStar_TypeChecker_Common.TProb p -> p.FStar_TypeChecker_Common.element | FStar_TypeChecker_Common.CProb p -> p.FStar_TypeChecker_Common.element let (p_guard : FStar_TypeChecker_Common.prob -> FStar_Syntax_Syntax.term) = - fun uu___334_1240 -> - match uu___334_1240 with + fun uu___333_1258 -> + match uu___333_1258 with | FStar_TypeChecker_Common.TProb p -> p.FStar_TypeChecker_Common.logical_guard | FStar_TypeChecker_Common.CProb p -> @@ -627,33 +634,33 @@ let (p_guard : FStar_TypeChecker_Common.prob -> FStar_Syntax_Syntax.term) = let (p_guard_uvar : FStar_TypeChecker_Common.prob -> FStar_Syntax_Syntax.ctx_uvar) = - fun uu___335_1252 -> - match uu___335_1252 with + fun uu___334_1270 -> + match uu___334_1270 with | FStar_TypeChecker_Common.TProb p -> p.FStar_TypeChecker_Common.logical_guard_uvar | FStar_TypeChecker_Common.CProb p -> p.FStar_TypeChecker_Common.logical_guard_uvar let def_scope_wf : - 'Auu____1268 . + 'Auu____1286 . Prims.string -> FStar_Range.range -> - (FStar_Syntax_Syntax.bv,'Auu____1268) FStar_Pervasives_Native.tuple2 + (FStar_Syntax_Syntax.bv,'Auu____1286) FStar_Pervasives_Native.tuple2 Prims.list -> unit = fun msg -> fun rng -> fun r -> - let uu____1298 = - let uu____1300 = FStar_Options.defensive () in - Prims.op_Negation uu____1300 in - if uu____1298 + let uu____1316 = + let uu____1318 = FStar_Options.defensive () in + Prims.op_Negation uu____1318 in + if uu____1316 then () else (let rec aux prev next = match next with | [] -> () - | (bv,uu____1337)::bs -> + | (bv,uu____1355)::bs -> (FStar_TypeChecker_Env.def_check_closed_in rng msg prev bv.FStar_Syntax_Syntax.sort; aux (FStar_List.append prev [bv]) bs) @@ -670,27 +677,27 @@ let (p_scope : let r = match prob with | FStar_TypeChecker_Common.TProb p -> - let uu____1384 = + let uu____1402 = match p_element prob with | FStar_Pervasives_Native.None -> [] | FStar_Pervasives_Native.Some x -> - let uu____1408 = FStar_Syntax_Syntax.mk_binder x in - [uu____1408] + let uu____1426 = FStar_Syntax_Syntax.mk_binder x in + [uu____1426] in FStar_List.append (p.FStar_TypeChecker_Common.logical_guard_uvar).FStar_Syntax_Syntax.ctx_uvar_binders - uu____1384 + uu____1402 | FStar_TypeChecker_Common.CProb p -> - let uu____1436 = + let uu____1454 = match p_element prob with | FStar_Pervasives_Native.None -> [] | FStar_Pervasives_Native.Some x -> - let uu____1460 = FStar_Syntax_Syntax.mk_binder x in - [uu____1460] + let uu____1478 = FStar_Syntax_Syntax.mk_binder x in + [uu____1478] in FStar_List.append (p.FStar_TypeChecker_Common.logical_guard_uvar).FStar_Syntax_Syntax.ctx_uvar_binders - uu____1436 + uu____1454 in def_scope_wf "p_scope" (p_loc prob) r; r @@ -701,19 +708,19 @@ let (def_check_scoped : fun msg -> fun prob -> fun phi -> - let uu____1507 = - let uu____1509 = FStar_Options.defensive () in - Prims.op_Negation uu____1509 in - if uu____1507 + let uu____1525 = + let uu____1527 = FStar_Options.defensive () in + Prims.op_Negation uu____1527 in + if uu____1525 then () else - (let uu____1514 = - let uu____1517 = p_scope prob in + (let uu____1532 = + let uu____1535 = p_scope prob in FStar_All.pipe_left (FStar_List.map FStar_Pervasives_Native.fst) - uu____1517 + uu____1535 in FStar_TypeChecker_Env.def_check_closed_in (p_loc prob) msg - uu____1514 phi) + uu____1532 phi) let (def_check_scoped_comp : Prims.string -> @@ -723,51 +730,51 @@ let (def_check_scoped_comp : fun msg -> fun prob -> fun comp -> - let uu____1566 = - let uu____1568 = FStar_Options.defensive () in - Prims.op_Negation uu____1568 in - if uu____1566 + let uu____1584 = + let uu____1586 = FStar_Options.defensive () in + Prims.op_Negation uu____1586 in + if uu____1584 then () else - (let uu____1573 = FStar_Syntax_Util.arrow [] comp in - def_check_scoped msg prob uu____1573) + (let uu____1591 = FStar_Syntax_Util.arrow [] comp in + def_check_scoped msg prob uu____1591) let (def_check_prob : Prims.string -> FStar_TypeChecker_Common.prob -> unit) = fun msg -> fun prob -> - let uu____1593 = - let uu____1595 = FStar_Options.defensive () in - Prims.op_Negation uu____1595 in - if uu____1593 + let uu____1611 = + let uu____1613 = FStar_Options.defensive () in + Prims.op_Negation uu____1613 in + if uu____1611 then () else (let msgf m = - let uu____1609 = - let uu____1611 = - let uu____1613 = FStar_Util.string_of_int (p_pid prob) in - Prims.strcat uu____1613 (Prims.strcat "." m) in - Prims.strcat "." uu____1611 in - Prims.strcat msg uu____1609 in - (let uu____1618 = msgf "scope" in - let uu____1621 = p_scope prob in - def_scope_wf uu____1618 (p_loc prob) uu____1621); - (let uu____1633 = msgf "guard" in - def_check_scoped uu____1633 prob (p_guard prob)); + let uu____1627 = + let uu____1629 = + let uu____1631 = FStar_Util.string_of_int (p_pid prob) in + Prims.strcat uu____1631 (Prims.strcat "." m) in + Prims.strcat "." uu____1629 in + Prims.strcat msg uu____1627 in + (let uu____1636 = msgf "scope" in + let uu____1639 = p_scope prob in + def_scope_wf uu____1636 (p_loc prob) uu____1639); + (let uu____1651 = msgf "guard" in + def_check_scoped uu____1651 prob (p_guard prob)); (match prob with | FStar_TypeChecker_Common.TProb p -> - ((let uu____1640 = msgf "lhs" in - def_check_scoped uu____1640 prob + ((let uu____1658 = msgf "lhs" in + def_check_scoped uu____1658 prob p.FStar_TypeChecker_Common.lhs); - (let uu____1643 = msgf "rhs" in - def_check_scoped uu____1643 prob + (let uu____1661 = msgf "rhs" in + def_check_scoped uu____1661 prob p.FStar_TypeChecker_Common.rhs)) | FStar_TypeChecker_Common.CProb p -> - ((let uu____1650 = msgf "lhs" in - def_check_scoped_comp uu____1650 prob + ((let uu____1668 = msgf "lhs" in + def_check_scoped_comp uu____1668 prob p.FStar_TypeChecker_Common.lhs); - (let uu____1653 = msgf "rhs" in - def_check_scoped_comp uu____1653 prob + (let uu____1671 = msgf "rhs" in + def_check_scoped_comp uu____1671 prob p.FStar_TypeChecker_Common.rhs)))) let (singleton : @@ -775,37 +782,37 @@ let (singleton : fun wl -> fun prob -> fun smt_ok -> - let uu___359_1674 = wl in + let uu___358_1692 = wl in { attempting = [prob]; - wl_deferred = (uu___359_1674.wl_deferred); - ctr = (uu___359_1674.ctr); - defer_ok = (uu___359_1674.defer_ok); + wl_deferred = (uu___358_1692.wl_deferred); + ctr = (uu___358_1692.ctr); + defer_ok = (uu___358_1692.defer_ok); smt_ok; - umax_heuristic_ok = (uu___359_1674.umax_heuristic_ok); - tcenv = (uu___359_1674.tcenv); - wl_implicits = (uu___359_1674.wl_implicits) + umax_heuristic_ok = (uu___358_1692.umax_heuristic_ok); + tcenv = (uu___358_1692.tcenv); + wl_implicits = (uu___358_1692.wl_implicits) } let wl_of_guard : - 'Auu____1682 . + 'Auu____1700 . FStar_TypeChecker_Env.env -> - ('Auu____1682,FStar_TypeChecker_Common.prob) + ('Auu____1700,FStar_TypeChecker_Common.prob) FStar_Pervasives_Native.tuple2 Prims.list -> worklist = fun env -> fun g -> - let uu___360_1705 = empty_worklist env in - let uu____1706 = FStar_List.map FStar_Pervasives_Native.snd g in + let uu___359_1723 = empty_worklist env in + let uu____1724 = FStar_List.map FStar_Pervasives_Native.snd g in { - attempting = uu____1706; - wl_deferred = (uu___360_1705.wl_deferred); - ctr = (uu___360_1705.ctr); - defer_ok = (uu___360_1705.defer_ok); - smt_ok = (uu___360_1705.smt_ok); - umax_heuristic_ok = (uu___360_1705.umax_heuristic_ok); - tcenv = (uu___360_1705.tcenv); - wl_implicits = (uu___360_1705.wl_implicits) + attempting = uu____1724; + wl_deferred = (uu___359_1723.wl_deferred); + ctr = (uu___359_1723.ctr); + defer_ok = (uu___359_1723.defer_ok); + smt_ok = (uu___359_1723.smt_ok); + umax_heuristic_ok = (uu___359_1723.umax_heuristic_ok); + tcenv = (uu___359_1723.tcenv); + wl_implicits = (uu___359_1723.wl_implicits) } let (defer : @@ -813,16 +820,16 @@ let (defer : fun reason -> fun prob -> fun wl -> - let uu___361_1729 = wl in + let uu___360_1747 = wl in { - attempting = (uu___361_1729.attempting); + attempting = (uu___360_1747.attempting); wl_deferred = (((wl.ctr), reason, prob) :: (wl.wl_deferred)); - ctr = (uu___361_1729.ctr); - defer_ok = (uu___361_1729.defer_ok); - smt_ok = (uu___361_1729.smt_ok); - umax_heuristic_ok = (uu___361_1729.umax_heuristic_ok); - tcenv = (uu___361_1729.tcenv); - wl_implicits = (uu___361_1729.wl_implicits) + ctr = (uu___360_1747.ctr); + defer_ok = (uu___360_1747.defer_ok); + smt_ok = (uu___360_1747.smt_ok); + umax_heuristic_ok = (uu___360_1747.umax_heuristic_ok); + tcenv = (uu___360_1747.tcenv); + wl_implicits = (uu___360_1747.wl_implicits) } let (attempt : @@ -830,23 +837,23 @@ let (attempt : fun probs -> fun wl -> FStar_List.iter (def_check_prob "attempt") probs; - (let uu___362_1757 = wl in + (let uu___361_1775 = wl in { attempting = (FStar_List.append probs wl.attempting); - wl_deferred = (uu___362_1757.wl_deferred); - ctr = (uu___362_1757.ctr); - defer_ok = (uu___362_1757.defer_ok); - smt_ok = (uu___362_1757.smt_ok); - umax_heuristic_ok = (uu___362_1757.umax_heuristic_ok); - tcenv = (uu___362_1757.tcenv); - wl_implicits = (uu___362_1757.wl_implicits) + wl_deferred = (uu___361_1775.wl_deferred); + ctr = (uu___361_1775.ctr); + defer_ok = (uu___361_1775.defer_ok); + smt_ok = (uu___361_1775.smt_ok); + umax_heuristic_ok = (uu___361_1775.umax_heuristic_ok); + tcenv = (uu___361_1775.tcenv); + wl_implicits = (uu___361_1775.wl_implicits) }) let mk_eq2 : - 'Auu____1771 . + 'Auu____1789 . worklist -> FStar_TypeChecker_Env.env -> - 'Auu____1771 -> + 'Auu____1789 -> FStar_Syntax_Syntax.term' FStar_Syntax_Syntax.syntax -> FStar_Syntax_Syntax.term -> (FStar_Syntax_Syntax.term,worklist) @@ -857,24 +864,25 @@ let mk_eq2 : fun prob -> fun t1 -> fun t2 -> - let uu____1805 = FStar_Syntax_Util.type_u () in - match uu____1805 with + let uu____1823 = FStar_Syntax_Util.type_u () in + match uu____1823 with | (t_type,u) -> let binders = FStar_TypeChecker_Env.all_binders env in - let uu____1817 = + let uu____1835 = new_uvar "eq2" wl t1.FStar_Syntax_Syntax.pos env.FStar_TypeChecker_Env.gamma binders t_type FStar_Syntax_Syntax.Allow_unresolved + FStar_Pervasives_Native.None in - (match uu____1817 with - | (uu____1829,tt,wl1) -> - let uu____1832 = FStar_Syntax_Util.mk_eq2 u tt t1 t2 in - (uu____1832, wl1)) + (match uu____1835 with + | (uu____1853,tt,wl1) -> + let uu____1856 = FStar_Syntax_Util.mk_eq2 u tt t1 t2 in + (uu____1856, wl1)) let (p_invert : FStar_TypeChecker_Common.prob -> FStar_TypeChecker_Common.prob) = - fun uu___336_1838 -> - match uu___336_1838 with + fun uu___335_1862 -> + match uu___335_1862 with | FStar_TypeChecker_Common.TProb p -> FStar_All.pipe_left (fun _0_3 -> FStar_TypeChecker_Common.TProb _0_3) (invert p) @@ -884,25 +892,25 @@ let (p_invert : let (is_top_level_prob : FStar_TypeChecker_Common.prob -> Prims.bool) = fun p -> - let uu____1856 = FStar_All.pipe_right (p_reason p) FStar_List.length in - uu____1856 = (Prims.parse_int "1") + let uu____1880 = FStar_All.pipe_right (p_reason p) FStar_List.length in + uu____1880 = (Prims.parse_int "1") let (next_pid : unit -> Prims.int) = let ctr = FStar_Util.mk_ref (Prims.parse_int "0") in - fun uu____1876 -> FStar_Util.incr ctr; FStar_ST.op_Bang ctr + fun uu____1900 -> FStar_Util.incr ctr; FStar_ST.op_Bang ctr let mk_problem : - 'Auu____1973 . + 'Auu____1997 . worklist -> (FStar_Syntax_Syntax.bv,FStar_Syntax_Syntax.arg_qualifier FStar_Pervasives_Native.option) FStar_Pervasives_Native.tuple2 Prims.list -> FStar_TypeChecker_Common.prob -> - 'Auu____1973 -> + 'Auu____1997 -> FStar_TypeChecker_Common.rel -> - 'Auu____1973 -> + 'Auu____1997 -> FStar_Syntax_Syntax.bv FStar_Pervasives_Native.option -> Prims.string -> - ('Auu____1973 FStar_TypeChecker_Common.problem,worklist) + ('Auu____1997 FStar_TypeChecker_Common.problem,worklist) FStar_Pervasives_Native.tuple2 = fun wl -> @@ -917,11 +925,11 @@ let mk_problem : match elt with | FStar_Pervasives_Native.None -> scope | FStar_Pervasives_Native.Some x -> - let uu____2060 = - let uu____2069 = FStar_Syntax_Syntax.mk_binder x + let uu____2084 = + let uu____2093 = FStar_Syntax_Syntax.mk_binder x in - [uu____2069] in - FStar_List.append scope uu____2060 + [uu____2093] in + FStar_List.append scope uu____2084 in let bs = FStar_List.append @@ -929,30 +937,31 @@ let mk_problem : scope1 in let gamma = - let uu____2112 = - let uu____2115 = + let uu____2136 = + let uu____2139 = FStar_List.map (fun b -> FStar_Syntax_Syntax.Binding_var (FStar_Pervasives_Native.fst b)) scope1 in - FStar_List.rev uu____2115 in - FStar_List.append uu____2112 + FStar_List.rev uu____2139 in + FStar_List.append uu____2136 (p_guard_uvar orig).FStar_Syntax_Syntax.ctx_uvar_gamma in - let uu____2134 = + let uu____2158 = new_uvar (Prims.strcat "mk_problem: logical guard for " reason) wl FStar_Range.dummyRange gamma bs FStar_Syntax_Util.ktype0 FStar_Syntax_Syntax.Allow_untyped + FStar_Pervasives_Native.None in - match uu____2134 with + match uu____2158 with | (ctx_uvar,lg,wl1) -> let prob = - let uu____2154 = next_pid () in + let uu____2184 = next_pid () in { - FStar_TypeChecker_Common.pid = uu____2154; + FStar_TypeChecker_Common.pid = uu____2184; FStar_TypeChecker_Common.lhs = lhs; FStar_TypeChecker_Common.relation = rel; FStar_TypeChecker_Common.rhs = rhs; @@ -991,9 +1000,9 @@ let (mk_t_problem : fun elt -> fun reason -> def_check_prob (Prims.strcat reason ".mk_t.arg") orig; - (let uu____2228 = + (let uu____2258 = mk_problem wl scope orig lhs rel rhs elt reason in - match uu____2228 with + match uu____2258 with | (p,wl1) -> (def_check_prob (Prims.strcat reason ".mk_t") (FStar_TypeChecker_Common.TProb p); @@ -1022,25 +1031,25 @@ let (mk_c_problem : fun elt -> fun reason -> def_check_prob (Prims.strcat reason ".mk_c.arg") orig; - (let uu____2316 = + (let uu____2346 = mk_problem wl scope orig lhs rel rhs elt reason in - match uu____2316 with + match uu____2346 with | (p,wl1) -> (def_check_prob (Prims.strcat reason ".mk_c") (FStar_TypeChecker_Common.CProb p); ((FStar_TypeChecker_Common.CProb p), wl1))) let new_problem : - 'Auu____2354 . + 'Auu____2384 . worklist -> FStar_TypeChecker_Env.env -> - 'Auu____2354 -> + 'Auu____2384 -> FStar_TypeChecker_Common.rel -> - 'Auu____2354 -> + 'Auu____2384 -> FStar_Syntax_Syntax.bv FStar_Pervasives_Native.option -> FStar_Range.range -> Prims.string -> - ('Auu____2354 FStar_TypeChecker_Common.problem,worklist) + ('Auu____2384 FStar_TypeChecker_Common.problem,worklist) FStar_Pervasives_Native.tuple2 = fun wl -> @@ -1057,56 +1066,57 @@ let new_problem : FStar_Syntax_Util.ktype0 | FStar_Pervasives_Native.Some x -> let bs = - let uu____2422 = FStar_Syntax_Syntax.mk_binder x + let uu____2452 = FStar_Syntax_Syntax.mk_binder x in - [uu____2422] in - let uu____2441 = + [uu____2452] in + let uu____2471 = FStar_Syntax_Syntax.mk_Total FStar_Syntax_Util.ktype0 in - FStar_Syntax_Util.arrow bs uu____2441 + FStar_Syntax_Util.arrow bs uu____2471 in - let uu____2444 = - let uu____2451 = FStar_TypeChecker_Env.all_binders env + let uu____2474 = + let uu____2481 = FStar_TypeChecker_Env.all_binders env in new_uvar (Prims.strcat "new_problem: logical guard for " reason) - (let uu___363_2462 = wl in + (let uu___362_2492 = wl in { - attempting = (uu___363_2462.attempting); - wl_deferred = (uu___363_2462.wl_deferred); - ctr = (uu___363_2462.ctr); - defer_ok = (uu___363_2462.defer_ok); - smt_ok = (uu___363_2462.smt_ok); + attempting = (uu___362_2492.attempting); + wl_deferred = (uu___362_2492.wl_deferred); + ctr = (uu___362_2492.ctr); + defer_ok = (uu___362_2492.defer_ok); + smt_ok = (uu___362_2492.smt_ok); umax_heuristic_ok = - (uu___363_2462.umax_heuristic_ok); + (uu___362_2492.umax_heuristic_ok); tcenv = env; - wl_implicits = (uu___363_2462.wl_implicits) - }) loc env.FStar_TypeChecker_Env.gamma uu____2451 + wl_implicits = (uu___362_2492.wl_implicits) + }) loc env.FStar_TypeChecker_Env.gamma uu____2481 lg_ty FStar_Syntax_Syntax.Allow_untyped + FStar_Pervasives_Native.None in - match uu____2444 with + match uu____2474 with | (ctx_uvar,lg,wl1) -> let lg1 = match subject with | FStar_Pervasives_Native.None -> lg | FStar_Pervasives_Native.Some x -> - let uu____2474 = - let uu____2479 = - let uu____2480 = - let uu____2489 = + let uu____2510 = + let uu____2515 = + let uu____2516 = + let uu____2525 = FStar_Syntax_Syntax.bv_to_name x in FStar_All.pipe_left - FStar_Syntax_Syntax.as_arg uu____2489 + FStar_Syntax_Syntax.as_arg uu____2525 in - [uu____2480] in - FStar_Syntax_Syntax.mk_Tm_app lg uu____2479 in - uu____2474 FStar_Pervasives_Native.None loc + [uu____2516] in + FStar_Syntax_Syntax.mk_Tm_app lg uu____2515 in + uu____2510 FStar_Pervasives_Native.None loc in let prob = - let uu____2519 = next_pid () in + let uu____2555 = next_pid () in { - FStar_TypeChecker_Common.pid = uu____2519; + FStar_TypeChecker_Common.pid = uu____2555; FStar_TypeChecker_Common.lhs = lhs; FStar_TypeChecker_Common.relation = rel; FStar_TypeChecker_Common.rhs = rhs; @@ -1137,9 +1147,9 @@ let (problem_using_guard : fun elt -> fun reason -> let p = - let uu____2567 = next_pid () in + let uu____2603 = next_pid () in { - FStar_TypeChecker_Common.pid = uu____2567; + FStar_TypeChecker_Common.pid = uu____2603; FStar_TypeChecker_Common.lhs = lhs; FStar_TypeChecker_Common.relation = rel; FStar_TypeChecker_Common.rhs = rhs; @@ -1156,9 +1166,9 @@ let (problem_using_guard : def_check_prob reason (FStar_TypeChecker_Common.TProb p); p let guard_on_element : - 'Auu____2582 . + 'Auu____2618 . worklist -> - 'Auu____2582 FStar_TypeChecker_Common.problem -> + 'Auu____2618 FStar_TypeChecker_Common.problem -> FStar_Syntax_Syntax.bv -> FStar_Syntax_Syntax.term' FStar_Syntax_Syntax.syntax -> FStar_Syntax_Syntax.term' FStar_Syntax_Syntax.syntax @@ -1175,14 +1185,14 @@ let guard_on_element : in FStar_Syntax_Util.mk_forall u x phi | FStar_Pervasives_Native.Some e -> - let uu____2615 = - let uu____2618 = - let uu____2619 = - let uu____2626 = FStar_Syntax_Syntax.bv_to_name e in - (x, uu____2626) in - FStar_Syntax_Syntax.NT uu____2619 in - [uu____2618] in - FStar_Syntax_Subst.subst uu____2615 phi + let uu____2651 = + let uu____2654 = + let uu____2655 = + let uu____2662 = FStar_Syntax_Syntax.bv_to_name e in + (x, uu____2662) in + FStar_Syntax_Syntax.NT uu____2655 in + [uu____2654] in + FStar_Syntax_Subst.subst uu____2651 phi let (explain : FStar_TypeChecker_Env.env -> @@ -1191,55 +1201,55 @@ let (explain : fun env -> fun d -> fun s -> - let uu____2650 = + let uu____2686 = (FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "ExplainRel")) || (FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel")) in - if uu____2650 + if uu____2686 then - let uu____2658 = + let uu____2694 = FStar_All.pipe_left FStar_Range.string_of_range (p_loc d) in - let uu____2661 = prob_to_string env d in - let uu____2663 = + let uu____2697 = prob_to_string env d in + let uu____2699 = FStar_All.pipe_right (p_reason d) (FStar_String.concat "\n\t>") in FStar_Util.format4 "(%s) Failed to solve the sub-problem\n%s\nWhich arose because:\n\t%s\nFailed because:%s\n" - uu____2658 uu____2661 uu____2663 s + uu____2694 uu____2697 uu____2699 s else (let d1 = maybe_invert_p d in let rel = match p_rel d1 with | FStar_TypeChecker_Common.EQ -> "equal to" | FStar_TypeChecker_Common.SUB -> "a subtype of" - | uu____2679 -> failwith "impossible" in - let uu____2682 = + | uu____2715 -> failwith "impossible" in + let uu____2718 = match d1 with | FStar_TypeChecker_Common.TProb tp -> - let uu____2698 = + let uu____2734 = FStar_TypeChecker_Normalize.term_to_string env tp.FStar_TypeChecker_Common.lhs in - let uu____2700 = + let uu____2736 = FStar_TypeChecker_Normalize.term_to_string env tp.FStar_TypeChecker_Common.rhs in - (uu____2698, uu____2700) + (uu____2734, uu____2736) | FStar_TypeChecker_Common.CProb cp -> - let uu____2707 = + let uu____2743 = FStar_TypeChecker_Normalize.comp_to_string env cp.FStar_TypeChecker_Common.lhs in - let uu____2709 = + let uu____2745 = FStar_TypeChecker_Normalize.comp_to_string env cp.FStar_TypeChecker_Common.rhs in - (uu____2707, uu____2709) + (uu____2743, uu____2745) in - match uu____2682 with + match uu____2718 with | (lhs,rhs) -> FStar_Util.format3 "%s is not %s the expected type %s" lhs rel rhs) @@ -1248,20 +1258,20 @@ let (commit : uvi Prims.list -> unit) = fun uvis -> FStar_All.pipe_right uvis (FStar_List.iter - (fun uu___337_2737 -> - match uu___337_2737 with + (fun uu___336_2773 -> + match uu___336_2773 with | UNIV (u,t) -> (match t with | FStar_Syntax_Syntax.U_unif u' -> FStar_Syntax_Unionfind.univ_union u u' - | uu____2749 -> FStar_Syntax_Unionfind.univ_change u t) + | uu____2785 -> FStar_Syntax_Unionfind.univ_change u t) | TERM (u,t) -> - ((let uu____2753 = + ((let uu____2789 = FStar_List.map FStar_Pervasives_Native.fst u.FStar_Syntax_Syntax.ctx_uvar_binders in FStar_TypeChecker_Env.def_check_closed_in - t.FStar_Syntax_Syntax.pos "commit" uu____2753 t); + t.FStar_Syntax_Syntax.pos "commit" uu____2789 t); FStar_Syntax_Util.set_uvar u.FStar_Syntax_Syntax.ctx_uvar_head t))) @@ -1272,15 +1282,15 @@ let (find_term_uvar : fun uv -> fun s -> FStar_Util.find_map s - (fun uu___338_2784 -> - match uu___338_2784 with - | UNIV uu____2787 -> FStar_Pervasives_Native.None + (fun uu___337_2820 -> + match uu___337_2820 with + | UNIV uu____2823 -> FStar_Pervasives_Native.None | TERM (u,t) -> - let uu____2794 = + let uu____2830 = FStar_Syntax_Unionfind.equiv uv u.FStar_Syntax_Syntax.ctx_uvar_head in - if uu____2794 + if uu____2830 then FStar_Pervasives_Native.Some t else FStar_Pervasives_Native.None) @@ -1292,14 +1302,14 @@ let (find_univ_uvar : fun u -> fun s -> FStar_Util.find_map s - (fun uu___339_2822 -> - match uu___339_2822 with + (fun uu___338_2858 -> + match uu___338_2858 with | UNIV (u',t) -> - let uu____2827 = FStar_Syntax_Unionfind.univ_equiv u u' in - if uu____2827 + let uu____2863 = FStar_Syntax_Unionfind.univ_equiv u u' in + if uu____2863 then FStar_Pervasives_Native.Some t else FStar_Pervasives_Native.None - | uu____2834 -> FStar_Pervasives_Native.None) + | uu____2870 -> FStar_Pervasives_Native.None) let (whnf : FStar_TypeChecker_Env.env -> @@ -1307,16 +1317,16 @@ let (whnf : = fun env -> fun t -> - let uu____2846 = - let uu____2847 = - let uu____2848 = FStar_Syntax_Util.unmeta t in + let uu____2882 = + let uu____2883 = + let uu____2884 = FStar_Syntax_Util.unmeta t in FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.Beta; FStar_TypeChecker_Env.Weak; - FStar_TypeChecker_Env.HNF] env uu____2848 + FStar_TypeChecker_Env.HNF] env uu____2884 in - FStar_Syntax_Subst.compress uu____2847 in - FStar_All.pipe_right uu____2846 FStar_Syntax_Util.unlazy_emb + FStar_Syntax_Subst.compress uu____2883 in + FStar_All.pipe_right uu____2882 FStar_Syntax_Util.unlazy_emb let (sn : FStar_TypeChecker_Env.env -> @@ -1324,26 +1334,26 @@ let (sn : = fun env -> fun t -> - let uu____2860 = - let uu____2861 = + let uu____2896 = + let uu____2897 = FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.Beta] env t in - FStar_Syntax_Subst.compress uu____2861 in - FStar_All.pipe_right uu____2860 FStar_Syntax_Util.unlazy_emb + FStar_Syntax_Subst.compress uu____2897 in + FStar_All.pipe_right uu____2896 FStar_Syntax_Util.unlazy_emb let norm_arg : - 'Auu____2869 . + 'Auu____2905 . FStar_TypeChecker_Env.env -> - (FStar_Syntax_Syntax.term,'Auu____2869) FStar_Pervasives_Native.tuple2 + (FStar_Syntax_Syntax.term,'Auu____2905) FStar_Pervasives_Native.tuple2 -> - (FStar_Syntax_Syntax.term,'Auu____2869) + (FStar_Syntax_Syntax.term,'Auu____2905) FStar_Pervasives_Native.tuple2 = fun env -> fun t -> - let uu____2892 = sn env (FStar_Pervasives_Native.fst t) in - (uu____2892, (FStar_Pervasives_Native.snd t)) + let uu____2928 = sn env (FStar_Pervasives_Native.fst t) in + (uu____2928, (FStar_Pervasives_Native.snd t)) let (sn_binders : FStar_TypeChecker_Env.env -> @@ -1356,20 +1366,20 @@ let (sn_binders : fun binders -> FStar_All.pipe_right binders (FStar_List.map - (fun uu____2944 -> - match uu____2944 with + (fun uu____2980 -> + match uu____2980 with | (x,imp) -> - let uu____2963 = - let uu___364_2964 = x in - let uu____2965 = sn env x.FStar_Syntax_Syntax.sort in + let uu____2999 = + let uu___363_3000 = x in + let uu____3001 = sn env x.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___364_2964.FStar_Syntax_Syntax.ppname); + (uu___363_3000.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___364_2964.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____2965 + (uu___363_3000.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____3001 } in - (uu____2963, imp))) + (uu____2999, imp))) let (norm_univ : worklist -> FStar_Syntax_Syntax.universe -> FStar_Syntax_Syntax.universe) = @@ -1379,13 +1389,13 @@ let (norm_univ : let u2 = FStar_Syntax_Subst.compress_univ u1 in match u2 with | FStar_Syntax_Syntax.U_succ u3 -> - let uu____2989 = aux u3 in FStar_Syntax_Syntax.U_succ uu____2989 + let uu____3025 = aux u3 in FStar_Syntax_Syntax.U_succ uu____3025 | FStar_Syntax_Syntax.U_max us -> - let uu____2993 = FStar_List.map aux us in - FStar_Syntax_Syntax.U_max uu____2993 - | uu____2996 -> u2 in - let uu____2997 = aux u in - FStar_TypeChecker_Normalize.normalize_universe wl.tcenv uu____2997 + let uu____3029 = FStar_List.map aux us in + FStar_Syntax_Syntax.U_max uu____3029 + | uu____3032 -> u2 in + let uu____3033 = aux u in + FStar_TypeChecker_Normalize.normalize_universe wl.tcenv uu____3033 let (base_and_refinement_maybe_delta : Prims.bool -> @@ -1418,114 +1428,114 @@ let (base_and_refinement_maybe_delta : ((x.FStar_Syntax_Syntax.sort), (FStar_Pervasives_Native.Some (x, phi))) else - (let uu____3118 = norm_refinement env t12 in - match uu____3118 with + (let uu____3154 = norm_refinement env t12 in + match uu____3154 with | { FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_refine (x1,phi1); - FStar_Syntax_Syntax.pos = uu____3133; - FStar_Syntax_Syntax.vars = uu____3134;_} -> + FStar_Syntax_Syntax.pos = uu____3169; + FStar_Syntax_Syntax.vars = uu____3170;_} -> ((x1.FStar_Syntax_Syntax.sort), (FStar_Pervasives_Native.Some (x1, phi1))) | tt -> - let uu____3158 = - let uu____3160 = FStar_Syntax_Print.term_to_string tt + let uu____3194 = + let uu____3196 = FStar_Syntax_Print.term_to_string tt in - let uu____3162 = FStar_Syntax_Print.tag_of_term tt in + let uu____3198 = FStar_Syntax_Print.tag_of_term tt in FStar_Util.format2 "impossible: Got %s ... %s\n" - uu____3160 uu____3162 + uu____3196 uu____3198 in - failwith uu____3158) + failwith uu____3194) | FStar_Syntax_Syntax.Tm_lazy i -> - let uu____3178 = FStar_Syntax_Util.unfold_lazy i in - aux norm1 uu____3178 - | FStar_Syntax_Syntax.Tm_uinst uu____3179 -> + let uu____3214 = FStar_Syntax_Util.unfold_lazy i in + aux norm1 uu____3214 + | FStar_Syntax_Syntax.Tm_uinst uu____3215 -> if norm1 then (t12, FStar_Pervasives_Native.None) else (let t1' = norm_refinement env t12 in - let uu____3216 = - let uu____3217 = FStar_Syntax_Subst.compress t1' in - uu____3217.FStar_Syntax_Syntax.n in - match uu____3216 with - | FStar_Syntax_Syntax.Tm_refine uu____3232 -> aux true t1' - | uu____3240 -> (t12, FStar_Pervasives_Native.None)) - | FStar_Syntax_Syntax.Tm_fvar uu____3255 -> + let uu____3252 = + let uu____3253 = FStar_Syntax_Subst.compress t1' in + uu____3253.FStar_Syntax_Syntax.n in + match uu____3252 with + | FStar_Syntax_Syntax.Tm_refine uu____3268 -> aux true t1' + | uu____3276 -> (t12, FStar_Pervasives_Native.None)) + | FStar_Syntax_Syntax.Tm_fvar uu____3291 -> if norm1 then (t12, FStar_Pervasives_Native.None) else (let t1' = norm_refinement env t12 in - let uu____3286 = - let uu____3287 = FStar_Syntax_Subst.compress t1' in - uu____3287.FStar_Syntax_Syntax.n in - match uu____3286 with - | FStar_Syntax_Syntax.Tm_refine uu____3302 -> aux true t1' - | uu____3310 -> (t12, FStar_Pervasives_Native.None)) - | FStar_Syntax_Syntax.Tm_app uu____3325 -> + let uu____3322 = + let uu____3323 = FStar_Syntax_Subst.compress t1' in + uu____3323.FStar_Syntax_Syntax.n in + match uu____3322 with + | FStar_Syntax_Syntax.Tm_refine uu____3338 -> aux true t1' + | uu____3346 -> (t12, FStar_Pervasives_Native.None)) + | FStar_Syntax_Syntax.Tm_app uu____3361 -> if norm1 then (t12, FStar_Pervasives_Native.None) else (let t1' = norm_refinement env t12 in - let uu____3372 = - let uu____3373 = FStar_Syntax_Subst.compress t1' in - uu____3373.FStar_Syntax_Syntax.n in - match uu____3372 with - | FStar_Syntax_Syntax.Tm_refine uu____3388 -> aux true t1' - | uu____3396 -> (t12, FStar_Pervasives_Native.None)) - | FStar_Syntax_Syntax.Tm_type uu____3411 -> + let uu____3408 = + let uu____3409 = FStar_Syntax_Subst.compress t1' in + uu____3409.FStar_Syntax_Syntax.n in + match uu____3408 with + | FStar_Syntax_Syntax.Tm_refine uu____3424 -> aux true t1' + | uu____3432 -> (t12, FStar_Pervasives_Native.None)) + | FStar_Syntax_Syntax.Tm_type uu____3447 -> (t12, FStar_Pervasives_Native.None) - | FStar_Syntax_Syntax.Tm_constant uu____3426 -> + | FStar_Syntax_Syntax.Tm_constant uu____3462 -> (t12, FStar_Pervasives_Native.None) - | FStar_Syntax_Syntax.Tm_name uu____3441 -> + | FStar_Syntax_Syntax.Tm_name uu____3477 -> (t12, FStar_Pervasives_Native.None) - | FStar_Syntax_Syntax.Tm_bvar uu____3456 -> + | FStar_Syntax_Syntax.Tm_bvar uu____3492 -> (t12, FStar_Pervasives_Native.None) - | FStar_Syntax_Syntax.Tm_arrow uu____3471 -> + | FStar_Syntax_Syntax.Tm_arrow uu____3507 -> (t12, FStar_Pervasives_Native.None) - | FStar_Syntax_Syntax.Tm_abs uu____3500 -> + | FStar_Syntax_Syntax.Tm_abs uu____3536 -> (t12, FStar_Pervasives_Native.None) - | FStar_Syntax_Syntax.Tm_quoted uu____3533 -> + | FStar_Syntax_Syntax.Tm_quoted uu____3569 -> (t12, FStar_Pervasives_Native.None) - | FStar_Syntax_Syntax.Tm_uvar uu____3554 -> + | FStar_Syntax_Syntax.Tm_uvar uu____3590 -> (t12, FStar_Pervasives_Native.None) - | FStar_Syntax_Syntax.Tm_let uu____3581 -> + | FStar_Syntax_Syntax.Tm_let uu____3617 -> (t12, FStar_Pervasives_Native.None) - | FStar_Syntax_Syntax.Tm_match uu____3609 -> + | FStar_Syntax_Syntax.Tm_match uu____3645 -> (t12, FStar_Pervasives_Native.None) - | FStar_Syntax_Syntax.Tm_meta uu____3646 -> - let uu____3653 = - let uu____3655 = FStar_Syntax_Print.term_to_string t12 in - let uu____3657 = FStar_Syntax_Print.tag_of_term t12 in + | FStar_Syntax_Syntax.Tm_meta uu____3682 -> + let uu____3689 = + let uu____3691 = FStar_Syntax_Print.term_to_string t12 in + let uu____3693 = FStar_Syntax_Print.tag_of_term t12 in FStar_Util.format2 "impossible (outer): Got %s ... %s\n" - uu____3655 uu____3657 + uu____3691 uu____3693 in - failwith uu____3653 - | FStar_Syntax_Syntax.Tm_ascribed uu____3672 -> - let uu____3699 = - let uu____3701 = FStar_Syntax_Print.term_to_string t12 in - let uu____3703 = FStar_Syntax_Print.tag_of_term t12 in + failwith uu____3689 + | FStar_Syntax_Syntax.Tm_ascribed uu____3708 -> + let uu____3735 = + let uu____3737 = FStar_Syntax_Print.term_to_string t12 in + let uu____3739 = FStar_Syntax_Print.tag_of_term t12 in FStar_Util.format2 "impossible (outer): Got %s ... %s\n" - uu____3701 uu____3703 + uu____3737 uu____3739 in - failwith uu____3699 - | FStar_Syntax_Syntax.Tm_delayed uu____3718 -> - let uu____3741 = - let uu____3743 = FStar_Syntax_Print.term_to_string t12 in - let uu____3745 = FStar_Syntax_Print.tag_of_term t12 in + failwith uu____3735 + | FStar_Syntax_Syntax.Tm_delayed uu____3754 -> + let uu____3777 = + let uu____3779 = FStar_Syntax_Print.term_to_string t12 in + let uu____3781 = FStar_Syntax_Print.tag_of_term t12 in FStar_Util.format2 "impossible (outer): Got %s ... %s\n" - uu____3743 uu____3745 + uu____3779 uu____3781 in - failwith uu____3741 + failwith uu____3777 | FStar_Syntax_Syntax.Tm_unknown -> - let uu____3760 = - let uu____3762 = FStar_Syntax_Print.term_to_string t12 in - let uu____3764 = FStar_Syntax_Print.tag_of_term t12 in + let uu____3796 = + let uu____3798 = FStar_Syntax_Print.term_to_string t12 in + let uu____3800 = FStar_Syntax_Print.tag_of_term t12 in FStar_Util.format2 "impossible (outer): Got %s ... %s\n" - uu____3762 uu____3764 + uu____3798 uu____3800 in - failwith uu____3760 + failwith uu____3796 in - let uu____3779 = whnf env t1 in aux false uu____3779 + let uu____3815 = whnf env t1 in aux false uu____3815 let (base_and_refinement : FStar_TypeChecker_Env.env -> @@ -1551,8 +1561,8 @@ let (unrefine : = fun env -> fun t -> - let uu____3840 = base_and_refinement env t in - FStar_All.pipe_right uu____3840 FStar_Pervasives_Native.fst + let uu____3876 = base_and_refinement env t in + FStar_All.pipe_right uu____3876 FStar_Pervasives_Native.fst let (trivial_refinement : FStar_Syntax_Syntax.term -> @@ -1560,8 +1570,8 @@ let (trivial_refinement : FStar_Pervasives_Native.tuple2) = fun t -> - let uu____3881 = FStar_Syntax_Syntax.null_bv t in - (uu____3881, FStar_Syntax_Util.t_true) + let uu____3917 = FStar_Syntax_Syntax.null_bv t in + (uu____3917, FStar_Syntax_Util.t_true) let (as_refinement : Prims.bool -> @@ -1573,8 +1583,8 @@ let (as_refinement : fun delta1 -> fun env -> fun t -> - let uu____3908 = base_and_refinement_maybe_delta delta1 env t in - match uu____3908 with + let uu____3944 = base_and_refinement_maybe_delta delta1 env t in + match uu____3944 with | (t_base,refinement) -> (match refinement with | FStar_Pervasives_Native.None -> trivial_refinement t_base @@ -1587,14 +1597,14 @@ let (force_refinement : FStar_Pervasives_Native.option) FStar_Pervasives_Native.tuple2 -> FStar_Syntax_Syntax.term) = - fun uu____3968 -> - match uu____3968 with + fun uu____4004 -> + match uu____4004 with | (t_base,refopt) -> - let uu____3999 = + let uu____4035 = match refopt with | FStar_Pervasives_Native.Some (y,phi) -> (y, phi) | FStar_Pervasives_Native.None -> trivial_refinement t_base in - (match uu____3999 with + (match uu____4035 with | (y,phi) -> FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_refine (y, phi)) FStar_Pervasives_Native.None t_base.FStar_Syntax_Syntax.pos) @@ -1604,57 +1614,57 @@ let (wl_prob_to_string : fun wl -> fun prob -> prob_to_string wl.tcenv prob let (wl_to_string : worklist -> Prims.string) = fun wl -> - let uu____4041 = - let uu____4045 = - let uu____4048 = + let uu____4077 = + let uu____4081 = + let uu____4084 = FStar_All.pipe_right wl.wl_deferred (FStar_List.map - (fun uu____4075 -> - match uu____4075 with | (uu____4084,uu____4085,x) -> x)) + (fun uu____4111 -> + match uu____4111 with | (uu____4120,uu____4121,x) -> x)) in - FStar_List.append wl.attempting uu____4048 in - FStar_List.map (wl_prob_to_string wl) uu____4045 in - FStar_All.pipe_right uu____4041 (FStar_String.concat "\n\t") + FStar_List.append wl.attempting uu____4084 in + FStar_List.map (wl_prob_to_string wl) uu____4081 in + FStar_All.pipe_right uu____4077 (FStar_String.concat "\n\t") type flex_t = (FStar_Syntax_Syntax.term,FStar_Syntax_Syntax.ctx_uvar,FStar_Syntax_Syntax.args) FStar_Pervasives_Native.tuple3 let flex_t_to_string : - 'Auu____4108 . - ('Auu____4108,FStar_Syntax_Syntax.ctx_uvar,FStar_Syntax_Syntax.args) + 'Auu____4144 . + ('Auu____4144,FStar_Syntax_Syntax.ctx_uvar,FStar_Syntax_Syntax.args) FStar_Pervasives_Native.tuple3 -> Prims.string = - fun uu____4120 -> - match uu____4120 with - | (uu____4127,c,args) -> - let uu____4130 = print_ctx_uvar c in - let uu____4132 = FStar_Syntax_Print.args_to_string args in - FStar_Util.format2 "%s [%s]" uu____4130 uu____4132 + fun uu____4156 -> + match uu____4156 with + | (uu____4163,c,args) -> + let uu____4166 = print_ctx_uvar c in + let uu____4168 = FStar_Syntax_Print.args_to_string args in + FStar_Util.format2 "%s [%s]" uu____4166 uu____4168 let (is_flex : FStar_Syntax_Syntax.term -> Prims.bool) = fun t -> - let uu____4142 = FStar_Syntax_Util.head_and_args t in - match uu____4142 with + let uu____4178 = FStar_Syntax_Util.head_and_args t in + match uu____4178 with | (head1,_args) -> - let uu____4186 = - let uu____4187 = FStar_Syntax_Subst.compress head1 in - uu____4187.FStar_Syntax_Syntax.n in - (match uu____4186 with - | FStar_Syntax_Syntax.Tm_uvar uu____4191 -> true - | uu____4205 -> false) + let uu____4222 = + let uu____4223 = FStar_Syntax_Subst.compress head1 in + uu____4223.FStar_Syntax_Syntax.n in + (match uu____4222 with + | FStar_Syntax_Syntax.Tm_uvar uu____4227 -> true + | uu____4241 -> false) let (flex_uvar_head : FStar_Syntax_Syntax.term -> FStar_Syntax_Syntax.ctx_uvar) = fun t -> - let uu____4213 = FStar_Syntax_Util.head_and_args t in - match uu____4213 with + let uu____4249 = FStar_Syntax_Util.head_and_args t in + match uu____4249 with | (head1,_args) -> - let uu____4256 = - let uu____4257 = FStar_Syntax_Subst.compress head1 in - uu____4257.FStar_Syntax_Syntax.n in - (match uu____4256 with - | FStar_Syntax_Syntax.Tm_uvar (u,uu____4261) -> u - | uu____4278 -> failwith "Not a flex-uvar") + let uu____4292 = + let uu____4293 = FStar_Syntax_Subst.compress head1 in + uu____4293.FStar_Syntax_Syntax.n in + (match uu____4292 with + | FStar_Syntax_Syntax.Tm_uvar (u,uu____4297) -> u + | uu____4314 -> failwith "Not a flex-uvar") let (destruct_flex_t : FStar_Syntax_Syntax.term' FStar_Syntax_Syntax.syntax -> @@ -1662,84 +1672,85 @@ let (destruct_flex_t : = fun t -> fun wl -> - let uu____4303 = FStar_Syntax_Util.head_and_args t in - match uu____4303 with + let uu____4339 = FStar_Syntax_Util.head_and_args t in + match uu____4339 with | (head1,args) -> - let uu____4350 = - let uu____4351 = FStar_Syntax_Subst.compress head1 in - uu____4351.FStar_Syntax_Syntax.n in - (match uu____4350 with - | FStar_Syntax_Syntax.Tm_uvar (uv,([],uu____4359)) -> + let uu____4386 = + let uu____4387 = FStar_Syntax_Subst.compress head1 in + uu____4387.FStar_Syntax_Syntax.n in + (match uu____4386 with + | FStar_Syntax_Syntax.Tm_uvar (uv,([],uu____4395)) -> ((t, uv, args), wl) | FStar_Syntax_Syntax.Tm_uvar (uv,s) -> - let uu____4392 = + let uu____4428 = FStar_All.pipe_right uv.FStar_Syntax_Syntax.ctx_uvar_gamma (FStar_List.partition - (fun uu___340_4417 -> - match uu___340_4417 with + (fun uu___339_4453 -> + match uu___339_4453 with | FStar_Syntax_Syntax.Binding_var x -> let t_x = FStar_Syntax_Syntax.bv_to_name x in let t_x' = FStar_Syntax_Subst.subst' s t_x in - let uu____4422 = - let uu____4423 = + let uu____4458 = + let uu____4459 = FStar_Syntax_Subst.compress t_x' in - uu____4423.FStar_Syntax_Syntax.n in - (match uu____4422 with + uu____4459.FStar_Syntax_Syntax.n in + (match uu____4458 with | FStar_Syntax_Syntax.Tm_name y -> FStar_Syntax_Syntax.bv_eq x y - | uu____4428 -> false) - | uu____4430 -> true)) + | uu____4464 -> false) + | uu____4466 -> true)) in - (match uu____4392 with + (match uu____4428 with | (new_gamma,dom_binders_rev) -> let dom_binders = - let uu____4455 = + let uu____4491 = FStar_List.collect - (fun uu___341_4467 -> - match uu___341_4467 with + (fun uu___340_4503 -> + match uu___340_4503 with | FStar_Syntax_Syntax.Binding_var x -> - let uu____4471 = + let uu____4507 = FStar_Syntax_Syntax.mk_binder x in - [uu____4471] - | uu____4472 -> []) dom_binders_rev + [uu____4507] + | uu____4508 -> []) dom_binders_rev in - FStar_All.pipe_right uu____4455 FStar_List.rev in - let uu____4495 = - let uu____4502 = - let uu____4511 = + FStar_All.pipe_right uu____4491 FStar_List.rev in + let uu____4531 = + let uu____4538 = + let uu____4547 = FStar_All.pipe_right new_gamma (FStar_List.collect - (fun uu___342_4533 -> - match uu___342_4533 with + (fun uu___341_4569 -> + match uu___341_4569 with | FStar_Syntax_Syntax.Binding_var x -> - let uu____4537 = + let uu____4573 = FStar_Syntax_Syntax.mk_binder x in - [uu____4537] - | uu____4538 -> [])) + [uu____4573] + | uu____4574 -> [])) in - FStar_All.pipe_right uu____4511 FStar_List.rev in - let uu____4561 = - let uu____4564 = + FStar_All.pipe_right uu____4547 FStar_List.rev in + let uu____4597 = + let uu____4600 = FStar_Syntax_Syntax.mk_Total uv.FStar_Syntax_Syntax.ctx_uvar_typ in - FStar_Syntax_Util.arrow dom_binders uu____4564 in + FStar_Syntax_Util.arrow dom_binders uu____4600 in new_uvar (Prims.strcat uv.FStar_Syntax_Syntax.ctx_uvar_reason "; force delayed") wl t.FStar_Syntax_Syntax.pos - new_gamma uu____4502 uu____4561 + new_gamma uu____4538 uu____4597 uv.FStar_Syntax_Syntax.ctx_uvar_should_check + uv.FStar_Syntax_Syntax.ctx_uvar_meta in - (match uu____4495 with + (match uu____4531 with | (v1,t_v,wl1) -> let args_sol = FStar_List.map - (fun uu____4600 -> - match uu____4600 with + (fun uu____4636 -> + match uu____4636 with | (x,i) -> - let uu____4619 = + let uu____4655 = FStar_Syntax_Syntax.bv_to_name x in - (uu____4619, i)) dom_binders + (uu____4655, i)) dom_binders in let sol = FStar_Syntax_Syntax.mk_Tm_app t_v args_sol @@ -1748,12 +1759,12 @@ let (destruct_flex_t : in let args_sol_s = FStar_List.map - (fun uu____4650 -> - match uu____4650 with + (fun uu____4686 -> + match uu____4686 with | (a,i) -> - let uu____4669 = + let uu____4705 = FStar_Syntax_Subst.subst' s a in - (uu____4669, i)) args_sol + (uu____4705, i)) args_sol in let all_args = FStar_List.append args_sol_s args in let t1 = @@ -1764,7 +1775,7 @@ let (destruct_flex_t : (FStar_Syntax_Unionfind.change uv.FStar_Syntax_Syntax.ctx_uvar_head sol; ((t1, v1, all_args), wl1)))) - | uu____4691 -> failwith "Not a flex-uvar") + | uu____4727 -> failwith "Not a flex-uvar") let (u_abs : FStar_Syntax_Syntax.typ -> @@ -1774,30 +1785,30 @@ let (u_abs : fun k -> fun ys -> fun t -> - let uu____4713 = - let uu____4736 = - let uu____4737 = FStar_Syntax_Subst.compress k in - uu____4737.FStar_Syntax_Syntax.n in - match uu____4736 with + let uu____4749 = + let uu____4772 = + let uu____4773 = FStar_Syntax_Subst.compress k in + uu____4773.FStar_Syntax_Syntax.n in + match uu____4772 with | FStar_Syntax_Syntax.Tm_arrow (bs,c) -> if (FStar_List.length bs) = (FStar_List.length ys) then - let uu____4819 = FStar_Syntax_Subst.open_comp bs c in - ((ys, t), uu____4819) + let uu____4855 = FStar_Syntax_Subst.open_comp bs c in + ((ys, t), uu____4855) else - (let uu____4854 = FStar_Syntax_Util.abs_formals t in - match uu____4854 with - | (ys',t1,uu____4887) -> - let uu____4892 = FStar_Syntax_Util.arrow_formals_comp k + (let uu____4890 = FStar_Syntax_Util.abs_formals t in + match uu____4890 with + | (ys',t1,uu____4923) -> + let uu____4928 = FStar_Syntax_Util.arrow_formals_comp k in - (((FStar_List.append ys ys'), t1), uu____4892)) - | uu____4931 -> - let uu____4932 = - let uu____4937 = FStar_Syntax_Syntax.mk_Total k in - ([], uu____4937) in - ((ys, t), uu____4932) + (((FStar_List.append ys ys'), t1), uu____4928)) + | uu____4967 -> + let uu____4968 = + let uu____4973 = FStar_Syntax_Syntax.mk_Total k in + ([], uu____4973) in + ((ys, t), uu____4968) in - match uu____4713 with + match uu____4749 with | ((ys1,t1),(xs,c)) -> if (FStar_List.length xs) <> (FStar_List.length ys1) then @@ -1808,8 +1819,8 @@ let (u_abs : FStar_Pervasives_Native.None [])) else (let c1 = - let uu____5032 = FStar_Syntax_Util.rename_binders xs ys1 in - FStar_Syntax_Subst.subst_comp uu____5032 c in + let uu____5068 = FStar_Syntax_Util.rename_binders xs ys1 in + FStar_Syntax_Subst.subst_comp uu____5068 c in FStar_Syntax_Util.abs ys1 t1 (FStar_Pervasives_Native.Some (FStar_Syntax_Util.residual_comp_of_comp c1))) @@ -1832,17 +1843,17 @@ let (solve_prob' : | FStar_Pervasives_Native.None -> FStar_Syntax_Util.t_true | FStar_Pervasives_Native.Some phi -> phi in let assign_solution xs uv phi1 = - (let uu____5110 = + (let uu____5146 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug wl.tcenv) (FStar_Options.Other "Rel") in - if uu____5110 + if uu____5146 then - let uu____5115 = FStar_Util.string_of_int (p_pid prob) in - let uu____5117 = print_ctx_uvar uv in - let uu____5119 = FStar_Syntax_Print.term_to_string phi1 in + let uu____5151 = FStar_Util.string_of_int (p_pid prob) in + let uu____5153 = print_ctx_uvar uv in + let uu____5155 = FStar_Syntax_Print.term_to_string phi1 in FStar_Util.print3 "Solving %s (%s) with formula %s\n" - uu____5115 uu____5117 uu____5119 + uu____5151 uu____5153 uu____5155 else ()); (let phi2 = FStar_Syntax_Util.abs xs phi1 @@ -1850,100 +1861,100 @@ let (solve_prob' : (FStar_Syntax_Util.residual_tot FStar_Syntax_Util.ktype0)) in - (let uu____5128 = - let uu____5130 = FStar_Util.string_of_int (p_pid prob) in - Prims.strcat "solve_prob'.sol." uu____5130 in - let uu____5133 = - let uu____5136 = p_scope prob in + (let uu____5164 = + let uu____5166 = FStar_Util.string_of_int (p_pid prob) in + Prims.strcat "solve_prob'.sol." uu____5166 in + let uu____5169 = + let uu____5172 = p_scope prob in FStar_All.pipe_left - (FStar_List.map FStar_Pervasives_Native.fst) uu____5136 + (FStar_List.map FStar_Pervasives_Native.fst) uu____5172 in FStar_TypeChecker_Env.def_check_closed_in (p_loc prob) - uu____5128 uu____5133 phi2); + uu____5164 uu____5169 phi2); FStar_Syntax_Util.set_uvar uv.FStar_Syntax_Syntax.ctx_uvar_head phi2) in let uv = p_guard_uvar prob in - let fail1 uu____5169 = - let uu____5170 = - let uu____5172 = FStar_Syntax_Print.ctx_uvar_to_string uv + let fail1 uu____5205 = + let uu____5206 = + let uu____5208 = FStar_Syntax_Print.ctx_uvar_to_string uv in - let uu____5174 = + let uu____5210 = FStar_Syntax_Print.term_to_string (p_guard prob) in FStar_Util.format2 "Impossible: this instance %s has already been assigned a solution\n%s\n" - uu____5172 uu____5174 + uu____5208 uu____5210 in - failwith uu____5170 in + failwith uu____5206 in let args_as_binders args = FStar_All.pipe_right args (FStar_List.collect - (fun uu____5240 -> - match uu____5240 with + (fun uu____5276 -> + match uu____5276 with | (a,i) -> - let uu____5261 = - let uu____5262 = FStar_Syntax_Subst.compress a + let uu____5297 = + let uu____5298 = FStar_Syntax_Subst.compress a in - uu____5262.FStar_Syntax_Syntax.n in - (match uu____5261 with + uu____5298.FStar_Syntax_Syntax.n in + (match uu____5297 with | FStar_Syntax_Syntax.Tm_name x -> [(x, i)] - | uu____5288 -> (fail1 (); [])))) + | uu____5324 -> (fail1 (); [])))) in let wl1 = let g = whnf wl.tcenv (p_guard prob) in - let uu____5298 = - let uu____5300 = is_flex g in Prims.op_Negation uu____5300 + let uu____5334 = + let uu____5336 = is_flex g in Prims.op_Negation uu____5336 in - if uu____5298 + if uu____5334 then (if resolve_ok then wl else (fail1 (); wl)) else - (let uu____5309 = destruct_flex_t g wl in - match uu____5309 with - | ((uu____5314,uv1,args),wl1) -> - ((let uu____5319 = args_as_binders args in - assign_solution uu____5319 uv1 phi); + (let uu____5345 = destruct_flex_t g wl in + match uu____5345 with + | ((uu____5350,uv1,args),wl1) -> + ((let uu____5355 = args_as_binders args in + assign_solution uu____5355 uv1 phi); wl1)) in commit uvis; - (let uu___365_5321 = wl1 in + (let uu___364_5357 = wl1 in { - attempting = (uu___365_5321.attempting); - wl_deferred = (uu___365_5321.wl_deferred); + attempting = (uu___364_5357.attempting); + wl_deferred = (uu___364_5357.wl_deferred); ctr = (wl1.ctr + (Prims.parse_int "1")); - defer_ok = (uu___365_5321.defer_ok); - smt_ok = (uu___365_5321.smt_ok); - umax_heuristic_ok = (uu___365_5321.umax_heuristic_ok); - tcenv = (uu___365_5321.tcenv); - wl_implicits = (uu___365_5321.wl_implicits) + defer_ok = (uu___364_5357.defer_ok); + smt_ok = (uu___364_5357.smt_ok); + umax_heuristic_ok = (uu___364_5357.umax_heuristic_ok); + tcenv = (uu___364_5357.tcenv); + wl_implicits = (uu___364_5357.wl_implicits) })) let (extend_solution : Prims.int -> uvi Prims.list -> worklist -> worklist) = fun pid -> fun sol -> fun wl -> - (let uu____5346 = + (let uu____5382 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug wl.tcenv) (FStar_Options.Other "Rel") in - if uu____5346 + if uu____5382 then - let uu____5351 = FStar_Util.string_of_int pid in - let uu____5353 = - let uu____5355 = FStar_List.map (uvi_to_string wl.tcenv) sol in - FStar_All.pipe_right uu____5355 (FStar_String.concat ", ") in - FStar_Util.print2 "Solving %s: with [%s]\n" uu____5351 uu____5353 + let uu____5387 = FStar_Util.string_of_int pid in + let uu____5389 = + let uu____5391 = FStar_List.map (uvi_to_string wl.tcenv) sol in + FStar_All.pipe_right uu____5391 (FStar_String.concat ", ") in + FStar_Util.print2 "Solving %s: with [%s]\n" uu____5387 uu____5389 else ()); commit sol; - (let uu___366_5369 = wl in + (let uu___365_5405 = wl in { - attempting = (uu___366_5369.attempting); - wl_deferred = (uu___366_5369.wl_deferred); + attempting = (uu___365_5405.attempting); + wl_deferred = (uu___365_5405.wl_deferred); ctr = (wl.ctr + (Prims.parse_int "1")); - defer_ok = (uu___366_5369.defer_ok); - smt_ok = (uu___366_5369.smt_ok); - umax_heuristic_ok = (uu___366_5369.umax_heuristic_ok); - tcenv = (uu___366_5369.tcenv); - wl_implicits = (uu___366_5369.wl_implicits) + defer_ok = (uu___365_5405.defer_ok); + smt_ok = (uu___365_5405.smt_ok); + umax_heuristic_ok = (uu___365_5405.umax_heuristic_ok); + tcenv = (uu___365_5405.tcenv); + wl_implicits = (uu___365_5405.wl_implicits) }) let (solve_prob : @@ -1960,29 +1971,29 @@ let (solve_prob : (def_check_scoped "solve_prob.guard" prob); (let conj_guard1 t g = match (t, g) with - | (uu____5435,FStar_TypeChecker_Common.Trivial ) -> t + | (uu____5471,FStar_TypeChecker_Common.Trivial ) -> t | (FStar_Pervasives_Native.None ,FStar_TypeChecker_Common.NonTrivial f) -> FStar_Pervasives_Native.Some f | (FStar_Pervasives_Native.Some t1,FStar_TypeChecker_Common.NonTrivial f) -> - let uu____5463 = FStar_Syntax_Util.mk_conj t1 f in - FStar_Pervasives_Native.Some uu____5463 + let uu____5499 = FStar_Syntax_Util.mk_conj t1 f in + FStar_Pervasives_Native.Some uu____5499 in - (let uu____5469 = + (let uu____5505 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug wl.tcenv) (FStar_Options.Other "Rel") in - if uu____5469 + if uu____5505 then - let uu____5474 = + let uu____5510 = FStar_All.pipe_left FStar_Util.string_of_int (p_pid prob) in - let uu____5478 = - let uu____5480 = FStar_List.map (uvi_to_string wl.tcenv) uvis + let uu____5514 = + let uu____5516 = FStar_List.map (uvi_to_string wl.tcenv) uvis in - FStar_All.pipe_right uu____5480 (FStar_String.concat ", ") + FStar_All.pipe_right uu____5516 (FStar_String.concat ", ") in - FStar_Util.print2 "Solving %s: with %s\n" uu____5474 uu____5478 + FStar_Util.print2 "Solving %s: with %s\n" uu____5510 uu____5514 else ()); solve_prob' false prob logical_guard uvis wl) @@ -1995,8 +2006,8 @@ let (occurs : fun uk -> fun t -> let uvars1 = - let uu____5515 = FStar_Syntax_Free.uvars t in - FStar_All.pipe_right uu____5515 FStar_Util.set_elements in + let uu____5551 = FStar_Syntax_Free.uvars t in + FStar_All.pipe_right uu____5551 FStar_Util.set_elements in let occurs = FStar_All.pipe_right uvars1 (FStar_Util.for_some @@ -2016,23 +2027,23 @@ let (occurs_check : = fun uk -> fun t -> - let uu____5555 = occurs uk t in - match uu____5555 with + let uu____5591 = occurs uk t in + match uu____5591 with | (uvars1,occurs1) -> let msg = if Prims.op_Negation occurs1 then FStar_Pervasives_Native.None else - (let uu____5594 = - let uu____5596 = + (let uu____5630 = + let uu____5632 = FStar_Syntax_Print.uvar_to_string uk.FStar_Syntax_Syntax.ctx_uvar_head in - let uu____5598 = FStar_Syntax_Print.term_to_string t in + let uu____5634 = FStar_Syntax_Print.term_to_string t in FStar_Util.format2 "occurs-check failed (%s occurs in %s)" - uu____5596 uu____5598 + uu____5632 uu____5634 in - FStar_Pervasives_Native.Some uu____5594) + FStar_Pervasives_Native.Some uu____5630) in (uvars1, (Prims.op_Negation occurs1), msg) @@ -2049,10 +2060,10 @@ let rec (maximal_prefix : | ((b,i)::bs_tail,(b',i')::bs'_tail) -> if FStar_Syntax_Syntax.bv_eq b b' then - let uu____5718 = maximal_prefix bs_tail bs'_tail in - (match uu____5718 with | (pfx,rest) -> (((b, i) :: pfx), rest)) + let uu____5754 = maximal_prefix bs_tail bs'_tail in + (match uu____5754 with | (pfx,rest) -> (((b, i) :: pfx), rest)) else ([], (bs, bs')) - | uu____5769 -> ([], (bs, bs')) + | uu____5805 -> ([], (bs, bs')) let (extend_gamma : FStar_Syntax_Syntax.gamma -> @@ -2062,9 +2073,9 @@ let (extend_gamma : fun bs -> FStar_List.fold_left (fun g1 -> - fun uu____5826 -> - match uu____5826 with - | (x,uu____5838) -> (FStar_Syntax_Syntax.Binding_var x) :: g1) g + fun uu____5862 -> + match uu____5862 with + | (x,uu____5874) -> (FStar_Syntax_Syntax.Binding_var x) :: g1) g bs let (gamma_until : @@ -2073,21 +2084,21 @@ let (gamma_until : = fun g -> fun bs -> - let uu____5856 = FStar_List.last bs in - match uu____5856 with + let uu____5892 = FStar_List.last bs in + match uu____5892 with | FStar_Pervasives_Native.None -> [] - | FStar_Pervasives_Native.Some (x,uu____5880) -> - let uu____5891 = + | FStar_Pervasives_Native.Some (x,uu____5916) -> + let uu____5927 = FStar_Util.prefix_until - (fun uu___343_5906 -> - match uu___343_5906 with + (fun uu___342_5942 -> + match uu___342_5942 with | FStar_Syntax_Syntax.Binding_var x' -> FStar_Syntax_Syntax.bv_eq x x' - | uu____5909 -> false) g + | uu____5945 -> false) g in - (match uu____5891 with + (match uu____5927 with | FStar_Pervasives_Native.None -> [] - | FStar_Pervasives_Native.Some (uu____5923,bx,rest) -> bx :: rest) + | FStar_Pervasives_Native.Some (uu____5959,bx,rest) -> bx :: rest) let (restrict_ctx : FStar_Syntax_Syntax.ctx_uvar -> @@ -2096,22 +2107,25 @@ let (restrict_ctx : fun tgt -> fun src -> fun wl -> - let uu____5960 = + let uu____5996 = maximal_prefix tgt.FStar_Syntax_Syntax.ctx_uvar_binders src.FStar_Syntax_Syntax.ctx_uvar_binders in - match uu____5960 with - | (pfx,uu____5970) -> + match uu____5996 with + | (pfx,uu____6006) -> let g = gamma_until src.FStar_Syntax_Syntax.ctx_uvar_gamma pfx in - let uu____5982 = - new_uvar src.FStar_Syntax_Syntax.ctx_uvar_reason wl + let uu____6018 = + new_uvar + (Prims.strcat "restrict:" + src.FStar_Syntax_Syntax.ctx_uvar_reason) wl src.FStar_Syntax_Syntax.ctx_uvar_range g pfx src.FStar_Syntax_Syntax.ctx_uvar_typ src.FStar_Syntax_Syntax.ctx_uvar_should_check + src.FStar_Syntax_Syntax.ctx_uvar_meta in - (match uu____5982 with - | (uu____5989,src',wl1) -> + (match uu____6018 with + | (uu____6026,src',wl1) -> (FStar_Syntax_Unionfind.change src.FStar_Syntax_Syntax.ctx_uvar_head src'; wl1)) @@ -2148,71 +2162,71 @@ let (intersect_binders : match b with | FStar_Syntax_Syntax.Binding_var x -> FStar_Util.set_add x out - | uu____6103 -> out) FStar_Syntax_Syntax.no_names g + | uu____6140 -> out) FStar_Syntax_Syntax.no_names g in - let uu____6104 = + let uu____6141 = FStar_All.pipe_right v2 (FStar_List.fold_left - (fun uu____6168 -> - fun uu____6169 -> - match (uu____6168, uu____6169) with + (fun uu____6205 -> + fun uu____6206 -> + match (uu____6205, uu____6206) with | ((isect,isect_set),(x,imp)) -> - let uu____6272 = - let uu____6274 = FStar_Util.set_mem x v1_set in - FStar_All.pipe_left Prims.op_Negation uu____6274 + let uu____6309 = + let uu____6311 = FStar_Util.set_mem x v1_set in + FStar_All.pipe_left Prims.op_Negation uu____6311 in - if uu____6272 + if uu____6309 then (isect, isect_set) else (let fvs = FStar_Syntax_Free.names x.FStar_Syntax_Syntax.sort in - let uu____6308 = + let uu____6345 = FStar_Util.set_is_subset_of fvs isect_set in - if uu____6308 + if uu____6345 then - let uu____6325 = FStar_Util.set_add x isect_set + let uu____6362 = FStar_Util.set_add x isect_set in - (((x, imp) :: isect), uu____6325) + (((x, imp) :: isect), uu____6362) else (isect, isect_set))) ([], ctx_binders)) in - match uu____6104 with | (isect,uu____6375) -> FStar_List.rev isect + match uu____6141 with | (isect,uu____6412) -> FStar_List.rev isect let binders_eq : - 'Auu____6411 'Auu____6412 . - (FStar_Syntax_Syntax.bv,'Auu____6411) FStar_Pervasives_Native.tuple2 + 'Auu____6448 'Auu____6449 . + (FStar_Syntax_Syntax.bv,'Auu____6448) FStar_Pervasives_Native.tuple2 Prims.list -> - (FStar_Syntax_Syntax.bv,'Auu____6412) FStar_Pervasives_Native.tuple2 + (FStar_Syntax_Syntax.bv,'Auu____6449) FStar_Pervasives_Native.tuple2 Prims.list -> Prims.bool = fun v1 -> fun v2 -> ((FStar_List.length v1) = (FStar_List.length v2)) && (FStar_List.forall2 - (fun uu____6470 -> - fun uu____6471 -> - match (uu____6470, uu____6471) with - | ((a,uu____6490),(b,uu____6492)) -> + (fun uu____6507 -> + fun uu____6508 -> + match (uu____6507, uu____6508) with + | ((a,uu____6527),(b,uu____6529)) -> FStar_Syntax_Syntax.bv_eq a b) v1 v2) let name_exists_in_binders : - 'Auu____6508 . + 'Auu____6545 . FStar_Syntax_Syntax.bv -> - (FStar_Syntax_Syntax.bv,'Auu____6508) FStar_Pervasives_Native.tuple2 + (FStar_Syntax_Syntax.bv,'Auu____6545) FStar_Pervasives_Native.tuple2 Prims.list -> Prims.bool = fun x -> fun bs -> FStar_Util.for_some - (fun uu____6539 -> - match uu____6539 with - | (y,uu____6546) -> FStar_Syntax_Syntax.bv_eq x y) bs + (fun uu____6576 -> + match uu____6576 with + | (y,uu____6583) -> FStar_Syntax_Syntax.bv_eq x y) bs let pat_vars : - 'Auu____6556 . + 'Auu____6593 . FStar_TypeChecker_Env.env -> - (FStar_Syntax_Syntax.bv,'Auu____6556) FStar_Pervasives_Native.tuple2 + (FStar_Syntax_Syntax.bv,'Auu____6593) FStar_Pervasives_Native.tuple2 Prims.list -> (FStar_Syntax_Syntax.term,FStar_Syntax_Syntax.arg_qualifier FStar_Pervasives_Native.option) @@ -2229,14 +2243,14 @@ let pat_vars : let hd1 = sn env arg in (match hd1.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_name a -> - let uu____6718 = + let uu____6755 = (name_exists_in_binders a seen) || (name_exists_in_binders a ctx) in - if uu____6718 + if uu____6755 then FStar_Pervasives_Native.None else aux ((a, i) :: seen) args2 - | uu____6751 -> FStar_Pervasives_Native.None) + | uu____6788 -> FStar_Pervasives_Native.None) in aux [] args @@ -2249,7 +2263,7 @@ type match_result = | FullMatch let (uu___is_MisMatch : match_result -> Prims.bool) = fun projectee -> - match projectee with | MisMatch _0 -> true | uu____6803 -> false + match projectee with | MisMatch _0 -> true | uu____6840 -> false let (__proj__MisMatch__item___0 : match_result -> @@ -2259,44 +2273,44 @@ let (__proj__MisMatch__item___0 : = fun projectee -> match projectee with | MisMatch _0 -> _0 let (uu___is_HeadMatch : match_result -> Prims.bool) = fun projectee -> - match projectee with | HeadMatch _0 -> true | uu____6848 -> false + match projectee with | HeadMatch _0 -> true | uu____6885 -> false let (__proj__HeadMatch__item___0 : match_result -> Prims.bool) = fun projectee -> match projectee with | HeadMatch _0 -> _0 let (uu___is_FullMatch : match_result -> Prims.bool) = fun projectee -> - match projectee with | FullMatch -> true | uu____6870 -> false + match projectee with | FullMatch -> true | uu____6907 -> false let (string_of_match_result : match_result -> Prims.string) = - fun uu___344_6878 -> - match uu___344_6878 with + fun uu___343_6915 -> + match uu___343_6915 with | MisMatch (d1,d2) -> - let uu____6890 = - let uu____6892 = + let uu____6927 = + let uu____6929 = FStar_Common.string_of_option FStar_Syntax_Print.delta_depth_to_string d1 in - let uu____6894 = - let uu____6896 = - let uu____6898 = + let uu____6931 = + let uu____6933 = + let uu____6935 = FStar_Common.string_of_option FStar_Syntax_Print.delta_depth_to_string d2 in - Prims.strcat uu____6898 ")" in - Prims.strcat ") (" uu____6896 in - Prims.strcat uu____6892 uu____6894 in - Prims.strcat "MisMatch (" uu____6890 + Prims.strcat uu____6935 ")" in + Prims.strcat ") (" uu____6933 in + Prims.strcat uu____6929 uu____6931 in + Prims.strcat "MisMatch (" uu____6927 | HeadMatch u -> - let uu____6905 = FStar_Util.string_of_bool u in - Prims.strcat "HeadMatch " uu____6905 + let uu____6942 = FStar_Util.string_of_bool u in + Prims.strcat "HeadMatch " uu____6942 | FullMatch -> "FullMatch" let (head_match : match_result -> match_result) = - fun uu___345_6914 -> - match uu___345_6914 with + fun uu___344_6951 -> + match uu___344_6951 with | MisMatch (i,j) -> MisMatch (i, j) | HeadMatch (true ) -> HeadMatch true - | uu____6931 -> HeadMatch false + | uu____6968 -> HeadMatch false let (fv_delta_depth : FStar_TypeChecker_Env.env -> @@ -2315,16 +2329,16 @@ let (fv_delta_depth : else FStar_Syntax_Syntax.delta_constant | FStar_Syntax_Syntax.Delta_constant_at_level i when i > (Prims.parse_int "0") -> - let uu____6953 = + let uu____6990 = FStar_TypeChecker_Env.lookup_definition [FStar_TypeChecker_Env.Unfold FStar_Syntax_Syntax.delta_constant] env (fv.FStar_Syntax_Syntax.fv_name).FStar_Syntax_Syntax.v in - (match uu____6953 with + (match uu____6990 with | FStar_Pervasives_Native.None -> FStar_Syntax_Syntax.delta_constant - | uu____6964 -> d) + | uu____7001 -> d) | d1 -> d1 let rec (delta_depth_of_term : @@ -2336,45 +2350,45 @@ let rec (delta_depth_of_term : fun t -> let t1 = FStar_Syntax_Util.unmeta t in match t1.FStar_Syntax_Syntax.n with - | FStar_Syntax_Syntax.Tm_meta uu____6988 -> failwith "Impossible" - | FStar_Syntax_Syntax.Tm_delayed uu____6998 -> failwith "Impossible" + | FStar_Syntax_Syntax.Tm_meta uu____7025 -> failwith "Impossible" + | FStar_Syntax_Syntax.Tm_delayed uu____7035 -> failwith "Impossible" | FStar_Syntax_Syntax.Tm_lazy i -> - let uu____7025 = FStar_Syntax_Util.unfold_lazy i in - delta_depth_of_term env uu____7025 + let uu____7062 = FStar_Syntax_Util.unfold_lazy i in + delta_depth_of_term env uu____7062 | FStar_Syntax_Syntax.Tm_unknown -> FStar_Pervasives_Native.None - | FStar_Syntax_Syntax.Tm_bvar uu____7026 -> + | FStar_Syntax_Syntax.Tm_bvar uu____7063 -> FStar_Pervasives_Native.None - | FStar_Syntax_Syntax.Tm_name uu____7027 -> + | FStar_Syntax_Syntax.Tm_name uu____7064 -> FStar_Pervasives_Native.None - | FStar_Syntax_Syntax.Tm_uvar uu____7028 -> + | FStar_Syntax_Syntax.Tm_uvar uu____7065 -> FStar_Pervasives_Native.None - | FStar_Syntax_Syntax.Tm_let uu____7041 -> FStar_Pervasives_Native.None - | FStar_Syntax_Syntax.Tm_match uu____7055 -> + | FStar_Syntax_Syntax.Tm_let uu____7078 -> FStar_Pervasives_Native.None + | FStar_Syntax_Syntax.Tm_match uu____7092 -> FStar_Pervasives_Native.None - | FStar_Syntax_Syntax.Tm_uinst (t2,uu____7079) -> + | FStar_Syntax_Syntax.Tm_uinst (t2,uu____7116) -> delta_depth_of_term env t2 - | FStar_Syntax_Syntax.Tm_ascribed (t2,uu____7085,uu____7086) -> + | FStar_Syntax_Syntax.Tm_ascribed (t2,uu____7122,uu____7123) -> delta_depth_of_term env t2 - | FStar_Syntax_Syntax.Tm_app (t2,uu____7128) -> + | FStar_Syntax_Syntax.Tm_app (t2,uu____7165) -> delta_depth_of_term env t2 | FStar_Syntax_Syntax.Tm_refine - ({ FStar_Syntax_Syntax.ppname = uu____7153; - FStar_Syntax_Syntax.index = uu____7154; - FStar_Syntax_Syntax.sort = t2;_},uu____7156) + ({ FStar_Syntax_Syntax.ppname = uu____7190; + FStar_Syntax_Syntax.index = uu____7191; + FStar_Syntax_Syntax.sort = t2;_},uu____7193) -> delta_depth_of_term env t2 - | FStar_Syntax_Syntax.Tm_constant uu____7164 -> + | FStar_Syntax_Syntax.Tm_constant uu____7201 -> FStar_Pervasives_Native.Some FStar_Syntax_Syntax.delta_constant - | FStar_Syntax_Syntax.Tm_type uu____7165 -> + | FStar_Syntax_Syntax.Tm_type uu____7202 -> FStar_Pervasives_Native.Some FStar_Syntax_Syntax.delta_constant - | FStar_Syntax_Syntax.Tm_arrow uu____7166 -> + | FStar_Syntax_Syntax.Tm_arrow uu____7203 -> FStar_Pervasives_Native.Some FStar_Syntax_Syntax.delta_constant - | FStar_Syntax_Syntax.Tm_quoted uu____7181 -> + | FStar_Syntax_Syntax.Tm_quoted uu____7218 -> FStar_Pervasives_Native.Some FStar_Syntax_Syntax.delta_constant - | FStar_Syntax_Syntax.Tm_abs uu____7188 -> + | FStar_Syntax_Syntax.Tm_abs uu____7225 -> FStar_Pervasives_Native.Some FStar_Syntax_Syntax.delta_constant | FStar_Syntax_Syntax.Tm_fvar fv -> - let uu____7208 = fv_delta_depth env fv in - FStar_Pervasives_Native.Some uu____7208 + let uu____7245 = fv_delta_depth env fv in + FStar_Pervasives_Native.Some uu____7245 let rec (head_matches : FStar_TypeChecker_Env.env -> @@ -2387,23 +2401,23 @@ let rec (head_matches : let t21 = FStar_Syntax_Util.unmeta t2 in match ((t11.FStar_Syntax_Syntax.n), (t21.FStar_Syntax_Syntax.n)) with | (FStar_Syntax_Syntax.Tm_lazy - { FStar_Syntax_Syntax.blob = uu____7227; + { FStar_Syntax_Syntax.blob = uu____7264; FStar_Syntax_Syntax.lkind = FStar_Syntax_Syntax.Lazy_embedding - uu____7228; - FStar_Syntax_Syntax.ltyp = uu____7229; - FStar_Syntax_Syntax.rng = uu____7230;_},uu____7231) + uu____7265; + FStar_Syntax_Syntax.ltyp = uu____7266; + FStar_Syntax_Syntax.rng = uu____7267;_},uu____7268) -> - let uu____7242 = FStar_Syntax_Util.unlazy t11 in - head_matches env uu____7242 t21 - | (uu____7243,FStar_Syntax_Syntax.Tm_lazy - { FStar_Syntax_Syntax.blob = uu____7244; + let uu____7279 = FStar_Syntax_Util.unlazy t11 in + head_matches env uu____7279 t21 + | (uu____7280,FStar_Syntax_Syntax.Tm_lazy + { FStar_Syntax_Syntax.blob = uu____7281; FStar_Syntax_Syntax.lkind = FStar_Syntax_Syntax.Lazy_embedding - uu____7245; - FStar_Syntax_Syntax.ltyp = uu____7246; - FStar_Syntax_Syntax.rng = uu____7247;_}) + uu____7282; + FStar_Syntax_Syntax.ltyp = uu____7283; + FStar_Syntax_Syntax.rng = uu____7284;_}) -> - let uu____7258 = FStar_Syntax_Util.unlazy t21 in - head_matches env t11 uu____7258 + let uu____7295 = FStar_Syntax_Util.unlazy t21 in + head_matches env t11 uu____7295 | (FStar_Syntax_Syntax.Tm_name x,FStar_Syntax_Syntax.Tm_name y) -> if FStar_Syntax_Syntax.bv_eq x y then FullMatch @@ -2411,85 +2425,85 @@ let rec (head_matches : MisMatch (FStar_Pervasives_Native.None, FStar_Pervasives_Native.None) | (FStar_Syntax_Syntax.Tm_fvar f,FStar_Syntax_Syntax.Tm_fvar g) -> - let uu____7270 = FStar_Syntax_Syntax.fv_eq f g in - if uu____7270 + let uu____7307 = FStar_Syntax_Syntax.fv_eq f g in + if uu____7307 then FullMatch else - (let uu____7275 = - let uu____7284 = - let uu____7287 = fv_delta_depth env f in - FStar_Pervasives_Native.Some uu____7287 in - let uu____7288 = - let uu____7291 = fv_delta_depth env g in - FStar_Pervasives_Native.Some uu____7291 in - (uu____7284, uu____7288) in - MisMatch uu____7275) + (let uu____7312 = + let uu____7321 = + let uu____7324 = fv_delta_depth env f in + FStar_Pervasives_Native.Some uu____7324 in + let uu____7325 = + let uu____7328 = fv_delta_depth env g in + FStar_Pervasives_Native.Some uu____7328 in + (uu____7321, uu____7325) in + MisMatch uu____7312) | (FStar_Syntax_Syntax.Tm_uinst - (f,uu____7297),FStar_Syntax_Syntax.Tm_uinst (g,uu____7299)) -> - let uu____7308 = head_matches env f g in - FStar_All.pipe_right uu____7308 head_match + (f,uu____7334),FStar_Syntax_Syntax.Tm_uinst (g,uu____7336)) -> + let uu____7345 = head_matches env f g in + FStar_All.pipe_right uu____7345 head_match | (FStar_Syntax_Syntax.Tm_constant c,FStar_Syntax_Syntax.Tm_constant d) -> - let uu____7311 = FStar_Const.eq_const c d in - if uu____7311 + let uu____7348 = FStar_Const.eq_const c d in + if uu____7348 then FullMatch else MisMatch (FStar_Pervasives_Native.None, FStar_Pervasives_Native.None) | (FStar_Syntax_Syntax.Tm_uvar - (uv,uu____7321),FStar_Syntax_Syntax.Tm_uvar (uv',uu____7323)) -> - let uu____7356 = + (uv,uu____7358),FStar_Syntax_Syntax.Tm_uvar (uv',uu____7360)) -> + let uu____7393 = FStar_Syntax_Unionfind.equiv uv.FStar_Syntax_Syntax.ctx_uvar_head uv'.FStar_Syntax_Syntax.ctx_uvar_head in - if uu____7356 + if uu____7393 then FullMatch else MisMatch (FStar_Pervasives_Native.None, FStar_Pervasives_Native.None) | (FStar_Syntax_Syntax.Tm_refine - (x,uu____7366),FStar_Syntax_Syntax.Tm_refine (y,uu____7368)) -> - let uu____7377 = + (x,uu____7403),FStar_Syntax_Syntax.Tm_refine (y,uu____7405)) -> + let uu____7414 = head_matches env x.FStar_Syntax_Syntax.sort y.FStar_Syntax_Syntax.sort in - FStar_All.pipe_right uu____7377 head_match - | (FStar_Syntax_Syntax.Tm_refine (x,uu____7379),uu____7380) -> - let uu____7385 = head_matches env x.FStar_Syntax_Syntax.sort t21 + FStar_All.pipe_right uu____7414 head_match + | (FStar_Syntax_Syntax.Tm_refine (x,uu____7416),uu____7417) -> + let uu____7422 = head_matches env x.FStar_Syntax_Syntax.sort t21 in - FStar_All.pipe_right uu____7385 head_match - | (uu____7386,FStar_Syntax_Syntax.Tm_refine (x,uu____7388)) -> - let uu____7393 = head_matches env t11 x.FStar_Syntax_Syntax.sort + FStar_All.pipe_right uu____7422 head_match + | (uu____7423,FStar_Syntax_Syntax.Tm_refine (x,uu____7425)) -> + let uu____7430 = head_matches env t11 x.FStar_Syntax_Syntax.sort in - FStar_All.pipe_right uu____7393 head_match - | (FStar_Syntax_Syntax.Tm_type uu____7394,FStar_Syntax_Syntax.Tm_type - uu____7395) -> HeadMatch false + FStar_All.pipe_right uu____7430 head_match + | (FStar_Syntax_Syntax.Tm_type uu____7431,FStar_Syntax_Syntax.Tm_type + uu____7432) -> HeadMatch false | (FStar_Syntax_Syntax.Tm_arrow - uu____7397,FStar_Syntax_Syntax.Tm_arrow uu____7398) -> + uu____7434,FStar_Syntax_Syntax.Tm_arrow uu____7435) -> HeadMatch false | (FStar_Syntax_Syntax.Tm_app - (head1,uu____7429),FStar_Syntax_Syntax.Tm_app (head',uu____7431)) + (head1,uu____7466),FStar_Syntax_Syntax.Tm_app (head',uu____7468)) -> - let uu____7480 = head_matches env head1 head' in - FStar_All.pipe_right uu____7480 head_match - | (FStar_Syntax_Syntax.Tm_app (head1,uu____7482),uu____7483) -> - let uu____7508 = head_matches env head1 t21 in - FStar_All.pipe_right uu____7508 head_match - | (uu____7509,FStar_Syntax_Syntax.Tm_app (head1,uu____7511)) -> - let uu____7536 = head_matches env t11 head1 in - FStar_All.pipe_right uu____7536 head_match - | (FStar_Syntax_Syntax.Tm_let uu____7537,FStar_Syntax_Syntax.Tm_let - uu____7538) -> HeadMatch true + let uu____7517 = head_matches env head1 head' in + FStar_All.pipe_right uu____7517 head_match + | (FStar_Syntax_Syntax.Tm_app (head1,uu____7519),uu____7520) -> + let uu____7545 = head_matches env head1 t21 in + FStar_All.pipe_right uu____7545 head_match + | (uu____7546,FStar_Syntax_Syntax.Tm_app (head1,uu____7548)) -> + let uu____7573 = head_matches env t11 head1 in + FStar_All.pipe_right uu____7573 head_match + | (FStar_Syntax_Syntax.Tm_let uu____7574,FStar_Syntax_Syntax.Tm_let + uu____7575) -> HeadMatch true | (FStar_Syntax_Syntax.Tm_match - uu____7566,FStar_Syntax_Syntax.Tm_match uu____7567) -> + uu____7603,FStar_Syntax_Syntax.Tm_match uu____7604) -> HeadMatch true - | uu____7613 -> - let uu____7618 = - let uu____7627 = delta_depth_of_term env t11 in - let uu____7630 = delta_depth_of_term env t21 in - (uu____7627, uu____7630) in - MisMatch uu____7618 + | uu____7650 -> + let uu____7655 = + let uu____7664 = delta_depth_of_term env t11 in + let uu____7667 = delta_depth_of_term env t21 in + (uu____7664, uu____7667) in + MisMatch uu____7655 let (head_matches_delta : FStar_TypeChecker_Env.env -> @@ -2507,44 +2521,44 @@ let (head_matches_delta : fun t2 -> let maybe_inline t = let head1 = FStar_Syntax_Util.head_of t in - (let uu____7696 = + (let uu____7733 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "RelDelta") in - if uu____7696 + if uu____7733 then - let uu____7701 = FStar_Syntax_Print.term_to_string t in - let uu____7703 = FStar_Syntax_Print.term_to_string head1 in - FStar_Util.print2 "Head of %s is %s\n" uu____7701 uu____7703 + let uu____7738 = FStar_Syntax_Print.term_to_string t in + let uu____7740 = FStar_Syntax_Print.term_to_string head1 in + FStar_Util.print2 "Head of %s is %s\n" uu____7738 uu____7740 else ()); - (let uu____7708 = - let uu____7709 = FStar_Syntax_Util.un_uinst head1 in - uu____7709.FStar_Syntax_Syntax.n in - match uu____7708 with + (let uu____7745 = + let uu____7746 = FStar_Syntax_Util.un_uinst head1 in + uu____7746.FStar_Syntax_Syntax.n in + match uu____7745 with | FStar_Syntax_Syntax.Tm_fvar fv -> - let uu____7715 = + let uu____7752 = FStar_TypeChecker_Env.lookup_definition [FStar_TypeChecker_Env.Unfold FStar_Syntax_Syntax.delta_constant; FStar_TypeChecker_Env.Eager_unfolding_only] env (fv.FStar_Syntax_Syntax.fv_name).FStar_Syntax_Syntax.v in - (match uu____7715 with + (match uu____7752 with | FStar_Pervasives_Native.None -> - ((let uu____7729 = + ((let uu____7766 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "RelDelta") in - if uu____7729 + if uu____7766 then - let uu____7734 = + let uu____7771 = FStar_Syntax_Print.term_to_string head1 in FStar_Util.print1 "No definition found for %s\n" - uu____7734 + uu____7771 else ()); FStar_Pervasives_Native.None) - | FStar_Pervasives_Native.Some uu____7739 -> + | FStar_Pervasives_Native.Some uu____7776 -> let basic_steps = [FStar_TypeChecker_Env.UnfoldUntil FStar_Syntax_Syntax.delta_constant; @@ -2564,28 +2578,28 @@ let (head_matches_delta : in let t' = FStar_TypeChecker_Normalize.normalize steps env t in - let uu____7756 = - let uu____7758 = FStar_Syntax_Util.eq_tm t t' in - uu____7758 = FStar_Syntax_Util.Equal in - if uu____7756 + let uu____7793 = + let uu____7795 = FStar_Syntax_Util.eq_tm t t' in + uu____7795 = FStar_Syntax_Util.Equal in + if uu____7793 then FStar_Pervasives_Native.None else - ((let uu____7765 = + ((let uu____7802 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "RelDelta") in - if uu____7765 + if uu____7802 then - let uu____7770 = + let uu____7807 = FStar_Syntax_Print.term_to_string t in - let uu____7772 = + let uu____7809 = FStar_Syntax_Print.term_to_string t' in - FStar_Util.print2 "Inlined %s to %s\n" uu____7770 - uu____7772 + FStar_Util.print2 "Inlined %s to %s\n" uu____7807 + uu____7809 else ()); FStar_Pervasives_Native.Some t')) - | uu____7777 -> FStar_Pervasives_Native.None) + | uu____7814 -> FStar_Pervasives_Native.None) in let success d r t11 t21 = (r, @@ -2601,22 +2615,22 @@ let (head_matches_delta : in let rec aux retry n_delta t11 t21 = let r = head_matches env t11 t21 in - (let uu____7929 = + (let uu____7966 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "RelDelta") in - if uu____7929 + if uu____7966 then - let uu____7934 = FStar_Syntax_Print.term_to_string t11 in - let uu____7936 = FStar_Syntax_Print.term_to_string t21 in - let uu____7938 = string_of_match_result r in - FStar_Util.print3 "head_matches (%s, %s) = %s\n" uu____7934 - uu____7936 uu____7938 + let uu____7971 = FStar_Syntax_Print.term_to_string t11 in + let uu____7973 = FStar_Syntax_Print.term_to_string t21 in + let uu____7975 = string_of_match_result r in + FStar_Util.print3 "head_matches (%s, %s) = %s\n" uu____7971 + uu____7973 uu____7975 else ()); (let reduce_one_and_try_again d1 d2 = let d1_greater_than_d2 = FStar_TypeChecker_Common.delta_depth_greater_than d1 d2 in - let uu____7966 = + let uu____8003 = if d1_greater_than_d2 then let t1' = @@ -2635,14 +2649,14 @@ let (head_matches_delta : in (t11, t2')) in - match uu____7966 with + match uu____8003 with | (t12,t22) -> aux retry (n_delta + (Prims.parse_int "1")) t12 t22 in let reduce_both_and_try_again d r1 = - let uu____8014 = FStar_TypeChecker_Common.decr_delta_depth d + let uu____8051 = FStar_TypeChecker_Common.decr_delta_depth d in - match uu____8014 with + match uu____8051 with | FStar_Pervasives_Native.None -> fail1 n_delta r1 t11 t21 | FStar_Pervasives_Native.Some d1 -> let t12 = @@ -2675,16 +2689,16 @@ let (head_matches_delta : | MisMatch (FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Delta_equational_at_level - uu____8052),uu____8053) + uu____8089),uu____8090) -> if Prims.op_Negation retry then fail1 n_delta r t11 t21 else - (let uu____8074 = - let uu____8083 = maybe_inline t11 in - let uu____8086 = maybe_inline t21 in - (uu____8083, uu____8086) in - match uu____8074 with + (let uu____8111 = + let uu____8120 = maybe_inline t11 in + let uu____8123 = maybe_inline t21 in + (uu____8120, uu____8123) in + match uu____8111 with | (FStar_Pervasives_Native.None ,FStar_Pervasives_Native.None ) -> fail1 n_delta r t11 t21 @@ -2698,17 +2712,17 @@ let (head_matches_delta : t12,FStar_Pervasives_Native.Some t22) -> aux false (n_delta + (Prims.parse_int "1")) t12 t22) | MisMatch - (uu____8129,FStar_Pervasives_Native.Some - (FStar_Syntax_Syntax.Delta_equational_at_level uu____8130)) + (uu____8166,FStar_Pervasives_Native.Some + (FStar_Syntax_Syntax.Delta_equational_at_level uu____8167)) -> if Prims.op_Negation retry then fail1 n_delta r t11 t21 else - (let uu____8151 = - let uu____8160 = maybe_inline t11 in - let uu____8163 = maybe_inline t21 in - (uu____8160, uu____8163) in - match uu____8151 with + (let uu____8188 = + let uu____8197 = maybe_inline t11 in + let uu____8200 = maybe_inline t21 in + (uu____8197, uu____8200) in + match uu____8188 with | (FStar_Pervasives_Native.None ,FStar_Pervasives_Native.None ) -> fail1 n_delta r t11 t21 @@ -2729,42 +2743,42 @@ let (head_matches_delta : (FStar_Pervasives_Native.Some d1,FStar_Pervasives_Native.Some d2) -> reduce_one_and_try_again d1 d2 - | MisMatch uu____8218 -> fail1 n_delta r t11 t21 - | uu____8227 -> success n_delta r t11 t21) + | MisMatch uu____8255 -> fail1 n_delta r t11 t21 + | uu____8264 -> success n_delta r t11 t21) in let r = aux true (Prims.parse_int "0") t1 t2 in - (let uu____8242 = + (let uu____8279 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "RelDelta") in - if uu____8242 + if uu____8279 then - let uu____8247 = FStar_Syntax_Print.term_to_string t1 in - let uu____8249 = FStar_Syntax_Print.term_to_string t2 in - let uu____8251 = + let uu____8284 = FStar_Syntax_Print.term_to_string t1 in + let uu____8286 = FStar_Syntax_Print.term_to_string t2 in + let uu____8288 = string_of_match_result (FStar_Pervasives_Native.fst r) in - let uu____8259 = + let uu____8296 = if FStar_Option.isNone (FStar_Pervasives_Native.snd r) then "None" else - (let uu____8276 = + (let uu____8313 = FStar_All.pipe_right (FStar_Pervasives_Native.snd r) FStar_Util.must in - FStar_All.pipe_right uu____8276 - (fun uu____8311 -> - match uu____8311 with + FStar_All.pipe_right uu____8313 + (fun uu____8348 -> + match uu____8348 with | (t11,t21) -> - let uu____8319 = + let uu____8356 = FStar_Syntax_Print.term_to_string t11 in - let uu____8321 = - let uu____8323 = + let uu____8358 = + let uu____8360 = FStar_Syntax_Print.term_to_string t21 in - Prims.strcat "; " uu____8323 in - Prims.strcat uu____8319 uu____8321)) + Prims.strcat "; " uu____8360 in + Prims.strcat uu____8356 uu____8358)) in FStar_Util.print4 "head_matches_delta (%s, %s) = %s (%s)\n" - uu____8247 uu____8249 uu____8251 uu____8259 + uu____8284 uu____8286 uu____8288 uu____8296 else ()); r @@ -2773,12 +2787,12 @@ let (kind_type : = fun binders -> fun r -> - let uu____8340 = FStar_Syntax_Util.type_u () in - FStar_All.pipe_right uu____8340 FStar_Pervasives_Native.fst + let uu____8377 = FStar_Syntax_Util.type_u () in + FStar_All.pipe_right uu____8377 FStar_Pervasives_Native.fst let (rank_t_num : FStar_TypeChecker_Common.rank_t -> Prims.int) = - fun uu___346_8355 -> - match uu___346_8355 with + fun uu___345_8392 -> + match uu___345_8392 with | FStar_TypeChecker_Common.Rigid_rigid -> (Prims.parse_int "0") | FStar_TypeChecker_Common.Flex_rigid_eq -> (Prims.parse_int "1") | FStar_TypeChecker_Common.Flex_flex_pattern_eq -> (Prims.parse_int "2") @@ -2801,28 +2815,28 @@ let (compress_tprob : = fun tcenv -> fun p -> - let uu___367_8404 = p in - let uu____8407 = whnf tcenv p.FStar_TypeChecker_Common.lhs in - let uu____8408 = whnf tcenv p.FStar_TypeChecker_Common.rhs in + let uu___366_8441 = p in + let uu____8444 = whnf tcenv p.FStar_TypeChecker_Common.lhs in + let uu____8445 = whnf tcenv p.FStar_TypeChecker_Common.rhs in { FStar_TypeChecker_Common.pid = - (uu___367_8404.FStar_TypeChecker_Common.pid); - FStar_TypeChecker_Common.lhs = uu____8407; + (uu___366_8441.FStar_TypeChecker_Common.pid); + FStar_TypeChecker_Common.lhs = uu____8444; FStar_TypeChecker_Common.relation = - (uu___367_8404.FStar_TypeChecker_Common.relation); - FStar_TypeChecker_Common.rhs = uu____8408; + (uu___366_8441.FStar_TypeChecker_Common.relation); + FStar_TypeChecker_Common.rhs = uu____8445; FStar_TypeChecker_Common.element = - (uu___367_8404.FStar_TypeChecker_Common.element); + (uu___366_8441.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___367_8404.FStar_TypeChecker_Common.logical_guard); + (uu___366_8441.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___367_8404.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___366_8441.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___367_8404.FStar_TypeChecker_Common.reason); + (uu___366_8441.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___367_8404.FStar_TypeChecker_Common.loc); + (uu___366_8441.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___367_8404.FStar_TypeChecker_Common.rank) + (uu___366_8441.FStar_TypeChecker_Common.rank) } let (compress_prob : @@ -2833,10 +2847,10 @@ let (compress_prob : fun p -> match p with | FStar_TypeChecker_Common.TProb p1 -> - let uu____8423 = compress_tprob tcenv p1 in - FStar_All.pipe_right uu____8423 + let uu____8460 = compress_tprob tcenv p1 in + FStar_All.pipe_right uu____8460 (fun _0_5 -> FStar_TypeChecker_Common.TProb _0_5) - | FStar_TypeChecker_Common.CProb uu____8428 -> p + | FStar_TypeChecker_Common.CProb uu____8465 -> p let (rank : FStar_TypeChecker_Env.env -> @@ -2847,27 +2861,27 @@ let (rank : fun tcenv -> fun pr -> let prob = - let uu____8451 = compress_prob tcenv pr in - FStar_All.pipe_right uu____8451 maybe_invert_p in + let uu____8488 = compress_prob tcenv pr in + FStar_All.pipe_right uu____8488 maybe_invert_p in match prob with | FStar_TypeChecker_Common.TProb tp -> - let uu____8459 = + let uu____8496 = FStar_Syntax_Util.head_and_args tp.FStar_TypeChecker_Common.lhs in - (match uu____8459 with + (match uu____8496 with | (lh,lhs_args) -> - let uu____8506 = + let uu____8543 = FStar_Syntax_Util.head_and_args tp.FStar_TypeChecker_Common.rhs in - (match uu____8506 with + (match uu____8543 with | (rh,rhs_args) -> - let uu____8553 = + let uu____8590 = match ((lh.FStar_Syntax_Syntax.n), (rh.FStar_Syntax_Syntax.n)) with | (FStar_Syntax_Syntax.Tm_uvar - uu____8566,FStar_Syntax_Syntax.Tm_uvar uu____8567) + uu____8603,FStar_Syntax_Syntax.Tm_uvar uu____8604) -> (match (lhs_args, rhs_args) with | ([],[]) when @@ -2876,168 +2890,168 @@ let (rank : -> (FStar_TypeChecker_Common.Flex_flex_pattern_eq, tp) - | uu____8656 -> + | uu____8693 -> (FStar_TypeChecker_Common.Flex_flex, tp)) - | (FStar_Syntax_Syntax.Tm_uvar uu____8683,uu____8684) + | (FStar_Syntax_Syntax.Tm_uvar uu____8720,uu____8721) when tp.FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ -> (FStar_TypeChecker_Common.Flex_rigid_eq, tp) - | (uu____8699,FStar_Syntax_Syntax.Tm_uvar uu____8700) + | (uu____8736,FStar_Syntax_Syntax.Tm_uvar uu____8737) when tp.FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ -> (FStar_TypeChecker_Common.Flex_rigid_eq, tp) | (FStar_Syntax_Syntax.Tm_uvar - uu____8715,FStar_Syntax_Syntax.Tm_arrow uu____8716) + uu____8752,FStar_Syntax_Syntax.Tm_arrow uu____8753) -> (FStar_TypeChecker_Common.Flex_rigid_eq, - (let uu___368_8746 = tp in + (let uu___367_8783 = tp in { FStar_TypeChecker_Common.pid = - (uu___368_8746.FStar_TypeChecker_Common.pid); + (uu___367_8783.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = - (uu___368_8746.FStar_TypeChecker_Common.lhs); + (uu___367_8783.FStar_TypeChecker_Common.lhs); FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ; FStar_TypeChecker_Common.rhs = - (uu___368_8746.FStar_TypeChecker_Common.rhs); + (uu___367_8783.FStar_TypeChecker_Common.rhs); FStar_TypeChecker_Common.element = - (uu___368_8746.FStar_TypeChecker_Common.element); + (uu___367_8783.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___368_8746.FStar_TypeChecker_Common.logical_guard); + (uu___367_8783.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___368_8746.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___367_8783.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___368_8746.FStar_TypeChecker_Common.reason); + (uu___367_8783.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___368_8746.FStar_TypeChecker_Common.loc); + (uu___367_8783.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___368_8746.FStar_TypeChecker_Common.rank) + (uu___367_8783.FStar_TypeChecker_Common.rank) })) | (FStar_Syntax_Syntax.Tm_uvar - uu____8749,FStar_Syntax_Syntax.Tm_type uu____8750) + uu____8786,FStar_Syntax_Syntax.Tm_type uu____8787) -> (FStar_TypeChecker_Common.Flex_rigid_eq, - (let uu___368_8766 = tp in + (let uu___367_8803 = tp in { FStar_TypeChecker_Common.pid = - (uu___368_8766.FStar_TypeChecker_Common.pid); + (uu___367_8803.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = - (uu___368_8766.FStar_TypeChecker_Common.lhs); + (uu___367_8803.FStar_TypeChecker_Common.lhs); FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ; FStar_TypeChecker_Common.rhs = - (uu___368_8766.FStar_TypeChecker_Common.rhs); + (uu___367_8803.FStar_TypeChecker_Common.rhs); FStar_TypeChecker_Common.element = - (uu___368_8766.FStar_TypeChecker_Common.element); + (uu___367_8803.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___368_8766.FStar_TypeChecker_Common.logical_guard); + (uu___367_8803.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___368_8766.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___367_8803.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___368_8766.FStar_TypeChecker_Common.reason); + (uu___367_8803.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___368_8766.FStar_TypeChecker_Common.loc); + (uu___367_8803.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___368_8766.FStar_TypeChecker_Common.rank) + (uu___367_8803.FStar_TypeChecker_Common.rank) })) | (FStar_Syntax_Syntax.Tm_type - uu____8769,FStar_Syntax_Syntax.Tm_uvar uu____8770) + uu____8806,FStar_Syntax_Syntax.Tm_uvar uu____8807) -> (FStar_TypeChecker_Common.Flex_rigid_eq, - (let uu___368_8786 = tp in + (let uu___367_8823 = tp in { FStar_TypeChecker_Common.pid = - (uu___368_8786.FStar_TypeChecker_Common.pid); + (uu___367_8823.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = - (uu___368_8786.FStar_TypeChecker_Common.lhs); + (uu___367_8823.FStar_TypeChecker_Common.lhs); FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ; FStar_TypeChecker_Common.rhs = - (uu___368_8786.FStar_TypeChecker_Common.rhs); + (uu___367_8823.FStar_TypeChecker_Common.rhs); FStar_TypeChecker_Common.element = - (uu___368_8786.FStar_TypeChecker_Common.element); + (uu___367_8823.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___368_8786.FStar_TypeChecker_Common.logical_guard); + (uu___367_8823.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___368_8786.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___367_8823.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___368_8786.FStar_TypeChecker_Common.reason); + (uu___367_8823.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___368_8786.FStar_TypeChecker_Common.loc); + (uu___367_8823.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___368_8786.FStar_TypeChecker_Common.rank) + (uu___367_8823.FStar_TypeChecker_Common.rank) })) - | (uu____8789,FStar_Syntax_Syntax.Tm_uvar uu____8790) + | (uu____8826,FStar_Syntax_Syntax.Tm_uvar uu____8827) -> (FStar_TypeChecker_Common.Rigid_flex, tp) - | (FStar_Syntax_Syntax.Tm_uvar uu____8805,uu____8806) + | (FStar_Syntax_Syntax.Tm_uvar uu____8842,uu____8843) -> (FStar_TypeChecker_Common.Flex_rigid, tp) - | (uu____8821,FStar_Syntax_Syntax.Tm_uvar uu____8822) + | (uu____8858,FStar_Syntax_Syntax.Tm_uvar uu____8859) -> (FStar_TypeChecker_Common.Rigid_flex, tp) - | (uu____8837,uu____8838) -> + | (uu____8874,uu____8875) -> (FStar_TypeChecker_Common.Rigid_rigid, tp) in - (match uu____8553 with + (match uu____8590 with | (rank,tp1) -> - let uu____8851 = + let uu____8888 = FStar_All.pipe_right - (let uu___369_8855 = tp1 in + (let uu___368_8892 = tp1 in { FStar_TypeChecker_Common.pid = - (uu___369_8855.FStar_TypeChecker_Common.pid); + (uu___368_8892.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = - (uu___369_8855.FStar_TypeChecker_Common.lhs); + (uu___368_8892.FStar_TypeChecker_Common.lhs); FStar_TypeChecker_Common.relation = - (uu___369_8855.FStar_TypeChecker_Common.relation); + (uu___368_8892.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = - (uu___369_8855.FStar_TypeChecker_Common.rhs); + (uu___368_8892.FStar_TypeChecker_Common.rhs); FStar_TypeChecker_Common.element = - (uu___369_8855.FStar_TypeChecker_Common.element); + (uu___368_8892.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___369_8855.FStar_TypeChecker_Common.logical_guard); + (uu___368_8892.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___369_8855.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___368_8892.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___369_8855.FStar_TypeChecker_Common.reason); + (uu___368_8892.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___369_8855.FStar_TypeChecker_Common.loc); + (uu___368_8892.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = (FStar_Pervasives_Native.Some rank) }) (fun _0_6 -> FStar_TypeChecker_Common.TProb _0_6) in - (rank, uu____8851)))) + (rank, uu____8888)))) | FStar_TypeChecker_Common.CProb cp -> - let uu____8861 = + let uu____8898 = FStar_All.pipe_right - (let uu___370_8865 = cp in + (let uu___369_8902 = cp in { FStar_TypeChecker_Common.pid = - (uu___370_8865.FStar_TypeChecker_Common.pid); + (uu___369_8902.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = - (uu___370_8865.FStar_TypeChecker_Common.lhs); + (uu___369_8902.FStar_TypeChecker_Common.lhs); FStar_TypeChecker_Common.relation = - (uu___370_8865.FStar_TypeChecker_Common.relation); + (uu___369_8902.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = - (uu___370_8865.FStar_TypeChecker_Common.rhs); + (uu___369_8902.FStar_TypeChecker_Common.rhs); FStar_TypeChecker_Common.element = - (uu___370_8865.FStar_TypeChecker_Common.element); + (uu___369_8902.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___370_8865.FStar_TypeChecker_Common.logical_guard); + (uu___369_8902.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___370_8865.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___369_8902.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___370_8865.FStar_TypeChecker_Common.reason); + (uu___369_8902.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___370_8865.FStar_TypeChecker_Common.loc); + (uu___369_8902.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = (FStar_Pervasives_Native.Some FStar_TypeChecker_Common.Rigid_rigid) }) (fun _0_7 -> FStar_TypeChecker_Common.CProb _0_7) in - (FStar_TypeChecker_Common.Rigid_rigid, uu____8861) + (FStar_TypeChecker_Common.Rigid_rigid, uu____8898) let (next_prob : worklist -> @@ -3046,8 +3060,8 @@ let (next_prob : FStar_Pervasives_Native.option) = fun wl -> - let rec aux uu____8927 probs = - match uu____8927 with + let rec aux uu____8964 probs = + match uu____8964 with | (min_rank,min1,out) -> (match probs with | [] -> @@ -3055,10 +3069,10 @@ let (next_prob : | (FStar_Pervasives_Native.Some p,FStar_Pervasives_Native.Some r) -> FStar_Pervasives_Native.Some (p, out, r) - | uu____9008 -> FStar_Pervasives_Native.None) + | uu____9045 -> FStar_Pervasives_Native.None) | hd1::tl1 -> - let uu____9029 = rank wl.tcenv hd1 in - (match uu____9029 with + let uu____9066 = rank wl.tcenv hd1 in + (match uu____9066 with | (rank1,hd2) -> if rank_leq rank1 FStar_TypeChecker_Common.Flex_rigid_eq then @@ -3070,12 +3084,12 @@ let (next_prob : FStar_Pervasives_Native.Some (hd2, (FStar_List.append out (m :: tl1)), rank1)) else - (let uu____9090 = + (let uu____9127 = (min_rank = FStar_Pervasives_Native.None) || - (let uu____9095 = FStar_Option.get min_rank in - rank_less_than rank1 uu____9095) + (let uu____9132 = FStar_Option.get min_rank in + rank_less_than rank1 uu____9132) in - if uu____9090 + if uu____9127 then match min1 with | FStar_Pervasives_Native.None -> @@ -3101,33 +3115,33 @@ let (flex_prob_closing : fun bs -> fun p -> let flex_will_be_closed t = - let uu____9168 = FStar_Syntax_Util.head_and_args t in - match uu____9168 with - | (hd1,uu____9187) -> - let uu____9212 = - let uu____9213 = FStar_Syntax_Subst.compress hd1 in - uu____9213.FStar_Syntax_Syntax.n in - (match uu____9212 with - | FStar_Syntax_Syntax.Tm_uvar (u,uu____9218) -> + let uu____9205 = FStar_Syntax_Util.head_and_args t in + match uu____9205 with + | (hd1,uu____9224) -> + let uu____9249 = + let uu____9250 = FStar_Syntax_Subst.compress hd1 in + uu____9250.FStar_Syntax_Syntax.n in + (match uu____9249 with + | FStar_Syntax_Syntax.Tm_uvar (u,uu____9255) -> FStar_All.pipe_right u.FStar_Syntax_Syntax.ctx_uvar_binders (FStar_Util.for_some - (fun uu____9253 -> - match uu____9253 with - | (y,uu____9262) -> + (fun uu____9290 -> + match uu____9290 with + | (y,uu____9299) -> FStar_All.pipe_right bs (FStar_Util.for_some - (fun uu____9285 -> - match uu____9285 with - | (x,uu____9294) -> + (fun uu____9322 -> + match uu____9322 with + | (x,uu____9331) -> FStar_Syntax_Syntax.bv_eq x y)))) - | uu____9299 -> false) + | uu____9336 -> false) in - let uu____9301 = rank tcenv p in - match uu____9301 with + let uu____9338 = rank tcenv p in + match uu____9338 with | (r,p1) -> (match p1 with - | FStar_TypeChecker_Common.CProb uu____9310 -> true + | FStar_TypeChecker_Common.CProb uu____9347 -> true | FStar_TypeChecker_Common.TProb p2 -> (match r with | FStar_TypeChecker_Common.Rigid_rigid -> true @@ -3152,19 +3166,19 @@ type univ_eq_sol = | UFailed of Prims.string let (uu___is_UDeferred : univ_eq_sol -> Prims.bool) = fun projectee -> - match projectee with | UDeferred _0 -> true | uu____9347 -> false + match projectee with | UDeferred _0 -> true | uu____9384 -> false let (__proj__UDeferred__item___0 : univ_eq_sol -> worklist) = fun projectee -> match projectee with | UDeferred _0 -> _0 let (uu___is_USolved : univ_eq_sol -> Prims.bool) = fun projectee -> - match projectee with | USolved _0 -> true | uu____9367 -> false + match projectee with | USolved _0 -> true | uu____9404 -> false let (__proj__USolved__item___0 : univ_eq_sol -> worklist) = fun projectee -> match projectee with | USolved _0 -> _0 let (uu___is_UFailed : univ_eq_sol -> Prims.bool) = fun projectee -> - match projectee with | UFailed _0 -> true | uu____9388 -> false + match projectee with | UFailed _0 -> true | uu____9425 -> false let (__proj__UFailed__item___0 : univ_eq_sol -> Prims.string) = fun projectee -> match projectee with | UFailed _0 -> _0 @@ -3188,14 +3202,14 @@ let rec (really_solve_universe_eq : FStar_All.pipe_right us (FStar_Util.for_some (fun u3 -> - let uu____9451 = FStar_Syntax_Util.univ_kernel u3 in - match uu____9451 with - | (k,uu____9459) -> + let uu____9488 = FStar_Syntax_Util.univ_kernel u3 in + match uu____9488 with + | (k,uu____9496) -> (match k with | FStar_Syntax_Syntax.U_unif v2 -> FStar_Syntax_Unionfind.univ_equiv v1 v2 - | uu____9472 -> false))) - | uu____9474 -> occurs_univ v1 (FStar_Syntax_Syntax.U_max [u]) + | uu____9509 -> false))) + | uu____9511 -> occurs_univ v1 (FStar_Syntax_Syntax.U_max [u]) in let rec filter_out_common_univs u12 u22 = let common_elts = @@ -3203,32 +3217,32 @@ let rec (really_solve_universe_eq : (FStar_List.fold_left (fun uvs -> fun uv1 -> - let uu____9526 = + let uu____9563 = FStar_All.pipe_right u22 (FStar_List.existsML (fun uv2 -> - let uu____9534 = + let uu____9571 = FStar_Syntax_Util.compare_univs uv1 uv2 in - uu____9534 = (Prims.parse_int "0"))) + uu____9571 = (Prims.parse_int "0"))) in - if uu____9526 then uv1 :: uvs else uvs) []) + if uu____9563 then uv1 :: uvs else uvs) []) in let filter1 = FStar_List.filter (fun u -> - let uu____9555 = + let uu____9592 = FStar_All.pipe_right common_elts (FStar_List.existsML (fun u' -> - let uu____9563 = + let uu____9600 = FStar_Syntax_Util.compare_univs u u' in - uu____9563 = (Prims.parse_int "0"))) + uu____9600 = (Prims.parse_int "0"))) in - Prims.op_Negation uu____9555) + Prims.op_Negation uu____9592) in - let uu____9567 = filter1 u12 in - let uu____9570 = filter1 u22 in (uu____9567, uu____9570) in + let uu____9604 = filter1 u12 in + let uu____9607 = filter1 u22 in (uu____9604, uu____9607) in let try_umax_components u12 u22 msg = if Prims.op_Negation wl.umax_heuristic_ok then UFailed "Unable to unify universe terms with umax" @@ -3236,8 +3250,8 @@ let rec (really_solve_universe_eq : (match (u12, u22) with | (FStar_Syntax_Syntax.U_max us1,FStar_Syntax_Syntax.U_max us2) -> - let uu____9605 = filter_out_common_univs us1 us2 in - (match uu____9605 with + let uu____9642 = filter_out_common_univs us1 us2 in + (match uu____9642 with | (us11,us21) -> if (FStar_List.length us11) = (FStar_List.length us21) @@ -3245,34 +3259,34 @@ let rec (really_solve_universe_eq : let rec aux wl1 us12 us22 = match (us12, us22) with | (u13::us13,u23::us23) -> - let uu____9665 = + let uu____9702 = really_solve_universe_eq pid_orig wl1 u13 u23 in - (match uu____9665 with + (match uu____9702 with | USolved wl2 -> aux wl2 us13 us23 | failed -> failed) - | uu____9668 -> USolved wl1 in + | uu____9705 -> USolved wl1 in aux wl us11 us21 else - (let uu____9679 = - let uu____9681 = + (let uu____9716 = + let uu____9718 = FStar_Syntax_Print.univ_to_string u12 in - let uu____9683 = + let uu____9720 = FStar_Syntax_Print.univ_to_string u22 in FStar_Util.format2 "Unable to unify universes: %s and %s" - uu____9681 uu____9683 + uu____9718 uu____9720 in - UFailed uu____9679)) + UFailed uu____9716)) | (FStar_Syntax_Syntax.U_max us,u') -> let rec aux wl1 us1 = match us1 with | [] -> USolved wl1 | u::us2 -> - let uu____9709 = + let uu____9746 = really_solve_universe_eq pid_orig wl1 u u' in - (match uu____9709 with + (match uu____9746 with | USolved wl2 -> aux wl2 us2 | failed -> failed) in @@ -3282,62 +3296,62 @@ let rec (really_solve_universe_eq : match us1 with | [] -> USolved wl1 | u::us2 -> - let uu____9735 = + let uu____9772 = really_solve_universe_eq pid_orig wl1 u u' in - (match uu____9735 with + (match uu____9772 with | USolved wl2 -> aux wl2 us2 | failed -> failed) in aux wl us - | uu____9738 -> - let uu____9743 = - let uu____9745 = FStar_Syntax_Print.univ_to_string u12 + | uu____9775 -> + let uu____9780 = + let uu____9782 = FStar_Syntax_Print.univ_to_string u12 in - let uu____9747 = FStar_Syntax_Print.univ_to_string u22 + let uu____9784 = FStar_Syntax_Print.univ_to_string u22 in FStar_Util.format3 - "Unable to unify universes: %s and %s (%s)" uu____9745 - uu____9747 msg + "Unable to unify universes: %s and %s (%s)" uu____9782 + uu____9784 msg in - UFailed uu____9743) + UFailed uu____9780) in match (u11, u21) with - | (FStar_Syntax_Syntax.U_bvar uu____9750,uu____9751) -> - let uu____9753 = - let uu____9755 = FStar_Syntax_Print.univ_to_string u11 in - let uu____9757 = FStar_Syntax_Print.univ_to_string u21 in + | (FStar_Syntax_Syntax.U_bvar uu____9787,uu____9788) -> + let uu____9790 = + let uu____9792 = FStar_Syntax_Print.univ_to_string u11 in + let uu____9794 = FStar_Syntax_Print.univ_to_string u21 in FStar_Util.format2 "Impossible: found an de Bruijn universe variable or unknown universe: %s, %s" - uu____9755 uu____9757 + uu____9792 uu____9794 in - failwith uu____9753 - | (FStar_Syntax_Syntax.U_unknown ,uu____9760) -> - let uu____9761 = - let uu____9763 = FStar_Syntax_Print.univ_to_string u11 in - let uu____9765 = FStar_Syntax_Print.univ_to_string u21 in + failwith uu____9790 + | (FStar_Syntax_Syntax.U_unknown ,uu____9797) -> + let uu____9798 = + let uu____9800 = FStar_Syntax_Print.univ_to_string u11 in + let uu____9802 = FStar_Syntax_Print.univ_to_string u21 in FStar_Util.format2 "Impossible: found an de Bruijn universe variable or unknown universe: %s, %s" - uu____9763 uu____9765 + uu____9800 uu____9802 in - failwith uu____9761 - | (uu____9768,FStar_Syntax_Syntax.U_bvar uu____9769) -> - let uu____9771 = - let uu____9773 = FStar_Syntax_Print.univ_to_string u11 in - let uu____9775 = FStar_Syntax_Print.univ_to_string u21 in + failwith uu____9798 + | (uu____9805,FStar_Syntax_Syntax.U_bvar uu____9806) -> + let uu____9808 = + let uu____9810 = FStar_Syntax_Print.univ_to_string u11 in + let uu____9812 = FStar_Syntax_Print.univ_to_string u21 in FStar_Util.format2 "Impossible: found an de Bruijn universe variable or unknown universe: %s, %s" - uu____9773 uu____9775 + uu____9810 uu____9812 in - failwith uu____9771 - | (uu____9778,FStar_Syntax_Syntax.U_unknown ) -> - let uu____9779 = - let uu____9781 = FStar_Syntax_Print.univ_to_string u11 in - let uu____9783 = FStar_Syntax_Print.univ_to_string u21 in + failwith uu____9808 + | (uu____9815,FStar_Syntax_Syntax.U_unknown ) -> + let uu____9816 = + let uu____9818 = FStar_Syntax_Print.univ_to_string u11 in + let uu____9820 = FStar_Syntax_Print.univ_to_string u21 in FStar_Util.format2 "Impossible: found an de Bruijn universe variable or unknown universe: %s, %s" - uu____9781 uu____9783 + uu____9818 uu____9820 in - failwith uu____9779 + failwith uu____9816 | (FStar_Syntax_Syntax.U_name x,FStar_Syntax_Syntax.U_name y) -> if x.FStar_Ident.idText = y.FStar_Ident.idText then USolved wl @@ -3347,81 +3361,81 @@ let rec (really_solve_universe_eq : | (FStar_Syntax_Syntax.U_succ u12,FStar_Syntax_Syntax.U_succ u22) -> really_solve_universe_eq pid_orig wl u12 u22 | (FStar_Syntax_Syntax.U_unif v1,FStar_Syntax_Syntax.U_unif v2) -> - let uu____9813 = FStar_Syntax_Unionfind.univ_equiv v1 v2 in - if uu____9813 + let uu____9850 = FStar_Syntax_Unionfind.univ_equiv v1 v2 in + if uu____9850 then USolved wl else (let wl1 = extend_solution pid_orig [UNIV (v1, u21)] wl in USolved wl1) | (FStar_Syntax_Syntax.U_unif v1,u) -> let u3 = norm_univ wl u in - let uu____9830 = occurs_univ v1 u3 in - if uu____9830 + let uu____9867 = occurs_univ v1 u3 in + if uu____9867 then - let uu____9833 = - let uu____9835 = + let uu____9870 = + let uu____9872 = FStar_Syntax_Print.univ_to_string (FStar_Syntax_Syntax.U_unif v1) in - let uu____9837 = FStar_Syntax_Print.univ_to_string u3 in + let uu____9874 = FStar_Syntax_Print.univ_to_string u3 in FStar_Util.format2 "Failed occurs check: %s occurs in %s" - uu____9835 uu____9837 + uu____9872 uu____9874 in - try_umax_components u11 u21 uu____9833 + try_umax_components u11 u21 uu____9870 else - (let uu____9842 = extend_solution pid_orig [UNIV (v1, u3)] wl + (let uu____9879 = extend_solution pid_orig [UNIV (v1, u3)] wl in - USolved uu____9842) + USolved uu____9879) | (u,FStar_Syntax_Syntax.U_unif v1) -> let u3 = norm_univ wl u in - let uu____9854 = occurs_univ v1 u3 in - if uu____9854 + let uu____9891 = occurs_univ v1 u3 in + if uu____9891 then - let uu____9857 = - let uu____9859 = + let uu____9894 = + let uu____9896 = FStar_Syntax_Print.univ_to_string (FStar_Syntax_Syntax.U_unif v1) in - let uu____9861 = FStar_Syntax_Print.univ_to_string u3 in + let uu____9898 = FStar_Syntax_Print.univ_to_string u3 in FStar_Util.format2 "Failed occurs check: %s occurs in %s" - uu____9859 uu____9861 + uu____9896 uu____9898 in - try_umax_components u11 u21 uu____9857 + try_umax_components u11 u21 uu____9894 else - (let uu____9866 = extend_solution pid_orig [UNIV (v1, u3)] wl + (let uu____9903 = extend_solution pid_orig [UNIV (v1, u3)] wl in - USolved uu____9866) - | (FStar_Syntax_Syntax.U_max uu____9867,uu____9868) -> + USolved uu____9903) + | (FStar_Syntax_Syntax.U_max uu____9904,uu____9905) -> if wl.defer_ok then UDeferred wl else (let u12 = norm_univ wl u11 in let u22 = norm_univ wl u21 in - let uu____9876 = FStar_Syntax_Util.eq_univs u12 u22 in - if uu____9876 + let uu____9913 = FStar_Syntax_Util.eq_univs u12 u22 in + if uu____9913 then USolved wl else try_umax_components u12 u22 "") - | (uu____9882,FStar_Syntax_Syntax.U_max uu____9883) -> + | (uu____9919,FStar_Syntax_Syntax.U_max uu____9920) -> if wl.defer_ok then UDeferred wl else (let u12 = norm_univ wl u11 in let u22 = norm_univ wl u21 in - let uu____9891 = FStar_Syntax_Util.eq_univs u12 u22 in - if uu____9891 + let uu____9928 = FStar_Syntax_Util.eq_univs u12 u22 in + if uu____9928 then USolved wl else try_umax_components u12 u22 "") - | (FStar_Syntax_Syntax.U_succ uu____9897,FStar_Syntax_Syntax.U_zero + | (FStar_Syntax_Syntax.U_succ uu____9934,FStar_Syntax_Syntax.U_zero ) -> UFailed "Incompatible universes" - | (FStar_Syntax_Syntax.U_succ uu____9899,FStar_Syntax_Syntax.U_name - uu____9900) -> UFailed "Incompatible universes" + | (FStar_Syntax_Syntax.U_succ uu____9936,FStar_Syntax_Syntax.U_name + uu____9937) -> UFailed "Incompatible universes" | (FStar_Syntax_Syntax.U_zero ,FStar_Syntax_Syntax.U_succ - uu____9902) -> UFailed "Incompatible universes" + uu____9939) -> UFailed "Incompatible universes" | (FStar_Syntax_Syntax.U_zero ,FStar_Syntax_Syntax.U_name - uu____9904) -> UFailed "Incompatible universes" - | (FStar_Syntax_Syntax.U_name uu____9906,FStar_Syntax_Syntax.U_succ - uu____9907) -> UFailed "Incompatible universes" - | (FStar_Syntax_Syntax.U_name uu____9909,FStar_Syntax_Syntax.U_zero + uu____9941) -> UFailed "Incompatible universes" + | (FStar_Syntax_Syntax.U_name uu____9943,FStar_Syntax_Syntax.U_succ + uu____9944) -> UFailed "Incompatible universes" + | (FStar_Syntax_Syntax.U_name uu____9946,FStar_Syntax_Syntax.U_zero ) -> UFailed "Incompatible universes" let (solve_universe_eq : @@ -3449,25 +3463,25 @@ let match_num_binders : = fun bc1 -> fun bc2 -> - let uu____10016 = bc1 in - match uu____10016 with + let uu____10053 = bc1 in + match uu____10053 with | (bs1,mk_cod1) -> - let uu____10060 = bc2 in - (match uu____10060 with + let uu____10097 = bc2 in + (match uu____10097 with | (bs2,mk_cod2) -> let rec aux bs11 bs21 = match (bs11, bs21) with | (x::xs,y::ys) -> - let uu____10171 = aux xs ys in - (match uu____10171 with + let uu____10208 = aux xs ys in + (match uu____10208 with | ((xs1,xr),(ys1,yr)) -> (((x :: xs1), xr), ((y :: ys1), yr))) | (xs,ys) -> - let uu____10254 = - let uu____10261 = mk_cod1 xs in ([], uu____10261) in - let uu____10264 = - let uu____10271 = mk_cod2 ys in ([], uu____10271) in - (uu____10254, uu____10264) + let uu____10291 = + let uu____10298 = mk_cod1 xs in ([], uu____10298) in + let uu____10301 = + let uu____10308 = mk_cod2 ys in ([], uu____10308) in + (uu____10291, uu____10301) in aux bs1 bs2) @@ -3488,36 +3502,36 @@ let (guard_of_prob : let has_type_guard t11 t21 = match problem.FStar_TypeChecker_Common.element with | FStar_Pervasives_Native.Some t -> - let uu____10340 = FStar_Syntax_Syntax.bv_to_name t in - FStar_Syntax_Util.mk_has_type t11 uu____10340 t21 + let uu____10377 = FStar_Syntax_Syntax.bv_to_name t in + FStar_Syntax_Util.mk_has_type t11 uu____10377 t21 | FStar_Pervasives_Native.None -> let x = FStar_Syntax_Syntax.new_bv FStar_Pervasives_Native.None t11 in let u_x = env.FStar_TypeChecker_Env.universe_of env t11 in - let uu____10343 = - let uu____10344 = FStar_Syntax_Syntax.bv_to_name x in - FStar_Syntax_Util.mk_has_type t11 uu____10344 t21 in - FStar_Syntax_Util.mk_forall u_x x uu____10343 + let uu____10380 = + let uu____10381 = FStar_Syntax_Syntax.bv_to_name x in + FStar_Syntax_Util.mk_has_type t11 uu____10381 t21 in + FStar_Syntax_Util.mk_forall u_x x uu____10380 in match problem.FStar_TypeChecker_Common.relation with | FStar_TypeChecker_Common.EQ -> mk_eq2 wl env (FStar_TypeChecker_Common.TProb problem) t1 t2 | FStar_TypeChecker_Common.SUB -> - let uu____10349 = has_type_guard t1 t2 in (uu____10349, wl) + let uu____10386 = has_type_guard t1 t2 in (uu____10386, wl) | FStar_TypeChecker_Common.SUBINV -> - let uu____10350 = has_type_guard t2 t1 in (uu____10350, wl) + let uu____10387 = has_type_guard t2 t1 in (uu____10387, wl) let is_flex_pat : - 'Auu____10360 'Auu____10361 'Auu____10362 . - ('Auu____10360,'Auu____10361,'Auu____10362 Prims.list) + 'Auu____10397 'Auu____10398 'Auu____10399 . + ('Auu____10397,'Auu____10398,'Auu____10399 Prims.list) FStar_Pervasives_Native.tuple3 -> Prims.bool = - fun uu___347_10376 -> - match uu___347_10376 with - | (uu____10385,uu____10386,[]) -> true - | uu____10390 -> false + fun uu___346_10413 -> + match uu___346_10413 with + | (uu____10422,uu____10423,[]) -> true + | uu____10427 -> false let (quasi_pattern : FStar_TypeChecker_Env.env -> @@ -3527,152 +3541,153 @@ let (quasi_pattern : = fun env -> fun f -> - let uu____10423 = f in - match uu____10423 with - | (uu____10430,{ FStar_Syntax_Syntax.ctx_uvar_head = uu____10431; - FStar_Syntax_Syntax.ctx_uvar_gamma = uu____10432; + let uu____10460 = f in + match uu____10460 with + | (uu____10467,{ FStar_Syntax_Syntax.ctx_uvar_head = uu____10468; + FStar_Syntax_Syntax.ctx_uvar_gamma = uu____10469; FStar_Syntax_Syntax.ctx_uvar_binders = ctx; FStar_Syntax_Syntax.ctx_uvar_typ = t_hd; - FStar_Syntax_Syntax.ctx_uvar_reason = uu____10435; + FStar_Syntax_Syntax.ctx_uvar_reason = uu____10472; FStar_Syntax_Syntax.ctx_uvar_should_check = - uu____10436; - FStar_Syntax_Syntax.ctx_uvar_range = uu____10437;_},args) + uu____10473; + FStar_Syntax_Syntax.ctx_uvar_range = uu____10474; + FStar_Syntax_Syntax.ctx_uvar_meta = uu____10475;_},args) -> let name_exists_in x bs = FStar_Util.for_some - (fun uu____10499 -> - match uu____10499 with - | (y,uu____10508) -> FStar_Syntax_Syntax.bv_eq x y) bs + (fun uu____10545 -> + match uu____10545 with + | (y,uu____10554) -> FStar_Syntax_Syntax.bv_eq x y) bs in let rec aux pat_binders formals t_res args1 = match (formals, args1) with | ([],[]) -> - let uu____10662 = - let uu____10677 = - let uu____10680 = FStar_Syntax_Syntax.mk_Total t_res in - FStar_Syntax_Util.arrow formals uu____10680 in - ((FStar_List.rev pat_binders), uu____10677) in - FStar_Pervasives_Native.Some uu____10662 - | (uu____10713,[]) -> - let uu____10744 = - let uu____10759 = - let uu____10762 = FStar_Syntax_Syntax.mk_Total t_res in - FStar_Syntax_Util.arrow formals uu____10762 in - ((FStar_List.rev pat_binders), uu____10759) in - FStar_Pervasives_Native.Some uu____10744 + let uu____10708 = + let uu____10723 = + let uu____10726 = FStar_Syntax_Syntax.mk_Total t_res in + FStar_Syntax_Util.arrow formals uu____10726 in + ((FStar_List.rev pat_binders), uu____10723) in + FStar_Pervasives_Native.Some uu____10708 + | (uu____10759,[]) -> + let uu____10790 = + let uu____10805 = + let uu____10808 = FStar_Syntax_Syntax.mk_Total t_res in + FStar_Syntax_Util.arrow formals uu____10808 in + ((FStar_List.rev pat_binders), uu____10805) in + FStar_Pervasives_Native.Some uu____10790 | ((formal,formal_imp)::formals1,(a,a_imp)::args2) -> - let uu____10853 = - let uu____10854 = FStar_Syntax_Subst.compress a in - uu____10854.FStar_Syntax_Syntax.n in - (match uu____10853 with + let uu____10899 = + let uu____10900 = FStar_Syntax_Subst.compress a in + uu____10900.FStar_Syntax_Syntax.n in + (match uu____10899 with | FStar_Syntax_Syntax.Tm_name x -> - let uu____10874 = + let uu____10920 = (name_exists_in x ctx) || (name_exists_in x pat_binders) in - if uu____10874 + if uu____10920 then aux ((formal, formal_imp) :: pat_binders) formals1 t_res args2 else (let x1 = - let uu___371_10904 = x in + let uu___370_10950 = x in { FStar_Syntax_Syntax.ppname = - (uu___371_10904.FStar_Syntax_Syntax.ppname); + (uu___370_10950.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___371_10904.FStar_Syntax_Syntax.index); + (uu___370_10950.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = (formal.FStar_Syntax_Syntax.sort) } in let subst1 = - let uu____10908 = - let uu____10909 = - let uu____10916 = + let uu____10954 = + let uu____10955 = + let uu____10962 = FStar_Syntax_Syntax.bv_to_name x1 in - (formal, uu____10916) in - FStar_Syntax_Syntax.NT uu____10909 in - [uu____10908] in + (formal, uu____10962) in + FStar_Syntax_Syntax.NT uu____10955 in + [uu____10954] in let formals2 = FStar_Syntax_Subst.subst_binders subst1 formals1 in let t_res1 = FStar_Syntax_Subst.subst subst1 t_res in aux - (((let uu___372_10932 = x1 in + (((let uu___371_10978 = x1 in { FStar_Syntax_Syntax.ppname = - (uu___372_10932.FStar_Syntax_Syntax.ppname); + (uu___371_10978.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___372_10932.FStar_Syntax_Syntax.index); + (uu___371_10978.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = (formal.FStar_Syntax_Syntax.sort) }), a_imp) :: pat_binders) formals2 t_res1 args2) - | uu____10933 -> + | uu____10979 -> aux ((formal, formal_imp) :: pat_binders) formals1 t_res args2) | ([],args2) -> - let uu____10973 = - let uu____10988 = + let uu____11019 = + let uu____11034 = FStar_TypeChecker_Normalize.unfold_whnf env t_res in - FStar_Syntax_Util.arrow_formals uu____10988 in - (match uu____10973 with + FStar_Syntax_Util.arrow_formals uu____11034 in + (match uu____11019 with | (more_formals,t_res1) -> (match more_formals with | [] -> FStar_Pervasives_Native.None - | uu____11063 -> + | uu____11109 -> aux pat_binders more_formals t_res1 args2)) in (match args with | [] -> FStar_Pervasives_Native.Some ([], t_hd) - | uu____11096 -> - let uu____11097 = FStar_Syntax_Util.arrow_formals t_hd in - (match uu____11097 with + | uu____11142 -> + let uu____11143 = FStar_Syntax_Util.arrow_formals t_hd in + (match uu____11143 with | (formals,t_res) -> aux [] formals t_res args)) let rec (solve : FStar_TypeChecker_Env.env -> worklist -> solution) = fun env -> fun probs -> - (let uu____11419 = + (let uu____11465 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____11419 + if uu____11465 then - let uu____11424 = wl_to_string probs in - FStar_Util.print1 "solve:\n\t%s\n" uu____11424 + let uu____11470 = wl_to_string probs in + FStar_Util.print1 "solve:\n\t%s\n" uu____11470 else ()); - (let uu____11429 = next_prob probs in - match uu____11429 with + (let uu____11475 = next_prob probs in + match uu____11475 with | FStar_Pervasives_Native.Some (hd1,tl1,rank1) -> let probs1 = - let uu___373_11456 = probs in + let uu___372_11502 = probs in { attempting = tl1; - wl_deferred = (uu___373_11456.wl_deferred); - ctr = (uu___373_11456.ctr); - defer_ok = (uu___373_11456.defer_ok); - smt_ok = (uu___373_11456.smt_ok); - umax_heuristic_ok = (uu___373_11456.umax_heuristic_ok); - tcenv = (uu___373_11456.tcenv); - wl_implicits = (uu___373_11456.wl_implicits) + wl_deferred = (uu___372_11502.wl_deferred); + ctr = (uu___372_11502.ctr); + defer_ok = (uu___372_11502.defer_ok); + smt_ok = (uu___372_11502.smt_ok); + umax_heuristic_ok = (uu___372_11502.umax_heuristic_ok); + tcenv = (uu___372_11502.tcenv); + wl_implicits = (uu___372_11502.wl_implicits) } in (def_check_prob "solve,hd" hd1; (match hd1 with | FStar_TypeChecker_Common.CProb cp -> solve_c env (maybe_invert cp) probs1 | FStar_TypeChecker_Common.TProb tp -> - let uu____11465 = + let uu____11511 = FStar_Util.physical_equality tp.FStar_TypeChecker_Common.lhs tp.FStar_TypeChecker_Common.rhs in - if uu____11465 + if uu____11511 then - let uu____11468 = + let uu____11514 = solve_prob hd1 FStar_Pervasives_Native.None [] probs1 in - solve env uu____11468 + solve env uu____11514 else if (rank1 = FStar_TypeChecker_Common.Rigid_rigid) || @@ -3690,28 +3705,28 @@ let rec (solve : FStar_TypeChecker_Env.env -> worklist -> solution) = if rank1 = FStar_TypeChecker_Common.Flex_flex then solve_t' env - (let uu___374_11480 = tp in + (let uu___373_11526 = tp in { FStar_TypeChecker_Common.pid = - (uu___374_11480.FStar_TypeChecker_Common.pid); + (uu___373_11526.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = - (uu___374_11480.FStar_TypeChecker_Common.lhs); + (uu___373_11526.FStar_TypeChecker_Common.lhs); FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ; FStar_TypeChecker_Common.rhs = - (uu___374_11480.FStar_TypeChecker_Common.rhs); + (uu___373_11526.FStar_TypeChecker_Common.rhs); FStar_TypeChecker_Common.element = - (uu___374_11480.FStar_TypeChecker_Common.element); + (uu___373_11526.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___374_11480.FStar_TypeChecker_Common.logical_guard); + (uu___373_11526.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___374_11480.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___373_11526.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___374_11480.FStar_TypeChecker_Common.reason); + (uu___373_11526.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___374_11480.FStar_TypeChecker_Common.loc); + (uu___373_11526.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___374_11480.FStar_TypeChecker_Common.rank) + (uu___373_11526.FStar_TypeChecker_Common.rank) }) probs1 else solve_rigid_flex_or_flex_rigid_subtyping rank1 env @@ -3719,50 +3734,50 @@ let rec (solve : FStar_TypeChecker_Env.env -> worklist -> solution) = | FStar_Pervasives_Native.None -> (match probs.wl_deferred with | [] -> Success ([], (probs.wl_implicits)) - | uu____11506 -> - let uu____11517 = + | uu____11552 -> + let uu____11563 = FStar_All.pipe_right probs.wl_deferred (FStar_List.partition - (fun uu____11588 -> - match uu____11588 with - | (c,uu____11599,uu____11600) -> c < probs.ctr)) + (fun uu____11634 -> + match uu____11634 with + | (c,uu____11645,uu____11646) -> c < probs.ctr)) in - (match uu____11517 with + (match uu____11563 with | (attempt1,rest) -> (match attempt1 with | [] -> - let uu____11655 = - let uu____11660 = + let uu____11701 = + let uu____11706 = FStar_List.map - (fun uu____11678 -> - match uu____11678 with - | (uu____11692,x,y) -> (x, y)) + (fun uu____11724 -> + match uu____11724 with + | (uu____11738,x,y) -> (x, y)) probs.wl_deferred in - (uu____11660, (probs.wl_implicits)) in - Success uu____11655 - | uu____11700 -> - let uu____11711 = - let uu___375_11712 = probs in - let uu____11713 = + (uu____11706, (probs.wl_implicits)) in + Success uu____11701 + | uu____11746 -> + let uu____11757 = + let uu___374_11758 = probs in + let uu____11759 = FStar_All.pipe_right attempt1 (FStar_List.map - (fun uu____11736 -> - match uu____11736 with - | (uu____11745,uu____11746,y) -> y)) + (fun uu____11782 -> + match uu____11782 with + | (uu____11791,uu____11792,y) -> y)) in { - attempting = uu____11713; + attempting = uu____11759; wl_deferred = rest; - ctr = (uu___375_11712.ctr); - defer_ok = (uu___375_11712.defer_ok); - smt_ok = (uu___375_11712.smt_ok); + ctr = (uu___374_11758.ctr); + defer_ok = (uu___374_11758.defer_ok); + smt_ok = (uu___374_11758.smt_ok); umax_heuristic_ok = - (uu___375_11712.umax_heuristic_ok); - tcenv = (uu___375_11712.tcenv); - wl_implicits = (uu___375_11712.wl_implicits) + (uu___374_11758.umax_heuristic_ok); + tcenv = (uu___374_11758.tcenv); + wl_implicits = (uu___374_11758.wl_implicits) } in - solve env uu____11711)))) + solve env uu____11757)))) and (solve_one_universe_eq : FStar_TypeChecker_Env.env -> @@ -3775,12 +3790,12 @@ and (solve_one_universe_eq : fun u1 -> fun u2 -> fun wl -> - let uu____11757 = solve_universe_eq (p_pid orig) wl u1 u2 in - match uu____11757 with + let uu____11803 = solve_universe_eq (p_pid orig) wl u1 u2 in + match uu____11803 with | USolved wl1 -> - let uu____11759 = + let uu____11805 = solve_prob orig FStar_Pervasives_Native.None [] wl1 in - solve env uu____11759 + solve env uu____11805 | UFailed msg -> giveup env msg orig | UDeferred wl1 -> solve env (defer "" orig wl1) @@ -3799,29 +3814,29 @@ and (solve_maybe_uinsts : match (us1, us2) with | ([],[]) -> USolved wl1 | (u1::us11,u2::us21) -> - let uu____11813 = solve_universe_eq (p_pid orig) wl1 u1 u2 + let uu____11859 = solve_universe_eq (p_pid orig) wl1 u1 u2 in - (match uu____11813 with + (match uu____11859 with | USolved wl2 -> aux wl2 us11 us21 | failed_or_deferred -> failed_or_deferred) - | uu____11816 -> UFailed "Unequal number of universes" in + | uu____11862 -> UFailed "Unequal number of universes" in let t11 = whnf env t1 in let t21 = whnf env t2 in match ((t11.FStar_Syntax_Syntax.n), (t21.FStar_Syntax_Syntax.n)) with | (FStar_Syntax_Syntax.Tm_uinst ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_fvar f; - FStar_Syntax_Syntax.pos = uu____11829; - FStar_Syntax_Syntax.vars = uu____11830;_},us1),FStar_Syntax_Syntax.Tm_uinst + FStar_Syntax_Syntax.pos = uu____11875; + FStar_Syntax_Syntax.vars = uu____11876;_},us1),FStar_Syntax_Syntax.Tm_uinst ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_fvar g; - FStar_Syntax_Syntax.pos = uu____11833; - FStar_Syntax_Syntax.vars = uu____11834;_},us2)) + FStar_Syntax_Syntax.pos = uu____11879; + FStar_Syntax_Syntax.vars = uu____11880;_},us2)) -> let b = FStar_Syntax_Syntax.fv_eq f g in aux wl us1 us2 - | (FStar_Syntax_Syntax.Tm_uinst uu____11847,uu____11848) -> + | (FStar_Syntax_Syntax.Tm_uinst uu____11893,uu____11894) -> failwith "Impossible: expect head symbols to match" - | (uu____11856,FStar_Syntax_Syntax.Tm_uinst uu____11857) -> + | (uu____11902,FStar_Syntax_Syntax.Tm_uinst uu____11903) -> failwith "Impossible: expect head symbols to match" - | uu____11865 -> USolved wl + | uu____11911 -> USolved wl and (giveup_or_defer : FStar_TypeChecker_Env.env -> @@ -3833,15 +3848,15 @@ and (giveup_or_defer : fun msg -> if wl.defer_ok then - ((let uu____11877 = + ((let uu____11923 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____11877 + if uu____11923 then - let uu____11882 = prob_to_string env orig in + let uu____11928 = prob_to_string env orig in FStar_Util.print2 "\n\t\tDeferring %s\n\t\tBecause %s\n" - uu____11882 msg + uu____11928 msg else ()); solve env (defer msg orig wl)) else giveup env msg orig @@ -3859,192 +3874,192 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : (let flip = rank1 = FStar_TypeChecker_Common.Flex_rigid in let meet_or_join op ts env1 wl1 = let eq_prob t1 t2 wl2 = - let uu____11974 = + let uu____12020 = new_problem wl2 env1 t1 FStar_TypeChecker_Common.EQ t2 FStar_Pervasives_Native.None t1.FStar_Syntax_Syntax.pos "join/meet refinements" in - match uu____11974 with + match uu____12020 with | (p,wl3) -> (def_check_prob "meet_or_join" (FStar_TypeChecker_Common.TProb p); ((FStar_TypeChecker_Common.TProb p), wl3)) in let pairwise t1 t2 wl2 = - (let uu____12029 = + (let uu____12075 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Rel") in - if uu____12029 + if uu____12075 then - let uu____12034 = FStar_Syntax_Print.term_to_string t1 in - let uu____12036 = FStar_Syntax_Print.term_to_string t2 in + let uu____12080 = FStar_Syntax_Print.term_to_string t1 in + let uu____12082 = FStar_Syntax_Print.term_to_string t2 in FStar_Util.print2 "[meet/join]: pairwise: %s and %s\n" - uu____12034 uu____12036 + uu____12080 uu____12082 else ()); - (let uu____12041 = head_matches_delta env1 wl2 t1 t2 in - match uu____12041 with + (let uu____12087 = head_matches_delta env1 wl2 t1 t2 in + match uu____12087 with | (mr,ts1) -> (match mr with | HeadMatch (true ) -> - let uu____12087 = eq_prob t1 t2 wl2 in - (match uu____12087 with | (p,wl3) -> (t1, [p], wl3)) - | MisMatch uu____12108 -> - let uu____12117 = eq_prob t1 t2 wl2 in - (match uu____12117 with | (p,wl3) -> (t1, [p], wl3)) + let uu____12133 = eq_prob t1 t2 wl2 in + (match uu____12133 with | (p,wl3) -> (t1, [p], wl3)) + | MisMatch uu____12154 -> + let uu____12163 = eq_prob t1 t2 wl2 in + (match uu____12163 with | (p,wl3) -> (t1, [p], wl3)) | FullMatch -> (match ts1 with | FStar_Pervasives_Native.None -> (t1, [], wl2) | FStar_Pervasives_Native.Some (t11,t21) -> (t11, [], wl2)) | HeadMatch (false ) -> - let uu____12167 = + let uu____12213 = match ts1 with | FStar_Pervasives_Native.Some (t11,t21) -> - let uu____12182 = + let uu____12228 = FStar_Syntax_Subst.compress t11 in - let uu____12183 = + let uu____12229 = FStar_Syntax_Subst.compress t21 in - (uu____12182, uu____12183) + (uu____12228, uu____12229) | FStar_Pervasives_Native.None -> - let uu____12188 = + let uu____12234 = FStar_Syntax_Subst.compress t1 in - let uu____12189 = + let uu____12235 = FStar_Syntax_Subst.compress t2 in - (uu____12188, uu____12189) + (uu____12234, uu____12235) in - (match uu____12167 with + (match uu____12213 with | (t11,t21) -> let try_eq t12 t22 wl3 = - let uu____12220 = + let uu____12266 = FStar_Syntax_Util.head_and_args t12 in - match uu____12220 with + match uu____12266 with | (t1_hd,t1_args) -> - let uu____12265 = + let uu____12311 = FStar_Syntax_Util.head_and_args t22 in - (match uu____12265 with + (match uu____12311 with | (t2_hd,t2_args) -> if (FStar_List.length t1_args) <> (FStar_List.length t2_args) then FStar_Pervasives_Native.None else - (let uu____12331 = - let uu____12338 = - let uu____12349 = + (let uu____12377 = + let uu____12384 = + let uu____12395 = FStar_Syntax_Syntax.as_arg t1_hd in - uu____12349 :: t1_args in - let uu____12366 = - let uu____12375 = + uu____12395 :: t1_args in + let uu____12412 = + let uu____12421 = FStar_Syntax_Syntax.as_arg t2_hd in - uu____12375 :: t2_args in + uu____12421 :: t2_args in FStar_List.fold_left2 - (fun uu____12424 -> - fun uu____12425 -> - fun uu____12426 -> - match (uu____12424, - uu____12425, - uu____12426) + (fun uu____12470 -> + fun uu____12471 -> + fun uu____12472 -> + match (uu____12470, + uu____12471, + uu____12472) with | ((probs,wl4), - (a1,uu____12476), - (a2,uu____12478)) + (a1,uu____12522), + (a2,uu____12524)) -> - let uu____12515 = + let uu____12561 = eq_prob a1 a2 wl4 in - (match uu____12515 + (match uu____12561 with | (p,wl5) -> ((p :: probs), wl5))) - ([], wl3) uu____12338 - uu____12366 + ([], wl3) uu____12384 + uu____12412 in - match uu____12331 with + match uu____12377 with | (probs,wl4) -> let wl' = - let uu___376_12541 = wl4 + let uu___375_12587 = wl4 in { attempting = probs; wl_deferred = []; ctr = - (uu___376_12541.ctr); + (uu___375_12587.ctr); defer_ok = false; smt_ok = false; umax_heuristic_ok = - (uu___376_12541.umax_heuristic_ok); + (uu___375_12587.umax_heuristic_ok); tcenv = - (uu___376_12541.tcenv); + (uu___375_12587.tcenv); wl_implicits = [] } in let tx = FStar_Syntax_Unionfind.new_transaction () in - let uu____12553 = + let uu____12599 = solve env1 wl' in - (match uu____12553 with - | Success (uu____12556,imps) + (match uu____12599 with + | Success (uu____12602,imps) -> (FStar_Syntax_Unionfind.commit tx; FStar_Pervasives_Native.Some - ((let uu___377_12560 + ((let uu___376_12606 = wl4 in { attempting = - (uu___377_12560.attempting); + (uu___376_12606.attempting); wl_deferred = - (uu___377_12560.wl_deferred); + (uu___376_12606.wl_deferred); ctr = - (uu___377_12560.ctr); + (uu___376_12606.ctr); defer_ok = - (uu___377_12560.defer_ok); + (uu___376_12606.defer_ok); smt_ok = - (uu___377_12560.smt_ok); + (uu___376_12606.smt_ok); umax_heuristic_ok = - (uu___377_12560.umax_heuristic_ok); + (uu___376_12606.umax_heuristic_ok); tcenv = - (uu___377_12560.tcenv); + (uu___376_12606.tcenv); wl_implicits = (FStar_List.append wl4.wl_implicits imps) }))) - | Failed uu____12561 -> + | Failed uu____12607 -> (FStar_Syntax_Unionfind.rollback tx; FStar_Pervasives_Native.None)))) in let combine t12 t22 wl3 = - let uu____12594 = + let uu____12640 = base_and_refinement_maybe_delta false env1 t12 in - match uu____12594 with + match uu____12640 with | (t1_base,p1_opt) -> - let uu____12630 = + let uu____12676 = base_and_refinement_maybe_delta false env1 t22 in - (match uu____12630 with + (match uu____12676 with | (t2_base,p2_opt) -> let combine_refinements t_base p1_opt1 p2_opt1 = let refine1 x t = - let uu____12729 = + let uu____12775 = FStar_Syntax_Util.is_t_true t in - if uu____12729 + if uu____12775 then x.FStar_Syntax_Syntax.sort else FStar_Syntax_Util.refine x t @@ -4070,9 +4085,9 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : FStar_Syntax_Subst.subst subst1 phi2 in - let uu____12782 = + let uu____12828 = op phi11 phi21 in - refine1 x1 uu____12782 + refine1 x1 uu____12828 | (FStar_Pervasives_Native.None ,FStar_Pervasives_Native.Some (x,phi)) -> @@ -4089,11 +4104,11 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : FStar_Syntax_Subst.subst subst1 phi in - let uu____12814 = + let uu____12860 = op FStar_Syntax_Util.t_true phi1 in - refine1 x1 uu____12814 + refine1 x1 uu____12860 | (FStar_Pervasives_Native.Some (x,phi),FStar_Pervasives_Native.None ) -> @@ -4110,40 +4125,40 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : FStar_Syntax_Subst.subst subst1 phi in - let uu____12846 = + let uu____12892 = op FStar_Syntax_Util.t_true phi1 in - refine1 x1 uu____12846 - | uu____12849 -> t_base in - let uu____12866 = + refine1 x1 uu____12892 + | uu____12895 -> t_base in + let uu____12912 = try_eq t1_base t2_base wl3 in - (match uu____12866 with + (match uu____12912 with | FStar_Pervasives_Native.Some wl4 -> - let uu____12880 = + let uu____12926 = combine_refinements t1_base p1_opt p2_opt in - (uu____12880, [], wl4) + (uu____12926, [], wl4) | FStar_Pervasives_Native.None -> - let uu____12887 = + let uu____12933 = base_and_refinement_maybe_delta true env1 t12 in - (match uu____12887 with + (match uu____12933 with | (t1_base1,p1_opt1) -> - let uu____12923 = + let uu____12969 = base_and_refinement_maybe_delta true env1 t22 in - (match uu____12923 with + (match uu____12969 with | (t2_base1,p2_opt1) -> - let uu____12959 = + let uu____13005 = eq_prob t1_base1 t2_base1 wl3 in - (match uu____12959 + (match uu____13005 with | (p,wl4) -> let t = @@ -4154,45 +4169,45 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : in (t, [p], wl4)))))) in - let uu____12983 = combine t11 t21 wl2 in - (match uu____12983 with + let uu____13029 = combine t11 t21 wl2 in + (match uu____13029 with | (t12,ps,wl3) -> - ((let uu____13016 = + ((let uu____13062 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Rel") in - if uu____13016 + if uu____13062 then - let uu____13021 = + let uu____13067 = FStar_Syntax_Print.term_to_string t12 in FStar_Util.print1 "pairwise fallback2 succeeded: %s" - uu____13021 + uu____13067 else ()); (t12, ps, wl3)))))) in - let rec aux uu____13063 ts1 = - match uu____13063 with + let rec aux uu____13109 ts1 = + match uu____13109 with | (out,probs,wl2) -> (match ts1 with | [] -> (out, probs, wl2) | t::ts2 -> - let uu____13126 = pairwise out t wl2 in - (match uu____13126 with + let uu____13172 = pairwise out t wl2 in + (match uu____13172 with | (out1,probs',wl3) -> aux (out1, (FStar_List.append probs probs'), wl3) ts2)) in - let uu____13162 = - let uu____13173 = FStar_List.hd ts in (uu____13173, [], wl1) + let uu____13208 = + let uu____13219 = FStar_List.hd ts in (uu____13219, [], wl1) in - let uu____13182 = FStar_List.tl ts in - aux uu____13162 uu____13182 in - let uu____13189 = + let uu____13228 = FStar_List.tl ts in + aux uu____13208 uu____13228 in + let uu____13235 = if flip then ((tp.FStar_TypeChecker_Common.lhs), @@ -4201,42 +4216,42 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : ((tp.FStar_TypeChecker_Common.rhs), (tp.FStar_TypeChecker_Common.lhs)) in - match uu____13189 with + match uu____13235 with | (this_flex,this_rigid) -> - let uu____13215 = - let uu____13216 = FStar_Syntax_Subst.compress this_rigid in - uu____13216.FStar_Syntax_Syntax.n in - (match uu____13215 with + let uu____13261 = + let uu____13262 = FStar_Syntax_Subst.compress this_rigid in + uu____13262.FStar_Syntax_Syntax.n in + (match uu____13261 with | FStar_Syntax_Syntax.Tm_arrow (_bs,comp) -> - let uu____13241 = + let uu____13287 = FStar_Syntax_Util.is_tot_or_gtot_comp comp in - if uu____13241 + if uu____13287 then - let uu____13244 = destruct_flex_t this_flex wl in - (match uu____13244 with + let uu____13290 = destruct_flex_t this_flex wl in + (match uu____13290 with | (flex,wl1) -> - let uu____13251 = quasi_pattern env flex in - (match uu____13251 with + let uu____13297 = quasi_pattern env flex in + (match uu____13297 with | FStar_Pervasives_Native.None -> giveup env "flex-arrow subtyping, not a quasi pattern" (FStar_TypeChecker_Common.TProb tp) | FStar_Pervasives_Native.Some (flex_bs,flex_t) -> - ((let uu____13270 = + ((let uu____13316 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____13270 + if uu____13316 then - let uu____13275 = + let uu____13321 = FStar_Util.string_of_int tp.FStar_TypeChecker_Common.pid in FStar_Util.print1 "Trying to solve by imitating arrow:%s\n" - uu____13275 + uu____13321 else ()); imitate_arrow (FStar_TypeChecker_Common.TProb tp) env @@ -4244,81 +4259,81 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : tp.FStar_TypeChecker_Common.relation this_rigid))) else - (let uu____13282 = + (let uu____13328 = attempt [FStar_TypeChecker_Common.TProb - ((let uu___378_13285 = tp in + ((let uu___377_13331 = tp in { FStar_TypeChecker_Common.pid = - (uu___378_13285.FStar_TypeChecker_Common.pid); + (uu___377_13331.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = - (uu___378_13285.FStar_TypeChecker_Common.lhs); + (uu___377_13331.FStar_TypeChecker_Common.lhs); FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ; FStar_TypeChecker_Common.rhs = - (uu___378_13285.FStar_TypeChecker_Common.rhs); + (uu___377_13331.FStar_TypeChecker_Common.rhs); FStar_TypeChecker_Common.element = - (uu___378_13285.FStar_TypeChecker_Common.element); + (uu___377_13331.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___378_13285.FStar_TypeChecker_Common.logical_guard); + (uu___377_13331.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___378_13285.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___377_13331.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___378_13285.FStar_TypeChecker_Common.reason); + (uu___377_13331.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___378_13285.FStar_TypeChecker_Common.loc); + (uu___377_13331.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___378_13285.FStar_TypeChecker_Common.rank) + (uu___377_13331.FStar_TypeChecker_Common.rank) }))] wl in - solve env uu____13282) - | uu____13286 -> - ((let uu____13288 = + solve env uu____13328) + | uu____13332 -> + ((let uu____13334 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____13288 + if uu____13334 then - let uu____13293 = + let uu____13339 = FStar_Util.string_of_int tp.FStar_TypeChecker_Common.pid in FStar_Util.print1 "Trying to solve by meeting refinements:%s\n" - uu____13293 + uu____13339 else ()); - (let uu____13298 = + (let uu____13344 = FStar_Syntax_Util.head_and_args this_flex in - match uu____13298 with + match uu____13344 with | (u,_args) -> - let uu____13341 = - let uu____13342 = FStar_Syntax_Subst.compress u + let uu____13387 = + let uu____13388 = FStar_Syntax_Subst.compress u in - uu____13342.FStar_Syntax_Syntax.n in - (match uu____13341 with + uu____13388.FStar_Syntax_Syntax.n in + (match uu____13387 with | FStar_Syntax_Syntax.Tm_uvar (ctx_uvar,_subst) -> let equiv1 t = - let uu____13370 = + let uu____13416 = FStar_Syntax_Util.head_and_args t in - match uu____13370 with - | (u',uu____13389) -> - let uu____13414 = - let uu____13415 = whnf env u' in - uu____13415.FStar_Syntax_Syntax.n in - (match uu____13414 with + match uu____13416 with + | (u',uu____13435) -> + let uu____13460 = + let uu____13461 = whnf env u' in + uu____13461.FStar_Syntax_Syntax.n in + (match uu____13460 with | FStar_Syntax_Syntax.Tm_uvar (ctx_uvar',_subst') -> FStar_Syntax_Unionfind.equiv ctx_uvar.FStar_Syntax_Syntax.ctx_uvar_head ctx_uvar'.FStar_Syntax_Syntax.ctx_uvar_head - | uu____13437 -> false) + | uu____13483 -> false) in - let uu____13439 = + let uu____13485 = FStar_All.pipe_right wl.attempting (FStar_List.partition - (fun uu___348_13462 -> - match uu___348_13462 with + (fun uu___347_13508 -> + match uu___347_13508 with | FStar_TypeChecker_Common.TProb tp1 -> let tp2 = maybe_invert tp1 in @@ -4333,21 +4348,21 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : else equiv1 tp2.FStar_TypeChecker_Common.rhs - | uu____13476 -> false) - | uu____13480 -> false)) + | uu____13522 -> false) + | uu____13526 -> false)) in - (match uu____13439 with + (match uu____13485 with | (bounds_probs,rest) -> let bounds_typs = - let uu____13495 = whnf env this_rigid + let uu____13541 = whnf env this_rigid in - let uu____13496 = + let uu____13542 = FStar_List.collect - (fun uu___349_13502 -> - match uu___349_13502 with + (fun uu___348_13548 -> + match uu___348_13548 with | FStar_TypeChecker_Common.TProb p -> - let uu____13508 = + let uu____13554 = if flip then whnf env @@ -4356,48 +4371,48 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : whnf env (maybe_invert p).FStar_TypeChecker_Common.lhs in - [uu____13508] - | uu____13512 -> []) + [uu____13554] + | uu____13558 -> []) bounds_probs in - uu____13495 :: uu____13496 in - let uu____13513 = + uu____13541 :: uu____13542 in + let uu____13559 = meet_or_join (if flip then FStar_Syntax_Util.mk_conj_simp else FStar_Syntax_Util.mk_disj_simp) bounds_typs env wl in - (match uu____13513 with + (match uu____13559 with | (bound,sub_probs,wl1) -> - let uu____13546 = + let uu____13592 = let flex_u = flex_uvar_head this_flex in let bound1 = - let uu____13561 = - let uu____13562 = + let uu____13607 = + let uu____13608 = FStar_Syntax_Subst.compress bound in - uu____13562.FStar_Syntax_Syntax.n + uu____13608.FStar_Syntax_Syntax.n in - match uu____13561 with + match uu____13607 with | FStar_Syntax_Syntax.Tm_refine (x,phi) when (tp.FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.SUB) && - (let uu____13574 = + (let uu____13620 = occurs flex_u x.FStar_Syntax_Syntax.sort in FStar_Pervasives_Native.snd - uu____13574) + uu____13620) -> x.FStar_Syntax_Syntax.sort - | uu____13585 -> bound in - let uu____13586 = + | uu____13631 -> bound in + let uu____13632 = new_problem wl1 env bound1 FStar_TypeChecker_Common.EQ this_flex @@ -4407,23 +4422,23 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : then "joining refinements" else "meeting refinements") in - (bound1, uu____13586) in - (match uu____13546 with + (bound1, uu____13632) in + (match uu____13592 with | (bound_typ,(eq_prob,wl')) -> (def_check_prob "meet_or_join2" (FStar_TypeChecker_Common.TProb eq_prob); - (let uu____13621 = + (let uu____13667 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____13621 + if uu____13667 then let wl'1 = - let uu___379_13627 = wl1 + let uu___378_13673 = wl1 in { attempting = @@ -4431,91 +4446,91 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : eq_prob) :: sub_probs); wl_deferred = - (uu___379_13627.wl_deferred); + (uu___378_13673.wl_deferred); ctr = - (uu___379_13627.ctr); + (uu___378_13673.ctr); defer_ok = - (uu___379_13627.defer_ok); + (uu___378_13673.defer_ok); smt_ok = - (uu___379_13627.smt_ok); + (uu___378_13673.smt_ok); umax_heuristic_ok = - (uu___379_13627.umax_heuristic_ok); + (uu___378_13673.umax_heuristic_ok); tcenv = - (uu___379_13627.tcenv); + (uu___378_13673.tcenv); wl_implicits = - (uu___379_13627.wl_implicits) + (uu___378_13673.wl_implicits) } in - let uu____13628 = + let uu____13674 = wl_to_string wl'1 in FStar_Util.print1 "After meet/join refinements: %s\n" - uu____13628 + uu____13674 else ()); (let tx = FStar_Syntax_Unionfind.new_transaction () in - let uu____13634 = + let uu____13680 = solve_t env eq_prob - (let uu___380_13636 = wl' + (let uu___379_13682 = wl' in { attempting = sub_probs; wl_deferred = - (uu___380_13636.wl_deferred); + (uu___379_13682.wl_deferred); ctr = - (uu___380_13636.ctr); + (uu___379_13682.ctr); defer_ok = false; smt_ok = - (uu___380_13636.smt_ok); + (uu___379_13682.smt_ok); umax_heuristic_ok = - (uu___380_13636.umax_heuristic_ok); + (uu___379_13682.umax_heuristic_ok); tcenv = - (uu___380_13636.tcenv); + (uu___379_13682.tcenv); wl_implicits = [] }) in - match uu____13634 with - | Success (uu____13638,imps) + match uu____13680 with + | Success (uu____13684,imps) -> let wl2 = - let uu___381_13641 = + let uu___380_13687 = wl' in { attempting = rest; wl_deferred = - (uu___381_13641.wl_deferred); + (uu___380_13687.wl_deferred); ctr = - (uu___381_13641.ctr); + (uu___380_13687.ctr); defer_ok = - (uu___381_13641.defer_ok); + (uu___380_13687.defer_ok); smt_ok = - (uu___381_13641.smt_ok); + (uu___380_13687.smt_ok); umax_heuristic_ok = - (uu___381_13641.umax_heuristic_ok); + (uu___380_13687.umax_heuristic_ok); tcenv = - (uu___381_13641.tcenv); + (uu___380_13687.tcenv); wl_implicits = - (uu___381_13641.wl_implicits) + (uu___380_13687.wl_implicits) } in let wl3 = - let uu___382_13643 = + let uu___381_13689 = wl2 in { attempting = - (uu___382_13643.attempting); + (uu___381_13689.attempting); wl_deferred = - (uu___382_13643.wl_deferred); + (uu___381_13689.wl_deferred); ctr = - (uu___382_13643.ctr); + (uu___381_13689.ctr); defer_ok = - (uu___382_13643.defer_ok); + (uu___381_13689.defer_ok); smt_ok = - (uu___382_13643.smt_ok); + (uu___381_13689.smt_ok); umax_heuristic_ok = - (uu___382_13643.umax_heuristic_ok); + (uu___381_13689.umax_heuristic_ok); tcenv = - (uu___382_13643.tcenv); + (uu___381_13689.tcenv); wl_implicits = (FStar_List.append wl'.wl_implicits @@ -4537,7 +4552,7 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : (FStar_Pervasives_Native.Some g) [] wl3 in - let uu____13659 = + let uu____13705 = FStar_List.fold_left (fun wl5 -> fun p -> @@ -4551,17 +4566,17 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : tx; solve env wl4) | Failed (p,msg) -> - ((let uu____13673 = + ((let uu____13719 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____13673 + if uu____13719 then - let uu____13678 = - let uu____13680 = + let uu____13724 = + let uu____13726 = FStar_List.map (prob_to_string env) @@ -4570,29 +4585,29 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : sub_probs) in FStar_All.pipe_right - uu____13680 + uu____13726 (FStar_String.concat "\n") in FStar_Util.print1 "meet/join attempted and failed to solve problems:\n%s\n" - uu____13678 + uu____13724 else ()); - (let uu____13693 = - let uu____13708 = + (let uu____13739 = + let uu____13754 = base_and_refinement env bound_typ in - (rank1, uu____13708) + (rank1, uu____13754) in - match uu____13693 with + match uu____13739 with | (FStar_TypeChecker_Common.Rigid_flex ,(t_base,FStar_Pervasives_Native.Some - uu____13730)) + uu____13776)) -> (FStar_Syntax_Unionfind.rollback tx; - (let uu____13756 = + (let uu____13802 = new_problem wl1 env t_base FStar_TypeChecker_Common.EQ @@ -4601,7 +4616,7 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : tp.FStar_TypeChecker_Common.loc "widened subtyping" in - match uu____13756 + match uu____13802 with | (eq_prob1,wl2) -> @@ -4620,7 +4635,7 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : eq_prob1))) [] wl2 in - let uu____13776 + let uu____13822 = attempt [ @@ -4628,14 +4643,14 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : eq_prob1] wl3 in solve env - uu____13776)))) + uu____13822)))) | (FStar_TypeChecker_Common.Flex_rigid ,(t_base,FStar_Pervasives_Native.Some (x,phi))) -> (FStar_Syntax_Unionfind.rollback tx; - (let uu____13801 = + (let uu____13847 = new_problem wl1 env t_base FStar_TypeChecker_Common.EQ @@ -4644,7 +4659,7 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : tp.FStar_TypeChecker_Common.loc "widened subtyping" in - match uu____13801 + match uu____13847 with | (eq_prob1,wl2) -> @@ -4657,9 +4672,9 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : wl2 tp x phi in let wl3 = - let uu____13821 + let uu____13867 = - let uu____13826 + let uu____13872 = FStar_Syntax_Util.mk_conj phi1 @@ -4668,16 +4683,16 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : eq_prob1)) in FStar_Pervasives_Native.Some - uu____13826 + uu____13872 in solve_prob' false (FStar_TypeChecker_Common.TProb tp) - uu____13821 + uu____13867 [] wl2 in - let uu____13832 + let uu____13878 = attempt [ @@ -4685,42 +4700,42 @@ and (solve_rigid_flex_or_flex_rigid_subtyping : eq_prob1] wl3 in solve env - uu____13832)))) - | uu____13833 -> + uu____13878)))) + | uu____13879 -> giveup env (Prims.strcat "failed to solve sub-problems: " msg) p))))))) - | uu____13849 when flip -> - let uu____13850 = - let uu____13852 = + | uu____13895 when flip -> + let uu____13896 = + let uu____13898 = FStar_Util.string_of_int (rank_t_num rank1) in - let uu____13854 = + let uu____13900 = prob_to_string env (FStar_TypeChecker_Common.TProb tp) in FStar_Util.format2 "Impossible: (rank=%s) Not a flex-rigid: %s" - uu____13852 uu____13854 + uu____13898 uu____13900 in - failwith uu____13850 - | uu____13857 -> - let uu____13858 = - let uu____13860 = + failwith uu____13896 + | uu____13903 -> + let uu____13904 = + let uu____13906 = FStar_Util.string_of_int (rank_t_num rank1) in - let uu____13862 = + let uu____13908 = prob_to_string env (FStar_TypeChecker_Common.TProb tp) in FStar_Util.format2 "Impossible: (rank=%s) Not a rigid-flex: %s" - uu____13860 uu____13862 + uu____13906 uu____13908 in - failwith uu____13858))))) + failwith uu____13904))))) and (imitate_arrow : FStar_TypeChecker_Common.prob -> @@ -4742,43 +4757,43 @@ and (imitate_arrow : fun arrow1 -> let bs_lhs_args = FStar_List.map - (fun uu____13898 -> - match uu____13898 with + (fun uu____13944 -> + match uu____13944 with | (x,i) -> - let uu____13917 = + let uu____13963 = FStar_Syntax_Syntax.bv_to_name x in - (uu____13917, i)) bs_lhs + (uu____13963, i)) bs_lhs in - let uu____13920 = lhs in - match uu____13920 with - | (uu____13921,u_lhs,uu____13923) -> + let uu____13966 = lhs in + match uu____13966 with + | (uu____13967,u_lhs,uu____13969) -> let imitate_comp bs bs_terms c wl1 = let imitate_tot_or_gtot t uopt f wl2 = - let uu____14020 = + let uu____14066 = match uopt with | FStar_Pervasives_Native.None -> FStar_Syntax_Util.type_u () | FStar_Pervasives_Native.Some univ -> - let uu____14030 = + let uu____14076 = FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_type univ) FStar_Pervasives_Native.None t.FStar_Syntax_Syntax.pos in - (uu____14030, univ) + (uu____14076, univ) in - match uu____14020 with + match uu____14066 with | (k,univ) -> - let uu____14037 = + let uu____14083 = copy_uvar u_lhs (FStar_List.append bs_lhs bs) k wl2 in - (match uu____14037 with - | (uu____14054,u,wl3) -> - let uu____14057 = + (match uu____14083 with + | (uu____14100,u,wl3) -> + let uu____14103 = f u (FStar_Pervasives_Native.Some univ) in - (uu____14057, wl3)) + (uu____14103, wl3)) in match c.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Total (t,uopt) -> @@ -4788,166 +4803,166 @@ and (imitate_arrow : imitate_tot_or_gtot t uopt FStar_Syntax_Syntax.mk_GTotal' wl1 | FStar_Syntax_Syntax.Comp ct -> - let uu____14083 = - let uu____14096 = - let uu____14107 = + let uu____14129 = + let uu____14142 = + let uu____14153 = FStar_Syntax_Syntax.as_arg ct.FStar_Syntax_Syntax.result_typ in - uu____14107 :: + uu____14153 :: (ct.FStar_Syntax_Syntax.effect_args) in FStar_List.fold_right - (fun uu____14158 -> - fun uu____14159 -> - match (uu____14158, uu____14159) with + (fun uu____14204 -> + fun uu____14205 -> + match (uu____14204, uu____14205) with | ((a,i),(out_args,wl2)) -> - let uu____14260 = - let uu____14267 = - let uu____14270 = + let uu____14306 = + let uu____14313 = + let uu____14316 = FStar_Syntax_Util.type_u () in FStar_All.pipe_left FStar_Pervasives_Native.fst - uu____14270 + uu____14316 in - copy_uvar u_lhs [] uu____14267 wl2 + copy_uvar u_lhs [] uu____14313 wl2 in - (match uu____14260 with - | (uu____14299,t_a,wl3) -> - let uu____14302 = + (match uu____14306 with + | (uu____14345,t_a,wl3) -> + let uu____14348 = copy_uvar u_lhs bs t_a wl3 in - (match uu____14302 with - | (uu____14321,a',wl4) -> + (match uu____14348 with + | (uu____14367,a',wl4) -> (((a', i) :: out_args), - wl4)))) uu____14096 + wl4)))) uu____14142 ([], wl1) in - (match uu____14083 with + (match uu____14129 with | (out_args,wl2) -> let ct' = - let uu___383_14377 = ct in - let uu____14378 = - let uu____14381 = FStar_List.hd out_args + let uu___382_14423 = ct in + let uu____14424 = + let uu____14427 = FStar_List.hd out_args in - FStar_Pervasives_Native.fst uu____14381 + FStar_Pervasives_Native.fst uu____14427 in - let uu____14396 = FStar_List.tl out_args + let uu____14442 = FStar_List.tl out_args in { FStar_Syntax_Syntax.comp_univs = - (uu___383_14377.FStar_Syntax_Syntax.comp_univs); + (uu___382_14423.FStar_Syntax_Syntax.comp_univs); FStar_Syntax_Syntax.effect_name = - (uu___383_14377.FStar_Syntax_Syntax.effect_name); + (uu___382_14423.FStar_Syntax_Syntax.effect_name); FStar_Syntax_Syntax.result_typ = - uu____14378; + uu____14424; FStar_Syntax_Syntax.effect_args = - uu____14396; + uu____14442; FStar_Syntax_Syntax.flags = - (uu___383_14377.FStar_Syntax_Syntax.flags) + (uu___382_14423.FStar_Syntax_Syntax.flags) } in - ((let uu___384_14414 = c in + ((let uu___383_14460 = c in { FStar_Syntax_Syntax.n = (FStar_Syntax_Syntax.Comp ct'); FStar_Syntax_Syntax.pos = - (uu___384_14414.FStar_Syntax_Syntax.pos); + (uu___383_14460.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___384_14414.FStar_Syntax_Syntax.vars) + (uu___383_14460.FStar_Syntax_Syntax.vars) }), wl2)) in - let uu____14417 = + let uu____14463 = FStar_Syntax_Util.arrow_formals_comp arrow1 in - (match uu____14417 with + (match uu____14463 with | (formals,c) -> let rec aux bs bs_terms formals1 wl1 = match formals1 with | [] -> - let uu____14479 = + let uu____14525 = imitate_comp bs bs_terms c wl1 in - (match uu____14479 with + (match uu____14525 with | (c',wl2) -> let lhs' = FStar_Syntax_Util.arrow bs c' in let sol = - let uu____14490 = - let uu____14495 = + let uu____14536 = + let uu____14541 = FStar_Syntax_Util.abs bs_lhs lhs' (FStar_Pervasives_Native.Some (FStar_Syntax_Util.residual_tot t_res_lhs)) in - (u_lhs, uu____14495) in - TERM uu____14490 in - let uu____14496 = + (u_lhs, uu____14541) in + TERM uu____14536 in + let uu____14542 = mk_t_problem wl2 [] orig lhs' rel arrow1 FStar_Pervasives_Native.None "arrow imitation" in - (match uu____14496 with + (match uu____14542 with | (sub_prob,wl3) -> - let uu____14510 = - let uu____14511 = + let uu____14556 = + let uu____14557 = solve_prob orig FStar_Pervasives_Native.None [sol] wl3 in - attempt [sub_prob] uu____14511 + attempt [sub_prob] uu____14557 in - solve env uu____14510)) + solve env uu____14556)) | (x,imp)::formals2 -> - let uu____14533 = - let uu____14540 = - let uu____14543 = + let uu____14579 = + let uu____14586 = + let uu____14589 = FStar_Syntax_Util.type_u () in - FStar_All.pipe_right uu____14543 + FStar_All.pipe_right uu____14589 FStar_Pervasives_Native.fst in copy_uvar u_lhs (FStar_List.append bs_lhs bs) - uu____14540 wl1 + uu____14586 wl1 in - (match uu____14533 with + (match uu____14579 with | (_ctx_u_x,u_x,wl2) -> let y = - let uu____14564 = - let uu____14567 = + let uu____14610 = + let uu____14613 = FStar_Syntax_Syntax.range_of_bv x in FStar_Pervasives_Native.Some - uu____14567 + uu____14613 in FStar_Syntax_Syntax.new_bv - uu____14564 u_x + uu____14610 u_x in - let uu____14568 = - let uu____14571 = - let uu____14574 = - let uu____14575 = + let uu____14614 = + let uu____14617 = + let uu____14620 = + let uu____14621 = FStar_Syntax_Syntax.bv_to_name y in - (uu____14575, imp) in - [uu____14574] in + (uu____14621, imp) in + [uu____14620] in FStar_List.append bs_terms - uu____14571 + uu____14617 in aux (FStar_List.append bs [(y, imp)]) - uu____14568 formals2 wl2) + uu____14614 formals2 wl2) in - let uu____14602 = occurs_check u_lhs arrow1 in - (match uu____14602 with - | (uu____14615,occurs_ok,msg) -> + let uu____14648 = occurs_check u_lhs arrow1 in + (match uu____14648 with + | (uu____14661,occurs_ok,msg) -> if Prims.op_Negation occurs_ok then - let uu____14631 = - let uu____14633 = FStar_Option.get msg + let uu____14677 = + let uu____14679 = FStar_Option.get msg in Prims.strcat "occurs-check failed: " - uu____14633 + uu____14679 in - giveup_or_defer env orig wl uu____14631 + giveup_or_defer env orig wl uu____14677 else aux [] [] formals wl)) and (solve_binders : @@ -4970,137 +4985,137 @@ and (solve_binders : fun orig -> fun wl -> fun rhs -> - (let uu____14666 = + (let uu____14712 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____14666 + if uu____14712 then - let uu____14671 = + let uu____14717 = FStar_Syntax_Print.binders_to_string ", " bs1 in - let uu____14674 = + let uu____14720 = FStar_Syntax_Print.binders_to_string ", " bs2 in FStar_Util.print3 "solve_binders\n\t%s\n%s\n\t%s\n" - uu____14671 (rel_to_string (p_rel orig)) uu____14674 + uu____14717 (rel_to_string (p_rel orig)) uu____14720 else ()); (let rec aux wl1 scope env1 subst1 xs ys = match (xs, ys) with | ([],[]) -> - let uu____14801 = rhs wl1 scope env1 subst1 in - (match uu____14801 with + let uu____14847 = rhs wl1 scope env1 subst1 in + (match uu____14847 with | (rhs_prob,wl2) -> - ((let uu____14822 = + ((let uu____14868 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Rel") in - if uu____14822 + if uu____14868 then - let uu____14827 = prob_to_string env1 rhs_prob + let uu____14873 = prob_to_string env1 rhs_prob in - FStar_Util.print1 "rhs_prob = %s\n" uu____14827 + FStar_Util.print1 "rhs_prob = %s\n" uu____14873 else ()); (let formula = p_guard rhs_prob in ((FStar_Util.Inl ([rhs_prob], formula)), wl2)))) | ((hd1,imp)::xs1,(hd2,imp')::ys1) when - let uu____14905 = FStar_Syntax_Util.eq_aqual imp imp' + let uu____14951 = FStar_Syntax_Util.eq_aqual imp imp' in - uu____14905 = FStar_Syntax_Util.Equal -> + uu____14951 = FStar_Syntax_Util.Equal -> let hd11 = - let uu___385_14907 = hd1 in - let uu____14908 = + let uu___384_14953 = hd1 in + let uu____14954 = FStar_Syntax_Subst.subst subst1 hd1.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___385_14907.FStar_Syntax_Syntax.ppname); + (uu___384_14953.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___385_14907.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____14908 + (uu___384_14953.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____14954 } in let hd21 = - let uu___386_14912 = hd2 in - let uu____14913 = + let uu___385_14958 = hd2 in + let uu____14959 = FStar_Syntax_Subst.subst subst1 hd2.FStar_Syntax_Syntax.sort in { FStar_Syntax_Syntax.ppname = - (uu___386_14912.FStar_Syntax_Syntax.ppname); + (uu___385_14958.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___386_14912.FStar_Syntax_Syntax.index); - FStar_Syntax_Syntax.sort = uu____14913 + (uu___385_14958.FStar_Syntax_Syntax.index); + FStar_Syntax_Syntax.sort = uu____14959 } in - let uu____14916 = - let uu____14921 = + let uu____14962 = + let uu____14967 = FStar_All.pipe_left invert_rel (p_rel orig) in mk_t_problem wl1 scope orig - hd11.FStar_Syntax_Syntax.sort uu____14921 + hd11.FStar_Syntax_Syntax.sort uu____14967 hd21.FStar_Syntax_Syntax.sort FStar_Pervasives_Native.None "Formal parameter" in - (match uu____14916 with + (match uu____14962 with | (prob,wl2) -> let hd12 = FStar_Syntax_Syntax.freshen_bv hd11 in let subst2 = - let uu____14942 = + let uu____14988 = FStar_Syntax_Subst.shift_subst (Prims.parse_int "1") subst1 in (FStar_Syntax_Syntax.DB ((Prims.parse_int "0"), hd12)) - :: uu____14942 + :: uu____14988 in let env2 = FStar_TypeChecker_Env.push_bv env1 hd12 in - let uu____14949 = + let uu____14995 = aux wl2 (FStar_List.append scope [(hd12, imp)]) env2 subst2 xs1 ys1 in - (match uu____14949 with + (match uu____14995 with | (FStar_Util.Inl (sub_probs,phi),wl3) -> let phi1 = - let uu____15016 = + let uu____15062 = FStar_TypeChecker_Env.close_forall env2 [(hd12, imp)] phi in FStar_Syntax_Util.mk_conj (p_guard prob) - uu____15016 + uu____15062 in - ((let uu____15034 = + ((let uu____15080 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env2) (FStar_Options.Other "Rel") in - if uu____15034 + if uu____15080 then - let uu____15039 = + let uu____15085 = FStar_Syntax_Print.term_to_string phi1 in - let uu____15041 = + let uu____15087 = FStar_Syntax_Print.bv_to_string hd12 in FStar_Util.print2 - "Formula is %s\n\thd1=%s\n" uu____15039 - uu____15041 + "Formula is %s\n\thd1=%s\n" uu____15085 + uu____15087 else ()); ((FStar_Util.Inl ((prob :: sub_probs), phi1)), wl3)) | fail1 -> fail1)) - | uu____15074 -> + | uu____15120 -> ((FStar_Util.Inr "arity or argument-qualifier mismatch"), wl1) in - let uu____15110 = aux wl [] env [] bs1 bs2 in - match uu____15110 with + let uu____15156 = aux wl [] env [] bs1 bs2 in + match uu____15156 with | (FStar_Util.Inr msg,wl1) -> giveup env msg orig | (FStar_Util.Inl (sub_probs,phi),wl1) -> let wl2 = solve_prob orig (FStar_Pervasives_Native.Some phi) [] wl1 in - let uu____15165 = attempt sub_probs wl2 in - solve env uu____15165) + let uu____15211 = attempt sub_probs wl2 in + solve env uu____15211) and (try_solve_without_smt_or_else : FStar_TypeChecker_Env.env -> @@ -5117,32 +5132,32 @@ and (try_solve_without_smt_or_else : fun try_solve -> fun else_solve -> let wl' = - let uu___387_15186 = wl in + let uu___386_15232 = wl in { attempting = []; wl_deferred = []; - ctr = (uu___387_15186.ctr); + ctr = (uu___386_15232.ctr); defer_ok = false; smt_ok = false; umax_heuristic_ok = false; - tcenv = (uu___387_15186.tcenv); + tcenv = (uu___386_15232.tcenv); wl_implicits = [] } in let tx = FStar_Syntax_Unionfind.new_transaction () in - let uu____15199 = try_solve env wl' in - match uu____15199 with - | Success (uu____15200,imps) -> + let uu____15245 = try_solve env wl' in + match uu____15245 with + | Success (uu____15246,imps) -> (FStar_Syntax_Unionfind.commit tx; (let wl1 = - let uu___388_15204 = wl in + let uu___387_15250 = wl in { - attempting = (uu___388_15204.attempting); - wl_deferred = (uu___388_15204.wl_deferred); - ctr = (uu___388_15204.ctr); - defer_ok = (uu___388_15204.defer_ok); - smt_ok = (uu___388_15204.smt_ok); - umax_heuristic_ok = (uu___388_15204.umax_heuristic_ok); - tcenv = (uu___388_15204.tcenv); + attempting = (uu___387_15250.attempting); + wl_deferred = (uu___387_15250.wl_deferred); + ctr = (uu___387_15250.ctr); + defer_ok = (uu___387_15250.defer_ok); + smt_ok = (uu___387_15250.smt_ok); + umax_heuristic_ok = (uu___387_15250.umax_heuristic_ok); + tcenv = (uu___387_15250.tcenv); wl_implicits = (FStar_List.append wl.wl_implicits imps) } in solve env wl1)) @@ -5154,8 +5169,8 @@ and (solve_t : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = fun problem -> fun wl -> def_check_prob "solve_t" (FStar_TypeChecker_Common.TProb problem); - (let uu____15216 = compress_tprob wl.tcenv problem in - solve_t' env uu____15216 wl) + (let uu____15262 = compress_tprob wl.tcenv problem in + solve_t' env uu____15262 wl) and (solve_t_flex_rigid_eq : FStar_TypeChecker_Env.env -> @@ -5168,46 +5183,46 @@ and (solve_t_flex_rigid_eq : fun lhs -> fun rhs -> let binders_as_bv_set bs = - let uu____15230 = FStar_List.map FStar_Pervasives_Native.fst bs + let uu____15276 = FStar_List.map FStar_Pervasives_Native.fst bs in - FStar_Util.as_set uu____15230 FStar_Syntax_Syntax.order_bv in + FStar_Util.as_set uu____15276 FStar_Syntax_Syntax.order_bv in let mk_solution env1 lhs1 bs rhs1 = - let uu____15264 = lhs1 in - match uu____15264 with - | (uu____15267,ctx_u,uu____15269) -> + let uu____15310 = lhs1 in + match uu____15310 with + | (uu____15313,ctx_u,uu____15315) -> let sol = match bs with | [] -> rhs1 - | uu____15277 -> - let uu____15278 = sn_binders env1 bs in + | uu____15323 -> + let uu____15324 = sn_binders env1 bs in u_abs ctx_u.FStar_Syntax_Syntax.ctx_uvar_typ - uu____15278 rhs1 + uu____15324 rhs1 in [TERM (ctx_u, sol)] in let try_quasi_pattern orig1 env1 wl1 lhs1 rhs1 = - let uu____15327 = quasi_pattern env1 lhs1 in - match uu____15327 with + let uu____15373 = quasi_pattern env1 lhs1 in + match uu____15373 with | FStar_Pervasives_Native.None -> ((FStar_Util.Inl "Not a quasi-pattern"), wl1) - | FStar_Pervasives_Native.Some (bs,uu____15361) -> - let uu____15366 = lhs1 in - (match uu____15366 with + | FStar_Pervasives_Native.Some (bs,uu____15407) -> + let uu____15412 = lhs1 in + (match uu____15412 with | (t_lhs,ctx_u,args) -> - let uu____15381 = occurs_check ctx_u rhs1 in - (match uu____15381 with + let uu____15427 = occurs_check ctx_u rhs1 in + (match uu____15427 with | (uvars1,occurs_ok,msg) -> if Prims.op_Negation occurs_ok then - let uu____15432 = - let uu____15440 = - let uu____15442 = FStar_Option.get msg in + let uu____15478 = + let uu____15486 = + let uu____15488 = FStar_Option.get msg in Prims.strcat "quasi-pattern, occurs-check failed: " - uu____15442 + uu____15488 in - FStar_Util.Inl uu____15440 in - (uu____15432, wl1) + FStar_Util.Inl uu____15486 in + (uu____15478, wl1) else (let fvs_lhs = binders_as_bv_set @@ -5216,114 +5231,114 @@ and (solve_t_flex_rigid_eq : bs) in let fvs_rhs = FStar_Syntax_Free.names rhs1 in - let uu____15470 = - let uu____15472 = + let uu____15516 = + let uu____15518 = FStar_Util.set_is_subset_of fvs_rhs fvs_lhs in - Prims.op_Negation uu____15472 in - if uu____15470 + Prims.op_Negation uu____15518 in + if uu____15516 then ((FStar_Util.Inl "quasi-pattern, free names on the RHS are not included in the LHS"), wl1) else - (let uu____15499 = - let uu____15507 = + (let uu____15545 = + let uu____15553 = mk_solution env1 lhs1 bs rhs1 in - FStar_Util.Inr uu____15507 in - let uu____15513 = + FStar_Util.Inr uu____15553 in + let uu____15559 = restrict_all_uvars ctx_u uvars1 wl1 in - (uu____15499, uu____15513))))) + (uu____15545, uu____15559))))) in let imitate_app orig1 env1 wl1 lhs1 bs_lhs t_res_lhs rhs1 = - let uu____15557 = FStar_Syntax_Util.head_and_args rhs1 in - match uu____15557 with + let uu____15603 = FStar_Syntax_Util.head_and_args rhs1 in + match uu____15603 with | (rhs_hd,args) -> - let uu____15600 = FStar_Util.prefix args in - (match uu____15600 with + let uu____15646 = FStar_Util.prefix args in + (match uu____15646 with | (args_rhs,last_arg_rhs) -> let rhs' = FStar_Syntax_Syntax.mk_Tm_app rhs_hd args_rhs FStar_Pervasives_Native.None rhs1.FStar_Syntax_Syntax.pos in - let uu____15672 = lhs1 in - (match uu____15672 with + let uu____15718 = lhs1 in + (match uu____15718 with | (t_lhs,u_lhs,_lhs_args) -> - let uu____15676 = - let uu____15687 = - let uu____15694 = - let uu____15697 = + let uu____15722 = + let uu____15733 = + let uu____15740 = + let uu____15743 = FStar_Syntax_Util.type_u () in FStar_All.pipe_left - FStar_Pervasives_Native.fst uu____15697 + FStar_Pervasives_Native.fst uu____15743 in - copy_uvar u_lhs [] uu____15694 wl1 in - match uu____15687 with - | (uu____15724,t_last_arg,wl2) -> - let uu____15727 = - let uu____15734 = - let uu____15735 = - let uu____15744 = + copy_uvar u_lhs [] uu____15740 wl1 in + match uu____15733 with + | (uu____15770,t_last_arg,wl2) -> + let uu____15773 = + let uu____15780 = + let uu____15781 = + let uu____15790 = FStar_Syntax_Syntax.null_binder t_last_arg in - [uu____15744] in - FStar_List.append bs_lhs uu____15735 + [uu____15790] in + FStar_List.append bs_lhs uu____15781 in - copy_uvar u_lhs uu____15734 t_res_lhs wl2 + copy_uvar u_lhs uu____15780 t_res_lhs wl2 in - (match uu____15727 with - | (uu____15779,lhs',wl3) -> - let uu____15782 = + (match uu____15773 with + | (uu____15825,lhs',wl3) -> + let uu____15828 = copy_uvar u_lhs bs_lhs t_last_arg wl3 in - (match uu____15782 with - | (uu____15799,lhs'_last_arg,wl4) -> + (match uu____15828 with + | (uu____15845,lhs'_last_arg,wl4) -> (lhs', lhs'_last_arg, wl4))) in - (match uu____15676 with + (match uu____15722 with | (lhs',lhs'_last_arg,wl2) -> let sol = - let uu____15820 = - let uu____15821 = - let uu____15826 = - let uu____15827 = - let uu____15830 = - let uu____15835 = - let uu____15836 = + let uu____15866 = + let uu____15867 = + let uu____15872 = + let uu____15873 = + let uu____15876 = + let uu____15881 = + let uu____15882 = FStar_Syntax_Syntax.as_arg lhs'_last_arg in - [uu____15836] in + [uu____15882] in FStar_Syntax_Syntax.mk_Tm_app - lhs' uu____15835 + lhs' uu____15881 in - uu____15830 + uu____15876 FStar_Pervasives_Native.None t_lhs.FStar_Syntax_Syntax.pos in FStar_Syntax_Util.abs bs_lhs - uu____15827 + uu____15873 (FStar_Pervasives_Native.Some (FStar_Syntax_Util.residual_tot t_res_lhs)) in - (u_lhs, uu____15826) in - TERM uu____15821 in - [uu____15820] in - let uu____15863 = - let uu____15870 = + (u_lhs, uu____15872) in + TERM uu____15867 in + [uu____15866] in + let uu____15909 = + let uu____15916 = mk_t_problem wl2 [] orig1 lhs' FStar_TypeChecker_Common.EQ rhs' FStar_Pervasives_Native.None "first-order lhs" in - match uu____15870 with + match uu____15916 with | (p1,wl3) -> - let uu____15890 = + let uu____15936 = mk_t_problem wl3 [] orig1 lhs'_last_arg FStar_TypeChecker_Common.EQ @@ -5332,62 +5347,62 @@ and (solve_t_flex_rigid_eq : FStar_Pervasives_Native.None "first-order rhs" in - (match uu____15890 with + (match uu____15936 with | (p2,wl4) -> ([p1; p2], wl4)) in - (match uu____15863 with + (match uu____15909 with | (sub_probs,wl3) -> - let uu____15922 = - let uu____15923 = + let uu____15968 = + let uu____15969 = solve_prob orig1 FStar_Pervasives_Native.None sol wl3 in - attempt sub_probs uu____15923 in - solve env1 uu____15922)))) + attempt sub_probs uu____15969 in + solve env1 uu____15968)))) in let first_order orig1 env1 wl1 lhs1 rhs1 = let is_app rhs2 = - let uu____15957 = FStar_Syntax_Util.head_and_args rhs2 in - match uu____15957 with - | (uu____15975,args) -> - (match args with | [] -> false | uu____16011 -> true) + let uu____16003 = FStar_Syntax_Util.head_and_args rhs2 in + match uu____16003 with + | (uu____16021,args) -> + (match args with | [] -> false | uu____16057 -> true) in let is_arrow rhs2 = - let uu____16030 = - let uu____16031 = FStar_Syntax_Subst.compress rhs2 in - uu____16031.FStar_Syntax_Syntax.n in - match uu____16030 with - | FStar_Syntax_Syntax.Tm_arrow uu____16035 -> true - | uu____16051 -> false in - let uu____16053 = quasi_pattern env1 lhs1 in - match uu____16053 with + let uu____16076 = + let uu____16077 = FStar_Syntax_Subst.compress rhs2 in + uu____16077.FStar_Syntax_Syntax.n in + match uu____16076 with + | FStar_Syntax_Syntax.Tm_arrow uu____16081 -> true + | uu____16097 -> false in + let uu____16099 = quasi_pattern env1 lhs1 in + match uu____16099 with | FStar_Pervasives_Native.None -> - let uu____16064 = - let uu____16066 = prob_to_string env1 orig1 in + let uu____16110 = + let uu____16112 = prob_to_string env1 orig1 in FStar_Util.format1 "first_order heuristic cannot solve %s; lhs not a quasi-pattern" - uu____16066 + uu____16112 in - giveup_or_defer env1 orig1 wl1 uu____16064 + giveup_or_defer env1 orig1 wl1 uu____16110 | FStar_Pervasives_Native.Some (bs_lhs,t_res_lhs) -> - let uu____16075 = is_app rhs1 in - if uu____16075 + let uu____16121 = is_app rhs1 in + if uu____16121 then imitate_app orig1 env1 wl1 lhs1 bs_lhs t_res_lhs rhs1 else - (let uu____16080 = is_arrow rhs1 in - if uu____16080 + (let uu____16126 = is_arrow rhs1 in + if uu____16126 then imitate_arrow orig1 env1 wl1 lhs1 bs_lhs t_res_lhs FStar_TypeChecker_Common.EQ rhs1 else - (let uu____16085 = - let uu____16087 = prob_to_string env1 orig1 in + (let uu____16131 = + let uu____16133 = prob_to_string env1 orig1 in FStar_Util.format1 "first_order heuristic cannot solve %s; rhs not an app or arrow" - uu____16087 + uu____16133 in - giveup_or_defer env1 orig1 wl1 uu____16085)) + giveup_or_defer env1 orig1 wl1 uu____16131)) in match p_rel orig with | FStar_TypeChecker_Common.SUB -> @@ -5399,24 +5414,24 @@ and (solve_t_flex_rigid_eq : then giveup_or_defer env orig wl "flex-rigid subtyping" else solve_t_flex_rigid_eq env (make_prob_eq orig) wl lhs rhs | FStar_TypeChecker_Common.EQ -> - let uu____16098 = lhs in - (match uu____16098 with + let uu____16144 = lhs in + (match uu____16144 with | (_t1,ctx_uv,args_lhs) -> - let uu____16102 = + let uu____16148 = pat_vars env ctx_uv.FStar_Syntax_Syntax.ctx_uvar_binders args_lhs in - (match uu____16102 with + (match uu____16148 with | FStar_Pervasives_Native.Some lhs_binders -> let rhs1 = sn env rhs in let names_to_string1 fvs = - let uu____16120 = - let uu____16124 = FStar_Util.set_elements fvs + let uu____16166 = + let uu____16170 = FStar_Util.set_elements fvs in FStar_List.map FStar_Syntax_Print.bv_to_string - uu____16124 + uu____16170 in - FStar_All.pipe_right uu____16120 + FStar_All.pipe_right uu____16166 (FStar_String.concat ", ") in let fvs1 = @@ -5426,41 +5441,41 @@ and (solve_t_flex_rigid_eq : lhs_binders) in let fvs2 = FStar_Syntax_Free.names rhs1 in - let uu____16145 = occurs_check ctx_uv rhs1 in - (match uu____16145 with + let uu____16191 = occurs_check ctx_uv rhs1 in + (match uu____16191 with | (uvars1,occurs_ok,msg) -> if Prims.op_Negation occurs_ok then - let uu____16174 = - let uu____16176 = FStar_Option.get msg in + let uu____16220 = + let uu____16222 = FStar_Option.get msg in Prims.strcat "occurs-check failed: " - uu____16176 + uu____16222 in - giveup_or_defer env orig wl uu____16174 + giveup_or_defer env orig wl uu____16220 else - (let uu____16182 = + (let uu____16228 = FStar_Util.set_is_subset_of fvs2 fvs1 in - if uu____16182 + if uu____16228 then let sol = mk_solution env lhs lhs_binders rhs1 in let wl1 = restrict_all_uvars ctx_uv uvars1 wl in - let uu____16189 = + let uu____16235 = solve_prob orig FStar_Pervasives_Native.None sol wl1 in - solve env uu____16189 + solve env uu____16235 else if wl.defer_ok then - (let uu____16193 = - let uu____16195 = + (let uu____16239 = + let uu____16241 = names_to_string1 fvs2 in - let uu____16197 = + let uu____16243 = names_to_string1 fvs1 in - let uu____16199 = + let uu____16245 = FStar_Syntax_Print.binders_to_string ", " (FStar_List.append @@ -5469,26 +5484,26 @@ and (solve_t_flex_rigid_eq : in FStar_Util.format3 "free names in the RHS {%s} are out of scope for the LHS: {%s}, {%s}" - uu____16195 uu____16197 - uu____16199 + uu____16241 uu____16243 + uu____16245 in giveup_or_defer env orig wl - uu____16193) + uu____16239) else first_order orig env wl lhs rhs1)) - | uu____16211 -> + | uu____16257 -> if wl.defer_ok then giveup_or_defer env orig wl "Not a pattern" else - (let uu____16218 = + (let uu____16264 = try_quasi_pattern orig env wl lhs rhs in - match uu____16218 with + match uu____16264 with | (FStar_Util.Inr sol,wl1) -> - let uu____16244 = + let uu____16290 = solve_prob orig FStar_Pervasives_Native.None sol wl1 in - solve env uu____16244 - | (FStar_Util.Inl msg,uu____16246) -> + solve env uu____16290 + | (FStar_Util.Inl msg,uu____16292) -> first_order orig env wl lhs rhs))) and (solve_t_flex_flex : @@ -5516,43 +5531,43 @@ and (solve_t_flex_flex : (Prims.op_Negation (is_flex_pat rhs))) then giveup_or_defer env orig wl "flex-flex non-pattern" else - (let uu____16291 = - let uu____16308 = quasi_pattern env lhs in - let uu____16315 = quasi_pattern env rhs in - (uu____16308, uu____16315) in - match uu____16291 with + (let uu____16337 = + let uu____16354 = quasi_pattern env lhs in + let uu____16361 = quasi_pattern env rhs in + (uu____16354, uu____16361) in + match uu____16337 with | (FStar_Pervasives_Native.Some (binders_lhs,t_res_lhs),FStar_Pervasives_Native.Some (binders_rhs,t_res_rhs)) -> - let uu____16358 = lhs in - (match uu____16358 with - | ({ FStar_Syntax_Syntax.n = uu____16359; + let uu____16404 = lhs in + (match uu____16404 with + | ({ FStar_Syntax_Syntax.n = uu____16405; FStar_Syntax_Syntax.pos = range; - FStar_Syntax_Syntax.vars = uu____16361;_},u_lhs,uu____16363) + FStar_Syntax_Syntax.vars = uu____16407;_},u_lhs,uu____16409) -> - let uu____16366 = rhs in - (match uu____16366 with - | (uu____16367,u_rhs,uu____16369) -> - let uu____16370 = + let uu____16412 = rhs in + (match uu____16412 with + | (uu____16413,u_rhs,uu____16415) -> + let uu____16416 = (FStar_Syntax_Unionfind.equiv u_lhs.FStar_Syntax_Syntax.ctx_uvar_head u_rhs.FStar_Syntax_Syntax.ctx_uvar_head) && (binders_eq binders_lhs binders_rhs) in - if uu____16370 + if uu____16416 then - let uu____16377 = + let uu____16423 = solve_prob orig FStar_Pervasives_Native.None [] wl in - solve env uu____16377 + solve env uu____16423 else - (let uu____16380 = + (let uu____16426 = maximal_prefix u_lhs.FStar_Syntax_Syntax.ctx_uvar_binders u_rhs.FStar_Syntax_Syntax.ctx_uvar_binders in - match uu____16380 with + match uu____16426 with | (ctx_w,(ctx_l,ctx_r)) -> let gamma_w = gamma_until @@ -5566,14 +5581,14 @@ and (solve_t_flex_flex : (FStar_List.append ctx_r binders_rhs) in - let uu____16412 = - let uu____16419 = - let uu____16422 = + let uu____16458 = + let uu____16465 = + let uu____16468 = FStar_Syntax_Syntax.mk_Total t_res_lhs in FStar_Syntax_Util.arrow zs - uu____16422 + uu____16468 in new_uvar (Prims.strcat "flex-flex quasi:" @@ -5583,134 +5598,135 @@ and (solve_t_flex_flex : (Prims.strcat "\trhs=" u_rhs.FStar_Syntax_Syntax.ctx_uvar_reason)))) wl range gamma_w ctx_w - uu____16419 + uu____16465 FStar_Syntax_Syntax.Strict + FStar_Pervasives_Native.None in - (match uu____16412 with - | (uu____16428,w,wl1) -> + (match uu____16458 with + | (uu____16480,w,wl1) -> let w_app = - let uu____16434 = - let uu____16439 = + let uu____16486 = + let uu____16491 = FStar_List.map - (fun uu____16450 -> - match uu____16450 + (fun uu____16502 -> + match uu____16502 with - | (z,uu____16458) -> - let uu____16463 = + | (z,uu____16510) -> + let uu____16515 = FStar_Syntax_Syntax.bv_to_name z in FStar_Syntax_Syntax.as_arg - uu____16463) zs + uu____16515) zs in FStar_Syntax_Syntax.mk_Tm_app - w uu____16439 + w uu____16491 in - uu____16434 + uu____16486 FStar_Pervasives_Native.None w.FStar_Syntax_Syntax.pos in - ((let uu____16467 = + ((let uu____16519 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____16467 + if uu____16519 then - let uu____16472 = - let uu____16476 = + let uu____16524 = + let uu____16528 = flex_t_to_string lhs in - let uu____16478 = - let uu____16482 = + let uu____16530 = + let uu____16534 = flex_t_to_string rhs in - let uu____16484 = - let uu____16488 = + let uu____16536 = + let uu____16540 = term_to_string w in - let uu____16490 = - let uu____16494 = + let uu____16542 = + let uu____16546 = FStar_Syntax_Print.binders_to_string ", " (FStar_List.append ctx_l binders_lhs) in - let uu____16503 = - let uu____16507 = + let uu____16555 = + let uu____16559 = FStar_Syntax_Print.binders_to_string ", " (FStar_List.append ctx_r binders_rhs) in - let uu____16516 = - let uu____16520 + let uu____16568 = + let uu____16572 = FStar_Syntax_Print.binders_to_string ", " zs in - [uu____16520] + [uu____16572] in - uu____16507 :: - uu____16516 + uu____16559 :: + uu____16568 in - uu____16494 :: - uu____16503 + uu____16546 :: + uu____16555 in - uu____16488 :: - uu____16490 + uu____16540 :: + uu____16542 in - uu____16482 :: - uu____16484 + uu____16534 :: + uu____16536 in - uu____16476 :: uu____16478 + uu____16528 :: uu____16530 in FStar_Util.print "flex-flex quasi:\n\tlhs=%s\n\trhs=%s\n\tsol=%s\n\tctx_l@binders_lhs=%s\n\tctx_r@binders_rhs=%s\n\tzs=%s\n" - uu____16472 + uu____16524 else ()); (let sol = let s1 = - let uu____16537 = - let uu____16542 = + let uu____16589 = + let uu____16594 = FStar_Syntax_Util.abs binders_lhs w_app (FStar_Pervasives_Native.Some (FStar_Syntax_Util.residual_tot t_res_lhs)) in - (u_lhs, uu____16542) in - TERM uu____16537 in - let uu____16543 = + (u_lhs, uu____16594) in + TERM uu____16589 in + let uu____16595 = FStar_Syntax_Unionfind.equiv u_lhs.FStar_Syntax_Syntax.ctx_uvar_head u_rhs.FStar_Syntax_Syntax.ctx_uvar_head in - if uu____16543 + if uu____16595 then [s1] else (let s2 = - let uu____16551 = - let uu____16556 = + let uu____16603 = + let uu____16608 = FStar_Syntax_Util.abs binders_rhs w_app (FStar_Pervasives_Native.Some (FStar_Syntax_Util.residual_tot t_res_lhs)) in - (u_rhs, uu____16556) + (u_rhs, uu____16608) in - TERM uu____16551 in + TERM uu____16603 in [s1; s2]) in - let uu____16557 = + let uu____16609 = solve_prob orig FStar_Pervasives_Native.None sol wl1 in - solve env uu____16557)))))) - | uu____16558 -> + solve env uu____16609)))))) + | uu____16610 -> giveup_or_defer env orig wl "flex-flex: non-patterns") and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = @@ -5721,33 +5737,33 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = (let giveup_or_defer1 orig msg = giveup_or_defer env orig wl msg in let rigid_heads_match env1 need_unif torig wl1 t1 t2 = let orig = FStar_TypeChecker_Common.TProb torig in - (let uu____16629 = + (let uu____16681 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Rel") in - if uu____16629 + if uu____16681 then - let uu____16634 = FStar_Syntax_Print.term_to_string t1 in - let uu____16636 = FStar_Syntax_Print.tag_of_term t1 in - let uu____16638 = FStar_Syntax_Print.term_to_string t2 in - let uu____16640 = FStar_Syntax_Print.tag_of_term t2 in + let uu____16686 = FStar_Syntax_Print.term_to_string t1 in + let uu____16688 = FStar_Syntax_Print.tag_of_term t1 in + let uu____16690 = FStar_Syntax_Print.term_to_string t2 in + let uu____16692 = FStar_Syntax_Print.tag_of_term t2 in FStar_Util.print5 "Heads %s: %s (%s) and %s (%s)\n" (if need_unif then "need unification" else "match") - uu____16634 uu____16636 uu____16638 uu____16640 + uu____16686 uu____16688 uu____16690 uu____16692 else ()); - (let uu____16651 = FStar_Syntax_Util.head_and_args t1 in - match uu____16651 with + (let uu____16703 = FStar_Syntax_Util.head_and_args t1 in + match uu____16703 with | (head1,args1) -> - let uu____16694 = FStar_Syntax_Util.head_and_args t2 in - (match uu____16694 with + let uu____16746 = FStar_Syntax_Util.head_and_args t2 in + (match uu____16746 with | (head2,args2) -> let solve_head_then wl2 k = if need_unif then k true wl2 else - (let uu____16764 = + (let uu____16816 = solve_maybe_uinsts env1 orig head1 head2 wl2 in - match uu____16764 with + match uu____16816 with | USolved wl3 -> k true wl3 | UFailed msg -> giveup env1 msg orig | UDeferred wl3 -> @@ -5756,51 +5772,51 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = let nargs = FStar_List.length args1 in if nargs <> (FStar_List.length args2) then - let uu____16794 = - let uu____16796 = + let uu____16846 = + let uu____16848 = FStar_Syntax_Print.term_to_string head1 in - let uu____16798 = args_to_string args1 in - let uu____16802 = + let uu____16850 = args_to_string args1 in + let uu____16854 = FStar_Syntax_Print.term_to_string head2 in - let uu____16804 = args_to_string args2 in + let uu____16856 = args_to_string args2 in FStar_Util.format4 "unequal number of arguments: %s[%s] and %s[%s]" - uu____16796 uu____16798 uu____16802 uu____16804 + uu____16848 uu____16850 uu____16854 uu____16856 in - giveup env1 uu____16794 orig + giveup env1 uu____16846 orig else - (let uu____16811 = + (let uu____16863 = (nargs = (Prims.parse_int "0")) || - (let uu____16820 = + (let uu____16872 = FStar_Syntax_Util.eq_args args1 args2 in - uu____16820 = FStar_Syntax_Util.Equal) + uu____16872 = FStar_Syntax_Util.Equal) in - if uu____16811 + if uu____16863 then (if need_unif then solve_t env1 - (let uu___389_16824 = problem in + (let uu___388_16876 = problem in { FStar_TypeChecker_Common.pid = - (uu___389_16824.FStar_TypeChecker_Common.pid); + (uu___388_16876.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = head1; FStar_TypeChecker_Common.relation = - (uu___389_16824.FStar_TypeChecker_Common.relation); + (uu___388_16876.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = head2; FStar_TypeChecker_Common.element = - (uu___389_16824.FStar_TypeChecker_Common.element); + (uu___388_16876.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___389_16824.FStar_TypeChecker_Common.logical_guard); + (uu___388_16876.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___389_16824.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___388_16876.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___389_16824.FStar_TypeChecker_Common.reason); + (uu___388_16876.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___389_16824.FStar_TypeChecker_Common.loc); + (uu___388_16876.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___389_16824.FStar_TypeChecker_Common.rank) + (uu___388_16876.FStar_TypeChecker_Common.rank) }) wl1 else solve_head_then wl1 @@ -5808,19 +5824,19 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = fun wl2 -> if ok then - let uu____16834 = + let uu____16886 = solve_prob orig FStar_Pervasives_Native.None [] wl2 in - solve env1 uu____16834 + solve env1 uu____16886 else solve env1 wl2)) else - (let uu____16839 = base_and_refinement env1 t1 in - match uu____16839 with + (let uu____16891 = base_and_refinement env1 t1 in + match uu____16891 with | (base1,refinement1) -> - let uu____16864 = base_and_refinement env1 t2 + let uu____16916 = base_and_refinement env1 t2 in - (match uu____16864 with + (match uu____16916 with | (base2,refinement2) -> (match (refinement1, refinement2) with | (FStar_Pervasives_Native.None @@ -5838,17 +5854,17 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = :: args2) else FStar_List.zip args1 args2 in - let uu____17029 = + let uu____17081 = FStar_List.fold_right - (fun uu____17069 -> - fun uu____17070 -> - match (uu____17069, - uu____17070) + (fun uu____17121 -> + fun uu____17122 -> + match (uu____17121, + uu____17122) with - | (((a1,uu____17122), - (a2,uu____17124)), + | (((a1,uu____17174), + (a2,uu____17176)), (probs,wl3)) -> - let uu____17173 = + let uu____17225 = mk_problem wl3 [] orig a1 FStar_TypeChecker_Common.EQ @@ -5856,7 +5872,7 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_Pervasives_Native.None "index" in - (match uu____17173 + (match uu____17225 with | (prob',wl4) -> (((FStar_TypeChecker_Common.TProb @@ -5864,30 +5880,30 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = probs), wl4))) argp ([], wl2) in - match uu____17029 with + match uu____17081 with | (subprobs,wl3) -> - ((let uu____17216 = + ((let uu____17268 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Rel") in - if uu____17216 + if uu____17268 then - let uu____17221 = + let uu____17273 = FStar_Syntax_Print.list_to_string (prob_to_string env1) subprobs in FStar_Util.print1 "Adding subproblems for arguments: %s" - uu____17221 + uu____17273 else ()); - (let uu____17227 = + (let uu____17279 = FStar_Options.defensive () in - if uu____17227 + if uu____17279 then FStar_List.iter (def_check_prob @@ -5903,19 +5919,19 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = if Prims.op_Negation ok then solve env2 wl3 else - (let uu____17254 = + (let uu____17306 = mk_sub_probs wl3 in - match uu____17254 with + match uu____17306 with | (subprobs,wl4) -> let formula = - let uu____17270 = + let uu____17322 = FStar_List.map (fun p -> p_guard p) subprobs in FStar_Syntax_Util.mk_conj_l - uu____17270 + uu____17322 in let wl5 = solve_prob orig @@ -5923,111 +5939,111 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = formula) [] wl4 in - let uu____17278 = + let uu____17330 = attempt subprobs wl5 in solve env2 - uu____17278)) + uu____17330)) in let solve_sub_probs_no_smt env2 wl2 = solve_head_then wl2 (fun ok -> fun wl3 -> - let uu____17302 = + let uu____17354 = mk_sub_probs wl3 in - match uu____17302 with + match uu____17354 with | (subprobs,wl4) -> let wl5 = solve_prob orig FStar_Pervasives_Native.None [] wl4 in - let uu____17316 = + let uu____17368 = attempt subprobs wl5 in - solve env2 uu____17316) + solve env2 uu____17368) in let unfold_and_retry d env2 wl2 - uu____17342 = - match uu____17342 with + uu____17394 = + match uu____17394 with | (prob,reason) -> - ((let uu____17353 = + ((let uu____17405 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env2) (FStar_Options.Other "Rel") in - if uu____17353 + if uu____17405 then - let uu____17358 = + let uu____17410 = prob_to_string env2 orig in - let uu____17360 = + let uu____17412 = prob_to_string env2 prob in FStar_Util.print3 "Failed to solve %s because sub-problem %s is not solvable without SMT because %s" - uu____17358 uu____17360 + uu____17410 uu____17412 reason else ()); - (let uu____17365 = - let uu____17374 = + (let uu____17417 = + let uu____17426 = FStar_TypeChecker_Normalize.unfold_head_once env2 t1 in - let uu____17377 = + let uu____17429 = FStar_TypeChecker_Normalize.unfold_head_once env2 t2 in - (uu____17374, uu____17377) + (uu____17426, uu____17429) in - match uu____17365 with + match uu____17417 with | (FStar_Pervasives_Native.Some t1',FStar_Pervasives_Native.Some t2') -> - let uu____17390 = + let uu____17442 = FStar_Syntax_Util.head_and_args t1' in - (match uu____17390 with - | (head1',uu____17408) + (match uu____17442 with + | (head1',uu____17460) -> - let uu____17433 = + let uu____17485 = FStar_Syntax_Util.head_and_args t2' in - (match uu____17433 + (match uu____17485 with - | (head2',uu____17451) + | (head2',uu____17503) -> - let uu____17476 + let uu____17528 = - let uu____17481 + let uu____17533 = FStar_Syntax_Util.eq_tm head1' head1 in - let uu____17482 + let uu____17534 = FStar_Syntax_Util.eq_tm head2' head2 in - (uu____17481, - uu____17482) + (uu____17533, + uu____17534) in - (match uu____17476 + (match uu____17528 with | (FStar_Syntax_Util.Equal ,FStar_Syntax_Util.Equal ) -> ( ( - let uu____17484 + let uu____17536 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug @@ -6036,72 +6052,72 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = "Rel") in if - uu____17484 + uu____17536 then - let uu____17489 + let uu____17541 = FStar_Syntax_Print.term_to_string t1 in - let uu____17491 + let uu____17543 = FStar_Syntax_Print.term_to_string t1' in - let uu____17493 + let uu____17545 = FStar_Syntax_Print.term_to_string t2 in - let uu____17495 + let uu____17547 = FStar_Syntax_Print.term_to_string t2' in FStar_Util.print4 "Unfolding didn't make progress ... got %s ~> %s;\nand %s ~> %s\n" - uu____17489 - uu____17491 - uu____17493 - uu____17495 + uu____17541 + uu____17543 + uu____17545 + uu____17547 else ()); solve_sub_probs env2 wl2) - | uu____17500 + | uu____17552 -> let torig' = - let uu___390_17508 + let uu___389_17560 = torig in { FStar_TypeChecker_Common.pid = - (uu___390_17508.FStar_TypeChecker_Common.pid); + (uu___389_17560.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = t1'; FStar_TypeChecker_Common.relation = - (uu___390_17508.FStar_TypeChecker_Common.relation); + (uu___389_17560.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = t2'; FStar_TypeChecker_Common.element = - (uu___390_17508.FStar_TypeChecker_Common.element); + (uu___389_17560.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___390_17508.FStar_TypeChecker_Common.logical_guard); + (uu___389_17560.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___390_17508.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___389_17560.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___390_17508.FStar_TypeChecker_Common.reason); + (uu___389_17560.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___390_17508.FStar_TypeChecker_Common.loc); + (uu___389_17560.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___390_17508.FStar_TypeChecker_Common.rank) + (uu___389_17560.FStar_TypeChecker_Common.rank) } in (( - let uu____17510 + let uu____17562 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug @@ -6110,9 +6126,9 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = "Rel") in if - uu____17510 + uu____17562 then - let uu____17515 + let uu____17567 = prob_to_string env2 @@ -6121,20 +6137,20 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = in FStar_Util.print1 "Unfolded and now trying %s\n" - uu____17515 + uu____17567 else ()); solve_t env2 torig' wl2)))) - | uu____17520 -> + | uu____17572 -> solve_sub_probs env2 wl2)) in let d = - let uu____17532 = + let uu____17584 = delta_depth_of_term env1 head1 in - match uu____17532 with + match uu____17584 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some d @@ -6143,20 +6159,20 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = d in let treat_as_injective = - let uu____17540 = - let uu____17541 = + let uu____17592 = + let uu____17593 = FStar_Syntax_Util.un_uinst head1 in - uu____17541.FStar_Syntax_Syntax.n + uu____17593.FStar_Syntax_Syntax.n in - match uu____17540 with + match uu____17592 with | FStar_Syntax_Syntax.Tm_fvar fv -> FStar_TypeChecker_Env.fv_has_attr env1 fv FStar_Parser_Const.unifier_hint_injective_lid - | uu____17546 -> false in + | uu____17598 -> false in (match d with | FStar_Pervasives_Native.Some d1 when @@ -6168,9 +6184,9 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = env1 wl1 solve_sub_probs_no_smt (unfold_and_retry d1) - | uu____17549 -> + | uu____17601 -> solve_sub_probs env1 wl1) - | uu____17552 -> + | uu____17604 -> let lhs = force_refinement (base1, refinement1) @@ -6180,141 +6196,141 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = (base2, refinement2) in solve_t env1 - (let uu___391_17588 = problem in + (let uu___390_17640 = problem in { FStar_TypeChecker_Common.pid = - (uu___391_17588.FStar_TypeChecker_Common.pid); + (uu___390_17640.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = lhs; FStar_TypeChecker_Common.relation = - (uu___391_17588.FStar_TypeChecker_Common.relation); + (uu___390_17640.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = rhs; FStar_TypeChecker_Common.element = - (uu___391_17588.FStar_TypeChecker_Common.element); + (uu___390_17640.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___391_17588.FStar_TypeChecker_Common.logical_guard); + (uu___390_17640.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___391_17588.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___390_17640.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___391_17588.FStar_TypeChecker_Common.reason); + (uu___390_17640.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___391_17588.FStar_TypeChecker_Common.loc); + (uu___390_17640.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___391_17588.FStar_TypeChecker_Common.rank) + (uu___390_17640.FStar_TypeChecker_Common.rank) }) wl1)))))) in let try_match_heuristic env1 orig wl1 s1 s2 t1t2_opt = let try_solve_branch scrutinee p = - let uu____17664 = destruct_flex_t scrutinee wl1 in - match uu____17664 with + let uu____17716 = destruct_flex_t scrutinee wl1 in + match uu____17716 with | ((_t,uv,_args),wl2) -> - let uu____17675 = + let uu____17727 = FStar_TypeChecker_PatternUtils.pat_as_exp true env1 p in - (match uu____17675 with - | (xs,pat_term,uu____17691,uu____17692) -> - let uu____17697 = + (match uu____17727 with + | (xs,pat_term,uu____17743,uu____17744) -> + let uu____17749 = FStar_List.fold_left - (fun uu____17720 -> + (fun uu____17772 -> fun x -> - match uu____17720 with + match uu____17772 with | (subst1,wl3) -> let t_x = FStar_Syntax_Subst.subst subst1 x.FStar_Syntax_Syntax.sort in - let uu____17741 = copy_uvar uv [] t_x wl3 + let uu____17793 = copy_uvar uv [] t_x wl3 in - (match uu____17741 with - | (uu____17760,u,wl4) -> + (match uu____17793 with + | (uu____17812,u,wl4) -> let subst2 = (FStar_Syntax_Syntax.NT (x, u)) :: subst1 in (subst2, wl4))) ([], wl2) xs in - (match uu____17697 with + (match uu____17749 with | (subst1,wl3) -> let pat_term1 = FStar_Syntax_Subst.subst subst1 pat_term in - let uu____17781 = + let uu____17833 = new_problem wl3 env1 scrutinee FStar_TypeChecker_Common.EQ pat_term1 FStar_Pervasives_Native.None scrutinee.FStar_Syntax_Syntax.pos "match heuristic" in - (match uu____17781 with + (match uu____17833 with | (prob,wl4) -> let wl' = - let uu___392_17798 = wl4 in + let uu___391_17850 = wl4 in { attempting = [FStar_TypeChecker_Common.TProb prob]; wl_deferred = []; - ctr = (uu___392_17798.ctr); + ctr = (uu___391_17850.ctr); defer_ok = false; smt_ok = false; umax_heuristic_ok = - (uu___392_17798.umax_heuristic_ok); - tcenv = (uu___392_17798.tcenv); + (uu___391_17850.umax_heuristic_ok); + tcenv = (uu___391_17850.tcenv); wl_implicits = [] } in let tx = FStar_Syntax_Unionfind.new_transaction () in - let uu____17810 = solve env1 wl' in - (match uu____17810 with - | Success (uu____17813,imps) -> + let uu____17862 = solve env1 wl' in + (match uu____17862 with + | Success (uu____17865,imps) -> let wl'1 = - let uu___393_17816 = wl' in + let uu___392_17868 = wl' in { attempting = [orig]; wl_deferred = - (uu___393_17816.wl_deferred); - ctr = (uu___393_17816.ctr); - defer_ok = (uu___393_17816.defer_ok); - smt_ok = (uu___393_17816.smt_ok); + (uu___392_17868.wl_deferred); + ctr = (uu___392_17868.ctr); + defer_ok = (uu___392_17868.defer_ok); + smt_ok = (uu___392_17868.smt_ok); umax_heuristic_ok = - (uu___393_17816.umax_heuristic_ok); - tcenv = (uu___393_17816.tcenv); + (uu___392_17868.umax_heuristic_ok); + tcenv = (uu___392_17868.tcenv); wl_implicits = - (uu___393_17816.wl_implicits) + (uu___392_17868.wl_implicits) } in - let uu____17817 = solve env1 wl'1 in - (match uu____17817 with - | Success (uu____17820,imps') -> + let uu____17869 = solve env1 wl'1 in + (match uu____17869 with + | Success (uu____17872,imps') -> (FStar_Syntax_Unionfind.commit tx; FStar_Pervasives_Native.Some - ((let uu___394_17824 = wl4 in + ((let uu___393_17876 = wl4 in { attempting = - (uu___394_17824.attempting); + (uu___393_17876.attempting); wl_deferred = - (uu___394_17824.wl_deferred); - ctr = (uu___394_17824.ctr); + (uu___393_17876.wl_deferred); + ctr = (uu___393_17876.ctr); defer_ok = - (uu___394_17824.defer_ok); + (uu___393_17876.defer_ok); smt_ok = - (uu___394_17824.smt_ok); + (uu___393_17876.smt_ok); umax_heuristic_ok = - (uu___394_17824.umax_heuristic_ok); + (uu___393_17876.umax_heuristic_ok); tcenv = - (uu___394_17824.tcenv); + (uu___393_17876.tcenv); wl_implicits = (FStar_List.append wl4.wl_implicits (FStar_List.append imps imps')) }))) - | Failed uu____17825 -> + | Failed uu____17877 -> (FStar_Syntax_Unionfind.rollback tx; FStar_Pervasives_Native.None)) - | uu____17832 -> + | uu____17884 -> (FStar_Syntax_Unionfind.rollback tx; FStar_Pervasives_Native.None))))) in @@ -6322,513 +6338,513 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = | FStar_Pervasives_Native.None -> FStar_Util.Inr FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some (t1,t2) -> - ((let uu____17855 = + ((let uu____17907 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Rel") in - if uu____17855 + if uu____17907 then - let uu____17860 = FStar_Syntax_Print.term_to_string t1 in - let uu____17862 = FStar_Syntax_Print.term_to_string t2 in + let uu____17912 = FStar_Syntax_Print.term_to_string t1 in + let uu____17914 = FStar_Syntax_Print.term_to_string t2 in FStar_Util.print2 "Trying match heuristic for %s vs. %s\n" - uu____17860 uu____17862 + uu____17912 uu____17914 else ()); - (let uu____17867 = - let uu____17888 = - let uu____17897 = FStar_Syntax_Util.unmeta t1 in - (s1, uu____17897) in - let uu____17904 = - let uu____17913 = FStar_Syntax_Util.unmeta t2 in - (s2, uu____17913) in - (uu____17888, uu____17904) in - match uu____17867 with - | ((uu____17943,{ + (let uu____17919 = + let uu____17940 = + let uu____17949 = FStar_Syntax_Util.unmeta t1 in + (s1, uu____17949) in + let uu____17956 = + let uu____17965 = FStar_Syntax_Util.unmeta t2 in + (s2, uu____17965) in + (uu____17940, uu____17956) in + match uu____17919 with + | ((uu____17995,{ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_match (scrutinee,branches); - FStar_Syntax_Syntax.pos = uu____17946; - FStar_Syntax_Syntax.vars = uu____17947;_}), + FStar_Syntax_Syntax.pos = uu____17998; + FStar_Syntax_Syntax.vars = uu____17999;_}), (s,t)) -> - let uu____18018 = - let uu____18020 = is_flex scrutinee in - Prims.op_Negation uu____18020 in - if uu____18018 + let uu____18070 = + let uu____18072 = is_flex scrutinee in + Prims.op_Negation uu____18072 in + if uu____18070 then - ((let uu____18031 = + ((let uu____18083 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Rel") in - if uu____18031 + if uu____18083 then - let uu____18036 = + let uu____18088 = FStar_Syntax_Print.term_to_string scrutinee in FStar_Util.print1 - "match head %s is not a flex term\n" uu____18036 + "match head %s is not a flex term\n" uu____18088 else ()); FStar_Util.Inr FStar_Pervasives_Native.None) else if wl1.defer_ok then - ((let uu____18055 = + ((let uu____18107 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Rel") in - if uu____18055 + if uu____18107 then FStar_Util.print_string "Deferring ... \n" else ()); FStar_Util.Inl "defer") else - ((let uu____18070 = + ((let uu____18122 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Rel") in - if uu____18070 + if uu____18122 then - let uu____18075 = + let uu____18127 = FStar_Syntax_Print.term_to_string scrutinee in - let uu____18077 = + let uu____18129 = FStar_Syntax_Print.term_to_string t in FStar_Util.print2 "Heuristic applicable with scrutinee %s and other side = %s\n" - uu____18075 uu____18077 + uu____18127 uu____18129 else ()); - (let pat_discriminates uu___350_18102 = - match uu___350_18102 with + (let pat_discriminates uu___349_18154 = + match uu___349_18154 with | ({ FStar_Syntax_Syntax.v = FStar_Syntax_Syntax.Pat_constant - uu____18118; - FStar_Syntax_Syntax.p = uu____18119;_},FStar_Pervasives_Native.None - ,uu____18120) -> true + uu____18170; + FStar_Syntax_Syntax.p = uu____18171;_},FStar_Pervasives_Native.None + ,uu____18172) -> true | ({ FStar_Syntax_Syntax.v = - FStar_Syntax_Syntax.Pat_cons uu____18134; - FStar_Syntax_Syntax.p = uu____18135;_},FStar_Pervasives_Native.None - ,uu____18136) -> true - | uu____18163 -> false in + FStar_Syntax_Syntax.Pat_cons uu____18186; + FStar_Syntax_Syntax.p = uu____18187;_},FStar_Pervasives_Native.None + ,uu____18188) -> true + | uu____18215 -> false in let head_matching_branch = FStar_All.pipe_right branches (FStar_Util.try_find (fun b -> if pat_discriminates b then - let uu____18266 = + let uu____18318 = FStar_Syntax_Subst.open_branch b in - match uu____18266 with - | (uu____18268,uu____18269,t') -> - let uu____18287 = + match uu____18318 with + | (uu____18320,uu____18321,t') -> + let uu____18339 = head_matches_delta env1 wl1 s t' in - (match uu____18287 with - | (FullMatch ,uu____18299) -> + (match uu____18339 with + | (FullMatch ,uu____18351) -> true | (HeadMatch - uu____18313,uu____18314) -> + uu____18365,uu____18366) -> true - | uu____18329 -> false) + | uu____18381 -> false) else false)) in match head_matching_branch with | FStar_Pervasives_Native.None -> - ((let uu____18366 = + ((let uu____18418 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Rel") in - if uu____18366 + if uu____18418 then FStar_Util.print_string "No head_matching branch\n" else ()); (let try_branches = - let uu____18377 = + let uu____18429 = FStar_Util.prefix_until (fun b -> Prims.op_Negation (pat_discriminates b)) branches in - match uu____18377 with + match uu____18429 with | FStar_Pervasives_Native.Some - (branches1,uu____18465,uu____18466) -> + (branches1,uu____18517,uu____18518) -> branches1 - | uu____18611 -> branches in - let uu____18666 = + | uu____18663 -> branches in + let uu____18718 = FStar_Util.find_map try_branches (fun b -> - let uu____18675 = + let uu____18727 = FStar_Syntax_Subst.open_branch b in - match uu____18675 with - | (p,uu____18679,uu____18680) -> + match uu____18727 with + | (p,uu____18731,uu____18732) -> try_solve_branch scrutinee p) in FStar_All.pipe_left (fun _0_8 -> FStar_Util.Inr _0_8) - uu____18666)) + uu____18718)) | FStar_Pervasives_Native.Some b -> - let uu____18738 = + let uu____18790 = FStar_Syntax_Subst.open_branch b in - (match uu____18738 with - | (p,uu____18747,e) -> - ((let uu____18766 = + (match uu____18790 with + | (p,uu____18799,e) -> + ((let uu____18818 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Rel") in - if uu____18766 + if uu____18818 then - let uu____18771 = + let uu____18823 = FStar_Syntax_Print.pat_to_string p in - let uu____18773 = + let uu____18825 = FStar_Syntax_Print.term_to_string e in FStar_Util.print2 "Found head matching branch %s -> %s\n" - uu____18771 uu____18773 + uu____18823 uu____18825 else ()); - (let uu____18778 = + (let uu____18830 = try_solve_branch scrutinee p in FStar_All.pipe_left (fun _0_9 -> FStar_Util.Inr _0_9) - uu____18778))))) - | ((s,t),(uu____18795,{ + uu____18830))))) + | ((s,t),(uu____18847,{ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_match (scrutinee,branches); FStar_Syntax_Syntax.pos = - uu____18798; + uu____18850; FStar_Syntax_Syntax.vars = - uu____18799;_})) + uu____18851;_})) -> - let uu____18868 = - let uu____18870 = is_flex scrutinee in - Prims.op_Negation uu____18870 in - if uu____18868 + let uu____18920 = + let uu____18922 = is_flex scrutinee in + Prims.op_Negation uu____18922 in + if uu____18920 then - ((let uu____18881 = + ((let uu____18933 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Rel") in - if uu____18881 + if uu____18933 then - let uu____18886 = + let uu____18938 = FStar_Syntax_Print.term_to_string scrutinee in FStar_Util.print1 - "match head %s is not a flex term\n" uu____18886 + "match head %s is not a flex term\n" uu____18938 else ()); FStar_Util.Inr FStar_Pervasives_Native.None) else if wl1.defer_ok then - ((let uu____18905 = + ((let uu____18957 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Rel") in - if uu____18905 + if uu____18957 then FStar_Util.print_string "Deferring ... \n" else ()); FStar_Util.Inl "defer") else - ((let uu____18920 = + ((let uu____18972 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Rel") in - if uu____18920 + if uu____18972 then - let uu____18925 = + let uu____18977 = FStar_Syntax_Print.term_to_string scrutinee in - let uu____18927 = + let uu____18979 = FStar_Syntax_Print.term_to_string t in FStar_Util.print2 "Heuristic applicable with scrutinee %s and other side = %s\n" - uu____18925 uu____18927 + uu____18977 uu____18979 else ()); - (let pat_discriminates uu___350_18952 = - match uu___350_18952 with + (let pat_discriminates uu___349_19004 = + match uu___349_19004 with | ({ FStar_Syntax_Syntax.v = FStar_Syntax_Syntax.Pat_constant - uu____18968; - FStar_Syntax_Syntax.p = uu____18969;_},FStar_Pervasives_Native.None - ,uu____18970) -> true + uu____19020; + FStar_Syntax_Syntax.p = uu____19021;_},FStar_Pervasives_Native.None + ,uu____19022) -> true | ({ FStar_Syntax_Syntax.v = - FStar_Syntax_Syntax.Pat_cons uu____18984; - FStar_Syntax_Syntax.p = uu____18985;_},FStar_Pervasives_Native.None - ,uu____18986) -> true - | uu____19013 -> false in + FStar_Syntax_Syntax.Pat_cons uu____19036; + FStar_Syntax_Syntax.p = uu____19037;_},FStar_Pervasives_Native.None + ,uu____19038) -> true + | uu____19065 -> false in let head_matching_branch = FStar_All.pipe_right branches (FStar_Util.try_find (fun b -> if pat_discriminates b then - let uu____19116 = + let uu____19168 = FStar_Syntax_Subst.open_branch b in - match uu____19116 with - | (uu____19118,uu____19119,t') -> - let uu____19137 = + match uu____19168 with + | (uu____19170,uu____19171,t') -> + let uu____19189 = head_matches_delta env1 wl1 s t' in - (match uu____19137 with - | (FullMatch ,uu____19149) -> + (match uu____19189 with + | (FullMatch ,uu____19201) -> true | (HeadMatch - uu____19163,uu____19164) -> + uu____19215,uu____19216) -> true - | uu____19179 -> false) + | uu____19231 -> false) else false)) in match head_matching_branch with | FStar_Pervasives_Native.None -> - ((let uu____19216 = + ((let uu____19268 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Rel") in - if uu____19216 + if uu____19268 then FStar_Util.print_string "No head_matching branch\n" else ()); (let try_branches = - let uu____19227 = + let uu____19279 = FStar_Util.prefix_until (fun b -> Prims.op_Negation (pat_discriminates b)) branches in - match uu____19227 with + match uu____19279 with | FStar_Pervasives_Native.Some - (branches1,uu____19315,uu____19316) -> + (branches1,uu____19367,uu____19368) -> branches1 - | uu____19461 -> branches in - let uu____19516 = + | uu____19513 -> branches in + let uu____19568 = FStar_Util.find_map try_branches (fun b -> - let uu____19525 = + let uu____19577 = FStar_Syntax_Subst.open_branch b in - match uu____19525 with - | (p,uu____19529,uu____19530) -> + match uu____19577 with + | (p,uu____19581,uu____19582) -> try_solve_branch scrutinee p) in FStar_All.pipe_left (fun _0_10 -> FStar_Util.Inr _0_10) - uu____19516)) + uu____19568)) | FStar_Pervasives_Native.Some b -> - let uu____19588 = + let uu____19640 = FStar_Syntax_Subst.open_branch b in - (match uu____19588 with - | (p,uu____19597,e) -> - ((let uu____19616 = + (match uu____19640 with + | (p,uu____19649,e) -> + ((let uu____19668 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Rel") in - if uu____19616 + if uu____19668 then - let uu____19621 = + let uu____19673 = FStar_Syntax_Print.pat_to_string p in - let uu____19623 = + let uu____19675 = FStar_Syntax_Print.term_to_string e in FStar_Util.print2 "Found head matching branch %s -> %s\n" - uu____19621 uu____19623 + uu____19673 uu____19675 else ()); - (let uu____19628 = + (let uu____19680 = try_solve_branch scrutinee p in FStar_All.pipe_left (fun _0_11 -> FStar_Util.Inr _0_11) - uu____19628))))) - | uu____19643 -> - ((let uu____19665 = + uu____19680))))) + | uu____19695 -> + ((let uu____19717 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Rel") in - if uu____19665 + if uu____19717 then - let uu____19670 = FStar_Syntax_Print.tag_of_term t1 + let uu____19722 = FStar_Syntax_Print.tag_of_term t1 in - let uu____19672 = FStar_Syntax_Print.tag_of_term t2 + let uu____19724 = FStar_Syntax_Print.tag_of_term t2 in FStar_Util.print2 "Heuristic not applicable: tag lhs=%s, rhs=%s\n" - uu____19670 uu____19672 + uu____19722 uu____19724 else ()); FStar_Util.Inr FStar_Pervasives_Native.None))) in let rigid_rigid_delta env1 torig wl1 head1 head2 t1 t2 = let orig = FStar_TypeChecker_Common.TProb torig in - (let uu____19718 = + (let uu____19770 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "RelDelta") in - if uu____19718 + if uu____19770 then - let uu____19723 = FStar_Syntax_Print.tag_of_term t1 in - let uu____19725 = FStar_Syntax_Print.tag_of_term t2 in - let uu____19727 = FStar_Syntax_Print.term_to_string t1 in - let uu____19729 = FStar_Syntax_Print.term_to_string t2 in + let uu____19775 = FStar_Syntax_Print.tag_of_term t1 in + let uu____19777 = FStar_Syntax_Print.tag_of_term t2 in + let uu____19779 = FStar_Syntax_Print.term_to_string t1 in + let uu____19781 = FStar_Syntax_Print.term_to_string t2 in FStar_Util.print4 "rigid_rigid_delta of %s-%s (%s, %s)\n" - uu____19723 uu____19725 uu____19727 uu____19729 + uu____19775 uu____19777 uu____19779 uu____19781 else ()); - (let uu____19734 = head_matches_delta env1 wl1 t1 t2 in - match uu____19734 with + (let uu____19786 = head_matches_delta env1 wl1 t1 t2 in + match uu____19786 with | (m,o) -> (match (m, o) with - | (MisMatch uu____19765,uu____19766) -> + | (MisMatch uu____19817,uu____19818) -> let rec may_relate head3 = - let uu____19794 = - let uu____19795 = FStar_Syntax_Subst.compress head3 + let uu____19846 = + let uu____19847 = FStar_Syntax_Subst.compress head3 in - uu____19795.FStar_Syntax_Syntax.n in - match uu____19794 with - | FStar_Syntax_Syntax.Tm_name uu____19799 -> true - | FStar_Syntax_Syntax.Tm_match uu____19801 -> true + uu____19847.FStar_Syntax_Syntax.n in + match uu____19846 with + | FStar_Syntax_Syntax.Tm_name uu____19851 -> true + | FStar_Syntax_Syntax.Tm_match uu____19853 -> true | FStar_Syntax_Syntax.Tm_fvar fv -> - let uu____19826 = + let uu____19878 = FStar_TypeChecker_Env.delta_depth_of_fv env1 fv in - (match uu____19826 with + (match uu____19878 with | FStar_Syntax_Syntax.Delta_equational_at_level - uu____19828 -> true - | FStar_Syntax_Syntax.Delta_abstract uu____19831 + uu____19880 -> true + | FStar_Syntax_Syntax.Delta_abstract uu____19883 -> problem.FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ - | uu____19832 -> false) + | uu____19884 -> false) | FStar_Syntax_Syntax.Tm_ascribed - (t,uu____19835,uu____19836) -> may_relate t - | FStar_Syntax_Syntax.Tm_uinst (t,uu____19878) -> + (t,uu____19887,uu____19888) -> may_relate t + | FStar_Syntax_Syntax.Tm_uinst (t,uu____19930) -> may_relate t - | FStar_Syntax_Syntax.Tm_meta (t,uu____19884) -> + | FStar_Syntax_Syntax.Tm_meta (t,uu____19936) -> may_relate t - | uu____19889 -> false in - let uu____19891 = + | uu____19941 -> false in + let uu____19943 = try_match_heuristic env1 orig wl1 t1 t2 o in - (match uu____19891 with + (match uu____19943 with | FStar_Util.Inl _defer_ok -> giveup_or_defer1 orig "delaying match heuristic" | FStar_Util.Inr (FStar_Pervasives_Native.Some wl2) -> solve env1 wl2 | FStar_Util.Inr (FStar_Pervasives_Native.None ) -> - let uu____19912 = + let uu____19964 = ((may_relate head1) || (may_relate head2)) && wl1.smt_ok in - if uu____19912 + if uu____19964 then - let uu____19915 = + let uu____19967 = guard_of_prob env1 wl1 problem t1 t2 in - (match uu____19915 with + (match uu____19967 with | (guard,wl2) -> - let uu____19922 = + let uu____19974 = solve_prob orig (FStar_Pervasives_Native.Some guard) [] wl2 in - solve env1 uu____19922) + solve env1 uu____19974) else - (let uu____19925 = - let uu____19927 = + (let uu____19977 = + let uu____19979 = FStar_Syntax_Print.term_to_string head1 in - let uu____19929 = - let uu____19931 = - let uu____19935 = + let uu____19981 = + let uu____19983 = + let uu____19987 = delta_depth_of_term env1 head1 in - FStar_Util.bind_opt uu____19935 + FStar_Util.bind_opt uu____19987 (fun x -> - let uu____19942 = + let uu____19994 = FStar_Syntax_Print.delta_depth_to_string x in FStar_Pervasives_Native.Some - uu____19942) + uu____19994) in - FStar_Util.dflt "" uu____19931 in - let uu____19947 = + FStar_Util.dflt "" uu____19983 in + let uu____19999 = FStar_Syntax_Print.term_to_string head2 in - let uu____19949 = - let uu____19951 = - let uu____19955 = + let uu____20001 = + let uu____20003 = + let uu____20007 = delta_depth_of_term env1 head2 in - FStar_Util.bind_opt uu____19955 + FStar_Util.bind_opt uu____20007 (fun x -> - let uu____19962 = + let uu____20014 = FStar_Syntax_Print.delta_depth_to_string x in FStar_Pervasives_Native.Some - uu____19962) + uu____20014) in - FStar_Util.dflt "" uu____19951 in + FStar_Util.dflt "" uu____20003 in FStar_Util.format4 "head mismatch (%s (%s) vs %s (%s))" - uu____19927 uu____19929 uu____19947 - uu____19949 + uu____19979 uu____19981 uu____19999 + uu____20001 in - giveup env1 uu____19925 orig)) - | (HeadMatch (true ),uu____19968) when + giveup env1 uu____19977 orig)) + | (HeadMatch (true ),uu____20020) when problem.FStar_TypeChecker_Common.relation <> FStar_TypeChecker_Common.EQ -> if wl1.smt_ok then - let uu____19983 = guard_of_prob env1 wl1 problem t1 t2 + let uu____20035 = guard_of_prob env1 wl1 problem t1 t2 in - (match uu____19983 with + (match uu____20035 with | (guard,wl2) -> - let uu____19990 = + let uu____20042 = solve_prob orig (FStar_Pervasives_Native.Some guard) [] wl2 in - solve env1 uu____19990) + solve env1 uu____20042) else - (let uu____19993 = - let uu____19995 = + (let uu____20045 = + let uu____20047 = FStar_Syntax_Print.term_to_string t1 in - let uu____19997 = + let uu____20049 = FStar_Syntax_Print.term_to_string t2 in FStar_Util.format2 "head mismatch for subtyping (%s vs %s)" - uu____19995 uu____19997 + uu____20047 uu____20049 in - giveup env1 uu____19993 orig) - | (uu____20000,FStar_Pervasives_Native.Some (t11,t21)) -> + giveup env1 uu____20045 orig) + | (uu____20052,FStar_Pervasives_Native.Some (t11,t21)) -> solve_t env1 - (let uu___395_20014 = problem in + (let uu___394_20066 = problem in { FStar_TypeChecker_Common.pid = - (uu___395_20014.FStar_TypeChecker_Common.pid); + (uu___394_20066.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = t11; FStar_TypeChecker_Common.relation = - (uu___395_20014.FStar_TypeChecker_Common.relation); + (uu___394_20066.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = t21; FStar_TypeChecker_Common.element = - (uu___395_20014.FStar_TypeChecker_Common.element); + (uu___394_20066.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___395_20014.FStar_TypeChecker_Common.logical_guard); + (uu___394_20066.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___395_20014.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___394_20066.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___395_20014.FStar_TypeChecker_Common.reason); + (uu___394_20066.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___395_20014.FStar_TypeChecker_Common.loc); + (uu___394_20066.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___395_20014.FStar_TypeChecker_Common.rank) + (uu___394_20066.FStar_TypeChecker_Common.rank) }) wl1 | (HeadMatch unif,FStar_Pervasives_Native.None ) -> rigid_heads_match env1 unif torig wl1 t1 t2 @@ -6837,197 +6853,197 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = in let orig = FStar_TypeChecker_Common.TProb problem in def_check_prob "solve_t'.2" orig; - (let uu____20041 = + (let uu____20093 = FStar_Util.physical_equality problem.FStar_TypeChecker_Common.lhs problem.FStar_TypeChecker_Common.rhs in - if uu____20041 + if uu____20093 then - let uu____20044 = + let uu____20096 = solve_prob orig FStar_Pervasives_Native.None [] wl in - solve env uu____20044 + solve env uu____20096 else (let t1 = problem.FStar_TypeChecker_Common.lhs in let t2 = problem.FStar_TypeChecker_Common.rhs in - (let uu____20050 = - let uu____20053 = p_scope orig in - FStar_List.map FStar_Pervasives_Native.fst uu____20053 in + (let uu____20102 = + let uu____20105 = p_scope orig in + FStar_List.map FStar_Pervasives_Native.fst uu____20105 in FStar_TypeChecker_Env.def_check_closed_in (p_loc orig) "ref.t1" - uu____20050 t1); - (let uu____20072 = - let uu____20075 = p_scope orig in - FStar_List.map FStar_Pervasives_Native.fst uu____20075 in + uu____20102 t1); + (let uu____20124 = + let uu____20127 = p_scope orig in + FStar_List.map FStar_Pervasives_Native.fst uu____20127 in FStar_TypeChecker_Env.def_check_closed_in (p_loc orig) "ref.t2" - uu____20072 t2); - (let uu____20094 = + uu____20124 t2); + (let uu____20146 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Rel") in - if uu____20094 + if uu____20146 then - let uu____20098 = + let uu____20150 = FStar_Util.string_of_int problem.FStar_TypeChecker_Common.pid in - let uu____20100 = - let uu____20102 = FStar_Syntax_Print.tag_of_term t1 in - let uu____20104 = - let uu____20106 = FStar_Syntax_Print.term_to_string t1 + let uu____20152 = + let uu____20154 = FStar_Syntax_Print.tag_of_term t1 in + let uu____20156 = + let uu____20158 = FStar_Syntax_Print.term_to_string t1 in - Prims.strcat "::" uu____20106 in - Prims.strcat uu____20102 uu____20104 in - let uu____20109 = - let uu____20111 = FStar_Syntax_Print.tag_of_term t2 in - let uu____20113 = - let uu____20115 = FStar_Syntax_Print.term_to_string t2 + Prims.strcat "::" uu____20158 in + Prims.strcat uu____20154 uu____20156 in + let uu____20161 = + let uu____20163 = FStar_Syntax_Print.tag_of_term t2 in + let uu____20165 = + let uu____20167 = FStar_Syntax_Print.term_to_string t2 in - Prims.strcat "::" uu____20115 in - Prims.strcat uu____20111 uu____20113 in + Prims.strcat "::" uu____20167 in + Prims.strcat uu____20163 uu____20165 in FStar_Util.print4 "Attempting %s (%s vs %s); rel = (%s)\n" - uu____20098 uu____20100 uu____20109 + uu____20150 uu____20152 uu____20161 (rel_to_string problem.FStar_TypeChecker_Common.relation) else ()); (let r = FStar_TypeChecker_Env.get_range env in match ((t1.FStar_Syntax_Syntax.n), (t2.FStar_Syntax_Syntax.n)) with - | (FStar_Syntax_Syntax.Tm_delayed uu____20122,uu____20123) -> + | (FStar_Syntax_Syntax.Tm_delayed uu____20174,uu____20175) -> failwith "Impossible: terms were not compressed" - | (uu____20147,FStar_Syntax_Syntax.Tm_delayed uu____20148) -> + | (uu____20199,FStar_Syntax_Syntax.Tm_delayed uu____20200) -> failwith "Impossible: terms were not compressed" - | (FStar_Syntax_Syntax.Tm_ascribed uu____20172,uu____20173) -> - let uu____20200 = - let uu___396_20201 = problem in - let uu____20202 = FStar_Syntax_Util.unascribe t1 in + | (FStar_Syntax_Syntax.Tm_ascribed uu____20224,uu____20225) -> + let uu____20252 = + let uu___395_20253 = problem in + let uu____20254 = FStar_Syntax_Util.unascribe t1 in { FStar_TypeChecker_Common.pid = - (uu___396_20201.FStar_TypeChecker_Common.pid); - FStar_TypeChecker_Common.lhs = uu____20202; + (uu___395_20253.FStar_TypeChecker_Common.pid); + FStar_TypeChecker_Common.lhs = uu____20254; FStar_TypeChecker_Common.relation = - (uu___396_20201.FStar_TypeChecker_Common.relation); + (uu___395_20253.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = - (uu___396_20201.FStar_TypeChecker_Common.rhs); + (uu___395_20253.FStar_TypeChecker_Common.rhs); FStar_TypeChecker_Common.element = - (uu___396_20201.FStar_TypeChecker_Common.element); + (uu___395_20253.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___396_20201.FStar_TypeChecker_Common.logical_guard); + (uu___395_20253.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___396_20201.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___395_20253.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___396_20201.FStar_TypeChecker_Common.reason); + (uu___395_20253.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___396_20201.FStar_TypeChecker_Common.loc); + (uu___395_20253.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___396_20201.FStar_TypeChecker_Common.rank) + (uu___395_20253.FStar_TypeChecker_Common.rank) } in - solve_t' env uu____20200 wl - | (FStar_Syntax_Syntax.Tm_meta uu____20203,uu____20204) -> - let uu____20211 = - let uu___397_20212 = problem in - let uu____20213 = FStar_Syntax_Util.unmeta t1 in + solve_t' env uu____20252 wl + | (FStar_Syntax_Syntax.Tm_meta uu____20255,uu____20256) -> + let uu____20263 = + let uu___396_20264 = problem in + let uu____20265 = FStar_Syntax_Util.unmeta t1 in { FStar_TypeChecker_Common.pid = - (uu___397_20212.FStar_TypeChecker_Common.pid); - FStar_TypeChecker_Common.lhs = uu____20213; + (uu___396_20264.FStar_TypeChecker_Common.pid); + FStar_TypeChecker_Common.lhs = uu____20265; FStar_TypeChecker_Common.relation = - (uu___397_20212.FStar_TypeChecker_Common.relation); + (uu___396_20264.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = - (uu___397_20212.FStar_TypeChecker_Common.rhs); + (uu___396_20264.FStar_TypeChecker_Common.rhs); FStar_TypeChecker_Common.element = - (uu___397_20212.FStar_TypeChecker_Common.element); + (uu___396_20264.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___397_20212.FStar_TypeChecker_Common.logical_guard); + (uu___396_20264.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___397_20212.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___396_20264.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___397_20212.FStar_TypeChecker_Common.reason); + (uu___396_20264.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___397_20212.FStar_TypeChecker_Common.loc); + (uu___396_20264.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___397_20212.FStar_TypeChecker_Common.rank) + (uu___396_20264.FStar_TypeChecker_Common.rank) } in - solve_t' env uu____20211 wl - | (uu____20214,FStar_Syntax_Syntax.Tm_ascribed uu____20215) -> - let uu____20242 = - let uu___398_20243 = problem in - let uu____20244 = FStar_Syntax_Util.unascribe t2 in + solve_t' env uu____20263 wl + | (uu____20266,FStar_Syntax_Syntax.Tm_ascribed uu____20267) -> + let uu____20294 = + let uu___397_20295 = problem in + let uu____20296 = FStar_Syntax_Util.unascribe t2 in { FStar_TypeChecker_Common.pid = - (uu___398_20243.FStar_TypeChecker_Common.pid); + (uu___397_20295.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = - (uu___398_20243.FStar_TypeChecker_Common.lhs); + (uu___397_20295.FStar_TypeChecker_Common.lhs); FStar_TypeChecker_Common.relation = - (uu___398_20243.FStar_TypeChecker_Common.relation); - FStar_TypeChecker_Common.rhs = uu____20244; + (uu___397_20295.FStar_TypeChecker_Common.relation); + FStar_TypeChecker_Common.rhs = uu____20296; FStar_TypeChecker_Common.element = - (uu___398_20243.FStar_TypeChecker_Common.element); + (uu___397_20295.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___398_20243.FStar_TypeChecker_Common.logical_guard); + (uu___397_20295.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___398_20243.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___397_20295.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___398_20243.FStar_TypeChecker_Common.reason); + (uu___397_20295.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___398_20243.FStar_TypeChecker_Common.loc); + (uu___397_20295.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___398_20243.FStar_TypeChecker_Common.rank) + (uu___397_20295.FStar_TypeChecker_Common.rank) } in - solve_t' env uu____20242 wl - | (uu____20245,FStar_Syntax_Syntax.Tm_meta uu____20246) -> - let uu____20253 = - let uu___399_20254 = problem in - let uu____20255 = FStar_Syntax_Util.unmeta t2 in + solve_t' env uu____20294 wl + | (uu____20297,FStar_Syntax_Syntax.Tm_meta uu____20298) -> + let uu____20305 = + let uu___398_20306 = problem in + let uu____20307 = FStar_Syntax_Util.unmeta t2 in { FStar_TypeChecker_Common.pid = - (uu___399_20254.FStar_TypeChecker_Common.pid); + (uu___398_20306.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = - (uu___399_20254.FStar_TypeChecker_Common.lhs); + (uu___398_20306.FStar_TypeChecker_Common.lhs); FStar_TypeChecker_Common.relation = - (uu___399_20254.FStar_TypeChecker_Common.relation); - FStar_TypeChecker_Common.rhs = uu____20255; + (uu___398_20306.FStar_TypeChecker_Common.relation); + FStar_TypeChecker_Common.rhs = uu____20307; FStar_TypeChecker_Common.element = - (uu___399_20254.FStar_TypeChecker_Common.element); + (uu___398_20306.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___399_20254.FStar_TypeChecker_Common.logical_guard); + (uu___398_20306.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___399_20254.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___398_20306.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___399_20254.FStar_TypeChecker_Common.reason); + (uu___398_20306.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___399_20254.FStar_TypeChecker_Common.loc); + (uu___398_20306.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___399_20254.FStar_TypeChecker_Common.rank) + (uu___398_20306.FStar_TypeChecker_Common.rank) } in - solve_t' env uu____20253 wl + solve_t' env uu____20305 wl | (FStar_Syntax_Syntax.Tm_quoted - (t11,uu____20257),FStar_Syntax_Syntax.Tm_quoted - (t21,uu____20259)) -> - let uu____20268 = + (t11,uu____20309),FStar_Syntax_Syntax.Tm_quoted + (t21,uu____20311)) -> + let uu____20320 = solve_prob orig FStar_Pervasives_Native.None [] wl in - solve env uu____20268 - | (FStar_Syntax_Syntax.Tm_bvar uu____20269,uu____20270) -> + solve env uu____20320 + | (FStar_Syntax_Syntax.Tm_bvar uu____20321,uu____20322) -> failwith "Only locally nameless! We should never see a de Bruijn variable" - | (uu____20272,FStar_Syntax_Syntax.Tm_bvar uu____20273) -> + | (uu____20324,FStar_Syntax_Syntax.Tm_bvar uu____20325) -> failwith "Only locally nameless! We should never see a de Bruijn variable" | (FStar_Syntax_Syntax.Tm_type u1,FStar_Syntax_Syntax.Tm_type u2) -> solve_one_universe_eq env orig u1 u2 wl | (FStar_Syntax_Syntax.Tm_arrow (bs1,c1),FStar_Syntax_Syntax.Tm_arrow (bs2,c2)) -> - let mk_c c uu___351_20343 = - match uu___351_20343 with + let mk_c c uu___350_20395 = + match uu___350_20395 with | [] -> c | bs -> - let uu____20371 = + let uu____20423 = FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_arrow (bs, c)) FStar_Pervasives_Native.None c.FStar_Syntax_Syntax.pos in - FStar_Syntax_Syntax.mk_Total uu____20371 + FStar_Syntax_Syntax.mk_Total uu____20423 in - let uu____20382 = + let uu____20434 = match_num_binders (bs1, (mk_c c1)) (bs2, (mk_c c2)) in - (match uu____20382 with + (match uu____20434 with | ((bs11,c11),(bs21,c21)) -> solve_binders env bs11 bs21 orig wl (fun wl1 -> @@ -7041,10 +7057,10 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_Syntax_Subst.subst_comp subst1 c21 in let rel = - let uu____20531 = + let uu____20583 = FStar_Options.use_eq_at_higher_order () in - if uu____20531 + if uu____20583 then FStar_TypeChecker_Common.EQ else problem.FStar_TypeChecker_Common.relation @@ -7055,8 +7071,8 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = | (FStar_Syntax_Syntax.Tm_abs (bs1,tbody1,lopt1),FStar_Syntax_Syntax.Tm_abs (bs2,tbody2,lopt2)) -> - let mk_t t l uu___352_20620 = - match uu___352_20620 with + let mk_t t l uu___351_20672 = + match uu___351_20672 with | [] -> t | bs -> FStar_Syntax_Syntax.mk @@ -7064,32 +7080,32 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_Pervasives_Native.None t.FStar_Syntax_Syntax.pos in - let uu____20662 = + let uu____20714 = match_num_binders (bs1, (mk_t tbody1 lopt1)) (bs2, (mk_t tbody2 lopt2)) in - (match uu____20662 with + (match uu____20714 with | ((bs11,tbody11),(bs21,tbody21)) -> solve_binders env bs11 bs21 orig wl (fun wl1 -> fun scope -> fun env1 -> fun subst1 -> - let uu____20807 = + let uu____20859 = FStar_Syntax_Subst.subst subst1 tbody11 in - let uu____20808 = + let uu____20860 = FStar_Syntax_Subst.subst subst1 tbody21 in - mk_t_problem wl1 scope orig uu____20807 + mk_t_problem wl1 scope orig uu____20859 problem.FStar_TypeChecker_Common.relation - uu____20808 FStar_Pervasives_Native.None + uu____20860 FStar_Pervasives_Native.None "lambda co-domain")) - | (FStar_Syntax_Syntax.Tm_abs uu____20810,uu____20811) -> + | (FStar_Syntax_Syntax.Tm_abs uu____20862,uu____20863) -> let is_abs t = match t.FStar_Syntax_Syntax.n with - | FStar_Syntax_Syntax.Tm_abs uu____20842 -> true - | uu____20862 -> false in + | FStar_Syntax_Syntax.Tm_abs uu____20894 -> true + | uu____20914 -> false in let maybe_eta t = if is_abs t then FStar_Util.Inl t @@ -7105,181 +7121,181 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = if is_abs t then t else - (let uu____20922 = + (let uu____20974 = env.FStar_TypeChecker_Env.type_of - (let uu___400_20930 = env in + (let uu___399_20982 = env in { FStar_TypeChecker_Env.solver = - (uu___400_20930.FStar_TypeChecker_Env.solver); + (uu___399_20982.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___400_20930.FStar_TypeChecker_Env.range); + (uu___399_20982.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___400_20930.FStar_TypeChecker_Env.curmodule); + (uu___399_20982.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___400_20930.FStar_TypeChecker_Env.gamma); + (uu___399_20982.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___400_20930.FStar_TypeChecker_Env.gamma_sig); + (uu___399_20982.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___400_20930.FStar_TypeChecker_Env.gamma_cache); + (uu___399_20982.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___400_20930.FStar_TypeChecker_Env.modules); + (uu___399_20982.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = FStar_Pervasives_Native.None; FStar_TypeChecker_Env.sigtab = - (uu___400_20930.FStar_TypeChecker_Env.sigtab); + (uu___399_20982.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___400_20930.FStar_TypeChecker_Env.attrtab); + (uu___399_20982.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___400_20930.FStar_TypeChecker_Env.is_pattern); + (uu___399_20982.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___400_20930.FStar_TypeChecker_Env.instantiate_imp); + (uu___399_20982.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___400_20930.FStar_TypeChecker_Env.effects); + (uu___399_20982.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___400_20930.FStar_TypeChecker_Env.generalize); + (uu___399_20982.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___400_20930.FStar_TypeChecker_Env.letrecs); + (uu___399_20982.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___400_20930.FStar_TypeChecker_Env.top_level); + (uu___399_20982.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___400_20930.FStar_TypeChecker_Env.check_uvars); + (uu___399_20982.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___400_20930.FStar_TypeChecker_Env.use_eq); + (uu___399_20982.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___400_20930.FStar_TypeChecker_Env.is_iface); + (uu___399_20982.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___400_20930.FStar_TypeChecker_Env.admit); + (uu___399_20982.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___400_20930.FStar_TypeChecker_Env.lax_universes); + (uu___399_20982.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___400_20930.FStar_TypeChecker_Env.phase1); + (uu___399_20982.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___400_20930.FStar_TypeChecker_Env.failhard); + (uu___399_20982.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___400_20930.FStar_TypeChecker_Env.nosynth); + (uu___399_20982.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___400_20930.FStar_TypeChecker_Env.uvar_subtyping); + (uu___399_20982.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___400_20930.FStar_TypeChecker_Env.tc_term); + (uu___399_20982.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___400_20930.FStar_TypeChecker_Env.type_of); + (uu___399_20982.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___400_20930.FStar_TypeChecker_Env.universe_of); + (uu___399_20982.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___400_20930.FStar_TypeChecker_Env.check_type_of); + (uu___399_20982.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = true; FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___400_20930.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___399_20982.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___400_20930.FStar_TypeChecker_Env.normalized_eff_names); + (uu___399_20982.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___400_20930.FStar_TypeChecker_Env.fv_delta_depths); + (uu___399_20982.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___400_20930.FStar_TypeChecker_Env.proof_ns); + (uu___399_20982.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___400_20930.FStar_TypeChecker_Env.synth_hook); + (uu___399_20982.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___400_20930.FStar_TypeChecker_Env.splice); + (uu___399_20982.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___400_20930.FStar_TypeChecker_Env.postprocess); + (uu___399_20982.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___400_20930.FStar_TypeChecker_Env.is_native_tactic); + (uu___399_20982.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___400_20930.FStar_TypeChecker_Env.identifier_info); + (uu___399_20982.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___400_20930.FStar_TypeChecker_Env.tc_hooks); + (uu___399_20982.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___400_20930.FStar_TypeChecker_Env.dsenv); + (uu___399_20982.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___400_20930.FStar_TypeChecker_Env.nbe) + (uu___399_20982.FStar_TypeChecker_Env.nbe) }) t in - match uu____20922 with - | (uu____20935,ty,uu____20937) -> + match uu____20974 with + | (uu____20987,ty,uu____20989) -> let ty1 = let rec aux ty1 = let ty2 = FStar_TypeChecker_Normalize.unfold_whnf env ty1 in - let uu____20946 = - let uu____20947 = + let uu____20998 = + let uu____20999 = FStar_Syntax_Subst.compress ty2 in - uu____20947.FStar_Syntax_Syntax.n in - match uu____20946 with - | FStar_Syntax_Syntax.Tm_refine uu____20950 -> - let uu____20957 = + uu____20999.FStar_Syntax_Syntax.n in + match uu____20998 with + | FStar_Syntax_Syntax.Tm_refine uu____21002 -> + let uu____21009 = FStar_Syntax_Util.unrefine ty2 in - aux uu____20957 - | uu____20958 -> ty2 in + aux uu____21009 + | uu____21010 -> ty2 in aux ty in let r1 = FStar_TypeChecker_Normalize.eta_expand_with_type env t ty1 in - ((let uu____20961 = + ((let uu____21013 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug wl.tcenv) (FStar_Options.Other "Rel") in - if uu____20961 + if uu____21013 then - let uu____20966 = + let uu____21018 = FStar_Syntax_Print.term_to_string t in - let uu____20968 = - let uu____20970 = + let uu____21020 = + let uu____21022 = FStar_TypeChecker_Normalize.unfold_whnf env ty1 in FStar_Syntax_Print.term_to_string - uu____20970 + uu____21022 in - let uu____20971 = + let uu____21023 = FStar_Syntax_Print.term_to_string r1 in FStar_Util.print3 "force_eta of (%s) at type (%s) = %s\n" - uu____20966 uu____20968 uu____20971 + uu____21018 uu____21020 uu____21023 else ()); r1)) in - let uu____20976 = - let uu____20993 = maybe_eta t1 in - let uu____21000 = maybe_eta t2 in - (uu____20993, uu____21000) in - (match uu____20976 with + let uu____21028 = + let uu____21045 = maybe_eta t1 in + let uu____21052 = maybe_eta t2 in + (uu____21045, uu____21052) in + (match uu____21028 with | (FStar_Util.Inl t11,FStar_Util.Inl t21) -> solve_t env - (let uu___401_21042 = problem in + (let uu___400_21094 = problem in { FStar_TypeChecker_Common.pid = - (uu___401_21042.FStar_TypeChecker_Common.pid); + (uu___400_21094.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = t11; FStar_TypeChecker_Common.relation = - (uu___401_21042.FStar_TypeChecker_Common.relation); + (uu___400_21094.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = t21; FStar_TypeChecker_Common.element = - (uu___401_21042.FStar_TypeChecker_Common.element); + (uu___400_21094.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___401_21042.FStar_TypeChecker_Common.logical_guard); + (uu___400_21094.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___401_21042.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___400_21094.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___401_21042.FStar_TypeChecker_Common.reason); + (uu___400_21094.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___401_21042.FStar_TypeChecker_Common.loc); + (uu___400_21094.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___401_21042.FStar_TypeChecker_Common.rank) + (uu___400_21094.FStar_TypeChecker_Common.rank) }) wl | (FStar_Util.Inl t_abs,FStar_Util.Inr not_abs) -> - let uu____21063 = + let uu____21115 = (is_flex not_abs) && ((p_rel orig) = FStar_TypeChecker_Common.EQ) in - if uu____21063 + if uu____21115 then - let uu____21066 = destruct_flex_t not_abs wl in - (match uu____21066 with + let uu____21118 = destruct_flex_t not_abs wl in + (match uu____21118 with | (flex,wl1) -> solve_t_flex_rigid_eq env orig wl1 flex t_abs) else @@ -7288,40 +7304,40 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = if (is_abs t11) && (is_abs t21) then solve_t env - (let uu___402_21083 = problem in + (let uu___401_21135 = problem in { FStar_TypeChecker_Common.pid = - (uu___402_21083.FStar_TypeChecker_Common.pid); + (uu___401_21135.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = t11; FStar_TypeChecker_Common.relation = - (uu___402_21083.FStar_TypeChecker_Common.relation); + (uu___401_21135.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = t21; FStar_TypeChecker_Common.element = - (uu___402_21083.FStar_TypeChecker_Common.element); + (uu___401_21135.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___402_21083.FStar_TypeChecker_Common.logical_guard); + (uu___401_21135.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___402_21083.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___401_21135.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___402_21083.FStar_TypeChecker_Common.reason); + (uu___401_21135.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___402_21083.FStar_TypeChecker_Common.loc); + (uu___401_21135.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___402_21083.FStar_TypeChecker_Common.rank) + (uu___401_21135.FStar_TypeChecker_Common.rank) }) wl else giveup env "head tag mismatch: RHS is an abstraction" orig) | (FStar_Util.Inr not_abs,FStar_Util.Inl t_abs) -> - let uu____21107 = + let uu____21159 = (is_flex not_abs) && ((p_rel orig) = FStar_TypeChecker_Common.EQ) in - if uu____21107 + if uu____21159 then - let uu____21110 = destruct_flex_t not_abs wl in - (match uu____21110 with + let uu____21162 = destruct_flex_t not_abs wl in + (match uu____21162 with | (flex,wl1) -> solve_t_flex_rigid_eq env orig wl1 flex t_abs) else @@ -7330,39 +7346,39 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = if (is_abs t11) && (is_abs t21) then solve_t env - (let uu___402_21127 = problem in + (let uu___401_21179 = problem in { FStar_TypeChecker_Common.pid = - (uu___402_21127.FStar_TypeChecker_Common.pid); + (uu___401_21179.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = t11; FStar_TypeChecker_Common.relation = - (uu___402_21127.FStar_TypeChecker_Common.relation); + (uu___401_21179.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = t21; FStar_TypeChecker_Common.element = - (uu___402_21127.FStar_TypeChecker_Common.element); + (uu___401_21179.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___402_21127.FStar_TypeChecker_Common.logical_guard); + (uu___401_21179.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___402_21127.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___401_21179.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___402_21127.FStar_TypeChecker_Common.reason); + (uu___401_21179.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___402_21127.FStar_TypeChecker_Common.loc); + (uu___401_21179.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___402_21127.FStar_TypeChecker_Common.rank) + (uu___401_21179.FStar_TypeChecker_Common.rank) }) wl else giveup env "head tag mismatch: RHS is an abstraction" orig) - | uu____21131 -> + | uu____21183 -> failwith "Impossible: at least one side is an abstraction") - | (uu____21149,FStar_Syntax_Syntax.Tm_abs uu____21150) -> + | (uu____21201,FStar_Syntax_Syntax.Tm_abs uu____21202) -> let is_abs t = match t.FStar_Syntax_Syntax.n with - | FStar_Syntax_Syntax.Tm_abs uu____21181 -> true - | uu____21201 -> false in + | FStar_Syntax_Syntax.Tm_abs uu____21233 -> true + | uu____21253 -> false in let maybe_eta t = if is_abs t then FStar_Util.Inl t @@ -7378,181 +7394,181 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = if is_abs t then t else - (let uu____21261 = + (let uu____21313 = env.FStar_TypeChecker_Env.type_of - (let uu___400_21269 = env in + (let uu___399_21321 = env in { FStar_TypeChecker_Env.solver = - (uu___400_21269.FStar_TypeChecker_Env.solver); + (uu___399_21321.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___400_21269.FStar_TypeChecker_Env.range); + (uu___399_21321.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___400_21269.FStar_TypeChecker_Env.curmodule); + (uu___399_21321.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___400_21269.FStar_TypeChecker_Env.gamma); + (uu___399_21321.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___400_21269.FStar_TypeChecker_Env.gamma_sig); + (uu___399_21321.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___400_21269.FStar_TypeChecker_Env.gamma_cache); + (uu___399_21321.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___400_21269.FStar_TypeChecker_Env.modules); + (uu___399_21321.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = FStar_Pervasives_Native.None; FStar_TypeChecker_Env.sigtab = - (uu___400_21269.FStar_TypeChecker_Env.sigtab); + (uu___399_21321.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___400_21269.FStar_TypeChecker_Env.attrtab); + (uu___399_21321.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___400_21269.FStar_TypeChecker_Env.is_pattern); + (uu___399_21321.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___400_21269.FStar_TypeChecker_Env.instantiate_imp); + (uu___399_21321.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___400_21269.FStar_TypeChecker_Env.effects); + (uu___399_21321.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___400_21269.FStar_TypeChecker_Env.generalize); + (uu___399_21321.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___400_21269.FStar_TypeChecker_Env.letrecs); + (uu___399_21321.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___400_21269.FStar_TypeChecker_Env.top_level); + (uu___399_21321.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___400_21269.FStar_TypeChecker_Env.check_uvars); + (uu___399_21321.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___400_21269.FStar_TypeChecker_Env.use_eq); + (uu___399_21321.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___400_21269.FStar_TypeChecker_Env.is_iface); + (uu___399_21321.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___400_21269.FStar_TypeChecker_Env.admit); + (uu___399_21321.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___400_21269.FStar_TypeChecker_Env.lax_universes); + (uu___399_21321.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___400_21269.FStar_TypeChecker_Env.phase1); + (uu___399_21321.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___400_21269.FStar_TypeChecker_Env.failhard); + (uu___399_21321.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___400_21269.FStar_TypeChecker_Env.nosynth); + (uu___399_21321.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___400_21269.FStar_TypeChecker_Env.uvar_subtyping); + (uu___399_21321.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___400_21269.FStar_TypeChecker_Env.tc_term); + (uu___399_21321.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___400_21269.FStar_TypeChecker_Env.type_of); + (uu___399_21321.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___400_21269.FStar_TypeChecker_Env.universe_of); + (uu___399_21321.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___400_21269.FStar_TypeChecker_Env.check_type_of); + (uu___399_21321.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = true; FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___400_21269.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___399_21321.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___400_21269.FStar_TypeChecker_Env.normalized_eff_names); + (uu___399_21321.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___400_21269.FStar_TypeChecker_Env.fv_delta_depths); + (uu___399_21321.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___400_21269.FStar_TypeChecker_Env.proof_ns); + (uu___399_21321.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___400_21269.FStar_TypeChecker_Env.synth_hook); + (uu___399_21321.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___400_21269.FStar_TypeChecker_Env.splice); + (uu___399_21321.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___400_21269.FStar_TypeChecker_Env.postprocess); + (uu___399_21321.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___400_21269.FStar_TypeChecker_Env.is_native_tactic); + (uu___399_21321.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___400_21269.FStar_TypeChecker_Env.identifier_info); + (uu___399_21321.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___400_21269.FStar_TypeChecker_Env.tc_hooks); + (uu___399_21321.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___400_21269.FStar_TypeChecker_Env.dsenv); + (uu___399_21321.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___400_21269.FStar_TypeChecker_Env.nbe) + (uu___399_21321.FStar_TypeChecker_Env.nbe) }) t in - match uu____21261 with - | (uu____21274,ty,uu____21276) -> + match uu____21313 with + | (uu____21326,ty,uu____21328) -> let ty1 = let rec aux ty1 = let ty2 = FStar_TypeChecker_Normalize.unfold_whnf env ty1 in - let uu____21285 = - let uu____21286 = + let uu____21337 = + let uu____21338 = FStar_Syntax_Subst.compress ty2 in - uu____21286.FStar_Syntax_Syntax.n in - match uu____21285 with - | FStar_Syntax_Syntax.Tm_refine uu____21289 -> - let uu____21296 = + uu____21338.FStar_Syntax_Syntax.n in + match uu____21337 with + | FStar_Syntax_Syntax.Tm_refine uu____21341 -> + let uu____21348 = FStar_Syntax_Util.unrefine ty2 in - aux uu____21296 - | uu____21297 -> ty2 in + aux uu____21348 + | uu____21349 -> ty2 in aux ty in let r1 = FStar_TypeChecker_Normalize.eta_expand_with_type env t ty1 in - ((let uu____21300 = + ((let uu____21352 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug wl.tcenv) (FStar_Options.Other "Rel") in - if uu____21300 + if uu____21352 then - let uu____21305 = + let uu____21357 = FStar_Syntax_Print.term_to_string t in - let uu____21307 = - let uu____21309 = + let uu____21359 = + let uu____21361 = FStar_TypeChecker_Normalize.unfold_whnf env ty1 in FStar_Syntax_Print.term_to_string - uu____21309 + uu____21361 in - let uu____21310 = + let uu____21362 = FStar_Syntax_Print.term_to_string r1 in FStar_Util.print3 "force_eta of (%s) at type (%s) = %s\n" - uu____21305 uu____21307 uu____21310 + uu____21357 uu____21359 uu____21362 else ()); r1)) in - let uu____21315 = - let uu____21332 = maybe_eta t1 in - let uu____21339 = maybe_eta t2 in - (uu____21332, uu____21339) in - (match uu____21315 with + let uu____21367 = + let uu____21384 = maybe_eta t1 in + let uu____21391 = maybe_eta t2 in + (uu____21384, uu____21391) in + (match uu____21367 with | (FStar_Util.Inl t11,FStar_Util.Inl t21) -> solve_t env - (let uu___401_21381 = problem in + (let uu___400_21433 = problem in { FStar_TypeChecker_Common.pid = - (uu___401_21381.FStar_TypeChecker_Common.pid); + (uu___400_21433.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = t11; FStar_TypeChecker_Common.relation = - (uu___401_21381.FStar_TypeChecker_Common.relation); + (uu___400_21433.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = t21; FStar_TypeChecker_Common.element = - (uu___401_21381.FStar_TypeChecker_Common.element); + (uu___400_21433.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___401_21381.FStar_TypeChecker_Common.logical_guard); + (uu___400_21433.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___401_21381.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___400_21433.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___401_21381.FStar_TypeChecker_Common.reason); + (uu___400_21433.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___401_21381.FStar_TypeChecker_Common.loc); + (uu___400_21433.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___401_21381.FStar_TypeChecker_Common.rank) + (uu___400_21433.FStar_TypeChecker_Common.rank) }) wl | (FStar_Util.Inl t_abs,FStar_Util.Inr not_abs) -> - let uu____21402 = + let uu____21454 = (is_flex not_abs) && ((p_rel orig) = FStar_TypeChecker_Common.EQ) in - if uu____21402 + if uu____21454 then - let uu____21405 = destruct_flex_t not_abs wl in - (match uu____21405 with + let uu____21457 = destruct_flex_t not_abs wl in + (match uu____21457 with | (flex,wl1) -> solve_t_flex_rigid_eq env orig wl1 flex t_abs) else @@ -7561,40 +7577,40 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = if (is_abs t11) && (is_abs t21) then solve_t env - (let uu___402_21422 = problem in + (let uu___401_21474 = problem in { FStar_TypeChecker_Common.pid = - (uu___402_21422.FStar_TypeChecker_Common.pid); + (uu___401_21474.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = t11; FStar_TypeChecker_Common.relation = - (uu___402_21422.FStar_TypeChecker_Common.relation); + (uu___401_21474.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = t21; FStar_TypeChecker_Common.element = - (uu___402_21422.FStar_TypeChecker_Common.element); + (uu___401_21474.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___402_21422.FStar_TypeChecker_Common.logical_guard); + (uu___401_21474.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___402_21422.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___401_21474.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___402_21422.FStar_TypeChecker_Common.reason); + (uu___401_21474.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___402_21422.FStar_TypeChecker_Common.loc); + (uu___401_21474.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___402_21422.FStar_TypeChecker_Common.rank) + (uu___401_21474.FStar_TypeChecker_Common.rank) }) wl else giveup env "head tag mismatch: RHS is an abstraction" orig) | (FStar_Util.Inr not_abs,FStar_Util.Inl t_abs) -> - let uu____21446 = + let uu____21498 = (is_flex not_abs) && ((p_rel orig) = FStar_TypeChecker_Common.EQ) in - if uu____21446 + if uu____21498 then - let uu____21449 = destruct_flex_t not_abs wl in - (match uu____21449 with + let uu____21501 = destruct_flex_t not_abs wl in + (match uu____21501 with | (flex,wl1) -> solve_t_flex_rigid_eq env orig wl1 flex t_abs) else @@ -7603,124 +7619,124 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = if (is_abs t11) && (is_abs t21) then solve_t env - (let uu___402_21466 = problem in + (let uu___401_21518 = problem in { FStar_TypeChecker_Common.pid = - (uu___402_21466.FStar_TypeChecker_Common.pid); + (uu___401_21518.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = t11; FStar_TypeChecker_Common.relation = - (uu___402_21466.FStar_TypeChecker_Common.relation); + (uu___401_21518.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = t21; FStar_TypeChecker_Common.element = - (uu___402_21466.FStar_TypeChecker_Common.element); + (uu___401_21518.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___402_21466.FStar_TypeChecker_Common.logical_guard); + (uu___401_21518.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___402_21466.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___401_21518.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___402_21466.FStar_TypeChecker_Common.reason); + (uu___401_21518.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___402_21466.FStar_TypeChecker_Common.loc); + (uu___401_21518.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___402_21466.FStar_TypeChecker_Common.rank) + (uu___401_21518.FStar_TypeChecker_Common.rank) }) wl else giveup env "head tag mismatch: RHS is an abstraction" orig) - | uu____21470 -> + | uu____21522 -> failwith "Impossible: at least one side is an abstraction") | (FStar_Syntax_Syntax.Tm_refine (x1,phi1),FStar_Syntax_Syntax.Tm_refine (x2,phi2)) -> - let uu____21500 = - let uu____21505 = + let uu____21552 = + let uu____21557 = head_matches_delta env wl x1.FStar_Syntax_Syntax.sort x2.FStar_Syntax_Syntax.sort in - match uu____21505 with + match uu____21557 with | (FullMatch ,FStar_Pervasives_Native.Some (t11,t21)) -> - ((let uu___403_21533 = x1 in + ((let uu___402_21585 = x1 in { FStar_Syntax_Syntax.ppname = - (uu___403_21533.FStar_Syntax_Syntax.ppname); + (uu___402_21585.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___403_21533.FStar_Syntax_Syntax.index); + (uu___402_21585.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t11 }), - (let uu___404_21535 = x2 in + (let uu___403_21587 = x2 in { FStar_Syntax_Syntax.ppname = - (uu___404_21535.FStar_Syntax_Syntax.ppname); + (uu___403_21587.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___404_21535.FStar_Syntax_Syntax.index); + (uu___403_21587.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t21 })) - | (HeadMatch uu____21536,FStar_Pervasives_Native.Some + | (HeadMatch uu____21588,FStar_Pervasives_Native.Some (t11,t21)) -> - ((let uu___403_21551 = x1 in + ((let uu___402_21603 = x1 in { FStar_Syntax_Syntax.ppname = - (uu___403_21551.FStar_Syntax_Syntax.ppname); + (uu___402_21603.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___403_21551.FStar_Syntax_Syntax.index); + (uu___402_21603.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t11 }), - (let uu___404_21553 = x2 in + (let uu___403_21605 = x2 in { FStar_Syntax_Syntax.ppname = - (uu___404_21553.FStar_Syntax_Syntax.ppname); + (uu___403_21605.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___404_21553.FStar_Syntax_Syntax.index); + (uu___403_21605.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t21 })) - | uu____21554 -> (x1, x2) in - (match uu____21500 with + | uu____21606 -> (x1, x2) in + (match uu____21552 with | (x11,x21) -> let t11 = FStar_Syntax_Util.refine x11 phi1 in let t21 = FStar_Syntax_Util.refine x21 phi2 in - let uu____21573 = as_refinement false env t11 in - (match uu____21573 with + let uu____21625 = as_refinement false env t11 in + (match uu____21625 with | (x12,phi11) -> - let uu____21581 = as_refinement false env t21 in - (match uu____21581 with + let uu____21633 = as_refinement false env t21 in + (match uu____21633 with | (x22,phi21) -> - ((let uu____21590 = + ((let uu____21642 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Rel") in - if uu____21590 + if uu____21642 then - ((let uu____21595 = + ((let uu____21647 = FStar_Syntax_Print.bv_to_string x12 in - let uu____21597 = + let uu____21649 = FStar_Syntax_Print.term_to_string x12.FStar_Syntax_Syntax.sort in - let uu____21599 = + let uu____21651 = FStar_Syntax_Print.term_to_string phi11 in FStar_Util.print3 - "ref1 = (%s):(%s){%s}\n" uu____21595 - uu____21597 uu____21599); - (let uu____21602 = + "ref1 = (%s):(%s){%s}\n" uu____21647 + uu____21649 uu____21651); + (let uu____21654 = FStar_Syntax_Print.bv_to_string x22 in - let uu____21604 = + let uu____21656 = FStar_Syntax_Print.term_to_string x22.FStar_Syntax_Syntax.sort in - let uu____21606 = + let uu____21658 = FStar_Syntax_Print.term_to_string phi21 in FStar_Util.print3 - "ref2 = (%s):(%s){%s}\n" uu____21602 - uu____21604 uu____21606)) + "ref2 = (%s):(%s){%s}\n" uu____21654 + uu____21656 uu____21658)) else ()); - (let uu____21611 = + (let uu____21663 = mk_t_problem wl [] orig x12.FStar_Syntax_Syntax.sort problem.FStar_TypeChecker_Common.relation @@ -7728,7 +7744,7 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = problem.FStar_TypeChecker_Common.element "refinement base type" in - match uu____21611 with + match uu____21663 with | (base_prob,wl1) -> let x13 = FStar_Syntax_Syntax.freshen_bv x12 @@ -7750,12 +7766,12 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = x13 in let mk_imp1 imp phi13 phi23 = - let uu____21682 = imp phi13 phi23 + let uu____21734 = imp phi13 phi23 in - FStar_All.pipe_right uu____21682 + FStar_All.pipe_right uu____21734 (guard_on_element wl1 problem x13) in - let fallback uu____21694 = + let fallback uu____21746 = let impl = if problem.FStar_TypeChecker_Common.relation @@ -7771,52 +7787,52 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_Syntax_Util.mk_conj (p_guard base_prob) impl in - (let uu____21707 = - let uu____21710 = p_scope orig + (let uu____21759 = + let uu____21762 = p_scope orig in FStar_List.map FStar_Pervasives_Native.fst - uu____21710 + uu____21762 in FStar_TypeChecker_Env.def_check_closed_in - (p_loc orig) "ref.1" uu____21707 + (p_loc orig) "ref.1" uu____21759 (p_guard base_prob)); - (let uu____21729 = - let uu____21732 = p_scope orig + (let uu____21781 = + let uu____21784 = p_scope orig in FStar_List.map FStar_Pervasives_Native.fst - uu____21732 + uu____21784 in FStar_TypeChecker_Env.def_check_closed_in - (p_loc orig) "ref.2" uu____21729 + (p_loc orig) "ref.2" uu____21781 impl); (let wl2 = solve_prob orig (FStar_Pervasives_Native.Some guard) [] wl1 in - let uu____21751 = + let uu____21803 = attempt [base_prob] wl2 in - solve env1 uu____21751) + solve env1 uu____21803) in let has_uvars = - (let uu____21756 = - let uu____21758 = + (let uu____21808 = + let uu____21810 = FStar_Syntax_Free.uvars phi12 in FStar_Util.set_is_empty - uu____21758 + uu____21810 in - Prims.op_Negation uu____21756) || - (let uu____21762 = - let uu____21764 = + Prims.op_Negation uu____21808) || + (let uu____21814 = + let uu____21816 = FStar_Syntax_Free.uvars phi22 in FStar_Util.set_is_empty - uu____21764 + uu____21816 in - Prims.op_Negation uu____21762) + Prims.op_Negation uu____21814) in if (problem.FStar_TypeChecker_Common.relation @@ -7826,43 +7842,43 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = env1.FStar_TypeChecker_Env.uvar_subtyping) && has_uvars) then - let uu____21768 = - let uu____21773 = - let uu____21782 = + let uu____21820 = + let uu____21825 = + let uu____21834 = FStar_Syntax_Syntax.mk_binder x13 in - [uu____21782] in - mk_t_problem wl1 uu____21773 orig + [uu____21834] in + mk_t_problem wl1 uu____21825 orig phi12 FStar_TypeChecker_Common.EQ phi22 FStar_Pervasives_Native.None "refinement formula" in - (match uu____21768 with + (match uu____21820 with | (ref_prob,wl2) -> - let uu____21804 = + let uu____21856 = solve env1 - (let uu___405_21806 = wl2 + (let uu___404_21858 = wl2 in { attempting = [ref_prob]; wl_deferred = []; ctr = - (uu___405_21806.ctr); + (uu___404_21858.ctr); defer_ok = false; smt_ok = - (uu___405_21806.smt_ok); + (uu___404_21858.smt_ok); umax_heuristic_ok = - (uu___405_21806.umax_heuristic_ok); + (uu___404_21858.umax_heuristic_ok); tcenv = - (uu___405_21806.tcenv); + (uu___404_21858.tcenv); wl_implicits = - (uu___405_21806.wl_implicits) + (uu___404_21858.wl_implicits) }) in - (match uu____21804 with + (match uu____21856 with | Failed (prob,msg) -> if ((Prims.op_Negation @@ -7873,9 +7889,9 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = wl2.smt_ok) then giveup env1 msg prob else fallback () - | Success uu____21823 -> + | Success uu____21875 -> let guard = - let uu____21831 = + let uu____21883 = FStar_All.pipe_right (p_guard ref_prob) (guard_on_element @@ -7883,7 +7899,7 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = in FStar_Syntax_Util.mk_conj (p_guard base_prob) - uu____21831 + uu____21883 in let wl3 = solve_prob orig @@ -7891,293 +7907,293 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = guard) [] wl2 in let wl4 = - let uu___406_21840 = wl3 + let uu___405_21892 = wl3 in { attempting = - (uu___406_21840.attempting); + (uu___405_21892.attempting); wl_deferred = - (uu___406_21840.wl_deferred); + (uu___405_21892.wl_deferred); ctr = (wl3.ctr + (Prims.parse_int "1")); defer_ok = - (uu___406_21840.defer_ok); + (uu___405_21892.defer_ok); smt_ok = - (uu___406_21840.smt_ok); + (uu___405_21892.smt_ok); umax_heuristic_ok = - (uu___406_21840.umax_heuristic_ok); + (uu___405_21892.umax_heuristic_ok); tcenv = - (uu___406_21840.tcenv); + (uu___405_21892.tcenv); wl_implicits = - (uu___406_21840.wl_implicits) + (uu___405_21892.wl_implicits) } in - let uu____21842 = + let uu____21894 = attempt [base_prob] wl4 in - solve env1 uu____21842)) + solve env1 uu____21894)) else fallback ()))))) | (FStar_Syntax_Syntax.Tm_uvar - uu____21845,FStar_Syntax_Syntax.Tm_uvar uu____21846) -> - let uu____21871 = destruct_flex_t t1 wl in - (match uu____21871 with + uu____21897,FStar_Syntax_Syntax.Tm_uvar uu____21898) -> + let uu____21923 = destruct_flex_t t1 wl in + (match uu____21923 with | (f1,wl1) -> - let uu____21878 = destruct_flex_t t2 wl1 in - (match uu____21878 with + let uu____21930 = destruct_flex_t t2 wl1 in + (match uu____21930 with | (f2,wl2) -> solve_t_flex_flex env orig wl2 f1 f2)) | (FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_uvar - uu____21885; - FStar_Syntax_Syntax.pos = uu____21886; - FStar_Syntax_Syntax.vars = uu____21887;_},uu____21888),FStar_Syntax_Syntax.Tm_uvar - uu____21889) -> - let uu____21938 = destruct_flex_t t1 wl in - (match uu____21938 with + uu____21937; + FStar_Syntax_Syntax.pos = uu____21938; + FStar_Syntax_Syntax.vars = uu____21939;_},uu____21940),FStar_Syntax_Syntax.Tm_uvar + uu____21941) -> + let uu____21990 = destruct_flex_t t1 wl in + (match uu____21990 with | (f1,wl1) -> - let uu____21945 = destruct_flex_t t2 wl1 in - (match uu____21945 with + let uu____21997 = destruct_flex_t t2 wl1 in + (match uu____21997 with | (f2,wl2) -> solve_t_flex_flex env orig wl2 f1 f2)) | (FStar_Syntax_Syntax.Tm_uvar - uu____21952,FStar_Syntax_Syntax.Tm_app + uu____22004,FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_uvar - uu____21953; - FStar_Syntax_Syntax.pos = uu____21954; - FStar_Syntax_Syntax.vars = uu____21955;_},uu____21956)) + uu____22005; + FStar_Syntax_Syntax.pos = uu____22006; + FStar_Syntax_Syntax.vars = uu____22007;_},uu____22008)) -> - let uu____22005 = destruct_flex_t t1 wl in - (match uu____22005 with + let uu____22057 = destruct_flex_t t1 wl in + (match uu____22057 with | (f1,wl1) -> - let uu____22012 = destruct_flex_t t2 wl1 in - (match uu____22012 with + let uu____22064 = destruct_flex_t t2 wl1 in + (match uu____22064 with | (f2,wl2) -> solve_t_flex_flex env orig wl2 f1 f2)) | (FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_uvar - uu____22019; - FStar_Syntax_Syntax.pos = uu____22020; - FStar_Syntax_Syntax.vars = uu____22021;_},uu____22022),FStar_Syntax_Syntax.Tm_app + uu____22071; + FStar_Syntax_Syntax.pos = uu____22072; + FStar_Syntax_Syntax.vars = uu____22073;_},uu____22074),FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_uvar - uu____22023; - FStar_Syntax_Syntax.pos = uu____22024; - FStar_Syntax_Syntax.vars = uu____22025;_},uu____22026)) + uu____22075; + FStar_Syntax_Syntax.pos = uu____22076; + FStar_Syntax_Syntax.vars = uu____22077;_},uu____22078)) -> - let uu____22099 = destruct_flex_t t1 wl in - (match uu____22099 with + let uu____22151 = destruct_flex_t t1 wl in + (match uu____22151 with | (f1,wl1) -> - let uu____22106 = destruct_flex_t t2 wl1 in - (match uu____22106 with + let uu____22158 = destruct_flex_t t2 wl1 in + (match uu____22158 with | (f2,wl2) -> solve_t_flex_flex env orig wl2 f1 f2)) - | (FStar_Syntax_Syntax.Tm_uvar uu____22113,uu____22114) when + | (FStar_Syntax_Syntax.Tm_uvar uu____22165,uu____22166) when problem.FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ -> - let uu____22127 = destruct_flex_t t1 wl in - (match uu____22127 with + let uu____22179 = destruct_flex_t t1 wl in + (match uu____22179 with | (f1,wl1) -> solve_t_flex_rigid_eq env orig wl1 f1 t2) | (FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_uvar - uu____22134; - FStar_Syntax_Syntax.pos = uu____22135; - FStar_Syntax_Syntax.vars = uu____22136;_},uu____22137),uu____22138) + uu____22186; + FStar_Syntax_Syntax.pos = uu____22187; + FStar_Syntax_Syntax.vars = uu____22188;_},uu____22189),uu____22190) when problem.FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ -> - let uu____22175 = destruct_flex_t t1 wl in - (match uu____22175 with + let uu____22227 = destruct_flex_t t1 wl in + (match uu____22227 with | (f1,wl1) -> solve_t_flex_rigid_eq env orig wl1 f1 t2) - | (uu____22182,FStar_Syntax_Syntax.Tm_uvar uu____22183) when + | (uu____22234,FStar_Syntax_Syntax.Tm_uvar uu____22235) when problem.FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ -> solve_t env (invert problem) wl - | (uu____22196,FStar_Syntax_Syntax.Tm_app + | (uu____22248,FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_uvar - uu____22197; - FStar_Syntax_Syntax.pos = uu____22198; - FStar_Syntax_Syntax.vars = uu____22199;_},uu____22200)) + uu____22249; + FStar_Syntax_Syntax.pos = uu____22250; + FStar_Syntax_Syntax.vars = uu____22251;_},uu____22252)) when problem.FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ -> solve_t env (invert problem) wl | (FStar_Syntax_Syntax.Tm_uvar - uu____22237,FStar_Syntax_Syntax.Tm_arrow uu____22238) -> + uu____22289,FStar_Syntax_Syntax.Tm_arrow uu____22290) -> solve_t' env - (let uu___407_22266 = problem in + (let uu___406_22318 = problem in { FStar_TypeChecker_Common.pid = - (uu___407_22266.FStar_TypeChecker_Common.pid); + (uu___406_22318.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = - (uu___407_22266.FStar_TypeChecker_Common.lhs); + (uu___406_22318.FStar_TypeChecker_Common.lhs); FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ; FStar_TypeChecker_Common.rhs = - (uu___407_22266.FStar_TypeChecker_Common.rhs); + (uu___406_22318.FStar_TypeChecker_Common.rhs); FStar_TypeChecker_Common.element = - (uu___407_22266.FStar_TypeChecker_Common.element); + (uu___406_22318.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___407_22266.FStar_TypeChecker_Common.logical_guard); + (uu___406_22318.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___407_22266.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___406_22318.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___407_22266.FStar_TypeChecker_Common.reason); + (uu___406_22318.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___407_22266.FStar_TypeChecker_Common.loc); + (uu___406_22318.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___407_22266.FStar_TypeChecker_Common.rank) + (uu___406_22318.FStar_TypeChecker_Common.rank) }) wl | (FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_uvar - uu____22267; - FStar_Syntax_Syntax.pos = uu____22268; - FStar_Syntax_Syntax.vars = uu____22269;_},uu____22270),FStar_Syntax_Syntax.Tm_arrow - uu____22271) -> + uu____22319; + FStar_Syntax_Syntax.pos = uu____22320; + FStar_Syntax_Syntax.vars = uu____22321;_},uu____22322),FStar_Syntax_Syntax.Tm_arrow + uu____22323) -> solve_t' env - (let uu___407_22323 = problem in + (let uu___406_22375 = problem in { FStar_TypeChecker_Common.pid = - (uu___407_22323.FStar_TypeChecker_Common.pid); + (uu___406_22375.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = - (uu___407_22323.FStar_TypeChecker_Common.lhs); + (uu___406_22375.FStar_TypeChecker_Common.lhs); FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ; FStar_TypeChecker_Common.rhs = - (uu___407_22323.FStar_TypeChecker_Common.rhs); + (uu___406_22375.FStar_TypeChecker_Common.rhs); FStar_TypeChecker_Common.element = - (uu___407_22323.FStar_TypeChecker_Common.element); + (uu___406_22375.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___407_22323.FStar_TypeChecker_Common.logical_guard); + (uu___406_22375.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___407_22323.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___406_22375.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___407_22323.FStar_TypeChecker_Common.reason); + (uu___406_22375.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___407_22323.FStar_TypeChecker_Common.loc); + (uu___406_22375.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___407_22323.FStar_TypeChecker_Common.rank) + (uu___406_22375.FStar_TypeChecker_Common.rank) }) wl - | (uu____22324,FStar_Syntax_Syntax.Tm_uvar uu____22325) -> - let uu____22338 = + | (uu____22376,FStar_Syntax_Syntax.Tm_uvar uu____22377) -> + let uu____22390 = attempt [FStar_TypeChecker_Common.TProb problem] wl in - solve env uu____22338 - | (uu____22339,FStar_Syntax_Syntax.Tm_app + solve env uu____22390 + | (uu____22391,FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_uvar - uu____22340; - FStar_Syntax_Syntax.pos = uu____22341; - FStar_Syntax_Syntax.vars = uu____22342;_},uu____22343)) + uu____22392; + FStar_Syntax_Syntax.pos = uu____22393; + FStar_Syntax_Syntax.vars = uu____22394;_},uu____22395)) -> - let uu____22380 = + let uu____22432 = attempt [FStar_TypeChecker_Common.TProb problem] wl in - solve env uu____22380 - | (FStar_Syntax_Syntax.Tm_uvar uu____22381,uu____22382) -> - let uu____22395 = + solve env uu____22432 + | (FStar_Syntax_Syntax.Tm_uvar uu____22433,uu____22434) -> + let uu____22447 = attempt [FStar_TypeChecker_Common.TProb problem] wl in - solve env uu____22395 + solve env uu____22447 | (FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_uvar - uu____22396; - FStar_Syntax_Syntax.pos = uu____22397; - FStar_Syntax_Syntax.vars = uu____22398;_},uu____22399),uu____22400) + uu____22448; + FStar_Syntax_Syntax.pos = uu____22449; + FStar_Syntax_Syntax.vars = uu____22450;_},uu____22451),uu____22452) -> - let uu____22437 = + let uu____22489 = attempt [FStar_TypeChecker_Common.TProb problem] wl in - solve env uu____22437 - | (FStar_Syntax_Syntax.Tm_refine uu____22438,uu____22439) -> + solve env uu____22489 + | (FStar_Syntax_Syntax.Tm_refine uu____22490,uu____22491) -> let t21 = - let uu____22447 = base_and_refinement env t2 in - FStar_All.pipe_left force_refinement uu____22447 in + let uu____22499 = base_and_refinement env t2 in + FStar_All.pipe_left force_refinement uu____22499 in solve_t env - (let uu___408_22473 = problem in + (let uu___407_22525 = problem in { FStar_TypeChecker_Common.pid = - (uu___408_22473.FStar_TypeChecker_Common.pid); + (uu___407_22525.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = - (uu___408_22473.FStar_TypeChecker_Common.lhs); + (uu___407_22525.FStar_TypeChecker_Common.lhs); FStar_TypeChecker_Common.relation = - (uu___408_22473.FStar_TypeChecker_Common.relation); + (uu___407_22525.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = t21; FStar_TypeChecker_Common.element = - (uu___408_22473.FStar_TypeChecker_Common.element); + (uu___407_22525.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___408_22473.FStar_TypeChecker_Common.logical_guard); + (uu___407_22525.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___408_22473.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___407_22525.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___408_22473.FStar_TypeChecker_Common.reason); + (uu___407_22525.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___408_22473.FStar_TypeChecker_Common.loc); + (uu___407_22525.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___408_22473.FStar_TypeChecker_Common.rank) + (uu___407_22525.FStar_TypeChecker_Common.rank) }) wl - | (uu____22474,FStar_Syntax_Syntax.Tm_refine uu____22475) -> + | (uu____22526,FStar_Syntax_Syntax.Tm_refine uu____22527) -> let t11 = - let uu____22483 = base_and_refinement env t1 in - FStar_All.pipe_left force_refinement uu____22483 in + let uu____22535 = base_and_refinement env t1 in + FStar_All.pipe_left force_refinement uu____22535 in solve_t env - (let uu___409_22509 = problem in + (let uu___408_22561 = problem in { FStar_TypeChecker_Common.pid = - (uu___409_22509.FStar_TypeChecker_Common.pid); + (uu___408_22561.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = t11; FStar_TypeChecker_Common.relation = - (uu___409_22509.FStar_TypeChecker_Common.relation); + (uu___408_22561.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = - (uu___409_22509.FStar_TypeChecker_Common.rhs); + (uu___408_22561.FStar_TypeChecker_Common.rhs); FStar_TypeChecker_Common.element = - (uu___409_22509.FStar_TypeChecker_Common.element); + (uu___408_22561.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___409_22509.FStar_TypeChecker_Common.logical_guard); + (uu___408_22561.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___409_22509.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___408_22561.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___409_22509.FStar_TypeChecker_Common.reason); + (uu___408_22561.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___409_22509.FStar_TypeChecker_Common.loc); + (uu___408_22561.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___409_22509.FStar_TypeChecker_Common.rank) + (uu___408_22561.FStar_TypeChecker_Common.rank) }) wl | (FStar_Syntax_Syntax.Tm_match (s1,brs1),FStar_Syntax_Syntax.Tm_match (s2,brs2)) -> - let by_smt uu____22591 = - let uu____22592 = guard_of_prob env wl problem t1 t2 in - match uu____22592 with + let by_smt uu____22643 = + let uu____22644 = guard_of_prob env wl problem t1 t2 in + match uu____22644 with | (guard,wl1) -> - let uu____22599 = + let uu____22651 = solve_prob orig (FStar_Pervasives_Native.Some guard) [] wl1 in - solve env uu____22599 + solve env uu____22651 in let rec solve_branches wl1 brs11 brs21 = match (brs11, brs21) with | (br1::rs1,br2::rs2) -> - let uu____22818 = br1 in - (match uu____22818 with - | (p1,w1,uu____22847) -> - let uu____22864 = br2 in - (match uu____22864 with - | (p2,w2,uu____22887) -> - let uu____22892 = - let uu____22894 = + let uu____22870 = br1 in + (match uu____22870 with + | (p1,w1,uu____22899) -> + let uu____22916 = br2 in + (match uu____22916 with + | (p2,w2,uu____22939) -> + let uu____22944 = + let uu____22946 = FStar_Syntax_Syntax.eq_pat p1 p2 in - Prims.op_Negation uu____22894 in - if uu____22892 + Prims.op_Negation uu____22946 in + if uu____22944 then FStar_Pervasives_Native.None else - (let uu____22921 = + (let uu____22973 = FStar_Syntax_Subst.open_branch' br1 in - match uu____22921 with + match uu____22973 with | ((p11,w11,e1),s) -> - let uu____22958 = br2 in - (match uu____22958 with + let uu____23010 = br2 in + (match uu____23010 with | (p21,w21,e2) -> let w22 = FStar_Util.map_opt w21 @@ -8187,24 +8203,24 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_Syntax_Subst.subst s e2 in let scope = - let uu____22991 = + let uu____23043 = FStar_Syntax_Syntax.pat_bvs p11 in FStar_All.pipe_left (FStar_List.map FStar_Syntax_Syntax.mk_binder) - uu____22991 + uu____23043 in - let uu____22996 = + let uu____23048 = match (w11, w22) with | (FStar_Pervasives_Native.Some - uu____23027,FStar_Pervasives_Native.None + uu____23079,FStar_Pervasives_Native.None ) -> FStar_Pervasives_Native.None | (FStar_Pervasives_Native.None ,FStar_Pervasives_Native.Some - uu____23048) -> + uu____23100) -> FStar_Pervasives_Native.None | (FStar_Pervasives_Native.None ,FStar_Pervasives_Native.None @@ -8214,7 +8230,7 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = | (FStar_Pervasives_Native.Some w12,FStar_Pervasives_Native.Some w23) -> - let uu____23107 = + let uu____23159 = mk_t_problem wl1 scope orig w12 FStar_TypeChecker_Common.EQ @@ -8222,17 +8238,17 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_Pervasives_Native.None "when clause" in - (match uu____23107 with + (match uu____23159 with | (p,wl2) -> FStar_Pervasives_Native.Some ([(scope, p)], wl2)) in - FStar_Util.bind_opt uu____22996 - (fun uu____23179 -> - match uu____23179 with + FStar_Util.bind_opt uu____23048 + (fun uu____23231 -> + match uu____23231 with | (wprobs,wl2) -> - let uu____23216 = + let uu____23268 = mk_t_problem wl2 scope orig e1 FStar_TypeChecker_Common.EQ @@ -8240,10 +8256,10 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_Pervasives_Native.None "branch body" in - (match uu____23216 + (match uu____23268 with | (prob,wl3) -> - ((let uu____23237 + ((let uu____23289 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug @@ -8251,14 +8267,14 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = (FStar_Options.Other "Rel") in - if uu____23237 + if uu____23289 then - let uu____23242 + let uu____23294 = prob_to_string env prob in - let uu____23244 + let uu____23296 = FStar_Syntax_Print.binders_to_string ", " @@ -8266,20 +8282,20 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = in FStar_Util.print2 "Created problem for branches %s with scope %s\n" - uu____23242 - uu____23244 + uu____23294 + uu____23296 else ()); - (let uu____23250 + (let uu____23302 = solve_branches wl3 rs1 rs2 in FStar_Util.bind_opt - uu____23250 + uu____23302 (fun - uu____23286 + uu____23338 -> - match uu____23286 + match uu____23338 with | (r1,wl4) @@ -8291,103 +8307,103 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = wprobs r1)), wl4)))))))))) | ([],[]) -> FStar_Pervasives_Native.Some ([], wl1) - | uu____23415 -> FStar_Pervasives_Native.None in - let uu____23456 = solve_branches wl brs1 brs2 in - (match uu____23456 with + | uu____23467 -> FStar_Pervasives_Native.None in + let uu____23508 = solve_branches wl brs1 brs2 in + (match uu____23508 with | FStar_Pervasives_Native.None -> if wl.smt_ok then by_smt () else giveup env "Tm_match branches don't match" orig | FStar_Pervasives_Native.Some (sub_probs,wl1) -> - let uu____23507 = + let uu____23559 = mk_t_problem wl1 [] orig s1 FStar_TypeChecker_Common.EQ s2 FStar_Pervasives_Native.None "match scrutinee" in - (match uu____23507 with + (match uu____23559 with | (sc_prob,wl2) -> let sub_probs1 = ([], sc_prob) :: sub_probs in let formula = - let uu____23541 = + let uu____23593 = FStar_List.map - (fun uu____23553 -> - match uu____23553 with + (fun uu____23605 -> + match uu____23605 with | (scope,p) -> FStar_TypeChecker_Env.close_forall wl2.tcenv scope (p_guard p)) sub_probs1 in - FStar_Syntax_Util.mk_conj_l uu____23541 in + FStar_Syntax_Util.mk_conj_l uu____23593 in let tx = FStar_Syntax_Unionfind.new_transaction () in let wl3 = solve_prob orig (FStar_Pervasives_Native.Some formula) [] wl2 in - let uu____23562 = - let uu____23563 = - let uu____23564 = + let uu____23614 = + let uu____23615 = + let uu____23616 = FStar_List.map FStar_Pervasives_Native.snd sub_probs1 in - attempt uu____23564 - (let uu___410_23572 = wl3 in + attempt uu____23616 + (let uu___409_23624 = wl3 in { - attempting = (uu___410_23572.attempting); + attempting = (uu___409_23624.attempting); wl_deferred = - (uu___410_23572.wl_deferred); - ctr = (uu___410_23572.ctr); - defer_ok = (uu___410_23572.defer_ok); + (uu___409_23624.wl_deferred); + ctr = (uu___409_23624.ctr); + defer_ok = (uu___409_23624.defer_ok); smt_ok = false; umax_heuristic_ok = - (uu___410_23572.umax_heuristic_ok); - tcenv = (uu___410_23572.tcenv); + (uu___409_23624.umax_heuristic_ok); + tcenv = (uu___409_23624.tcenv); wl_implicits = - (uu___410_23572.wl_implicits) + (uu___409_23624.wl_implicits) }) in - solve env uu____23563 in - (match uu____23562 with + solve env uu____23615 in + (match uu____23614 with | Success (ds,imp) -> (FStar_Syntax_Unionfind.commit tx; Success (ds, imp)) - | Failed uu____23577 -> + | Failed uu____23629 -> (FStar_Syntax_Unionfind.rollback tx; by_smt ())))) - | (FStar_Syntax_Syntax.Tm_match uu____23584,uu____23585) -> + | (FStar_Syntax_Syntax.Tm_match uu____23636,uu____23637) -> let head1 = - let uu____23609 = FStar_Syntax_Util.head_and_args t1 in - FStar_All.pipe_right uu____23609 + let uu____23661 = FStar_Syntax_Util.head_and_args t1 in + FStar_All.pipe_right uu____23661 FStar_Pervasives_Native.fst in let head2 = - let uu____23655 = FStar_Syntax_Util.head_and_args t2 in - FStar_All.pipe_right uu____23655 + let uu____23707 = FStar_Syntax_Util.head_and_args t2 in + FStar_All.pipe_right uu____23707 FStar_Pervasives_Native.fst in - ((let uu____23701 = + ((let uu____23753 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Rel") in - if uu____23701 + if uu____23753 then - let uu____23705 = + let uu____23757 = FStar_Util.string_of_int problem.FStar_TypeChecker_Common.pid in - let uu____23707 = + let uu____23759 = FStar_Syntax_Print.term_to_string head1 in - let uu____23709 = + let uu____23761 = FStar_Syntax_Print.term_to_string head2 in FStar_Util.print3 ">> (%s)\n>>> head1 = %s\n>>> head2 = %s\n" - uu____23705 uu____23707 uu____23709 + uu____23757 uu____23759 uu____23761 else ()); (let no_free_uvars t = - (let uu____23723 = FStar_Syntax_Free.uvars t in - FStar_Util.set_is_empty uu____23723) && - (let uu____23727 = FStar_Syntax_Free.univs t in - FStar_Util.set_is_empty uu____23727) + (let uu____23775 = FStar_Syntax_Free.uvars t in + FStar_Util.set_is_empty uu____23775) && + (let uu____23779 = FStar_Syntax_Free.univs t in + FStar_Util.set_is_empty uu____23779) in let equal t11 t21 = let t12 = @@ -8408,9 +8424,9 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_TypeChecker_Env.Eager_unfolding; FStar_TypeChecker_Env.Iota] env t21 in - let uu____23744 = FStar_Syntax_Util.eq_tm t12 t22 in - uu____23744 = FStar_Syntax_Util.Equal in - let uu____23745 = + let uu____23796 = FStar_Syntax_Util.eq_tm t12 t22 in + uu____23796 = FStar_Syntax_Util.Equal in + let uu____23797 = ((((FStar_TypeChecker_Env.is_interpreted env head1) || (FStar_TypeChecker_Env.is_interpreted env head2)) && @@ -8419,72 +8435,72 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = && (no_free_uvars t1)) && (no_free_uvars t2) in - if uu____23745 + if uu____23797 then (if Prims.op_Negation wl.smt_ok then - let uu____23749 = equal t1 t2 in - (if uu____23749 + let uu____23801 = equal t1 t2 in + (if uu____23801 then - let uu____23752 = + let uu____23804 = solve_prob orig FStar_Pervasives_Native.None [] wl in - solve env uu____23752 + solve env uu____23804 else rigid_rigid_delta env problem wl head1 head2 t1 t2) else - (let uu____23757 = - let uu____23764 = equal t1 t2 in - if uu____23764 + (let uu____23809 = + let uu____23816 = equal t1 t2 in + if uu____23816 then (FStar_Pervasives_Native.None, wl) else - (let uu____23777 = mk_eq2 wl env orig t1 t2 in - match uu____23777 with + (let uu____23829 = mk_eq2 wl env orig t1 t2 in + match uu____23829 with | (g,wl1) -> ((FStar_Pervasives_Native.Some g), wl1)) in - match uu____23757 with + match uu____23809 with | (guard,wl1) -> - let uu____23798 = solve_prob orig guard [] wl1 + let uu____23850 = solve_prob orig guard [] wl1 in - solve env uu____23798)) + solve env uu____23850)) else rigid_rigid_delta env problem wl head1 head2 t1 t2)) - | (FStar_Syntax_Syntax.Tm_uinst uu____23801,uu____23802) -> + | (FStar_Syntax_Syntax.Tm_uinst uu____23853,uu____23854) -> let head1 = - let uu____23810 = FStar_Syntax_Util.head_and_args t1 in - FStar_All.pipe_right uu____23810 + let uu____23862 = FStar_Syntax_Util.head_and_args t1 in + FStar_All.pipe_right uu____23862 FStar_Pervasives_Native.fst in let head2 = - let uu____23856 = FStar_Syntax_Util.head_and_args t2 in - FStar_All.pipe_right uu____23856 + let uu____23908 = FStar_Syntax_Util.head_and_args t2 in + FStar_All.pipe_right uu____23908 FStar_Pervasives_Native.fst in - ((let uu____23902 = + ((let uu____23954 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Rel") in - if uu____23902 + if uu____23954 then - let uu____23906 = + let uu____23958 = FStar_Util.string_of_int problem.FStar_TypeChecker_Common.pid in - let uu____23908 = + let uu____23960 = FStar_Syntax_Print.term_to_string head1 in - let uu____23910 = + let uu____23962 = FStar_Syntax_Print.term_to_string head2 in FStar_Util.print3 ">> (%s)\n>>> head1 = %s\n>>> head2 = %s\n" - uu____23906 uu____23908 uu____23910 + uu____23958 uu____23960 uu____23962 else ()); (let no_free_uvars t = - (let uu____23924 = FStar_Syntax_Free.uvars t in - FStar_Util.set_is_empty uu____23924) && - (let uu____23928 = FStar_Syntax_Free.univs t in - FStar_Util.set_is_empty uu____23928) + (let uu____23976 = FStar_Syntax_Free.uvars t in + FStar_Util.set_is_empty uu____23976) && + (let uu____23980 = FStar_Syntax_Free.univs t in + FStar_Util.set_is_empty uu____23980) in let equal t11 t21 = let t12 = @@ -8505,9 +8521,9 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_TypeChecker_Env.Eager_unfolding; FStar_TypeChecker_Env.Iota] env t21 in - let uu____23945 = FStar_Syntax_Util.eq_tm t12 t22 in - uu____23945 = FStar_Syntax_Util.Equal in - let uu____23946 = + let uu____23997 = FStar_Syntax_Util.eq_tm t12 t22 in + uu____23997 = FStar_Syntax_Util.Equal in + let uu____23998 = ((((FStar_TypeChecker_Env.is_interpreted env head1) || (FStar_TypeChecker_Env.is_interpreted env head2)) && @@ -8516,72 +8532,72 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = && (no_free_uvars t1)) && (no_free_uvars t2) in - if uu____23946 + if uu____23998 then (if Prims.op_Negation wl.smt_ok then - let uu____23950 = equal t1 t2 in - (if uu____23950 + let uu____24002 = equal t1 t2 in + (if uu____24002 then - let uu____23953 = + let uu____24005 = solve_prob orig FStar_Pervasives_Native.None [] wl in - solve env uu____23953 + solve env uu____24005 else rigid_rigid_delta env problem wl head1 head2 t1 t2) else - (let uu____23958 = - let uu____23965 = equal t1 t2 in - if uu____23965 + (let uu____24010 = + let uu____24017 = equal t1 t2 in + if uu____24017 then (FStar_Pervasives_Native.None, wl) else - (let uu____23978 = mk_eq2 wl env orig t1 t2 in - match uu____23978 with + (let uu____24030 = mk_eq2 wl env orig t1 t2 in + match uu____24030 with | (g,wl1) -> ((FStar_Pervasives_Native.Some g), wl1)) in - match uu____23958 with + match uu____24010 with | (guard,wl1) -> - let uu____23999 = solve_prob orig guard [] wl1 + let uu____24051 = solve_prob orig guard [] wl1 in - solve env uu____23999)) + solve env uu____24051)) else rigid_rigid_delta env problem wl head1 head2 t1 t2)) - | (FStar_Syntax_Syntax.Tm_name uu____24002,uu____24003) -> + | (FStar_Syntax_Syntax.Tm_name uu____24054,uu____24055) -> let head1 = - let uu____24005 = FStar_Syntax_Util.head_and_args t1 in - FStar_All.pipe_right uu____24005 + let uu____24057 = FStar_Syntax_Util.head_and_args t1 in + FStar_All.pipe_right uu____24057 FStar_Pervasives_Native.fst in let head2 = - let uu____24051 = FStar_Syntax_Util.head_and_args t2 in - FStar_All.pipe_right uu____24051 + let uu____24103 = FStar_Syntax_Util.head_and_args t2 in + FStar_All.pipe_right uu____24103 FStar_Pervasives_Native.fst in - ((let uu____24097 = + ((let uu____24149 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Rel") in - if uu____24097 + if uu____24149 then - let uu____24101 = + let uu____24153 = FStar_Util.string_of_int problem.FStar_TypeChecker_Common.pid in - let uu____24103 = + let uu____24155 = FStar_Syntax_Print.term_to_string head1 in - let uu____24105 = + let uu____24157 = FStar_Syntax_Print.term_to_string head2 in FStar_Util.print3 ">> (%s)\n>>> head1 = %s\n>>> head2 = %s\n" - uu____24101 uu____24103 uu____24105 + uu____24153 uu____24155 uu____24157 else ()); (let no_free_uvars t = - (let uu____24119 = FStar_Syntax_Free.uvars t in - FStar_Util.set_is_empty uu____24119) && - (let uu____24123 = FStar_Syntax_Free.univs t in - FStar_Util.set_is_empty uu____24123) + (let uu____24171 = FStar_Syntax_Free.uvars t in + FStar_Util.set_is_empty uu____24171) && + (let uu____24175 = FStar_Syntax_Free.univs t in + FStar_Util.set_is_empty uu____24175) in let equal t11 t21 = let t12 = @@ -8602,9 +8618,9 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_TypeChecker_Env.Eager_unfolding; FStar_TypeChecker_Env.Iota] env t21 in - let uu____24140 = FStar_Syntax_Util.eq_tm t12 t22 in - uu____24140 = FStar_Syntax_Util.Equal in - let uu____24141 = + let uu____24192 = FStar_Syntax_Util.eq_tm t12 t22 in + uu____24192 = FStar_Syntax_Util.Equal in + let uu____24193 = ((((FStar_TypeChecker_Env.is_interpreted env head1) || (FStar_TypeChecker_Env.is_interpreted env head2)) && @@ -8613,72 +8629,72 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = && (no_free_uvars t1)) && (no_free_uvars t2) in - if uu____24141 + if uu____24193 then (if Prims.op_Negation wl.smt_ok then - let uu____24145 = equal t1 t2 in - (if uu____24145 + let uu____24197 = equal t1 t2 in + (if uu____24197 then - let uu____24148 = + let uu____24200 = solve_prob orig FStar_Pervasives_Native.None [] wl in - solve env uu____24148 + solve env uu____24200 else rigid_rigid_delta env problem wl head1 head2 t1 t2) else - (let uu____24153 = - let uu____24160 = equal t1 t2 in - if uu____24160 + (let uu____24205 = + let uu____24212 = equal t1 t2 in + if uu____24212 then (FStar_Pervasives_Native.None, wl) else - (let uu____24173 = mk_eq2 wl env orig t1 t2 in - match uu____24173 with + (let uu____24225 = mk_eq2 wl env orig t1 t2 in + match uu____24225 with | (g,wl1) -> ((FStar_Pervasives_Native.Some g), wl1)) in - match uu____24153 with + match uu____24205 with | (guard,wl1) -> - let uu____24194 = solve_prob orig guard [] wl1 + let uu____24246 = solve_prob orig guard [] wl1 in - solve env uu____24194)) + solve env uu____24246)) else rigid_rigid_delta env problem wl head1 head2 t1 t2)) - | (FStar_Syntax_Syntax.Tm_constant uu____24197,uu____24198) -> + | (FStar_Syntax_Syntax.Tm_constant uu____24249,uu____24250) -> let head1 = - let uu____24200 = FStar_Syntax_Util.head_and_args t1 in - FStar_All.pipe_right uu____24200 + let uu____24252 = FStar_Syntax_Util.head_and_args t1 in + FStar_All.pipe_right uu____24252 FStar_Pervasives_Native.fst in let head2 = - let uu____24246 = FStar_Syntax_Util.head_and_args t2 in - FStar_All.pipe_right uu____24246 + let uu____24298 = FStar_Syntax_Util.head_and_args t2 in + FStar_All.pipe_right uu____24298 FStar_Pervasives_Native.fst in - ((let uu____24292 = + ((let uu____24344 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Rel") in - if uu____24292 + if uu____24344 then - let uu____24296 = + let uu____24348 = FStar_Util.string_of_int problem.FStar_TypeChecker_Common.pid in - let uu____24298 = + let uu____24350 = FStar_Syntax_Print.term_to_string head1 in - let uu____24300 = + let uu____24352 = FStar_Syntax_Print.term_to_string head2 in FStar_Util.print3 ">> (%s)\n>>> head1 = %s\n>>> head2 = %s\n" - uu____24296 uu____24298 uu____24300 + uu____24348 uu____24350 uu____24352 else ()); (let no_free_uvars t = - (let uu____24314 = FStar_Syntax_Free.uvars t in - FStar_Util.set_is_empty uu____24314) && - (let uu____24318 = FStar_Syntax_Free.univs t in - FStar_Util.set_is_empty uu____24318) + (let uu____24366 = FStar_Syntax_Free.uvars t in + FStar_Util.set_is_empty uu____24366) && + (let uu____24370 = FStar_Syntax_Free.univs t in + FStar_Util.set_is_empty uu____24370) in let equal t11 t21 = let t12 = @@ -8699,9 +8715,9 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_TypeChecker_Env.Eager_unfolding; FStar_TypeChecker_Env.Iota] env t21 in - let uu____24335 = FStar_Syntax_Util.eq_tm t12 t22 in - uu____24335 = FStar_Syntax_Util.Equal in - let uu____24336 = + let uu____24387 = FStar_Syntax_Util.eq_tm t12 t22 in + uu____24387 = FStar_Syntax_Util.Equal in + let uu____24388 = ((((FStar_TypeChecker_Env.is_interpreted env head1) || (FStar_TypeChecker_Env.is_interpreted env head2)) && @@ -8710,72 +8726,72 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = && (no_free_uvars t1)) && (no_free_uvars t2) in - if uu____24336 + if uu____24388 then (if Prims.op_Negation wl.smt_ok then - let uu____24340 = equal t1 t2 in - (if uu____24340 + let uu____24392 = equal t1 t2 in + (if uu____24392 then - let uu____24343 = + let uu____24395 = solve_prob orig FStar_Pervasives_Native.None [] wl in - solve env uu____24343 + solve env uu____24395 else rigid_rigid_delta env problem wl head1 head2 t1 t2) else - (let uu____24348 = - let uu____24355 = equal t1 t2 in - if uu____24355 + (let uu____24400 = + let uu____24407 = equal t1 t2 in + if uu____24407 then (FStar_Pervasives_Native.None, wl) else - (let uu____24368 = mk_eq2 wl env orig t1 t2 in - match uu____24368 with + (let uu____24420 = mk_eq2 wl env orig t1 t2 in + match uu____24420 with | (g,wl1) -> ((FStar_Pervasives_Native.Some g), wl1)) in - match uu____24348 with + match uu____24400 with | (guard,wl1) -> - let uu____24389 = solve_prob orig guard [] wl1 + let uu____24441 = solve_prob orig guard [] wl1 in - solve env uu____24389)) + solve env uu____24441)) else rigid_rigid_delta env problem wl head1 head2 t1 t2)) - | (FStar_Syntax_Syntax.Tm_fvar uu____24392,uu____24393) -> + | (FStar_Syntax_Syntax.Tm_fvar uu____24444,uu____24445) -> let head1 = - let uu____24395 = FStar_Syntax_Util.head_and_args t1 in - FStar_All.pipe_right uu____24395 + let uu____24447 = FStar_Syntax_Util.head_and_args t1 in + FStar_All.pipe_right uu____24447 FStar_Pervasives_Native.fst in let head2 = - let uu____24441 = FStar_Syntax_Util.head_and_args t2 in - FStar_All.pipe_right uu____24441 + let uu____24493 = FStar_Syntax_Util.head_and_args t2 in + FStar_All.pipe_right uu____24493 FStar_Pervasives_Native.fst in - ((let uu____24487 = + ((let uu____24539 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Rel") in - if uu____24487 + if uu____24539 then - let uu____24491 = + let uu____24543 = FStar_Util.string_of_int problem.FStar_TypeChecker_Common.pid in - let uu____24493 = + let uu____24545 = FStar_Syntax_Print.term_to_string head1 in - let uu____24495 = + let uu____24547 = FStar_Syntax_Print.term_to_string head2 in FStar_Util.print3 ">> (%s)\n>>> head1 = %s\n>>> head2 = %s\n" - uu____24491 uu____24493 uu____24495 + uu____24543 uu____24545 uu____24547 else ()); (let no_free_uvars t = - (let uu____24509 = FStar_Syntax_Free.uvars t in - FStar_Util.set_is_empty uu____24509) && - (let uu____24513 = FStar_Syntax_Free.univs t in - FStar_Util.set_is_empty uu____24513) + (let uu____24561 = FStar_Syntax_Free.uvars t in + FStar_Util.set_is_empty uu____24561) && + (let uu____24565 = FStar_Syntax_Free.univs t in + FStar_Util.set_is_empty uu____24565) in let equal t11 t21 = let t12 = @@ -8796,9 +8812,9 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_TypeChecker_Env.Eager_unfolding; FStar_TypeChecker_Env.Iota] env t21 in - let uu____24530 = FStar_Syntax_Util.eq_tm t12 t22 in - uu____24530 = FStar_Syntax_Util.Equal in - let uu____24531 = + let uu____24582 = FStar_Syntax_Util.eq_tm t12 t22 in + uu____24582 = FStar_Syntax_Util.Equal in + let uu____24583 = ((((FStar_TypeChecker_Env.is_interpreted env head1) || (FStar_TypeChecker_Env.is_interpreted env head2)) && @@ -8807,72 +8823,72 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = && (no_free_uvars t1)) && (no_free_uvars t2) in - if uu____24531 + if uu____24583 then (if Prims.op_Negation wl.smt_ok then - let uu____24535 = equal t1 t2 in - (if uu____24535 + let uu____24587 = equal t1 t2 in + (if uu____24587 then - let uu____24538 = + let uu____24590 = solve_prob orig FStar_Pervasives_Native.None [] wl in - solve env uu____24538 + solve env uu____24590 else rigid_rigid_delta env problem wl head1 head2 t1 t2) else - (let uu____24543 = - let uu____24550 = equal t1 t2 in - if uu____24550 + (let uu____24595 = + let uu____24602 = equal t1 t2 in + if uu____24602 then (FStar_Pervasives_Native.None, wl) else - (let uu____24563 = mk_eq2 wl env orig t1 t2 in - match uu____24563 with + (let uu____24615 = mk_eq2 wl env orig t1 t2 in + match uu____24615 with | (g,wl1) -> ((FStar_Pervasives_Native.Some g), wl1)) in - match uu____24543 with + match uu____24595 with | (guard,wl1) -> - let uu____24584 = solve_prob orig guard [] wl1 + let uu____24636 = solve_prob orig guard [] wl1 in - solve env uu____24584)) + solve env uu____24636)) else rigid_rigid_delta env problem wl head1 head2 t1 t2)) - | (FStar_Syntax_Syntax.Tm_app uu____24587,uu____24588) -> + | (FStar_Syntax_Syntax.Tm_app uu____24639,uu____24640) -> let head1 = - let uu____24606 = FStar_Syntax_Util.head_and_args t1 in - FStar_All.pipe_right uu____24606 + let uu____24658 = FStar_Syntax_Util.head_and_args t1 in + FStar_All.pipe_right uu____24658 FStar_Pervasives_Native.fst in let head2 = - let uu____24652 = FStar_Syntax_Util.head_and_args t2 in - FStar_All.pipe_right uu____24652 + let uu____24704 = FStar_Syntax_Util.head_and_args t2 in + FStar_All.pipe_right uu____24704 FStar_Pervasives_Native.fst in - ((let uu____24698 = + ((let uu____24750 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Rel") in - if uu____24698 + if uu____24750 then - let uu____24702 = + let uu____24754 = FStar_Util.string_of_int problem.FStar_TypeChecker_Common.pid in - let uu____24704 = + let uu____24756 = FStar_Syntax_Print.term_to_string head1 in - let uu____24706 = + let uu____24758 = FStar_Syntax_Print.term_to_string head2 in FStar_Util.print3 ">> (%s)\n>>> head1 = %s\n>>> head2 = %s\n" - uu____24702 uu____24704 uu____24706 + uu____24754 uu____24756 uu____24758 else ()); (let no_free_uvars t = - (let uu____24720 = FStar_Syntax_Free.uvars t in - FStar_Util.set_is_empty uu____24720) && - (let uu____24724 = FStar_Syntax_Free.univs t in - FStar_Util.set_is_empty uu____24724) + (let uu____24772 = FStar_Syntax_Free.uvars t in + FStar_Util.set_is_empty uu____24772) && + (let uu____24776 = FStar_Syntax_Free.univs t in + FStar_Util.set_is_empty uu____24776) in let equal t11 t21 = let t12 = @@ -8893,9 +8909,9 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_TypeChecker_Env.Eager_unfolding; FStar_TypeChecker_Env.Iota] env t21 in - let uu____24741 = FStar_Syntax_Util.eq_tm t12 t22 in - uu____24741 = FStar_Syntax_Util.Equal in - let uu____24742 = + let uu____24793 = FStar_Syntax_Util.eq_tm t12 t22 in + uu____24793 = FStar_Syntax_Util.Equal in + let uu____24794 = ((((FStar_TypeChecker_Env.is_interpreted env head1) || (FStar_TypeChecker_Env.is_interpreted env head2)) && @@ -8904,72 +8920,72 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = && (no_free_uvars t1)) && (no_free_uvars t2) in - if uu____24742 + if uu____24794 then (if Prims.op_Negation wl.smt_ok then - let uu____24746 = equal t1 t2 in - (if uu____24746 + let uu____24798 = equal t1 t2 in + (if uu____24798 then - let uu____24749 = + let uu____24801 = solve_prob orig FStar_Pervasives_Native.None [] wl in - solve env uu____24749 + solve env uu____24801 else rigid_rigid_delta env problem wl head1 head2 t1 t2) else - (let uu____24754 = - let uu____24761 = equal t1 t2 in - if uu____24761 + (let uu____24806 = + let uu____24813 = equal t1 t2 in + if uu____24813 then (FStar_Pervasives_Native.None, wl) else - (let uu____24774 = mk_eq2 wl env orig t1 t2 in - match uu____24774 with + (let uu____24826 = mk_eq2 wl env orig t1 t2 in + match uu____24826 with | (g,wl1) -> ((FStar_Pervasives_Native.Some g), wl1)) in - match uu____24754 with + match uu____24806 with | (guard,wl1) -> - let uu____24795 = solve_prob orig guard [] wl1 + let uu____24847 = solve_prob orig guard [] wl1 in - solve env uu____24795)) + solve env uu____24847)) else rigid_rigid_delta env problem wl head1 head2 t1 t2)) - | (uu____24798,FStar_Syntax_Syntax.Tm_match uu____24799) -> + | (uu____24850,FStar_Syntax_Syntax.Tm_match uu____24851) -> let head1 = - let uu____24823 = FStar_Syntax_Util.head_and_args t1 in - FStar_All.pipe_right uu____24823 + let uu____24875 = FStar_Syntax_Util.head_and_args t1 in + FStar_All.pipe_right uu____24875 FStar_Pervasives_Native.fst in let head2 = - let uu____24869 = FStar_Syntax_Util.head_and_args t2 in - FStar_All.pipe_right uu____24869 + let uu____24921 = FStar_Syntax_Util.head_and_args t2 in + FStar_All.pipe_right uu____24921 FStar_Pervasives_Native.fst in - ((let uu____24915 = + ((let uu____24967 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Rel") in - if uu____24915 + if uu____24967 then - let uu____24919 = + let uu____24971 = FStar_Util.string_of_int problem.FStar_TypeChecker_Common.pid in - let uu____24921 = + let uu____24973 = FStar_Syntax_Print.term_to_string head1 in - let uu____24923 = + let uu____24975 = FStar_Syntax_Print.term_to_string head2 in FStar_Util.print3 ">> (%s)\n>>> head1 = %s\n>>> head2 = %s\n" - uu____24919 uu____24921 uu____24923 + uu____24971 uu____24973 uu____24975 else ()); (let no_free_uvars t = - (let uu____24937 = FStar_Syntax_Free.uvars t in - FStar_Util.set_is_empty uu____24937) && - (let uu____24941 = FStar_Syntax_Free.univs t in - FStar_Util.set_is_empty uu____24941) + (let uu____24989 = FStar_Syntax_Free.uvars t in + FStar_Util.set_is_empty uu____24989) && + (let uu____24993 = FStar_Syntax_Free.univs t in + FStar_Util.set_is_empty uu____24993) in let equal t11 t21 = let t12 = @@ -8990,9 +9006,9 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_TypeChecker_Env.Eager_unfolding; FStar_TypeChecker_Env.Iota] env t21 in - let uu____24958 = FStar_Syntax_Util.eq_tm t12 t22 in - uu____24958 = FStar_Syntax_Util.Equal in - let uu____24959 = + let uu____25010 = FStar_Syntax_Util.eq_tm t12 t22 in + uu____25010 = FStar_Syntax_Util.Equal in + let uu____25011 = ((((FStar_TypeChecker_Env.is_interpreted env head1) || (FStar_TypeChecker_Env.is_interpreted env head2)) && @@ -9001,72 +9017,72 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = && (no_free_uvars t1)) && (no_free_uvars t2) in - if uu____24959 + if uu____25011 then (if Prims.op_Negation wl.smt_ok then - let uu____24963 = equal t1 t2 in - (if uu____24963 + let uu____25015 = equal t1 t2 in + (if uu____25015 then - let uu____24966 = + let uu____25018 = solve_prob orig FStar_Pervasives_Native.None [] wl in - solve env uu____24966 + solve env uu____25018 else rigid_rigid_delta env problem wl head1 head2 t1 t2) else - (let uu____24971 = - let uu____24978 = equal t1 t2 in - if uu____24978 + (let uu____25023 = + let uu____25030 = equal t1 t2 in + if uu____25030 then (FStar_Pervasives_Native.None, wl) else - (let uu____24991 = mk_eq2 wl env orig t1 t2 in - match uu____24991 with + (let uu____25043 = mk_eq2 wl env orig t1 t2 in + match uu____25043 with | (g,wl1) -> ((FStar_Pervasives_Native.Some g), wl1)) in - match uu____24971 with + match uu____25023 with | (guard,wl1) -> - let uu____25012 = solve_prob orig guard [] wl1 + let uu____25064 = solve_prob orig guard [] wl1 in - solve env uu____25012)) + solve env uu____25064)) else rigid_rigid_delta env problem wl head1 head2 t1 t2)) - | (uu____25015,FStar_Syntax_Syntax.Tm_uinst uu____25016) -> + | (uu____25067,FStar_Syntax_Syntax.Tm_uinst uu____25068) -> let head1 = - let uu____25024 = FStar_Syntax_Util.head_and_args t1 in - FStar_All.pipe_right uu____25024 + let uu____25076 = FStar_Syntax_Util.head_and_args t1 in + FStar_All.pipe_right uu____25076 FStar_Pervasives_Native.fst in let head2 = - let uu____25064 = FStar_Syntax_Util.head_and_args t2 in - FStar_All.pipe_right uu____25064 + let uu____25116 = FStar_Syntax_Util.head_and_args t2 in + FStar_All.pipe_right uu____25116 FStar_Pervasives_Native.fst in - ((let uu____25104 = + ((let uu____25156 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Rel") in - if uu____25104 + if uu____25156 then - let uu____25108 = + let uu____25160 = FStar_Util.string_of_int problem.FStar_TypeChecker_Common.pid in - let uu____25110 = + let uu____25162 = FStar_Syntax_Print.term_to_string head1 in - let uu____25112 = + let uu____25164 = FStar_Syntax_Print.term_to_string head2 in FStar_Util.print3 ">> (%s)\n>>> head1 = %s\n>>> head2 = %s\n" - uu____25108 uu____25110 uu____25112 + uu____25160 uu____25162 uu____25164 else ()); (let no_free_uvars t = - (let uu____25126 = FStar_Syntax_Free.uvars t in - FStar_Util.set_is_empty uu____25126) && - (let uu____25130 = FStar_Syntax_Free.univs t in - FStar_Util.set_is_empty uu____25130) + (let uu____25178 = FStar_Syntax_Free.uvars t in + FStar_Util.set_is_empty uu____25178) && + (let uu____25182 = FStar_Syntax_Free.univs t in + FStar_Util.set_is_empty uu____25182) in let equal t11 t21 = let t12 = @@ -9087,9 +9103,9 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_TypeChecker_Env.Eager_unfolding; FStar_TypeChecker_Env.Iota] env t21 in - let uu____25147 = FStar_Syntax_Util.eq_tm t12 t22 in - uu____25147 = FStar_Syntax_Util.Equal in - let uu____25148 = + let uu____25199 = FStar_Syntax_Util.eq_tm t12 t22 in + uu____25199 = FStar_Syntax_Util.Equal in + let uu____25200 = ((((FStar_TypeChecker_Env.is_interpreted env head1) || (FStar_TypeChecker_Env.is_interpreted env head2)) && @@ -9098,72 +9114,72 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = && (no_free_uvars t1)) && (no_free_uvars t2) in - if uu____25148 + if uu____25200 then (if Prims.op_Negation wl.smt_ok then - let uu____25152 = equal t1 t2 in - (if uu____25152 + let uu____25204 = equal t1 t2 in + (if uu____25204 then - let uu____25155 = + let uu____25207 = solve_prob orig FStar_Pervasives_Native.None [] wl in - solve env uu____25155 + solve env uu____25207 else rigid_rigid_delta env problem wl head1 head2 t1 t2) else - (let uu____25160 = - let uu____25167 = equal t1 t2 in - if uu____25167 + (let uu____25212 = + let uu____25219 = equal t1 t2 in + if uu____25219 then (FStar_Pervasives_Native.None, wl) else - (let uu____25180 = mk_eq2 wl env orig t1 t2 in - match uu____25180 with + (let uu____25232 = mk_eq2 wl env orig t1 t2 in + match uu____25232 with | (g,wl1) -> ((FStar_Pervasives_Native.Some g), wl1)) in - match uu____25160 with + match uu____25212 with | (guard,wl1) -> - let uu____25201 = solve_prob orig guard [] wl1 + let uu____25253 = solve_prob orig guard [] wl1 in - solve env uu____25201)) + solve env uu____25253)) else rigid_rigid_delta env problem wl head1 head2 t1 t2)) - | (uu____25204,FStar_Syntax_Syntax.Tm_name uu____25205) -> + | (uu____25256,FStar_Syntax_Syntax.Tm_name uu____25257) -> let head1 = - let uu____25207 = FStar_Syntax_Util.head_and_args t1 in - FStar_All.pipe_right uu____25207 + let uu____25259 = FStar_Syntax_Util.head_and_args t1 in + FStar_All.pipe_right uu____25259 FStar_Pervasives_Native.fst in let head2 = - let uu____25247 = FStar_Syntax_Util.head_and_args t2 in - FStar_All.pipe_right uu____25247 + let uu____25299 = FStar_Syntax_Util.head_and_args t2 in + FStar_All.pipe_right uu____25299 FStar_Pervasives_Native.fst in - ((let uu____25287 = + ((let uu____25339 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Rel") in - if uu____25287 + if uu____25339 then - let uu____25291 = + let uu____25343 = FStar_Util.string_of_int problem.FStar_TypeChecker_Common.pid in - let uu____25293 = + let uu____25345 = FStar_Syntax_Print.term_to_string head1 in - let uu____25295 = + let uu____25347 = FStar_Syntax_Print.term_to_string head2 in FStar_Util.print3 ">> (%s)\n>>> head1 = %s\n>>> head2 = %s\n" - uu____25291 uu____25293 uu____25295 + uu____25343 uu____25345 uu____25347 else ()); (let no_free_uvars t = - (let uu____25309 = FStar_Syntax_Free.uvars t in - FStar_Util.set_is_empty uu____25309) && - (let uu____25313 = FStar_Syntax_Free.univs t in - FStar_Util.set_is_empty uu____25313) + (let uu____25361 = FStar_Syntax_Free.uvars t in + FStar_Util.set_is_empty uu____25361) && + (let uu____25365 = FStar_Syntax_Free.univs t in + FStar_Util.set_is_empty uu____25365) in let equal t11 t21 = let t12 = @@ -9184,9 +9200,9 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_TypeChecker_Env.Eager_unfolding; FStar_TypeChecker_Env.Iota] env t21 in - let uu____25330 = FStar_Syntax_Util.eq_tm t12 t22 in - uu____25330 = FStar_Syntax_Util.Equal in - let uu____25331 = + let uu____25382 = FStar_Syntax_Util.eq_tm t12 t22 in + uu____25382 = FStar_Syntax_Util.Equal in + let uu____25383 = ((((FStar_TypeChecker_Env.is_interpreted env head1) || (FStar_TypeChecker_Env.is_interpreted env head2)) && @@ -9195,72 +9211,72 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = && (no_free_uvars t1)) && (no_free_uvars t2) in - if uu____25331 + if uu____25383 then (if Prims.op_Negation wl.smt_ok then - let uu____25335 = equal t1 t2 in - (if uu____25335 + let uu____25387 = equal t1 t2 in + (if uu____25387 then - let uu____25338 = + let uu____25390 = solve_prob orig FStar_Pervasives_Native.None [] wl in - solve env uu____25338 + solve env uu____25390 else rigid_rigid_delta env problem wl head1 head2 t1 t2) else - (let uu____25343 = - let uu____25350 = equal t1 t2 in - if uu____25350 + (let uu____25395 = + let uu____25402 = equal t1 t2 in + if uu____25402 then (FStar_Pervasives_Native.None, wl) else - (let uu____25363 = mk_eq2 wl env orig t1 t2 in - match uu____25363 with + (let uu____25415 = mk_eq2 wl env orig t1 t2 in + match uu____25415 with | (g,wl1) -> ((FStar_Pervasives_Native.Some g), wl1)) in - match uu____25343 with + match uu____25395 with | (guard,wl1) -> - let uu____25384 = solve_prob orig guard [] wl1 + let uu____25436 = solve_prob orig guard [] wl1 in - solve env uu____25384)) + solve env uu____25436)) else rigid_rigid_delta env problem wl head1 head2 t1 t2)) - | (uu____25387,FStar_Syntax_Syntax.Tm_constant uu____25388) -> + | (uu____25439,FStar_Syntax_Syntax.Tm_constant uu____25440) -> let head1 = - let uu____25390 = FStar_Syntax_Util.head_and_args t1 in - FStar_All.pipe_right uu____25390 + let uu____25442 = FStar_Syntax_Util.head_and_args t1 in + FStar_All.pipe_right uu____25442 FStar_Pervasives_Native.fst in let head2 = - let uu____25430 = FStar_Syntax_Util.head_and_args t2 in - FStar_All.pipe_right uu____25430 + let uu____25482 = FStar_Syntax_Util.head_and_args t2 in + FStar_All.pipe_right uu____25482 FStar_Pervasives_Native.fst in - ((let uu____25470 = + ((let uu____25522 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Rel") in - if uu____25470 + if uu____25522 then - let uu____25474 = + let uu____25526 = FStar_Util.string_of_int problem.FStar_TypeChecker_Common.pid in - let uu____25476 = + let uu____25528 = FStar_Syntax_Print.term_to_string head1 in - let uu____25478 = + let uu____25530 = FStar_Syntax_Print.term_to_string head2 in FStar_Util.print3 ">> (%s)\n>>> head1 = %s\n>>> head2 = %s\n" - uu____25474 uu____25476 uu____25478 + uu____25526 uu____25528 uu____25530 else ()); (let no_free_uvars t = - (let uu____25492 = FStar_Syntax_Free.uvars t in - FStar_Util.set_is_empty uu____25492) && - (let uu____25496 = FStar_Syntax_Free.univs t in - FStar_Util.set_is_empty uu____25496) + (let uu____25544 = FStar_Syntax_Free.uvars t in + FStar_Util.set_is_empty uu____25544) && + (let uu____25548 = FStar_Syntax_Free.univs t in + FStar_Util.set_is_empty uu____25548) in let equal t11 t21 = let t12 = @@ -9281,9 +9297,9 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_TypeChecker_Env.Eager_unfolding; FStar_TypeChecker_Env.Iota] env t21 in - let uu____25513 = FStar_Syntax_Util.eq_tm t12 t22 in - uu____25513 = FStar_Syntax_Util.Equal in - let uu____25514 = + let uu____25565 = FStar_Syntax_Util.eq_tm t12 t22 in + uu____25565 = FStar_Syntax_Util.Equal in + let uu____25566 = ((((FStar_TypeChecker_Env.is_interpreted env head1) || (FStar_TypeChecker_Env.is_interpreted env head2)) && @@ -9292,72 +9308,72 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = && (no_free_uvars t1)) && (no_free_uvars t2) in - if uu____25514 + if uu____25566 then (if Prims.op_Negation wl.smt_ok then - let uu____25518 = equal t1 t2 in - (if uu____25518 + let uu____25570 = equal t1 t2 in + (if uu____25570 then - let uu____25521 = + let uu____25573 = solve_prob orig FStar_Pervasives_Native.None [] wl in - solve env uu____25521 + solve env uu____25573 else rigid_rigid_delta env problem wl head1 head2 t1 t2) else - (let uu____25526 = - let uu____25533 = equal t1 t2 in - if uu____25533 + (let uu____25578 = + let uu____25585 = equal t1 t2 in + if uu____25585 then (FStar_Pervasives_Native.None, wl) else - (let uu____25546 = mk_eq2 wl env orig t1 t2 in - match uu____25546 with + (let uu____25598 = mk_eq2 wl env orig t1 t2 in + match uu____25598 with | (g,wl1) -> ((FStar_Pervasives_Native.Some g), wl1)) in - match uu____25526 with + match uu____25578 with | (guard,wl1) -> - let uu____25567 = solve_prob orig guard [] wl1 + let uu____25619 = solve_prob orig guard [] wl1 in - solve env uu____25567)) + solve env uu____25619)) else rigid_rigid_delta env problem wl head1 head2 t1 t2)) - | (uu____25570,FStar_Syntax_Syntax.Tm_fvar uu____25571) -> + | (uu____25622,FStar_Syntax_Syntax.Tm_fvar uu____25623) -> let head1 = - let uu____25573 = FStar_Syntax_Util.head_and_args t1 in - FStar_All.pipe_right uu____25573 + let uu____25625 = FStar_Syntax_Util.head_and_args t1 in + FStar_All.pipe_right uu____25625 FStar_Pervasives_Native.fst in let head2 = - let uu____25613 = FStar_Syntax_Util.head_and_args t2 in - FStar_All.pipe_right uu____25613 + let uu____25665 = FStar_Syntax_Util.head_and_args t2 in + FStar_All.pipe_right uu____25665 FStar_Pervasives_Native.fst in - ((let uu____25653 = + ((let uu____25705 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Rel") in - if uu____25653 + if uu____25705 then - let uu____25657 = + let uu____25709 = FStar_Util.string_of_int problem.FStar_TypeChecker_Common.pid in - let uu____25659 = + let uu____25711 = FStar_Syntax_Print.term_to_string head1 in - let uu____25661 = + let uu____25713 = FStar_Syntax_Print.term_to_string head2 in FStar_Util.print3 ">> (%s)\n>>> head1 = %s\n>>> head2 = %s\n" - uu____25657 uu____25659 uu____25661 + uu____25709 uu____25711 uu____25713 else ()); (let no_free_uvars t = - (let uu____25675 = FStar_Syntax_Free.uvars t in - FStar_Util.set_is_empty uu____25675) && - (let uu____25679 = FStar_Syntax_Free.univs t in - FStar_Util.set_is_empty uu____25679) + (let uu____25727 = FStar_Syntax_Free.uvars t in + FStar_Util.set_is_empty uu____25727) && + (let uu____25731 = FStar_Syntax_Free.univs t in + FStar_Util.set_is_empty uu____25731) in let equal t11 t21 = let t12 = @@ -9378,9 +9394,9 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_TypeChecker_Env.Eager_unfolding; FStar_TypeChecker_Env.Iota] env t21 in - let uu____25696 = FStar_Syntax_Util.eq_tm t12 t22 in - uu____25696 = FStar_Syntax_Util.Equal in - let uu____25697 = + let uu____25748 = FStar_Syntax_Util.eq_tm t12 t22 in + uu____25748 = FStar_Syntax_Util.Equal in + let uu____25749 = ((((FStar_TypeChecker_Env.is_interpreted env head1) || (FStar_TypeChecker_Env.is_interpreted env head2)) && @@ -9389,72 +9405,72 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = && (no_free_uvars t1)) && (no_free_uvars t2) in - if uu____25697 + if uu____25749 then (if Prims.op_Negation wl.smt_ok then - let uu____25701 = equal t1 t2 in - (if uu____25701 + let uu____25753 = equal t1 t2 in + (if uu____25753 then - let uu____25704 = + let uu____25756 = solve_prob orig FStar_Pervasives_Native.None [] wl in - solve env uu____25704 + solve env uu____25756 else rigid_rigid_delta env problem wl head1 head2 t1 t2) else - (let uu____25709 = - let uu____25716 = equal t1 t2 in - if uu____25716 + (let uu____25761 = + let uu____25768 = equal t1 t2 in + if uu____25768 then (FStar_Pervasives_Native.None, wl) else - (let uu____25729 = mk_eq2 wl env orig t1 t2 in - match uu____25729 with + (let uu____25781 = mk_eq2 wl env orig t1 t2 in + match uu____25781 with | (g,wl1) -> ((FStar_Pervasives_Native.Some g), wl1)) in - match uu____25709 with + match uu____25761 with | (guard,wl1) -> - let uu____25750 = solve_prob orig guard [] wl1 + let uu____25802 = solve_prob orig guard [] wl1 in - solve env uu____25750)) + solve env uu____25802)) else rigid_rigid_delta env problem wl head1 head2 t1 t2)) - | (uu____25753,FStar_Syntax_Syntax.Tm_app uu____25754) -> + | (uu____25805,FStar_Syntax_Syntax.Tm_app uu____25806) -> let head1 = - let uu____25772 = FStar_Syntax_Util.head_and_args t1 in - FStar_All.pipe_right uu____25772 + let uu____25824 = FStar_Syntax_Util.head_and_args t1 in + FStar_All.pipe_right uu____25824 FStar_Pervasives_Native.fst in let head2 = - let uu____25812 = FStar_Syntax_Util.head_and_args t2 in - FStar_All.pipe_right uu____25812 + let uu____25864 = FStar_Syntax_Util.head_and_args t2 in + FStar_All.pipe_right uu____25864 FStar_Pervasives_Native.fst in - ((let uu____25852 = + ((let uu____25904 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "Rel") in - if uu____25852 + if uu____25904 then - let uu____25856 = + let uu____25908 = FStar_Util.string_of_int problem.FStar_TypeChecker_Common.pid in - let uu____25858 = + let uu____25910 = FStar_Syntax_Print.term_to_string head1 in - let uu____25860 = + let uu____25912 = FStar_Syntax_Print.term_to_string head2 in FStar_Util.print3 ">> (%s)\n>>> head1 = %s\n>>> head2 = %s\n" - uu____25856 uu____25858 uu____25860 + uu____25908 uu____25910 uu____25912 else ()); (let no_free_uvars t = - (let uu____25874 = FStar_Syntax_Free.uvars t in - FStar_Util.set_is_empty uu____25874) && - (let uu____25878 = FStar_Syntax_Free.univs t in - FStar_Util.set_is_empty uu____25878) + (let uu____25926 = FStar_Syntax_Free.uvars t in + FStar_Util.set_is_empty uu____25926) && + (let uu____25930 = FStar_Syntax_Free.univs t in + FStar_Util.set_is_empty uu____25930) in let equal t11 t21 = let t12 = @@ -9475,9 +9491,9 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = FStar_TypeChecker_Env.Eager_unfolding; FStar_TypeChecker_Env.Iota] env t21 in - let uu____25895 = FStar_Syntax_Util.eq_tm t12 t22 in - uu____25895 = FStar_Syntax_Util.Equal in - let uu____25896 = + let uu____25947 = FStar_Syntax_Util.eq_tm t12 t22 in + uu____25947 = FStar_Syntax_Util.Equal in + let uu____25948 = ((((FStar_TypeChecker_Env.is_interpreted env head1) || (FStar_TypeChecker_Env.is_interpreted env head2)) && @@ -9486,84 +9502,84 @@ and (solve_t' : FStar_TypeChecker_Env.env -> tprob -> worklist -> solution) = && (no_free_uvars t1)) && (no_free_uvars t2) in - if uu____25896 + if uu____25948 then (if Prims.op_Negation wl.smt_ok then - let uu____25900 = equal t1 t2 in - (if uu____25900 + let uu____25952 = equal t1 t2 in + (if uu____25952 then - let uu____25903 = + let uu____25955 = solve_prob orig FStar_Pervasives_Native.None [] wl in - solve env uu____25903 + solve env uu____25955 else rigid_rigid_delta env problem wl head1 head2 t1 t2) else - (let uu____25908 = - let uu____25915 = equal t1 t2 in - if uu____25915 + (let uu____25960 = + let uu____25967 = equal t1 t2 in + if uu____25967 then (FStar_Pervasives_Native.None, wl) else - (let uu____25928 = mk_eq2 wl env orig t1 t2 in - match uu____25928 with + (let uu____25980 = mk_eq2 wl env orig t1 t2 in + match uu____25980 with | (g,wl1) -> ((FStar_Pervasives_Native.Some g), wl1)) in - match uu____25908 with + match uu____25960 with | (guard,wl1) -> - let uu____25949 = solve_prob orig guard [] wl1 + let uu____26001 = solve_prob orig guard [] wl1 in - solve env uu____25949)) + solve env uu____26001)) else rigid_rigid_delta env problem wl head1 head2 t1 t2)) | (FStar_Syntax_Syntax.Tm_let - uu____25952,FStar_Syntax_Syntax.Tm_let uu____25953) -> - let uu____25980 = FStar_Syntax_Util.term_eq t1 t2 in - if uu____25980 + uu____26004,FStar_Syntax_Syntax.Tm_let uu____26005) -> + let uu____26032 = FStar_Syntax_Util.term_eq t1 t2 in + if uu____26032 then - let uu____25983 = + let uu____26035 = solve_prob orig FStar_Pervasives_Native.None [] wl in - solve env uu____25983 + solve env uu____26035 else giveup env "Tm_let mismatch (%s-%s vs %s-%s)" orig - | (FStar_Syntax_Syntax.Tm_let uu____25987,uu____25988) -> - let uu____26002 = - let uu____26008 = - let uu____26010 = FStar_Syntax_Print.tag_of_term t1 in - let uu____26012 = FStar_Syntax_Print.tag_of_term t2 in - let uu____26014 = FStar_Syntax_Print.term_to_string t1 + | (FStar_Syntax_Syntax.Tm_let uu____26039,uu____26040) -> + let uu____26054 = + let uu____26060 = + let uu____26062 = FStar_Syntax_Print.tag_of_term t1 in + let uu____26064 = FStar_Syntax_Print.tag_of_term t2 in + let uu____26066 = FStar_Syntax_Print.term_to_string t1 in - let uu____26016 = FStar_Syntax_Print.term_to_string t2 + let uu____26068 = FStar_Syntax_Print.term_to_string t2 in FStar_Util.format4 "Internal error: unexpected flex-flex of %s and %s\n>>> (%s) -- (%s)" - uu____26010 uu____26012 uu____26014 uu____26016 + uu____26062 uu____26064 uu____26066 uu____26068 in (FStar_Errors.Fatal_UnificationNotWellFormed, - uu____26008) + uu____26060) in - FStar_Errors.raise_error uu____26002 + FStar_Errors.raise_error uu____26054 t1.FStar_Syntax_Syntax.pos - | (uu____26020,FStar_Syntax_Syntax.Tm_let uu____26021) -> - let uu____26035 = - let uu____26041 = - let uu____26043 = FStar_Syntax_Print.tag_of_term t1 in - let uu____26045 = FStar_Syntax_Print.tag_of_term t2 in - let uu____26047 = FStar_Syntax_Print.term_to_string t1 + | (uu____26072,FStar_Syntax_Syntax.Tm_let uu____26073) -> + let uu____26087 = + let uu____26093 = + let uu____26095 = FStar_Syntax_Print.tag_of_term t1 in + let uu____26097 = FStar_Syntax_Print.tag_of_term t2 in + let uu____26099 = FStar_Syntax_Print.term_to_string t1 in - let uu____26049 = FStar_Syntax_Print.term_to_string t2 + let uu____26101 = FStar_Syntax_Print.term_to_string t2 in FStar_Util.format4 "Internal error: unexpected flex-flex of %s and %s\n>>> (%s) -- (%s)" - uu____26043 uu____26045 uu____26047 uu____26049 + uu____26095 uu____26097 uu____26099 uu____26101 in (FStar_Errors.Fatal_UnificationNotWellFormed, - uu____26041) + uu____26093) in - FStar_Errors.raise_error uu____26035 + FStar_Errors.raise_error uu____26087 t1.FStar_Syntax_Syntax.pos - | uu____26053 -> giveup env "head tag mismatch" orig)))) + | uu____26105 -> giveup env "head tag mismatch" orig)))) and (solve_c : FStar_TypeChecker_Env.env -> @@ -9581,258 +9597,258 @@ and (solve_c : reason in let solve_eq c1_comp c2_comp = - (let uu____26117 = + (let uu____26169 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "EQ") in - if uu____26117 + if uu____26169 then - let uu____26122 = - let uu____26124 = FStar_Syntax_Syntax.mk_Comp c1_comp in - FStar_Syntax_Print.comp_to_string uu____26124 in - let uu____26125 = - let uu____26127 = FStar_Syntax_Syntax.mk_Comp c2_comp in - FStar_Syntax_Print.comp_to_string uu____26127 in + let uu____26174 = + let uu____26176 = FStar_Syntax_Syntax.mk_Comp c1_comp in + FStar_Syntax_Print.comp_to_string uu____26176 in + let uu____26177 = + let uu____26179 = FStar_Syntax_Syntax.mk_Comp c2_comp in + FStar_Syntax_Print.comp_to_string uu____26179 in FStar_Util.print2 "solve_c is using an equality constraint (%s vs %s)\n" - uu____26122 uu____26125 + uu____26174 uu____26177 else ()); - (let uu____26131 = - let uu____26133 = + (let uu____26183 = + let uu____26185 = FStar_Ident.lid_equals c1_comp.FStar_Syntax_Syntax.effect_name c2_comp.FStar_Syntax_Syntax.effect_name in - Prims.op_Negation uu____26133 in - if uu____26131 + Prims.op_Negation uu____26185 in + if uu____26183 then - let uu____26136 = - let uu____26138 = + let uu____26188 = + let uu____26190 = FStar_Syntax_Print.lid_to_string c1_comp.FStar_Syntax_Syntax.effect_name in - let uu____26140 = + let uu____26192 = FStar_Syntax_Print.lid_to_string c2_comp.FStar_Syntax_Syntax.effect_name in FStar_Util.format2 "incompatible effects: %s <> %s" - uu____26138 uu____26140 + uu____26190 uu____26192 in - giveup env uu____26136 orig + giveup env uu____26188 orig else - (let uu____26145 = + (let uu____26197 = sub_prob wl c1_comp.FStar_Syntax_Syntax.result_typ FStar_TypeChecker_Common.EQ c2_comp.FStar_Syntax_Syntax.result_typ "effect ret type" in - match uu____26145 with + match uu____26197 with | (ret_sub_prob,wl1) -> - let uu____26153 = + let uu____26205 = FStar_List.fold_right2 - (fun uu____26190 -> - fun uu____26191 -> - fun uu____26192 -> - match (uu____26190, uu____26191, uu____26192) + (fun uu____26242 -> + fun uu____26243 -> + fun uu____26244 -> + match (uu____26242, uu____26243, uu____26244) with - | ((a1,uu____26236),(a2,uu____26238),(arg_sub_probs,wl2)) + | ((a1,uu____26288),(a2,uu____26290),(arg_sub_probs,wl2)) -> - let uu____26271 = + let uu____26323 = sub_prob wl2 a1 FStar_TypeChecker_Common.EQ a2 "effect arg" in - (match uu____26271 with + (match uu____26323 with | (p,wl3) -> ((p :: arg_sub_probs), wl3))) c1_comp.FStar_Syntax_Syntax.effect_args c2_comp.FStar_Syntax_Syntax.effect_args ([], wl1) in - (match uu____26153 with + (match uu____26205 with | (arg_sub_probs,wl2) -> let sub_probs = ret_sub_prob :: arg_sub_probs in let guard = - let uu____26301 = FStar_List.map p_guard sub_probs + let uu____26353 = FStar_List.map p_guard sub_probs in - FStar_Syntax_Util.mk_conj_l uu____26301 in + FStar_Syntax_Util.mk_conj_l uu____26353 in let wl3 = solve_prob orig (FStar_Pervasives_Native.Some guard) [] wl2 in - let uu____26309 = attempt sub_probs wl3 in - solve env uu____26309))) + let uu____26361 = attempt sub_probs wl3 in + solve env uu____26361))) in let solve_sub c11 edge c21 = let r = FStar_TypeChecker_Env.get_range env in - let lift_c1 uu____26332 = + let lift_c1 uu____26384 = let wp = match c11.FStar_Syntax_Syntax.effect_args with - | (wp1,uu____26335)::[] -> wp1 - | uu____26360 -> - let uu____26371 = - let uu____26373 = - let uu____26375 = + | (wp1,uu____26387)::[] -> wp1 + | uu____26412 -> + let uu____26423 = + let uu____26425 = + let uu____26427 = FStar_Ident.range_of_lid c11.FStar_Syntax_Syntax.effect_name in - FStar_Range.string_of_range uu____26375 in + FStar_Range.string_of_range uu____26427 in FStar_Util.format1 "Unexpected number of indices on a normalized effect (%s)" - uu____26373 + uu____26425 in - failwith uu____26371 + failwith uu____26423 in let univs1 = match c11.FStar_Syntax_Syntax.comp_univs with | [] -> - let uu____26382 = + let uu____26434 = env.FStar_TypeChecker_Env.universe_of env c11.FStar_Syntax_Syntax.result_typ in - [uu____26382] + [uu____26434] | x -> x in - let uu____26384 = - let uu____26395 = - let uu____26404 = - let uu____26405 = FStar_List.hd univs1 in + let uu____26436 = + let uu____26447 = + let uu____26456 = + let uu____26457 = FStar_List.hd univs1 in (edge.FStar_TypeChecker_Env.mlift).FStar_TypeChecker_Env.mlift_wp - uu____26405 c11.FStar_Syntax_Syntax.result_typ wp + uu____26457 c11.FStar_Syntax_Syntax.result_typ wp in - FStar_Syntax_Syntax.as_arg uu____26404 in - [uu____26395] in + FStar_Syntax_Syntax.as_arg uu____26456 in + [uu____26447] in { FStar_Syntax_Syntax.comp_univs = univs1; FStar_Syntax_Syntax.effect_name = (c21.FStar_Syntax_Syntax.effect_name); FStar_Syntax_Syntax.result_typ = (c11.FStar_Syntax_Syntax.result_typ); - FStar_Syntax_Syntax.effect_args = uu____26384; + FStar_Syntax_Syntax.effect_args = uu____26436; FStar_Syntax_Syntax.flags = (c11.FStar_Syntax_Syntax.flags) } in if problem.FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ - then let uu____26423 = lift_c1 () in solve_eq uu____26423 c21 + then let uu____26475 = lift_c1 () in solve_eq uu____26475 c21 else (let is_null_wp_2 = FStar_All.pipe_right c21.FStar_Syntax_Syntax.flags (FStar_Util.for_some - (fun uu___353_26432 -> - match uu___353_26432 with + (fun uu___352_26484 -> + match uu___352_26484 with | FStar_Syntax_Syntax.TOTAL -> true | FStar_Syntax_Syntax.MLEFFECT -> true | FStar_Syntax_Syntax.SOMETRIVIAL -> true - | uu____26437 -> false)) + | uu____26489 -> false)) in - let uu____26439 = + let uu____26491 = match ((c11.FStar_Syntax_Syntax.effect_args), (c21.FStar_Syntax_Syntax.effect_args)) with - | ((wp1,uu____26469)::uu____26470,(wp2,uu____26472)::uu____26473) + | ((wp1,uu____26521)::uu____26522,(wp2,uu____26524)::uu____26525) -> (wp1, wp2) - | uu____26546 -> - let uu____26571 = - let uu____26577 = - let uu____26579 = + | uu____26598 -> + let uu____26623 = + let uu____26629 = + let uu____26631 = FStar_Syntax_Print.lid_to_string c11.FStar_Syntax_Syntax.effect_name in - let uu____26581 = + let uu____26633 = FStar_Syntax_Print.lid_to_string c21.FStar_Syntax_Syntax.effect_name in FStar_Util.format2 "Got effects %s and %s, expected normalized effects" - uu____26579 uu____26581 + uu____26631 uu____26633 in - (FStar_Errors.Fatal_ExpectNormalizedEffect, uu____26577) + (FStar_Errors.Fatal_ExpectNormalizedEffect, uu____26629) in - FStar_Errors.raise_error uu____26571 + FStar_Errors.raise_error uu____26623 env.FStar_TypeChecker_Env.range in - match uu____26439 with + match uu____26491 with | (wpc1,wpc2) -> - let uu____26591 = FStar_Util.physical_equality wpc1 wpc2 in - if uu____26591 + let uu____26643 = FStar_Util.physical_equality wpc1 wpc2 in + if uu____26643 then - let uu____26596 = + let uu____26648 = problem_using_guard orig c11.FStar_Syntax_Syntax.result_typ problem.FStar_TypeChecker_Common.relation c21.FStar_Syntax_Syntax.result_typ FStar_Pervasives_Native.None "result type" in - solve_t env uu____26596 wl + solve_t env uu____26648 wl else - (let uu____26600 = - let uu____26607 = + (let uu____26652 = + let uu____26659 = FStar_TypeChecker_Env.effect_decl_opt env c21.FStar_Syntax_Syntax.effect_name in - FStar_Util.must uu____26607 in - match uu____26600 with + FStar_Util.must uu____26659 in + match uu____26652 with | (c2_decl,qualifiers) -> - let uu____26628 = + let uu____26680 = FStar_All.pipe_right qualifiers (FStar_List.contains FStar_Syntax_Syntax.Reifiable) in - if uu____26628 + if uu____26680 then let c1_repr = - let uu____26635 = - let uu____26636 = - let uu____26637 = lift_c1 () in - FStar_Syntax_Syntax.mk_Comp uu____26637 in - let uu____26638 = + let uu____26687 = + let uu____26688 = + let uu____26689 = lift_c1 () in + FStar_Syntax_Syntax.mk_Comp uu____26689 in + let uu____26690 = env.FStar_TypeChecker_Env.universe_of env c11.FStar_Syntax_Syntax.result_typ in FStar_TypeChecker_Env.reify_comp env - uu____26636 uu____26638 + uu____26688 uu____26690 in FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.UnfoldUntil FStar_Syntax_Syntax.delta_constant; FStar_TypeChecker_Env.Weak; - FStar_TypeChecker_Env.HNF] env uu____26635 + FStar_TypeChecker_Env.HNF] env uu____26687 in let c2_repr = - let uu____26640 = - let uu____26641 = + let uu____26692 = + let uu____26693 = FStar_Syntax_Syntax.mk_Comp c21 in - let uu____26642 = + let uu____26694 = env.FStar_TypeChecker_Env.universe_of env c21.FStar_Syntax_Syntax.result_typ in FStar_TypeChecker_Env.reify_comp env - uu____26641 uu____26642 + uu____26693 uu____26694 in FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.UnfoldUntil FStar_Syntax_Syntax.delta_constant; FStar_TypeChecker_Env.Weak; - FStar_TypeChecker_Env.HNF] env uu____26640 + FStar_TypeChecker_Env.HNF] env uu____26692 in - let uu____26643 = - let uu____26648 = - let uu____26650 = + let uu____26695 = + let uu____26700 = + let uu____26702 = FStar_Syntax_Print.term_to_string c1_repr in - let uu____26652 = + let uu____26704 = FStar_Syntax_Print.term_to_string c2_repr in FStar_Util.format2 "sub effect repr: %s <: %s" - uu____26650 uu____26652 + uu____26702 uu____26704 in sub_prob wl c1_repr problem.FStar_TypeChecker_Common.relation - c2_repr uu____26648 + c2_repr uu____26700 in - (match uu____26643 with + (match uu____26695 with | (prob,wl1) -> let wl2 = solve_prob orig (FStar_Pervasives_Native.Some (p_guard prob)) [] wl1 in - let uu____26658 = attempt [prob] wl2 in - solve env uu____26658) + let uu____26710 = attempt [prob] wl2 in + solve env uu____26710) else (let g = if env.FStar_TypeChecker_Env.lax @@ -9840,12 +9856,12 @@ and (solve_c : else if is_null_wp_2 then - ((let uu____26673 = + ((let uu____26725 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____26673 + if uu____26725 then FStar_Util.print_string "Using trivial wp ... \n" @@ -9854,22 +9870,22 @@ and (solve_c : env.FStar_TypeChecker_Env.universe_of env c11.FStar_Syntax_Syntax.result_typ in - let uu____26682 = - let uu____26689 = - let uu____26690 = - let uu____26707 = + let uu____26734 = + let uu____26741 = + let uu____26742 = + let uu____26759 = FStar_TypeChecker_Env.inst_effect_fun_with [c1_univ] env c2_decl c2_decl.FStar_Syntax_Syntax.trivial in - let uu____26710 = - let uu____26721 = + let uu____26762 = + let uu____26773 = FStar_Syntax_Syntax.as_arg c11.FStar_Syntax_Syntax.result_typ in - let uu____26730 = - let uu____26741 = - let uu____26750 = + let uu____26782 = + let uu____26793 = + let uu____26802 = (edge.FStar_TypeChecker_Env.mlift).FStar_TypeChecker_Env.mlift_wp c1_univ c11.FStar_Syntax_Syntax.result_typ @@ -9877,15 +9893,15 @@ and (solve_c : in FStar_All.pipe_left FStar_Syntax_Syntax.as_arg - uu____26750 + uu____26802 in - [uu____26741] in - uu____26721 :: uu____26730 in - (uu____26707, uu____26710) in - FStar_Syntax_Syntax.Tm_app uu____26690 + [uu____26793] in + uu____26773 :: uu____26782 in + (uu____26759, uu____26762) in + FStar_Syntax_Syntax.Tm_app uu____26742 in - FStar_Syntax_Syntax.mk uu____26689 in - uu____26682 FStar_Pervasives_Native.None r)) + FStar_Syntax_Syntax.mk uu____26741 in + uu____26734 FStar_Pervasives_Native.None r)) else (let c1_univ = env.FStar_TypeChecker_Env.universe_of env @@ -9895,26 +9911,26 @@ and (solve_c : env.FStar_TypeChecker_Env.universe_of env c21.FStar_Syntax_Syntax.result_typ in - let uu____26802 = - let uu____26809 = - let uu____26810 = - let uu____26827 = + let uu____26854 = + let uu____26861 = + let uu____26862 = + let uu____26879 = FStar_TypeChecker_Env.inst_effect_fun_with [c2_univ] env c2_decl c2_decl.FStar_Syntax_Syntax.stronger in - let uu____26830 = - let uu____26841 = + let uu____26882 = + let uu____26893 = FStar_Syntax_Syntax.as_arg c21.FStar_Syntax_Syntax.result_typ in - let uu____26850 = - let uu____26861 = + let uu____26902 = + let uu____26913 = FStar_Syntax_Syntax.as_arg wpc2 in - let uu____26870 = - let uu____26881 = - let uu____26890 = + let uu____26922 = + let uu____26933 = + let uu____26942 = (edge.FStar_TypeChecker_Env.mlift).FStar_TypeChecker_Env.mlift_wp c1_univ c11.FStar_Syntax_Syntax.result_typ @@ -9922,262 +9938,262 @@ and (solve_c : in FStar_All.pipe_left FStar_Syntax_Syntax.as_arg - uu____26890 + uu____26942 in - [uu____26881] in - uu____26861 :: uu____26870 in - uu____26841 :: uu____26850 in - (uu____26827, uu____26830) in - FStar_Syntax_Syntax.Tm_app uu____26810 + [uu____26933] in + uu____26913 :: uu____26922 in + uu____26893 :: uu____26902 in + (uu____26879, uu____26882) in + FStar_Syntax_Syntax.Tm_app uu____26862 in - FStar_Syntax_Syntax.mk uu____26809 in - uu____26802 FStar_Pervasives_Native.None r) + FStar_Syntax_Syntax.mk uu____26861 in + uu____26854 FStar_Pervasives_Native.None r) in - (let uu____26947 = + (let uu____26999 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____26947 + if uu____26999 then - let uu____26952 = - let uu____26954 = + let uu____27004 = + let uu____27006 = FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.Iota; FStar_TypeChecker_Env.Eager_unfolding; FStar_TypeChecker_Env.Primops; FStar_TypeChecker_Env.Simplify] env g in - FStar_Syntax_Print.term_to_string uu____26954 + FStar_Syntax_Print.term_to_string uu____27006 in FStar_Util.print1 - "WP guard (simplifed) is (%s)\n" uu____26952 + "WP guard (simplifed) is (%s)\n" uu____27004 else ()); - (let uu____26958 = + (let uu____27010 = sub_prob wl c11.FStar_Syntax_Syntax.result_typ problem.FStar_TypeChecker_Common.relation c21.FStar_Syntax_Syntax.result_typ "result type" in - match uu____26958 with + match uu____27010 with | (base_prob,wl1) -> let wl2 = - let uu____26967 = - let uu____26970 = + let uu____27019 = + let uu____27022 = FStar_Syntax_Util.mk_conj (p_guard base_prob) g in FStar_All.pipe_left (fun _0_12 -> FStar_Pervasives_Native.Some _0_12) - uu____26970 + uu____27022 in - solve_prob orig uu____26967 [] wl1 in - let uu____26973 = attempt [base_prob] wl2 in - solve env uu____26973)))) + solve_prob orig uu____27019 [] wl1 in + let uu____27025 = attempt [base_prob] wl2 in + solve env uu____27025)))) in - let uu____26974 = FStar_Util.physical_equality c1 c2 in - if uu____26974 + let uu____27026 = FStar_Util.physical_equality c1 c2 in + if uu____27026 then - let uu____26977 = + let uu____27029 = solve_prob orig FStar_Pervasives_Native.None [] wl in - solve env uu____26977 + solve env uu____27029 else - ((let uu____26981 = + ((let uu____27033 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____26981 + if uu____27033 then - let uu____26986 = FStar_Syntax_Print.comp_to_string c1 in - let uu____26988 = FStar_Syntax_Print.comp_to_string c2 in - FStar_Util.print3 "solve_c %s %s %s\n" uu____26986 + let uu____27038 = FStar_Syntax_Print.comp_to_string c1 in + let uu____27040 = FStar_Syntax_Print.comp_to_string c2 in + FStar_Util.print3 "solve_c %s %s %s\n" uu____27038 (rel_to_string problem.FStar_TypeChecker_Common.relation) - uu____26988 + uu____27040 else ()); - (let uu____26993 = - let uu____27002 = + (let uu____27045 = + let uu____27054 = FStar_TypeChecker_Normalize.ghost_to_pure env c1 in - let uu____27005 = + let uu____27057 = FStar_TypeChecker_Normalize.ghost_to_pure env c2 in - (uu____27002, uu____27005) in - match uu____26993 with + (uu____27054, uu____27057) in + match uu____27045 with | (c11,c21) -> (match ((c11.FStar_Syntax_Syntax.n), (c21.FStar_Syntax_Syntax.n)) with | (FStar_Syntax_Syntax.GTotal - (t1,uu____27023),FStar_Syntax_Syntax.Total - (t2,uu____27025)) when + (t1,uu____27075),FStar_Syntax_Syntax.Total + (t2,uu____27077)) when FStar_Syntax_Util.non_informative t2 -> - let uu____27042 = + let uu____27094 = problem_using_guard orig t1 problem.FStar_TypeChecker_Common.relation t2 FStar_Pervasives_Native.None "result type" in - solve_t env uu____27042 wl + solve_t env uu____27094 wl | (FStar_Syntax_Syntax.GTotal - uu____27044,FStar_Syntax_Syntax.Total uu____27045) -> + uu____27096,FStar_Syntax_Syntax.Total uu____27097) -> giveup env "incompatible monad ordering: GTot - let uu____27083 = + (t1,uu____27116),FStar_Syntax_Syntax.Total + (t2,uu____27118)) -> + let uu____27135 = problem_using_guard orig t1 problem.FStar_TypeChecker_Common.relation t2 FStar_Pervasives_Native.None "result type" in - solve_t env uu____27083 wl + solve_t env uu____27135 wl | (FStar_Syntax_Syntax.GTotal - (t1,uu____27086),FStar_Syntax_Syntax.GTotal - (t2,uu____27088)) -> - let uu____27105 = + (t1,uu____27138),FStar_Syntax_Syntax.GTotal + (t2,uu____27140)) -> + let uu____27157 = problem_using_guard orig t1 problem.FStar_TypeChecker_Common.relation t2 FStar_Pervasives_Native.None "result type" in - solve_t env uu____27105 wl + solve_t env uu____27157 wl | (FStar_Syntax_Syntax.Total - (t1,uu____27108),FStar_Syntax_Syntax.GTotal - (t2,uu____27110)) -> - let uu____27127 = + (t1,uu____27160),FStar_Syntax_Syntax.GTotal + (t2,uu____27162)) -> + let uu____27179 = problem_using_guard orig t1 problem.FStar_TypeChecker_Common.relation t2 FStar_Pervasives_Native.None "result type" in - solve_t env uu____27127 wl + solve_t env uu____27179 wl | (FStar_Syntax_Syntax.GTotal - uu____27129,FStar_Syntax_Syntax.Comp uu____27130) -> - let uu____27139 = - let uu___411_27142 = problem in - let uu____27145 = - let uu____27146 = + uu____27181,FStar_Syntax_Syntax.Comp uu____27182) -> + let uu____27191 = + let uu___410_27194 = problem in + let uu____27197 = + let uu____27198 = FStar_TypeChecker_Env.comp_to_comp_typ env c11 in FStar_All.pipe_left FStar_Syntax_Syntax.mk_Comp - uu____27146 + uu____27198 in { FStar_TypeChecker_Common.pid = - (uu___411_27142.FStar_TypeChecker_Common.pid); - FStar_TypeChecker_Common.lhs = uu____27145; + (uu___410_27194.FStar_TypeChecker_Common.pid); + FStar_TypeChecker_Common.lhs = uu____27197; FStar_TypeChecker_Common.relation = - (uu___411_27142.FStar_TypeChecker_Common.relation); + (uu___410_27194.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = - (uu___411_27142.FStar_TypeChecker_Common.rhs); + (uu___410_27194.FStar_TypeChecker_Common.rhs); FStar_TypeChecker_Common.element = - (uu___411_27142.FStar_TypeChecker_Common.element); + (uu___410_27194.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___411_27142.FStar_TypeChecker_Common.logical_guard); + (uu___410_27194.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___411_27142.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___410_27194.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___411_27142.FStar_TypeChecker_Common.reason); + (uu___410_27194.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___411_27142.FStar_TypeChecker_Common.loc); + (uu___410_27194.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___411_27142.FStar_TypeChecker_Common.rank) + (uu___410_27194.FStar_TypeChecker_Common.rank) } in - solve_c env uu____27139 wl + solve_c env uu____27191 wl | (FStar_Syntax_Syntax.Total - uu____27147,FStar_Syntax_Syntax.Comp uu____27148) -> - let uu____27157 = - let uu___411_27160 = problem in - let uu____27163 = - let uu____27164 = + uu____27199,FStar_Syntax_Syntax.Comp uu____27200) -> + let uu____27209 = + let uu___410_27212 = problem in + let uu____27215 = + let uu____27216 = FStar_TypeChecker_Env.comp_to_comp_typ env c11 in FStar_All.pipe_left FStar_Syntax_Syntax.mk_Comp - uu____27164 + uu____27216 in { FStar_TypeChecker_Common.pid = - (uu___411_27160.FStar_TypeChecker_Common.pid); - FStar_TypeChecker_Common.lhs = uu____27163; + (uu___410_27212.FStar_TypeChecker_Common.pid); + FStar_TypeChecker_Common.lhs = uu____27215; FStar_TypeChecker_Common.relation = - (uu___411_27160.FStar_TypeChecker_Common.relation); + (uu___410_27212.FStar_TypeChecker_Common.relation); FStar_TypeChecker_Common.rhs = - (uu___411_27160.FStar_TypeChecker_Common.rhs); + (uu___410_27212.FStar_TypeChecker_Common.rhs); FStar_TypeChecker_Common.element = - (uu___411_27160.FStar_TypeChecker_Common.element); + (uu___410_27212.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___411_27160.FStar_TypeChecker_Common.logical_guard); + (uu___410_27212.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___411_27160.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___410_27212.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___411_27160.FStar_TypeChecker_Common.reason); + (uu___410_27212.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___411_27160.FStar_TypeChecker_Common.loc); + (uu___410_27212.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___411_27160.FStar_TypeChecker_Common.rank) + (uu___410_27212.FStar_TypeChecker_Common.rank) } in - solve_c env uu____27157 wl + solve_c env uu____27209 wl | (FStar_Syntax_Syntax.Comp - uu____27165,FStar_Syntax_Syntax.GTotal uu____27166) -> - let uu____27175 = - let uu___412_27178 = problem in - let uu____27181 = - let uu____27182 = + uu____27217,FStar_Syntax_Syntax.GTotal uu____27218) -> + let uu____27227 = + let uu___411_27230 = problem in + let uu____27233 = + let uu____27234 = FStar_TypeChecker_Env.comp_to_comp_typ env c21 in FStar_All.pipe_left FStar_Syntax_Syntax.mk_Comp - uu____27182 + uu____27234 in { FStar_TypeChecker_Common.pid = - (uu___412_27178.FStar_TypeChecker_Common.pid); + (uu___411_27230.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = - (uu___412_27178.FStar_TypeChecker_Common.lhs); + (uu___411_27230.FStar_TypeChecker_Common.lhs); FStar_TypeChecker_Common.relation = - (uu___412_27178.FStar_TypeChecker_Common.relation); - FStar_TypeChecker_Common.rhs = uu____27181; + (uu___411_27230.FStar_TypeChecker_Common.relation); + FStar_TypeChecker_Common.rhs = uu____27233; FStar_TypeChecker_Common.element = - (uu___412_27178.FStar_TypeChecker_Common.element); + (uu___411_27230.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___412_27178.FStar_TypeChecker_Common.logical_guard); + (uu___411_27230.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___412_27178.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___411_27230.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___412_27178.FStar_TypeChecker_Common.reason); + (uu___411_27230.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___412_27178.FStar_TypeChecker_Common.loc); + (uu___411_27230.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___412_27178.FStar_TypeChecker_Common.rank) + (uu___411_27230.FStar_TypeChecker_Common.rank) } in - solve_c env uu____27175 wl + solve_c env uu____27227 wl | (FStar_Syntax_Syntax.Comp - uu____27183,FStar_Syntax_Syntax.Total uu____27184) -> - let uu____27193 = - let uu___412_27196 = problem in - let uu____27199 = - let uu____27200 = + uu____27235,FStar_Syntax_Syntax.Total uu____27236) -> + let uu____27245 = + let uu___411_27248 = problem in + let uu____27251 = + let uu____27252 = FStar_TypeChecker_Env.comp_to_comp_typ env c21 in FStar_All.pipe_left FStar_Syntax_Syntax.mk_Comp - uu____27200 + uu____27252 in { FStar_TypeChecker_Common.pid = - (uu___412_27196.FStar_TypeChecker_Common.pid); + (uu___411_27248.FStar_TypeChecker_Common.pid); FStar_TypeChecker_Common.lhs = - (uu___412_27196.FStar_TypeChecker_Common.lhs); + (uu___411_27248.FStar_TypeChecker_Common.lhs); FStar_TypeChecker_Common.relation = - (uu___412_27196.FStar_TypeChecker_Common.relation); - FStar_TypeChecker_Common.rhs = uu____27199; + (uu___411_27248.FStar_TypeChecker_Common.relation); + FStar_TypeChecker_Common.rhs = uu____27251; FStar_TypeChecker_Common.element = - (uu___412_27196.FStar_TypeChecker_Common.element); + (uu___411_27248.FStar_TypeChecker_Common.element); FStar_TypeChecker_Common.logical_guard = - (uu___412_27196.FStar_TypeChecker_Common.logical_guard); + (uu___411_27248.FStar_TypeChecker_Common.logical_guard); FStar_TypeChecker_Common.logical_guard_uvar = - (uu___412_27196.FStar_TypeChecker_Common.logical_guard_uvar); + (uu___411_27248.FStar_TypeChecker_Common.logical_guard_uvar); FStar_TypeChecker_Common.reason = - (uu___412_27196.FStar_TypeChecker_Common.reason); + (uu___411_27248.FStar_TypeChecker_Common.reason); FStar_TypeChecker_Common.loc = - (uu___412_27196.FStar_TypeChecker_Common.loc); + (uu___411_27248.FStar_TypeChecker_Common.loc); FStar_TypeChecker_Common.rank = - (uu___412_27196.FStar_TypeChecker_Common.rank) + (uu___411_27248.FStar_TypeChecker_Common.rank) } in - solve_c env uu____27193 wl + solve_c env uu____27245 wl | (FStar_Syntax_Syntax.Comp - uu____27201,FStar_Syntax_Syntax.Comp uu____27202) -> - let uu____27203 = + uu____27253,FStar_Syntax_Syntax.Comp uu____27254) -> + let uu____27255 = (((FStar_Syntax_Util.is_ml_comp c11) && (FStar_Syntax_Util.is_ml_comp c21)) || @@ -10190,16 +10206,16 @@ and (solve_c : (problem.FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.SUB)) in - if uu____27203 + if uu____27255 then - let uu____27206 = + let uu____27258 = problem_using_guard orig (FStar_Syntax_Util.comp_result c11) problem.FStar_TypeChecker_Common.relation (FStar_Syntax_Util.comp_result c21) FStar_Pervasives_Native.None "result type" in - solve_t env uu____27206 wl + solve_t env uu____27258 wl else (let c1_comp = FStar_TypeChecker_Env.comp_to_comp_typ env c11 in @@ -10209,26 +10225,26 @@ and (solve_c : problem.FStar_TypeChecker_Common.relation = FStar_TypeChecker_Common.EQ then - let uu____27213 = - let uu____27218 = + let uu____27265 = + let uu____27270 = FStar_Ident.lid_equals c1_comp.FStar_Syntax_Syntax.effect_name c2_comp.FStar_Syntax_Syntax.effect_name in - if uu____27218 + if uu____27270 then (c1_comp, c2_comp) else - (let uu____27227 = + (let uu____27279 = FStar_TypeChecker_Env.unfold_effect_abbrev env c11 in - let uu____27228 = + let uu____27280 = FStar_TypeChecker_Env.unfold_effect_abbrev env c21 in - (uu____27227, uu____27228)) + (uu____27279, uu____27280)) in - match uu____27213 with + match uu____27265 with | (c1_comp1,c2_comp1) -> solve_eq c1_comp1 c2_comp1 else (let c12 = @@ -10239,52 +10255,52 @@ and (solve_c : FStar_TypeChecker_Env.unfold_effect_abbrev env c21 in - (let uu____27236 = + (let uu____27288 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____27236 + if uu____27288 then FStar_Util.print2 "solve_c for %s and %s\n" (c12.FStar_Syntax_Syntax.effect_name).FStar_Ident.str (c22.FStar_Syntax_Syntax.effect_name).FStar_Ident.str else ()); - (let uu____27244 = + (let uu____27296 = FStar_TypeChecker_Env.monad_leq env c12.FStar_Syntax_Syntax.effect_name c22.FStar_Syntax_Syntax.effect_name in - match uu____27244 with + match uu____27296 with | FStar_Pervasives_Native.None -> - let uu____27247 = - let uu____27249 = + let uu____27299 = + let uu____27301 = FStar_Syntax_Print.lid_to_string c12.FStar_Syntax_Syntax.effect_name in - let uu____27251 = + let uu____27303 = FStar_Syntax_Print.lid_to_string c22.FStar_Syntax_Syntax.effect_name in FStar_Util.format2 "incompatible monad ordering: %s solve_sub c12 edge c22)))))) let (print_pending_implicits : FStar_TypeChecker_Env.guard_t -> Prims.string) = fun g -> - let uu____27262 = + let uu____27314 = FStar_All.pipe_right g.FStar_TypeChecker_Env.implicits (FStar_List.map (fun i -> FStar_Syntax_Print.term_to_string i.FStar_TypeChecker_Env.imp_tm)) in - FStar_All.pipe_right uu____27262 (FStar_String.concat ", ") + FStar_All.pipe_right uu____27314 (FStar_String.concat ", ") let (ineqs_to_string : (FStar_Syntax_Syntax.universe Prims.list,(FStar_Syntax_Syntax.universe, @@ -10295,25 +10311,25 @@ let (ineqs_to_string : = fun ineqs -> let vars = - let uu____27312 = + let uu____27364 = FStar_All.pipe_right (FStar_Pervasives_Native.fst ineqs) (FStar_List.map FStar_Syntax_Print.univ_to_string) in - FStar_All.pipe_right uu____27312 (FStar_String.concat ", ") in + FStar_All.pipe_right uu____27364 (FStar_String.concat ", ") in let ineqs1 = - let uu____27337 = + let uu____27389 = FStar_All.pipe_right (FStar_Pervasives_Native.snd ineqs) (FStar_List.map - (fun uu____27368 -> - match uu____27368 with + (fun uu____27420 -> + match uu____27420 with | (u1,u2) -> - let uu____27376 = FStar_Syntax_Print.univ_to_string u1 + let uu____27428 = FStar_Syntax_Print.univ_to_string u1 in - let uu____27378 = FStar_Syntax_Print.univ_to_string u2 + let uu____27430 = FStar_Syntax_Print.univ_to_string u2 in - FStar_Util.format2 "%s < %s" uu____27376 uu____27378)) + FStar_Util.format2 "%s < %s" uu____27428 uu____27430)) in - FStar_All.pipe_right uu____27337 (FStar_String.concat ", ") in + FStar_All.pipe_right uu____27389 (FStar_String.concat ", ") in FStar_Util.format2 "Solving for {%s}; inequalities are {%s}" vars ineqs1 let (guard_to_string : @@ -10325,15 +10341,15 @@ let (guard_to_string : (g.FStar_TypeChecker_Env.deferred), (g.FStar_TypeChecker_Env.univ_ineqs)) with - | (FStar_TypeChecker_Common.Trivial ,[],(uu____27415,[])) when - let uu____27442 = FStar_Options.print_implicits () in - Prims.op_Negation uu____27442 -> "{}" - | uu____27445 -> + | (FStar_TypeChecker_Common.Trivial ,[],(uu____27467,[])) when + let uu____27494 = FStar_Options.print_implicits () in + Prims.op_Negation uu____27494 -> "{}" + | uu____27497 -> let form = match g.FStar_TypeChecker_Env.guard_f with | FStar_TypeChecker_Common.Trivial -> "trivial" | FStar_TypeChecker_Common.NonTrivial f -> - let uu____27472 = + let uu____27524 = ((FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel")) || @@ -10341,25 +10357,25 @@ let (guard_to_string : FStar_Options.Extreme)) || (FStar_Options.print_implicits ()) in - if uu____27472 + if uu____27524 then FStar_TypeChecker_Normalize.term_to_string env f else "non-trivial" in let carry = - let uu____27484 = + let uu____27536 = FStar_List.map - (fun uu____27497 -> - match uu____27497 with - | (uu____27504,x) -> prob_to_string env x) + (fun uu____27549 -> + match uu____27549 with + | (uu____27556,x) -> prob_to_string env x) g.FStar_TypeChecker_Env.deferred in - FStar_All.pipe_right uu____27484 (FStar_String.concat ",\n") in + FStar_All.pipe_right uu____27536 (FStar_String.concat ",\n") in let imps = print_pending_implicits g in - let uu____27515 = + let uu____27567 = ineqs_to_string g.FStar_TypeChecker_Env.univ_ineqs in FStar_Util.format4 "\n\t{guard_f=%s;\n\t deferred={\n%s};\n\t univ_ineqs={%s};\n\t implicits={%s}}\n" - form carry uu____27515 imps + form carry uu____27567 imps let (new_t_problem : worklist -> @@ -10380,25 +10396,25 @@ let (new_t_problem : fun elt -> fun loc -> let reason = - let uu____27572 = + let uu____27624 = (FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "ExplainRel")) || (FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel")) in - if uu____27572 + if uu____27624 then - let uu____27580 = + let uu____27632 = FStar_TypeChecker_Normalize.term_to_string env lhs in - let uu____27582 = + let uu____27634 = FStar_TypeChecker_Normalize.term_to_string env rhs in - FStar_Util.format3 "Top-level:\n%s\n\t%s\n%s" uu____27580 - (rel_to_string rel) uu____27582 + FStar_Util.format3 "Top-level:\n%s\n\t%s\n%s" uu____27632 + (rel_to_string rel) uu____27634 else "TOP" in - let uu____27588 = + let uu____27640 = new_problem wl env lhs rel rhs elt loc reason in - match uu____27588 with + match uu____27640 with | (p,wl1) -> (def_check_prob (Prims.strcat "new_t_problem." reason) (FStar_TypeChecker_Common.TProb p); @@ -10419,19 +10435,19 @@ let (new_t_prob : fun rel -> fun t2 -> let x = - let uu____27648 = - let uu____27651 = FStar_TypeChecker_Env.get_range env in + let uu____27700 = + let uu____27703 = FStar_TypeChecker_Env.get_range env in FStar_All.pipe_left (fun _0_13 -> FStar_Pervasives_Native.Some _0_13) - uu____27651 + uu____27703 in - FStar_Syntax_Syntax.new_bv uu____27648 t1 in - let uu____27654 = - let uu____27659 = FStar_TypeChecker_Env.get_range env in + FStar_Syntax_Syntax.new_bv uu____27700 t1 in + let uu____27706 = + let uu____27711 = FStar_TypeChecker_Env.get_range env in new_t_problem wl env t1 rel t2 (FStar_Pervasives_Native.Some x) - uu____27659 + uu____27711 in - match uu____27654 with | (p,wl1) -> (p, x, wl1) + match uu____27706 with | (p,wl1) -> (p, x, wl1) let (solve_and_commit : FStar_TypeChecker_Env.env -> @@ -10454,17 +10470,17 @@ let (solve_and_commit : (FStar_Syntax_Unionfind.commit tx; FStar_Pervasives_Native.Some (deferred, implicits)) | Failed (d,s) -> - ((let uu____27737 = + ((let uu____27789 = (FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "ExplainRel")) || (FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel")) in - if uu____27737 + if uu____27789 then - let uu____27744 = explain env d s in - FStar_All.pipe_left FStar_Util.print_string uu____27744 + let uu____27796 = explain env d s in + FStar_All.pipe_left FStar_Util.print_string uu____27796 else ()); (let result = err (d, s) in FStar_Syntax_Unionfind.rollback tx; result)) @@ -10478,14 +10494,14 @@ let (simplify_guard : match g.FStar_TypeChecker_Env.guard_f with | FStar_TypeChecker_Common.Trivial -> g | FStar_TypeChecker_Common.NonTrivial f -> - ((let uu____27771 = + ((let uu____27823 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Simplification") in - if uu____27771 + if uu____27823 then - let uu____27776 = FStar_Syntax_Print.term_to_string f in - FStar_Util.print1 "Simplifying guard %s\n" uu____27776 + let uu____27828 = FStar_Syntax_Print.term_to_string f in + FStar_Util.print1 "Simplifying guard %s\n" uu____27828 else ()); (let f1 = FStar_TypeChecker_Normalize.normalize @@ -10495,34 +10511,34 @@ let (simplify_guard : FStar_TypeChecker_Env.Primops; FStar_TypeChecker_Env.NoFullNorm] env f in - (let uu____27783 = + (let uu____27835 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Simplification") in - if uu____27783 + if uu____27835 then - let uu____27788 = FStar_Syntax_Print.term_to_string f1 in - FStar_Util.print1 "Simplified guard to %s\n" uu____27788 + let uu____27840 = FStar_Syntax_Print.term_to_string f1 in + FStar_Util.print1 "Simplified guard to %s\n" uu____27840 else ()); (let f2 = - let uu____27794 = - let uu____27795 = FStar_Syntax_Util.unmeta f1 in - uu____27795.FStar_Syntax_Syntax.n in - match uu____27794 with + let uu____27846 = + let uu____27847 = FStar_Syntax_Util.unmeta f1 in + uu____27847.FStar_Syntax_Syntax.n in + match uu____27846 with | FStar_Syntax_Syntax.Tm_fvar fv when FStar_Syntax_Syntax.fv_eq_lid fv FStar_Parser_Const.true_lid -> FStar_TypeChecker_Common.Trivial - | uu____27799 -> FStar_TypeChecker_Common.NonTrivial f1 in - let uu___413_27800 = g in + | uu____27851 -> FStar_TypeChecker_Common.NonTrivial f1 in + let uu___412_27852 = g in { FStar_TypeChecker_Env.guard_f = f2; FStar_TypeChecker_Env.deferred = - (uu___413_27800.FStar_TypeChecker_Env.deferred); + (uu___412_27852.FStar_TypeChecker_Env.deferred); FStar_TypeChecker_Env.univ_ineqs = - (uu___413_27800.FStar_TypeChecker_Env.univ_ineqs); + (uu___412_27852.FStar_TypeChecker_Env.univ_ineqs); FStar_TypeChecker_Env.implicits = - (uu___413_27800.FStar_TypeChecker_Env.implicits) + (uu___412_27852.FStar_TypeChecker_Env.implicits) }))) let (with_guard : @@ -10539,25 +10555,25 @@ let (with_guard : match dopt with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some (deferred,implicits) -> - let uu____27855 = - let uu____27856 = - let uu____27857 = + let uu____27907 = + let uu____27908 = + let uu____27909 = FStar_All.pipe_right (p_guard prob) (fun _0_14 -> FStar_TypeChecker_Common.NonTrivial _0_14) in { - FStar_TypeChecker_Env.guard_f = uu____27857; + FStar_TypeChecker_Env.guard_f = uu____27909; FStar_TypeChecker_Env.deferred = deferred; FStar_TypeChecker_Env.univ_ineqs = ([], []); FStar_TypeChecker_Env.implicits = implicits } in - simplify_guard env uu____27856 in + simplify_guard env uu____27908 in FStar_All.pipe_left - (fun _0_15 -> FStar_Pervasives_Native.Some _0_15) uu____27855 + (fun _0_15 -> FStar_Pervasives_Native.Some _0_15) uu____27907 let with_guard_no_simp : - 'Auu____27873 . - 'Auu____27873 -> + 'Auu____27925 . + 'Auu____27925 -> FStar_TypeChecker_Common.prob -> FStar_TypeChecker_Common.deferred FStar_Pervasives_Native.option -> FStar_TypeChecker_Env.guard_t FStar_Pervasives_Native.option @@ -10568,18 +10584,18 @@ let with_guard_no_simp : match dopt with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some d -> - let uu____27896 = - let uu____27897 = + let uu____27948 = + let uu____27949 = FStar_All.pipe_right (p_guard prob) (fun _0_16 -> FStar_TypeChecker_Common.NonTrivial _0_16) in { - FStar_TypeChecker_Env.guard_f = uu____27897; + FStar_TypeChecker_Env.guard_f = uu____27949; FStar_TypeChecker_Env.deferred = d; FStar_TypeChecker_Env.univ_ineqs = ([], []); FStar_TypeChecker_Env.implicits = [] } in - FStar_Pervasives_Native.Some uu____27896 + FStar_Pervasives_Native.Some uu____27948 let (try_teq : Prims.bool -> @@ -10592,31 +10608,31 @@ let (try_teq : fun env -> fun t1 -> fun t2 -> - (let uu____27930 = + (let uu____27982 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____27930 + if uu____27982 then - let uu____27935 = FStar_Syntax_Print.term_to_string t1 in - let uu____27937 = FStar_Syntax_Print.term_to_string t2 in - FStar_Util.print2 "try_teq of %s and %s\n" uu____27935 - uu____27937 + let uu____27987 = FStar_Syntax_Print.term_to_string t1 in + let uu____27989 = FStar_Syntax_Print.term_to_string t2 in + FStar_Util.print2 "try_teq of %s and %s\n" uu____27987 + uu____27989 else ()); - (let uu____27942 = - let uu____27947 = FStar_TypeChecker_Env.get_range env in + (let uu____27994 = + let uu____27999 = FStar_TypeChecker_Env.get_range env in new_t_problem (empty_worklist env) env t1 FStar_TypeChecker_Common.EQ t2 FStar_Pervasives_Native.None - uu____27947 + uu____27999 in - match uu____27942 with + match uu____27994 with | (prob,wl) -> let g = - let uu____27955 = + let uu____28007 = solve_and_commit env (singleton wl prob smt_ok) - (fun uu____27965 -> FStar_Pervasives_Native.None) + (fun uu____28017 -> FStar_Pervasives_Native.None) in - FStar_All.pipe_left (with_guard env prob) uu____27955 in + FStar_All.pipe_left (with_guard env prob) uu____28007 in g) let (teq : @@ -10627,29 +10643,29 @@ let (teq : fun env -> fun t1 -> fun t2 -> - let uu____28001 = try_teq true env t1 t2 in - match uu____28001 with + let uu____28053 = try_teq true env t1 t2 in + match uu____28053 with | FStar_Pervasives_Native.None -> - ((let uu____28006 = FStar_TypeChecker_Env.get_range env in - let uu____28007 = + ((let uu____28058 = FStar_TypeChecker_Env.get_range env in + let uu____28059 = FStar_TypeChecker_Err.basic_type_error env FStar_Pervasives_Native.None t2 t1 in - FStar_Errors.log_issue uu____28006 uu____28007); + FStar_Errors.log_issue uu____28058 uu____28059); FStar_TypeChecker_Env.trivial_guard) | FStar_Pervasives_Native.Some g -> - ((let uu____28015 = + ((let uu____28067 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____28015 + if uu____28067 then - let uu____28020 = FStar_Syntax_Print.term_to_string t1 in - let uu____28022 = FStar_Syntax_Print.term_to_string t2 in - let uu____28024 = guard_to_string env g in + let uu____28072 = FStar_Syntax_Print.term_to_string t1 in + let uu____28074 = FStar_Syntax_Print.term_to_string t2 in + let uu____28076 = guard_to_string env g in FStar_Util.print3 - "teq of %s and %s succeeded with guard %s\n" uu____28020 - uu____28022 uu____28024 + "teq of %s and %s succeeded with guard %s\n" uu____28072 + uu____28074 uu____28076 else ()); g) @@ -10662,12 +10678,12 @@ let (subtype_fail : fun e -> fun t1 -> fun t2 -> - let uu____28050 = FStar_TypeChecker_Env.get_range env in - let uu____28051 = + let uu____28102 = FStar_TypeChecker_Env.get_range env in + let uu____28103 = FStar_TypeChecker_Err.basic_type_error env (FStar_Pervasives_Native.Some e) t2 t1 in - FStar_Errors.log_issue uu____28050 uu____28051 + FStar_Errors.log_issue uu____28102 uu____28103 let (sub_comp : FStar_TypeChecker_Env.env -> @@ -10682,32 +10698,32 @@ let (sub_comp : if env.FStar_TypeChecker_Env.use_eq then FStar_TypeChecker_Common.EQ else FStar_TypeChecker_Common.SUB in - (let uu____28080 = + (let uu____28132 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____28080 + if uu____28132 then - let uu____28085 = FStar_Syntax_Print.comp_to_string c1 in - let uu____28087 = FStar_Syntax_Print.comp_to_string c2 in + let uu____28137 = FStar_Syntax_Print.comp_to_string c1 in + let uu____28139 = FStar_Syntax_Print.comp_to_string c2 in FStar_Util.print3 "sub_comp of %s --and-- %s --with-- %s\n" - uu____28085 uu____28087 + uu____28137 uu____28139 (if rel = FStar_TypeChecker_Common.EQ then "EQ" else "SUB") else ()); - (let uu____28098 = - let uu____28105 = FStar_TypeChecker_Env.get_range env in + (let uu____28150 = + let uu____28157 = FStar_TypeChecker_Env.get_range env in new_problem (empty_worklist env) env c1 rel c2 - FStar_Pervasives_Native.None uu____28105 "sub_comp" + FStar_Pervasives_Native.None uu____28157 "sub_comp" in - match uu____28098 with + match uu____28150 with | (prob,wl) -> let prob1 = FStar_TypeChecker_Common.CProb prob in (def_check_prob "sub_comp" prob1; - (let uu____28118 = + (let uu____28170 = solve_and_commit env (singleton wl prob1 true) - (fun uu____28129 -> FStar_Pervasives_Native.None) + (fun uu____28181 -> FStar_Pervasives_Native.None) in - FStar_All.pipe_left (with_guard env prob1) uu____28118))) + FStar_All.pipe_left (with_guard env prob1) uu____28170))) let (solve_universe_inequalities' : FStar_Syntax_Unionfind.tx -> @@ -10720,53 +10736,53 @@ let (solve_universe_inequalities' : = fun tx -> fun env -> - fun uu____28176 -> - match uu____28176 with + fun uu____28228 -> + match uu____28228 with | (variables,ineqs) -> let fail1 u1 u2 = FStar_Syntax_Unionfind.rollback tx; - (let uu____28219 = - let uu____28225 = - let uu____28227 = FStar_Syntax_Print.univ_to_string u1 in - let uu____28229 = FStar_Syntax_Print.univ_to_string u2 in + (let uu____28271 = + let uu____28277 = + let uu____28279 = FStar_Syntax_Print.univ_to_string u1 in + let uu____28281 = FStar_Syntax_Print.univ_to_string u2 in FStar_Util.format2 "Universe %s and %s are incompatible" - uu____28227 uu____28229 + uu____28279 uu____28281 in - (FStar_Errors.Fatal_IncompatibleUniverse, uu____28225) in - let uu____28233 = FStar_TypeChecker_Env.get_range env in - FStar_Errors.raise_error uu____28219 uu____28233) + (FStar_Errors.Fatal_IncompatibleUniverse, uu____28277) in + let uu____28285 = FStar_TypeChecker_Env.get_range env in + FStar_Errors.raise_error uu____28271 uu____28285) in let equiv1 v1 v' = - let uu____28246 = - let uu____28251 = FStar_Syntax_Subst.compress_univ v1 in - let uu____28252 = FStar_Syntax_Subst.compress_univ v' in - (uu____28251, uu____28252) in - match uu____28246 with + let uu____28298 = + let uu____28303 = FStar_Syntax_Subst.compress_univ v1 in + let uu____28304 = FStar_Syntax_Subst.compress_univ v' in + (uu____28303, uu____28304) in + match uu____28298 with | (FStar_Syntax_Syntax.U_unif v0,FStar_Syntax_Syntax.U_unif v0') -> FStar_Syntax_Unionfind.univ_equiv v0 v0' - | uu____28272 -> false in + | uu____28324 -> false in let sols = FStar_All.pipe_right variables (FStar_List.collect (fun v1 -> - let uu____28303 = FStar_Syntax_Subst.compress_univ v1 + let uu____28355 = FStar_Syntax_Subst.compress_univ v1 in - match uu____28303 with - | FStar_Syntax_Syntax.U_unif uu____28310 -> + match uu____28355 with + | FStar_Syntax_Syntax.U_unif uu____28362 -> let lower_bounds_of_v = FStar_All.pipe_right ineqs (FStar_List.collect - (fun uu____28339 -> - match uu____28339 with + (fun uu____28391 -> + match uu____28391 with | (u,v') -> - let uu____28348 = equiv1 v1 v' in - if uu____28348 + let uu____28400 = equiv1 v1 v' in + if uu____28400 then - let uu____28353 = + let uu____28405 = FStar_All.pipe_right variables (FStar_Util.for_some (equiv1 u)) in - (if uu____28353 then [] else [u]) + (if uu____28405 then [] else [u]) else [])) in let lb = @@ -10775,43 +10791,43 @@ let (solve_universe_inequalities' : (FStar_Syntax_Syntax.U_max lower_bounds_of_v) in [(lb, v1)] - | uu____28374 -> [])) + | uu____28426 -> [])) in - let uu____28379 = + let uu____28431 = let wl = - let uu___414_28383 = empty_worklist env in + let uu___413_28435 = empty_worklist env in { - attempting = (uu___414_28383.attempting); - wl_deferred = (uu___414_28383.wl_deferred); - ctr = (uu___414_28383.ctr); + attempting = (uu___413_28435.attempting); + wl_deferred = (uu___413_28435.wl_deferred); + ctr = (uu___413_28435.ctr); defer_ok = false; - smt_ok = (uu___414_28383.smt_ok); - umax_heuristic_ok = (uu___414_28383.umax_heuristic_ok); - tcenv = (uu___414_28383.tcenv); - wl_implicits = (uu___414_28383.wl_implicits) + smt_ok = (uu___413_28435.smt_ok); + umax_heuristic_ok = (uu___413_28435.umax_heuristic_ok); + tcenv = (uu___413_28435.tcenv); + wl_implicits = (uu___413_28435.wl_implicits) } in FStar_All.pipe_right sols (FStar_List.map - (fun uu____28402 -> - match uu____28402 with + (fun uu____28454 -> + match uu____28454 with | (lb,v1) -> - let uu____28409 = + let uu____28461 = solve_universe_eq (~- (Prims.parse_int "1")) wl lb v1 in - (match uu____28409 with + (match uu____28461 with | USolved wl1 -> () - | uu____28412 -> fail1 lb v1))) + | uu____28464 -> fail1 lb v1))) in - let rec check_ineq uu____28423 = - match uu____28423 with + let rec check_ineq uu____28475 = + match uu____28475 with | (u,v1) -> let u1 = FStar_TypeChecker_Normalize.normalize_universe env u in let v2 = FStar_TypeChecker_Normalize.normalize_universe env v1 in (match (u1, v2) with - | (FStar_Syntax_Syntax.U_zero ,uu____28435) -> true + | (FStar_Syntax_Syntax.U_zero ,uu____28487) -> true | (FStar_Syntax_Syntax.U_succ u0,FStar_Syntax_Syntax.U_succ v0) -> check_ineq (u0, v0) @@ -10822,70 +10838,70 @@ let (solve_universe_inequalities' : u0,FStar_Syntax_Syntax.U_unif v0) -> FStar_Syntax_Unionfind.univ_equiv u0 v0 | (FStar_Syntax_Syntax.U_name - uu____28459,FStar_Syntax_Syntax.U_succ v0) -> + uu____28511,FStar_Syntax_Syntax.U_succ v0) -> check_ineq (u1, v0) | (FStar_Syntax_Syntax.U_unif - uu____28461,FStar_Syntax_Syntax.U_succ v0) -> + uu____28513,FStar_Syntax_Syntax.U_succ v0) -> check_ineq (u1, v0) - | (FStar_Syntax_Syntax.U_max us,uu____28472) -> + | (FStar_Syntax_Syntax.U_max us,uu____28524) -> FStar_All.pipe_right us (FStar_Util.for_all (fun u2 -> check_ineq (u2, v2))) - | (uu____28480,FStar_Syntax_Syntax.U_max vs) -> + | (uu____28532,FStar_Syntax_Syntax.U_max vs) -> FStar_All.pipe_right vs (FStar_Util.for_some (fun v3 -> check_ineq (u1, v3))) - | uu____28489 -> false) + | uu____28541 -> false) in - let uu____28495 = + let uu____28547 = FStar_All.pipe_right ineqs (FStar_Util.for_all - (fun uu____28512 -> - match uu____28512 with + (fun uu____28564 -> + match uu____28564 with | (u,v1) -> - let uu____28520 = check_ineq (u, v1) in - if uu____28520 + let uu____28572 = check_ineq (u, v1) in + if uu____28572 then true else - ((let uu____28528 = + ((let uu____28580 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "GenUniverses") in - if uu____28528 + if uu____28580 then - let uu____28533 = + let uu____28585 = FStar_Syntax_Print.univ_to_string u in - let uu____28535 = + let uu____28587 = FStar_Syntax_Print.univ_to_string v1 in - FStar_Util.print2 "%s @@ -10909,8 +10925,8 @@ let (try_solve_deferred_constraints : fun defer_ok -> fun env -> fun g -> - let fail1 uu____28650 = - match uu____28650 with + let fail1 uu____28702 = + match uu____28702 with | (d,s) -> let msg = explain env d s in FStar_Errors.raise_error @@ -10918,65 +10934,65 @@ let (try_solve_deferred_constraints : (p_loc d) in let wl = - let uu___415_28676 = + let uu___414_28728 = wl_of_guard env g.FStar_TypeChecker_Env.deferred in { - attempting = (uu___415_28676.attempting); - wl_deferred = (uu___415_28676.wl_deferred); - ctr = (uu___415_28676.ctr); + attempting = (uu___414_28728.attempting); + wl_deferred = (uu___414_28728.wl_deferred); + ctr = (uu___414_28728.ctr); defer_ok; - smt_ok = (uu___415_28676.smt_ok); - umax_heuristic_ok = (uu___415_28676.umax_heuristic_ok); - tcenv = (uu___415_28676.tcenv); - wl_implicits = (uu___415_28676.wl_implicits) + smt_ok = (uu___414_28728.smt_ok); + umax_heuristic_ok = (uu___414_28728.umax_heuristic_ok); + tcenv = (uu___414_28728.tcenv); + wl_implicits = (uu___414_28728.wl_implicits) } in - (let uu____28679 = + (let uu____28731 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____28679 + if uu____28731 then - let uu____28684 = FStar_Util.string_of_bool defer_ok in - let uu____28686 = wl_to_string wl in - let uu____28688 = + let uu____28736 = FStar_Util.string_of_bool defer_ok in + let uu____28738 = wl_to_string wl in + let uu____28740 = FStar_Util.string_of_int (FStar_List.length g.FStar_TypeChecker_Env.implicits) in FStar_Util.print3 "Trying to solve carried problems (defer_ok=%s): begin\n\t%s\nend\n and %s implicits\n" - uu____28684 uu____28686 uu____28688 + uu____28736 uu____28738 uu____28740 else ()); (let g1 = - let uu____28694 = solve_and_commit env wl fail1 in - match uu____28694 with + let uu____28746 = solve_and_commit env wl fail1 in + match uu____28746 with | FStar_Pervasives_Native.Some - (uu____28701::uu____28702,uu____28703) when + (uu____28753::uu____28754,uu____28755) when Prims.op_Negation defer_ok -> failwith "Impossible: Unexpected deferred constraints remain" | FStar_Pervasives_Native.Some (deferred,imps) -> - let uu___416_28732 = g in + let uu___415_28784 = g in { FStar_TypeChecker_Env.guard_f = - (uu___416_28732.FStar_TypeChecker_Env.guard_f); + (uu___415_28784.FStar_TypeChecker_Env.guard_f); FStar_TypeChecker_Env.deferred = deferred; FStar_TypeChecker_Env.univ_ineqs = - (uu___416_28732.FStar_TypeChecker_Env.univ_ineqs); + (uu___415_28784.FStar_TypeChecker_Env.univ_ineqs); FStar_TypeChecker_Env.implicits = (FStar_List.append g.FStar_TypeChecker_Env.implicits imps) } - | uu____28733 -> + | uu____28785 -> failwith "Impossible: should have raised a failure already" in solve_universe_inequalities env g1.FStar_TypeChecker_Env.univ_ineqs; - (let uu___417_28742 = g1 in + (let uu___416_28794 = g1 in { FStar_TypeChecker_Env.guard_f = - (uu___417_28742.FStar_TypeChecker_Env.guard_f); + (uu___416_28794.FStar_TypeChecker_Env.guard_f); FStar_TypeChecker_Env.deferred = - (uu___417_28742.FStar_TypeChecker_Env.deferred); + (uu___416_28794.FStar_TypeChecker_Env.deferred); FStar_TypeChecker_Env.univ_ineqs = ([], []); FStar_TypeChecker_Env.implicits = - (uu___417_28742.FStar_TypeChecker_Env.implicits) + (uu___416_28794.FStar_TypeChecker_Env.implicits) })) let (solve_deferred_constraints : @@ -10994,8 +11010,8 @@ let (last_proof_ns : let (maybe_update_proof_ns : FStar_TypeChecker_Env.env -> unit) = fun env -> let pns = env.FStar_TypeChecker_Env.proof_ns in - let uu____28796 = FStar_ST.op_Bang last_proof_ns in - match uu____28796 with + let uu____28848 = FStar_ST.op_Bang last_proof_ns in + match uu____28848 with | FStar_Pervasives_Native.None -> FStar_ST.op_Colon_Equals last_proof_ns (FStar_Pervasives_Native.Some pns) @@ -11031,21 +11047,21 @@ let (discharge_guard' : in let g1 = solve_deferred_constraints env g in let ret_g = - let uu___418_28921 = g1 in + let uu___417_28973 = g1 in { FStar_TypeChecker_Env.guard_f = FStar_TypeChecker_Common.Trivial; FStar_TypeChecker_Env.deferred = - (uu___418_28921.FStar_TypeChecker_Env.deferred); + (uu___417_28973.FStar_TypeChecker_Env.deferred); FStar_TypeChecker_Env.univ_ineqs = - (uu___418_28921.FStar_TypeChecker_Env.univ_ineqs); + (uu___417_28973.FStar_TypeChecker_Env.univ_ineqs); FStar_TypeChecker_Env.implicits = - (uu___418_28921.FStar_TypeChecker_Env.implicits) + (uu___417_28973.FStar_TypeChecker_Env.implicits) } in - let uu____28922 = - let uu____28924 = FStar_TypeChecker_Env.should_verify env in - Prims.op_Negation uu____28924 in - if uu____28922 + let uu____28974 = + let uu____28976 = FStar_TypeChecker_Env.should_verify env in + Prims.op_Negation uu____28976 in + if uu____28974 then FStar_Pervasives_Native.Some ret_g else (match g1.FStar_TypeChecker_Env.guard_f with @@ -11054,15 +11070,15 @@ let (discharge_guard' : | FStar_TypeChecker_Common.NonTrivial vc -> (if debug1 then - (let uu____28936 = FStar_TypeChecker_Env.get_range env + (let uu____28988 = FStar_TypeChecker_Env.get_range env in - let uu____28937 = - let uu____28939 = FStar_Syntax_Print.term_to_string vc + let uu____28989 = + let uu____28991 = FStar_Syntax_Print.term_to_string vc in FStar_Util.format1 "Before normalization VC=\n%s\n" - uu____28939 + uu____28991 in - FStar_Errors.diag uu____28936 uu____28937) + FStar_Errors.diag uu____28988 uu____28989) else (); (let vc1 = FStar_TypeChecker_Normalize.normalize @@ -11072,22 +11088,22 @@ let (discharge_guard' : in if debug1 then - (let uu____28947 = FStar_TypeChecker_Env.get_range env + (let uu____28999 = FStar_TypeChecker_Env.get_range env in - let uu____28948 = - let uu____28950 = + let uu____29000 = + let uu____29002 = FStar_Syntax_Print.term_to_string vc1 in FStar_Util.format1 "After normalization VC=\n%s\n" - uu____28950 + uu____29002 in - FStar_Errors.diag uu____28947 uu____28948) + FStar_Errors.diag uu____28999 uu____29000) else (); - (let uu____28956 = FStar_TypeChecker_Env.get_range env in - FStar_TypeChecker_Env.def_check_closed_in_env uu____28956 + (let uu____29008 = FStar_TypeChecker_Env.get_range env in + FStar_TypeChecker_Env.def_check_closed_in_env uu____29008 "discharge_guard'" env vc1); - (let uu____28958 = FStar_TypeChecker_Env.check_trivial vc1 + (let uu____29010 = FStar_TypeChecker_Env.check_trivial vc1 in - match uu____28958 with + match uu____29010 with | FStar_TypeChecker_Common.Trivial -> FStar_Pervasives_Native.Some ret_g | FStar_TypeChecker_Common.NonTrivial vc2 -> @@ -11095,77 +11111,77 @@ let (discharge_guard' : then (if debug1 then - (let uu____28967 = + (let uu____29019 = FStar_TypeChecker_Env.get_range env in - let uu____28968 = - let uu____28970 = + let uu____29020 = + let uu____29022 = FStar_Syntax_Print.term_to_string vc2 in FStar_Util.format1 "Cannot solve without SMT : %s\n" - uu____28970 + uu____29022 in - FStar_Errors.diag uu____28967 uu____28968) + FStar_Errors.diag uu____29019 uu____29020) else (); FStar_Pervasives_Native.None) else (if debug1 then - (let uu____28980 = + (let uu____29032 = FStar_TypeChecker_Env.get_range env in - let uu____28981 = - let uu____28983 = + let uu____29033 = + let uu____29035 = FStar_Syntax_Print.term_to_string vc2 in FStar_Util.format1 "Checking VC=\n%s\n" - uu____28983 + uu____29035 in - FStar_Errors.diag uu____28980 uu____28981) + FStar_Errors.diag uu____29032 uu____29033) else (); (let vcs = - let uu____28997 = FStar_Options.use_tactics () + let uu____29049 = FStar_Options.use_tactics () in - if uu____28997 + if uu____29049 then FStar_Options.with_saved_options - (fun uu____29019 -> - (let uu____29021 = + (fun uu____29071 -> + (let uu____29073 = FStar_Options.set_options FStar_Options.Set "--no_tactics" in FStar_All.pipe_left (fun a1 -> ()) - uu____29021); + uu____29073); (let vcs = (env.FStar_TypeChecker_Env.solver).FStar_TypeChecker_Env.preprocess env vc2 in FStar_All.pipe_right vcs (FStar_List.map - (fun uu____29065 -> - match uu____29065 with + (fun uu____29117 -> + match uu____29117 with | (env1,goal,opts) -> - let uu____29081 = + let uu____29133 = FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.Simplify; FStar_TypeChecker_Env.Primops] env1 goal in - (env1, uu____29081, opts))))) + (env1, uu____29133, opts))))) else - (let uu____29084 = - let uu____29091 = FStar_Options.peek () + (let uu____29136 = + let uu____29143 = FStar_Options.peek () in - (env, vc2, uu____29091) in - [uu____29084]) + (env, vc2, uu____29143) in + [uu____29136]) in FStar_All.pipe_right vcs (FStar_List.iter - (fun uu____29124 -> - match uu____29124 with + (fun uu____29176 -> + match uu____29176 with | (env1,goal,opts) -> - let uu____29134 = + let uu____29186 = FStar_TypeChecker_Env.check_trivial goal in - (match uu____29134 with + (match uu____29186 with | FStar_TypeChecker_Common.Trivial -> if debug1 @@ -11180,43 +11196,43 @@ let (discharge_guard' : maybe_update_proof_ns env1; if debug1 then - (let uu____29146 = + (let uu____29198 = FStar_TypeChecker_Env.get_range env1 in - let uu____29147 = - let uu____29149 = + let uu____29199 = + let uu____29201 = FStar_Syntax_Print.term_to_string goal1 in - let uu____29151 = + let uu____29203 = FStar_TypeChecker_Env.string_of_proof_ns env1 in FStar_Util.format2 "Trying to solve:\n> %s\nWith proof_ns:\n %s\n" - uu____29149 uu____29151 + uu____29201 uu____29203 in FStar_Errors.diag - uu____29146 uu____29147) + uu____29198 uu____29199) else (); if debug1 then - (let uu____29158 = + (let uu____29210 = FStar_TypeChecker_Env.get_range env1 in - let uu____29159 = - let uu____29161 = + let uu____29211 = + let uu____29213 = FStar_Syntax_Print.term_to_string goal1 in FStar_Util.format1 "Before calling solver VC=\n%s\n" - uu____29161 + uu____29213 in FStar_Errors.diag - uu____29158 uu____29159) + uu____29210 uu____29211) else (); (env1.FStar_TypeChecker_Env.solver).FStar_TypeChecker_Env.solve use_env_range_msg env1 goal1; @@ -11229,15 +11245,15 @@ let (discharge_guard_no_smt : = fun env -> fun g -> - let uu____29179 = + let uu____29231 = discharge_guard' FStar_Pervasives_Native.None env g false in - match uu____29179 with + match uu____29231 with | FStar_Pervasives_Native.Some g1 -> g1 | FStar_Pervasives_Native.None -> - let uu____29188 = FStar_TypeChecker_Env.get_range env in + let uu____29240 = FStar_TypeChecker_Env.get_range env in FStar_Errors.raise_error (FStar_Errors.Fatal_ExpectTrivialPreCondition, - "Expected a trivial pre-condition") uu____29188 + "Expected a trivial pre-condition") uu____29240 let (discharge_guard : FStar_TypeChecker_Env.env -> @@ -11245,9 +11261,9 @@ let (discharge_guard : = fun env -> fun g -> - let uu____29202 = + let uu____29254 = discharge_guard' FStar_Pervasives_Native.None env g true in - match uu____29202 with + match uu____29254 with | FStar_Pervasives_Native.Some g1 -> g1 | FStar_Pervasives_Native.None -> failwith @@ -11262,8 +11278,8 @@ let (teq_nosmt : fun env -> fun t1 -> fun t2 -> - let uu____29232 = try_teq false env t1 t2 in - match uu____29232 with + let uu____29284 = try_teq false env t1 t2 in + match uu____29284 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some g -> discharge_guard' FStar_Pervasives_Native.None env g false @@ -11278,17 +11294,27 @@ let (resolve_implicits' : fun must_total -> fun forcelax -> fun g -> - let unresolved ctx_u = - let uu____29276 = + let rec unresolved ctx_u = + let uu____29328 = FStar_Syntax_Unionfind.find ctx_u.FStar_Syntax_Syntax.ctx_uvar_head in - match uu____29276 with - | FStar_Pervasives_Native.Some uu____29280 -> false + match uu____29328 with + | FStar_Pervasives_Native.Some r -> + (match ctx_u.FStar_Syntax_Syntax.ctx_uvar_meta with + | FStar_Pervasives_Native.None -> false + | FStar_Pervasives_Native.Some uu____29341 -> + let uu____29354 = + let uu____29355 = FStar_Syntax_Subst.compress r in + uu____29355.FStar_Syntax_Syntax.n in + (match uu____29354 with + | FStar_Syntax_Syntax.Tm_uvar (ctx_u',uu____29360) -> + unresolved ctx_u' + | uu____29377 -> false)) | FStar_Pervasives_Native.None -> true in let rec until_fixpoint acc implicits = - let uu____29304 = acc in - match uu____29304 with + let uu____29401 = acc in + match uu____29401 with | (out,changed) -> (match implicits with | [] -> @@ -11296,38 +11322,40 @@ let (resolve_implicits' : then out else until_fixpoint ([], false) out | hd1::tl1 -> - let uu____29323 = hd1 in - (match uu____29323 with + let uu____29420 = hd1 in + (match uu____29420 with | { FStar_TypeChecker_Env.imp_reason = reason; FStar_TypeChecker_Env.imp_uvar = ctx_u; FStar_TypeChecker_Env.imp_tm = tm; - FStar_TypeChecker_Env.imp_range = r; - FStar_TypeChecker_Env.imp_meta = uu____29328;_} -> + FStar_TypeChecker_Env.imp_range = r;_} -> if ctx_u.FStar_Syntax_Syntax.ctx_uvar_should_check = FStar_Syntax_Syntax.Allow_unresolved then until_fixpoint (out, true) tl1 else - (let uu____29341 = unresolved ctx_u in - if uu____29341 + (let uu____29431 = unresolved ctx_u in + if uu____29431 then - match hd1.FStar_TypeChecker_Env.imp_meta with + match ctx_u.FStar_Syntax_Syntax.ctx_uvar_meta + with | FStar_Pervasives_Native.None -> until_fixpoint ((hd1 :: out), changed) tl1 - | FStar_Pervasives_Native.Some (env1,tau) -> - ((let uu____29356 = + | FStar_Pervasives_Native.Some (env_dyn,tau) + -> + let env1 = FStar_Dyn.undyn env_dyn in + ((let uu____29455 = FStar_TypeChecker_Env.debug env1 (FStar_Options.Other "Tac") in - if uu____29356 + if uu____29455 then - let uu____29360 = + let uu____29459 = FStar_Syntax_Print.ctx_uvar_to_string ctx_u in FStar_Util.print1 "Running tactic for meta-arg %s\n" - uu____29360 + uu____29459 else ()); (let t = env1.FStar_TypeChecker_Env.synth_hook @@ -11336,28 +11364,49 @@ let (resolve_implicits' : tau in let extra = - let uu____29369 = teq_nosmt env1 t tm + let uu____29468 = teq_nosmt env1 t tm in - match uu____29369 with + match uu____29468 with | FStar_Pervasives_Native.None -> failwith "resolve_implicits: unifying with an unresolved uvar failed?" | FStar_Pervasives_Native.Some g1 -> g1.FStar_TypeChecker_Env.implicits in + let ctx_u1 = + let uu___418_29478 = ctx_u in + { + FStar_Syntax_Syntax.ctx_uvar_head = + (uu___418_29478.FStar_Syntax_Syntax.ctx_uvar_head); + FStar_Syntax_Syntax.ctx_uvar_gamma = + (uu___418_29478.FStar_Syntax_Syntax.ctx_uvar_gamma); + FStar_Syntax_Syntax.ctx_uvar_binders + = + (uu___418_29478.FStar_Syntax_Syntax.ctx_uvar_binders); + FStar_Syntax_Syntax.ctx_uvar_typ = + (uu___418_29478.FStar_Syntax_Syntax.ctx_uvar_typ); + FStar_Syntax_Syntax.ctx_uvar_reason + = + (uu___418_29478.FStar_Syntax_Syntax.ctx_uvar_reason); + FStar_Syntax_Syntax.ctx_uvar_should_check + = + (uu___418_29478.FStar_Syntax_Syntax.ctx_uvar_should_check); + FStar_Syntax_Syntax.ctx_uvar_range = + (uu___418_29478.FStar_Syntax_Syntax.ctx_uvar_range); + FStar_Syntax_Syntax.ctx_uvar_meta = + FStar_Pervasives_Native.None + } in let hd2 = - let uu___419_29379 = hd1 in + let uu___419_29486 = hd1 in { FStar_TypeChecker_Env.imp_reason = - (uu___419_29379.FStar_TypeChecker_Env.imp_reason); + (uu___419_29486.FStar_TypeChecker_Env.imp_reason); FStar_TypeChecker_Env.imp_uvar = - (uu___419_29379.FStar_TypeChecker_Env.imp_uvar); + ctx_u1; FStar_TypeChecker_Env.imp_tm = - (uu___419_29379.FStar_TypeChecker_Env.imp_tm); + (uu___419_29486.FStar_TypeChecker_Env.imp_tm); FStar_TypeChecker_Env.imp_range = - (uu___419_29379.FStar_TypeChecker_Env.imp_range); - FStar_TypeChecker_Env.imp_meta = - FStar_Pervasives_Native.None + (uu___419_29486.FStar_TypeChecker_Env.imp_range) } in until_fixpoint (out, true) (hd2 :: (FStar_List.append extra tl1)))) @@ -11368,97 +11417,97 @@ let (resolve_implicits' : then until_fixpoint (out, true) tl1 else (let env1 = - let uu___420_29394 = env in + let uu___420_29497 = env in { FStar_TypeChecker_Env.solver = - (uu___420_29394.FStar_TypeChecker_Env.solver); + (uu___420_29497.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___420_29394.FStar_TypeChecker_Env.range); + (uu___420_29497.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___420_29394.FStar_TypeChecker_Env.curmodule); + (uu___420_29497.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = (ctx_u.FStar_Syntax_Syntax.ctx_uvar_gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___420_29394.FStar_TypeChecker_Env.gamma_sig); + (uu___420_29497.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___420_29394.FStar_TypeChecker_Env.gamma_cache); + (uu___420_29497.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___420_29394.FStar_TypeChecker_Env.modules); + (uu___420_29497.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___420_29394.FStar_TypeChecker_Env.expected_typ); + (uu___420_29497.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___420_29394.FStar_TypeChecker_Env.sigtab); + (uu___420_29497.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___420_29394.FStar_TypeChecker_Env.attrtab); + (uu___420_29497.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___420_29394.FStar_TypeChecker_Env.is_pattern); + (uu___420_29497.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___420_29394.FStar_TypeChecker_Env.instantiate_imp); + (uu___420_29497.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___420_29394.FStar_TypeChecker_Env.effects); + (uu___420_29497.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___420_29394.FStar_TypeChecker_Env.generalize); + (uu___420_29497.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___420_29394.FStar_TypeChecker_Env.letrecs); + (uu___420_29497.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___420_29394.FStar_TypeChecker_Env.top_level); + (uu___420_29497.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___420_29394.FStar_TypeChecker_Env.check_uvars); + (uu___420_29497.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___420_29394.FStar_TypeChecker_Env.use_eq); + (uu___420_29497.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___420_29394.FStar_TypeChecker_Env.is_iface); + (uu___420_29497.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___420_29394.FStar_TypeChecker_Env.admit); + (uu___420_29497.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___420_29394.FStar_TypeChecker_Env.lax); + (uu___420_29497.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___420_29394.FStar_TypeChecker_Env.lax_universes); + (uu___420_29497.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___420_29394.FStar_TypeChecker_Env.phase1); + (uu___420_29497.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___420_29394.FStar_TypeChecker_Env.failhard); + (uu___420_29497.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___420_29394.FStar_TypeChecker_Env.nosynth); + (uu___420_29497.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___420_29394.FStar_TypeChecker_Env.uvar_subtyping); + (uu___420_29497.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___420_29394.FStar_TypeChecker_Env.tc_term); + (uu___420_29497.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___420_29394.FStar_TypeChecker_Env.type_of); + (uu___420_29497.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___420_29394.FStar_TypeChecker_Env.universe_of); + (uu___420_29497.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___420_29394.FStar_TypeChecker_Env.check_type_of); + (uu___420_29497.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___420_29394.FStar_TypeChecker_Env.use_bv_sorts); + (uu___420_29497.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___420_29394.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___420_29497.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___420_29394.FStar_TypeChecker_Env.normalized_eff_names); + (uu___420_29497.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___420_29394.FStar_TypeChecker_Env.fv_delta_depths); + (uu___420_29497.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___420_29394.FStar_TypeChecker_Env.proof_ns); + (uu___420_29497.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___420_29394.FStar_TypeChecker_Env.synth_hook); + (uu___420_29497.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___420_29394.FStar_TypeChecker_Env.splice); + (uu___420_29497.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___420_29394.FStar_TypeChecker_Env.postprocess); + (uu___420_29497.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___420_29394.FStar_TypeChecker_Env.is_native_tactic); + (uu___420_29497.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___420_29394.FStar_TypeChecker_Env.identifier_info); + (uu___420_29497.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___420_29394.FStar_TypeChecker_Env.tc_hooks); + (uu___420_29497.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___420_29394.FStar_TypeChecker_Env.dsenv); + (uu___420_29497.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___420_29394.FStar_TypeChecker_Env.nbe) + (uu___420_29497.FStar_TypeChecker_Env.nbe) } in let tm1 = FStar_TypeChecker_Normalize.normalize @@ -11467,130 +11516,130 @@ let (resolve_implicits' : let env2 = if forcelax then - let uu___421_29398 = env1 in + let uu___421_29501 = env1 in { FStar_TypeChecker_Env.solver = - (uu___421_29398.FStar_TypeChecker_Env.solver); + (uu___421_29501.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___421_29398.FStar_TypeChecker_Env.range); + (uu___421_29501.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___421_29398.FStar_TypeChecker_Env.curmodule); + (uu___421_29501.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___421_29398.FStar_TypeChecker_Env.gamma); + (uu___421_29501.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___421_29398.FStar_TypeChecker_Env.gamma_sig); + (uu___421_29501.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___421_29398.FStar_TypeChecker_Env.gamma_cache); + (uu___421_29501.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___421_29398.FStar_TypeChecker_Env.modules); + (uu___421_29501.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___421_29398.FStar_TypeChecker_Env.expected_typ); + (uu___421_29501.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___421_29398.FStar_TypeChecker_Env.sigtab); + (uu___421_29501.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___421_29398.FStar_TypeChecker_Env.attrtab); + (uu___421_29501.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___421_29398.FStar_TypeChecker_Env.is_pattern); + (uu___421_29501.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___421_29398.FStar_TypeChecker_Env.instantiate_imp); + (uu___421_29501.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___421_29398.FStar_TypeChecker_Env.effects); + (uu___421_29501.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___421_29398.FStar_TypeChecker_Env.generalize); + (uu___421_29501.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___421_29398.FStar_TypeChecker_Env.letrecs); + (uu___421_29501.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___421_29398.FStar_TypeChecker_Env.top_level); + (uu___421_29501.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___421_29398.FStar_TypeChecker_Env.check_uvars); + (uu___421_29501.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___421_29398.FStar_TypeChecker_Env.use_eq); + (uu___421_29501.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___421_29398.FStar_TypeChecker_Env.is_iface); + (uu___421_29501.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___421_29398.FStar_TypeChecker_Env.admit); + (uu___421_29501.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___421_29398.FStar_TypeChecker_Env.lax_universes); + (uu___421_29501.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___421_29398.FStar_TypeChecker_Env.phase1); + (uu___421_29501.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___421_29398.FStar_TypeChecker_Env.failhard); + (uu___421_29501.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___421_29398.FStar_TypeChecker_Env.nosynth); + (uu___421_29501.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___421_29398.FStar_TypeChecker_Env.uvar_subtyping); + (uu___421_29501.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___421_29398.FStar_TypeChecker_Env.tc_term); + (uu___421_29501.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___421_29398.FStar_TypeChecker_Env.type_of); + (uu___421_29501.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___421_29398.FStar_TypeChecker_Env.universe_of); + (uu___421_29501.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___421_29398.FStar_TypeChecker_Env.check_type_of); + (uu___421_29501.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___421_29398.FStar_TypeChecker_Env.use_bv_sorts); + (uu___421_29501.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___421_29398.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___421_29501.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___421_29398.FStar_TypeChecker_Env.normalized_eff_names); + (uu___421_29501.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___421_29398.FStar_TypeChecker_Env.fv_delta_depths); + (uu___421_29501.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___421_29398.FStar_TypeChecker_Env.proof_ns); + (uu___421_29501.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___421_29398.FStar_TypeChecker_Env.synth_hook); + (uu___421_29501.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___421_29398.FStar_TypeChecker_Env.splice); + (uu___421_29501.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___421_29398.FStar_TypeChecker_Env.postprocess); + (uu___421_29501.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___421_29398.FStar_TypeChecker_Env.is_native_tactic); + (uu___421_29501.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___421_29398.FStar_TypeChecker_Env.identifier_info); + (uu___421_29501.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___421_29398.FStar_TypeChecker_Env.tc_hooks); + (uu___421_29501.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___421_29398.FStar_TypeChecker_Env.dsenv); + (uu___421_29501.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___421_29398.FStar_TypeChecker_Env.nbe) + (uu___421_29501.FStar_TypeChecker_Env.nbe) } else env1 in - (let uu____29403 = + (let uu____29506 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env2) (FStar_Options.Other "Rel") in - if uu____29403 + if uu____29506 then - let uu____29408 = + let uu____29511 = FStar_Syntax_Print.uvar_to_string ctx_u.FStar_Syntax_Syntax.ctx_uvar_head in - let uu____29410 = + let uu____29513 = FStar_Syntax_Print.term_to_string tm1 in - let uu____29412 = + let uu____29515 = FStar_Syntax_Print.term_to_string ctx_u.FStar_Syntax_Syntax.ctx_uvar_typ in - let uu____29414 = + let uu____29517 = FStar_Range.string_of_range r in FStar_Util.print5 "Checking uvar %s resolved to %s at type %s, introduce for %s at %s\n" - uu____29408 uu____29410 uu____29412 - reason uu____29414 + uu____29511 uu____29513 uu____29515 + reason uu____29517 else ()); (let g1 = try - (fun uu___423_29421 -> + (fun uu___423_29524 -> match () with | () -> env2.FStar_TypeChecker_Env.check_type_of @@ -11599,74 +11648,74 @@ let (resolve_implicits' : () with | e when FStar_Errors.handleable e -> - ((let uu____29428 = - let uu____29438 = - let uu____29446 = - let uu____29448 = + ((let uu____29531 = + let uu____29541 = + let uu____29549 = + let uu____29551 = FStar_Syntax_Print.uvar_to_string ctx_u.FStar_Syntax_Syntax.ctx_uvar_head in - let uu____29450 = + let uu____29553 = FStar_TypeChecker_Normalize.term_to_string env2 tm1 in - let uu____29452 = + let uu____29555 = FStar_TypeChecker_Normalize.term_to_string env2 ctx_u.FStar_Syntax_Syntax.ctx_uvar_typ in FStar_Util.format3 "Failed while checking implicit %s set to %s of expected type %s" - uu____29448 uu____29450 - uu____29452 + uu____29551 uu____29553 + uu____29555 in (FStar_Errors.Error_BadImplicit, - uu____29446, r) + uu____29549, r) in - [uu____29438] in + [uu____29541] in FStar_Errors.add_errors - uu____29428); + uu____29531); FStar_Exn.raise e) in let g2 = if env2.FStar_TypeChecker_Env.is_pattern then - let uu___424_29472 = g1 in + let uu___424_29575 = g1 in { FStar_TypeChecker_Env.guard_f = FStar_TypeChecker_Common.Trivial; FStar_TypeChecker_Env.deferred = - (uu___424_29472.FStar_TypeChecker_Env.deferred); + (uu___424_29575.FStar_TypeChecker_Env.deferred); FStar_TypeChecker_Env.univ_ineqs = - (uu___424_29472.FStar_TypeChecker_Env.univ_ineqs); + (uu___424_29575.FStar_TypeChecker_Env.univ_ineqs); FStar_TypeChecker_Env.implicits = - (uu___424_29472.FStar_TypeChecker_Env.implicits) + (uu___424_29575.FStar_TypeChecker_Env.implicits) } else g1 in let g' = - let uu____29476 = + let uu____29579 = discharge_guard' (FStar_Pervasives_Native.Some - (fun uu____29487 -> - let uu____29488 = + (fun uu____29590 -> + let uu____29591 = FStar_Syntax_Print.term_to_string tm1 in - let uu____29490 = + let uu____29593 = FStar_Range.string_of_range r in - let uu____29492 = + let uu____29595 = FStar_Range.string_of_range tm1.FStar_Syntax_Syntax.pos in FStar_Util.format4 "%s (Introduced at %s for %s resolved at %s)" - uu____29488 uu____29490 - reason uu____29492)) env2 g2 + uu____29591 uu____29593 + reason uu____29595)) env2 g2 true in - match uu____29476 with + match uu____29579 with | FStar_Pervasives_Native.Some g3 -> g3 | FStar_Pervasives_Native.None -> failwith @@ -11677,17 +11726,17 @@ let (resolve_implicits' : g'.FStar_TypeChecker_Env.implicits out), true) tl1))))) in - let uu___425_29500 = g in - let uu____29501 = + let uu___425_29603 = g in + let uu____29604 = until_fixpoint ([], false) g.FStar_TypeChecker_Env.implicits in { FStar_TypeChecker_Env.guard_f = - (uu___425_29500.FStar_TypeChecker_Env.guard_f); + (uu___425_29603.FStar_TypeChecker_Env.guard_f); FStar_TypeChecker_Env.deferred = - (uu___425_29500.FStar_TypeChecker_Env.deferred); + (uu___425_29603.FStar_TypeChecker_Env.deferred); FStar_TypeChecker_Env.univ_ineqs = - (uu___425_29500.FStar_TypeChecker_Env.univ_ineqs); - FStar_TypeChecker_Env.implicits = uu____29501 + (uu___425_29603.FStar_TypeChecker_Env.univ_ineqs); + FStar_TypeChecker_Env.implicits = uu____29604 } let (resolve_implicits : @@ -11703,30 +11752,30 @@ let (force_trivial_guard : fun env -> fun g -> let g1 = - let uu____29544 = solve_deferred_constraints env g in - FStar_All.pipe_right uu____29544 (resolve_implicits env) in + let uu____29647 = solve_deferred_constraints env g in + FStar_All.pipe_right uu____29647 (resolve_implicits env) in match g1.FStar_TypeChecker_Env.implicits with | [] -> - let uu____29545 = discharge_guard env g1 in - FStar_All.pipe_left (fun a2 -> ()) uu____29545 - | imp::uu____29547 -> - let uu____29550 = - let uu____29556 = - let uu____29558 = + let uu____29648 = discharge_guard env g1 in + FStar_All.pipe_left (fun a2 -> ()) uu____29648 + | imp::uu____29650 -> + let uu____29653 = + let uu____29659 = + let uu____29661 = FStar_Syntax_Print.uvar_to_string (imp.FStar_TypeChecker_Env.imp_uvar).FStar_Syntax_Syntax.ctx_uvar_head in - let uu____29560 = + let uu____29663 = FStar_TypeChecker_Normalize.term_to_string env (imp.FStar_TypeChecker_Env.imp_uvar).FStar_Syntax_Syntax.ctx_uvar_typ in FStar_Util.format3 "Failed to resolve implicit argument %s of type %s introduced for %s" - uu____29558 uu____29560 imp.FStar_TypeChecker_Env.imp_reason + uu____29661 uu____29663 imp.FStar_TypeChecker_Env.imp_reason in - (FStar_Errors.Fatal_FailToResolveImplicitArgument, uu____29556) + (FStar_Errors.Fatal_FailToResolveImplicitArgument, uu____29659) in - FStar_Errors.raise_error uu____29550 + FStar_Errors.raise_error uu____29653 imp.FStar_TypeChecker_Env.imp_range let (teq_nosmt_force : @@ -11736,8 +11785,8 @@ let (teq_nosmt_force : fun env -> fun t1 -> fun t2 -> - let uu____29582 = teq_nosmt env t1 t2 in - match uu____29582 with + let uu____29685 = teq_nosmt env t1 t2 in + match uu____29685 with | FStar_Pervasives_Native.None -> false | FStar_Pervasives_Native.Some g -> (force_trivial_guard env g; true) @@ -11747,15 +11796,15 @@ let (universe_inequality : = fun u1 -> fun u2 -> - let uu___426_29601 = FStar_TypeChecker_Env.trivial_guard in + let uu___426_29704 = FStar_TypeChecker_Env.trivial_guard in { FStar_TypeChecker_Env.guard_f = - (uu___426_29601.FStar_TypeChecker_Env.guard_f); + (uu___426_29704.FStar_TypeChecker_Env.guard_f); FStar_TypeChecker_Env.deferred = - (uu___426_29601.FStar_TypeChecker_Env.deferred); + (uu___426_29704.FStar_TypeChecker_Env.deferred); FStar_TypeChecker_Env.univ_ineqs = ([], [(u1, u2)]); FStar_TypeChecker_Env.implicits = - (uu___426_29601.FStar_TypeChecker_Env.implicits) + (uu___426_29704.FStar_TypeChecker_Env.implicits) } let (check_subtyping : @@ -11768,48 +11817,48 @@ let (check_subtyping : fun env -> fun t1 -> fun t2 -> - (let uu____29637 = + (let uu____29740 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____29637 + if uu____29740 then - let uu____29642 = + let uu____29745 = FStar_TypeChecker_Normalize.term_to_string env t1 in - let uu____29644 = + let uu____29747 = FStar_TypeChecker_Normalize.term_to_string env t2 in - FStar_Util.print2 "check_subtyping of %s and %s\n" uu____29642 - uu____29644 + FStar_Util.print2 "check_subtyping of %s and %s\n" uu____29745 + uu____29747 else ()); - (let uu____29649 = + (let uu____29752 = new_t_prob (empty_worklist env) env t1 FStar_TypeChecker_Common.SUB t2 in - match uu____29649 with + match uu____29752 with | (prob,x,wl) -> let g = - let uu____29668 = + let uu____29771 = solve_and_commit env (singleton wl prob true) - (fun uu____29679 -> FStar_Pervasives_Native.None) + (fun uu____29782 -> FStar_Pervasives_Native.None) in - FStar_All.pipe_left (with_guard env prob) uu____29668 in - ((let uu____29700 = + FStar_All.pipe_left (with_guard env prob) uu____29771 in + ((let uu____29803 = (FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel")) && (FStar_Util.is_some g) in - if uu____29700 + if uu____29803 then - let uu____29705 = + let uu____29808 = FStar_TypeChecker_Normalize.term_to_string env t1 in - let uu____29707 = + let uu____29810 = FStar_TypeChecker_Normalize.term_to_string env t2 in - let uu____29709 = - let uu____29711 = FStar_Util.must g in - guard_to_string env uu____29711 in + let uu____29812 = + let uu____29814 = FStar_Util.must g in + guard_to_string env uu____29814 in FStar_Util.print3 "check_subtyping succeeded: %s <: %s\n\tguard is %s\n" - uu____29705 uu____29707 uu____29709 + uu____29808 uu____29810 uu____29812 else ()); (match g with | FStar_Pervasives_Native.None -> @@ -11826,14 +11875,14 @@ let (get_subtyping_predicate : fun env -> fun t1 -> fun t2 -> - let uu____29748 = check_subtyping env t1 t2 in - match uu____29748 with + let uu____29851 = check_subtyping env t1 t2 in + match uu____29851 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some (x,g) -> - let uu____29767 = - let uu____29768 = FStar_Syntax_Syntax.mk_binder x in - FStar_TypeChecker_Env.abstract_guard uu____29768 g in - FStar_Pervasives_Native.Some uu____29767 + let uu____29870 = + let uu____29871 = FStar_Syntax_Syntax.mk_binder x in + FStar_TypeChecker_Env.abstract_guard uu____29871 g in + FStar_Pervasives_Native.Some uu____29870 let (get_subtyping_prop : FStar_TypeChecker_Env.env -> @@ -11844,16 +11893,16 @@ let (get_subtyping_prop : fun env -> fun t1 -> fun t2 -> - let uu____29787 = check_subtyping env t1 t2 in - match uu____29787 with + let uu____29890 = check_subtyping env t1 t2 in + match uu____29890 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some (x,g) -> - let uu____29806 = - let uu____29807 = - let uu____29808 = FStar_Syntax_Syntax.mk_binder x in - [uu____29808] in - FStar_TypeChecker_Env.close_guard env uu____29807 g in - FStar_Pervasives_Native.Some uu____29806 + let uu____29909 = + let uu____29910 = + let uu____29911 = FStar_Syntax_Syntax.mk_binder x in + [uu____29911] in + FStar_TypeChecker_Env.close_guard env uu____29910 g in + FStar_Pervasives_Native.Some uu____29909 let (subtype_nosmt : FStar_TypeChecker_Env.env -> @@ -11864,39 +11913,39 @@ let (subtype_nosmt : fun env -> fun t1 -> fun t2 -> - (let uu____29846 = + (let uu____29949 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____29846 + if uu____29949 then - let uu____29851 = + let uu____29954 = FStar_TypeChecker_Normalize.term_to_string env t1 in - let uu____29853 = + let uu____29956 = FStar_TypeChecker_Normalize.term_to_string env t2 in - FStar_Util.print2 "try_subtype_no_smt of %s and %s\n" uu____29851 - uu____29853 + FStar_Util.print2 "try_subtype_no_smt of %s and %s\n" uu____29954 + uu____29956 else ()); - (let uu____29858 = + (let uu____29961 = new_t_prob (empty_worklist env) env t1 FStar_TypeChecker_Common.SUB t2 in - match uu____29858 with + match uu____29961 with | (prob,x,wl) -> let g = - let uu____29873 = + let uu____29976 = solve_and_commit env (singleton wl prob false) - (fun uu____29884 -> FStar_Pervasives_Native.None) + (fun uu____29987 -> FStar_Pervasives_Native.None) in - FStar_All.pipe_left (with_guard env prob) uu____29873 in + FStar_All.pipe_left (with_guard env prob) uu____29976 in (match g with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some g1 -> let g2 = - let uu____29908 = - let uu____29909 = FStar_Syntax_Syntax.mk_binder x in - [uu____29909] in - FStar_TypeChecker_Env.close_guard env uu____29908 g1 in + let uu____30011 = + let uu____30012 = FStar_Syntax_Syntax.mk_binder x in + [uu____30012] in + FStar_TypeChecker_Env.close_guard env uu____30011 g1 in discharge_guard' FStar_Pervasives_Native.None env g2 false)) let (subtype_nosmt_force : @@ -11906,8 +11955,8 @@ let (subtype_nosmt_force : fun env -> fun t1 -> fun t2 -> - let uu____29950 = subtype_nosmt env t1 t2 in - match uu____29950 with + let uu____30053 = subtype_nosmt env t1 t2 in + match uu____30053 with | FStar_Pervasives_Native.None -> false | FStar_Pervasives_Native.Some g -> (force_trivial_guard env g; true) \ No newline at end of file diff --git a/src/ocaml-output/FStar_TypeChecker_Tc.ml b/src/ocaml-output/FStar_TypeChecker_Tc.ml index 96ba8dc512e..98f7167b29f 100644 --- a/src/ocaml-output/FStar_TypeChecker_Tc.ml +++ b/src/ocaml-output/FStar_TypeChecker_Tc.ml @@ -20,7 +20,7 @@ let (set_hint_correlator : let lid = let uu____73 = FStar_TypeChecker_Env.current_module env in FStar_Ident.lid_add_suffix uu____73 l in - let uu___379_74 = env in + let uu___378_74 = env in let uu____75 = let uu____90 = let uu____98 = let uu____104 = get_n lid in (lid, uu____104) @@ -29,90 +29,90 @@ let (set_hint_correlator : (tbl, uu____90) in { FStar_TypeChecker_Env.solver = - (uu___379_74.FStar_TypeChecker_Env.solver); + (uu___378_74.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___379_74.FStar_TypeChecker_Env.range); + (uu___378_74.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___379_74.FStar_TypeChecker_Env.curmodule); + (uu___378_74.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___379_74.FStar_TypeChecker_Env.gamma); + (uu___378_74.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___379_74.FStar_TypeChecker_Env.gamma_sig); + (uu___378_74.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___379_74.FStar_TypeChecker_Env.gamma_cache); + (uu___378_74.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___379_74.FStar_TypeChecker_Env.modules); + (uu___378_74.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___379_74.FStar_TypeChecker_Env.expected_typ); + (uu___378_74.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___379_74.FStar_TypeChecker_Env.sigtab); + (uu___378_74.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___379_74.FStar_TypeChecker_Env.attrtab); + (uu___378_74.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___379_74.FStar_TypeChecker_Env.is_pattern); + (uu___378_74.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___379_74.FStar_TypeChecker_Env.instantiate_imp); + (uu___378_74.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___379_74.FStar_TypeChecker_Env.effects); + (uu___378_74.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___379_74.FStar_TypeChecker_Env.generalize); + (uu___378_74.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___379_74.FStar_TypeChecker_Env.letrecs); + (uu___378_74.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___379_74.FStar_TypeChecker_Env.top_level); + (uu___378_74.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___379_74.FStar_TypeChecker_Env.check_uvars); + (uu___378_74.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___379_74.FStar_TypeChecker_Env.use_eq); + (uu___378_74.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___379_74.FStar_TypeChecker_Env.is_iface); + (uu___378_74.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___379_74.FStar_TypeChecker_Env.admit); + (uu___378_74.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___379_74.FStar_TypeChecker_Env.lax); + (uu___378_74.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___379_74.FStar_TypeChecker_Env.lax_universes); + (uu___378_74.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___379_74.FStar_TypeChecker_Env.phase1); + (uu___378_74.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___379_74.FStar_TypeChecker_Env.failhard); + (uu___378_74.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___379_74.FStar_TypeChecker_Env.nosynth); + (uu___378_74.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___379_74.FStar_TypeChecker_Env.uvar_subtyping); + (uu___378_74.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___379_74.FStar_TypeChecker_Env.tc_term); + (uu___378_74.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___379_74.FStar_TypeChecker_Env.type_of); + (uu___378_74.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___379_74.FStar_TypeChecker_Env.universe_of); + (uu___378_74.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___379_74.FStar_TypeChecker_Env.check_type_of); + (uu___378_74.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___379_74.FStar_TypeChecker_Env.use_bv_sorts); + (uu___378_74.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = uu____75; FStar_TypeChecker_Env.normalized_eff_names = - (uu___379_74.FStar_TypeChecker_Env.normalized_eff_names); + (uu___378_74.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___379_74.FStar_TypeChecker_Env.fv_delta_depths); + (uu___378_74.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___379_74.FStar_TypeChecker_Env.proof_ns); + (uu___378_74.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___379_74.FStar_TypeChecker_Env.synth_hook); + (uu___378_74.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___379_74.FStar_TypeChecker_Env.splice); + (uu___378_74.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___379_74.FStar_TypeChecker_Env.postprocess); + (uu___378_74.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___379_74.FStar_TypeChecker_Env.is_native_tactic); + (uu___378_74.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___379_74.FStar_TypeChecker_Env.identifier_info); + (uu___378_74.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___379_74.FStar_TypeChecker_Env.tc_hooks); + (uu___378_74.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___379_74.FStar_TypeChecker_Env.dsenv); + (uu___378_74.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___379_74.FStar_TypeChecker_Env.nbe) + (uu___378_74.FStar_TypeChecker_Env.nbe) } | FStar_Pervasives_Native.None -> let lids = FStar_Syntax_Util.lids_of_sigelt se in @@ -125,7 +125,7 @@ let (set_hint_correlator : FStar_All.pipe_right uu____130 FStar_Util.string_of_int in FStar_Ident.lid_add_suffix uu____127 uu____128 | l::uu____135 -> l in - let uu___380_138 = env in + let uu___379_138 = env in let uu____139 = let uu____154 = let uu____162 = let uu____168 = get_n lid in (lid, uu____168) @@ -134,90 +134,90 @@ let (set_hint_correlator : (tbl, uu____154) in { FStar_TypeChecker_Env.solver = - (uu___380_138.FStar_TypeChecker_Env.solver); + (uu___379_138.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___380_138.FStar_TypeChecker_Env.range); + (uu___379_138.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___380_138.FStar_TypeChecker_Env.curmodule); + (uu___379_138.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___380_138.FStar_TypeChecker_Env.gamma); + (uu___379_138.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___380_138.FStar_TypeChecker_Env.gamma_sig); + (uu___379_138.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___380_138.FStar_TypeChecker_Env.gamma_cache); + (uu___379_138.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___380_138.FStar_TypeChecker_Env.modules); + (uu___379_138.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___380_138.FStar_TypeChecker_Env.expected_typ); + (uu___379_138.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___380_138.FStar_TypeChecker_Env.sigtab); + (uu___379_138.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___380_138.FStar_TypeChecker_Env.attrtab); + (uu___379_138.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___380_138.FStar_TypeChecker_Env.is_pattern); + (uu___379_138.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___380_138.FStar_TypeChecker_Env.instantiate_imp); + (uu___379_138.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___380_138.FStar_TypeChecker_Env.effects); + (uu___379_138.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___380_138.FStar_TypeChecker_Env.generalize); + (uu___379_138.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___380_138.FStar_TypeChecker_Env.letrecs); + (uu___379_138.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___380_138.FStar_TypeChecker_Env.top_level); + (uu___379_138.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___380_138.FStar_TypeChecker_Env.check_uvars); + (uu___379_138.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___380_138.FStar_TypeChecker_Env.use_eq); + (uu___379_138.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___380_138.FStar_TypeChecker_Env.is_iface); + (uu___379_138.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___380_138.FStar_TypeChecker_Env.admit); + (uu___379_138.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___380_138.FStar_TypeChecker_Env.lax); + (uu___379_138.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___380_138.FStar_TypeChecker_Env.lax_universes); + (uu___379_138.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___380_138.FStar_TypeChecker_Env.phase1); + (uu___379_138.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___380_138.FStar_TypeChecker_Env.failhard); + (uu___379_138.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___380_138.FStar_TypeChecker_Env.nosynth); + (uu___379_138.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___380_138.FStar_TypeChecker_Env.uvar_subtyping); + (uu___379_138.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___380_138.FStar_TypeChecker_Env.tc_term); + (uu___379_138.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___380_138.FStar_TypeChecker_Env.type_of); + (uu___379_138.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___380_138.FStar_TypeChecker_Env.universe_of); + (uu___379_138.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___380_138.FStar_TypeChecker_Env.check_type_of); + (uu___379_138.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___380_138.FStar_TypeChecker_Env.use_bv_sorts); + (uu___379_138.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = uu____139; FStar_TypeChecker_Env.normalized_eff_names = - (uu___380_138.FStar_TypeChecker_Env.normalized_eff_names); + (uu___379_138.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___380_138.FStar_TypeChecker_Env.fv_delta_depths); + (uu___379_138.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___380_138.FStar_TypeChecker_Env.proof_ns); + (uu___379_138.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___380_138.FStar_TypeChecker_Env.synth_hook); + (uu___379_138.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___380_138.FStar_TypeChecker_Env.splice); + (uu___379_138.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___380_138.FStar_TypeChecker_Env.postprocess); + (uu___379_138.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___380_138.FStar_TypeChecker_Env.is_native_tactic); + (uu___379_138.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___380_138.FStar_TypeChecker_Env.identifier_info); + (uu___379_138.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___380_138.FStar_TypeChecker_Env.tc_hooks); + (uu___379_138.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___380_138.FStar_TypeChecker_Env.dsenv); + (uu___379_138.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___380_138.FStar_TypeChecker_Env.nbe) + (uu___379_138.FStar_TypeChecker_Env.nbe) } let (log : FStar_TypeChecker_Env.env -> Prims.bool) = @@ -373,46 +373,46 @@ let (tc_eff_decl : (match uu____540 with | (signature,uu____546) -> let ed1 = - let uu___381_548 = ed in + let uu___380_548 = ed in { FStar_Syntax_Syntax.cattributes = - (uu___381_548.FStar_Syntax_Syntax.cattributes); + (uu___380_548.FStar_Syntax_Syntax.cattributes); FStar_Syntax_Syntax.mname = - (uu___381_548.FStar_Syntax_Syntax.mname); + (uu___380_548.FStar_Syntax_Syntax.mname); FStar_Syntax_Syntax.univs = - (uu___381_548.FStar_Syntax_Syntax.univs); + (uu___380_548.FStar_Syntax_Syntax.univs); FStar_Syntax_Syntax.binders = effect_params; FStar_Syntax_Syntax.signature = signature; FStar_Syntax_Syntax.ret_wp = - (uu___381_548.FStar_Syntax_Syntax.ret_wp); + (uu___380_548.FStar_Syntax_Syntax.ret_wp); FStar_Syntax_Syntax.bind_wp = - (uu___381_548.FStar_Syntax_Syntax.bind_wp); + (uu___380_548.FStar_Syntax_Syntax.bind_wp); FStar_Syntax_Syntax.if_then_else = - (uu___381_548.FStar_Syntax_Syntax.if_then_else); + (uu___380_548.FStar_Syntax_Syntax.if_then_else); FStar_Syntax_Syntax.ite_wp = - (uu___381_548.FStar_Syntax_Syntax.ite_wp); + (uu___380_548.FStar_Syntax_Syntax.ite_wp); FStar_Syntax_Syntax.stronger = - (uu___381_548.FStar_Syntax_Syntax.stronger); + (uu___380_548.FStar_Syntax_Syntax.stronger); FStar_Syntax_Syntax.close_wp = - (uu___381_548.FStar_Syntax_Syntax.close_wp); + (uu___380_548.FStar_Syntax_Syntax.close_wp); FStar_Syntax_Syntax.assert_p = - (uu___381_548.FStar_Syntax_Syntax.assert_p); + (uu___380_548.FStar_Syntax_Syntax.assert_p); FStar_Syntax_Syntax.assume_p = - (uu___381_548.FStar_Syntax_Syntax.assume_p); + (uu___380_548.FStar_Syntax_Syntax.assume_p); FStar_Syntax_Syntax.null_wp = - (uu___381_548.FStar_Syntax_Syntax.null_wp); + (uu___380_548.FStar_Syntax_Syntax.null_wp); FStar_Syntax_Syntax.trivial = - (uu___381_548.FStar_Syntax_Syntax.trivial); + (uu___380_548.FStar_Syntax_Syntax.trivial); FStar_Syntax_Syntax.repr = - (uu___381_548.FStar_Syntax_Syntax.repr); + (uu___380_548.FStar_Syntax_Syntax.repr); FStar_Syntax_Syntax.return_repr = - (uu___381_548.FStar_Syntax_Syntax.return_repr); + (uu___380_548.FStar_Syntax_Syntax.return_repr); FStar_Syntax_Syntax.bind_repr = - (uu___381_548.FStar_Syntax_Syntax.bind_repr); + (uu___380_548.FStar_Syntax_Syntax.bind_repr); FStar_Syntax_Syntax.actions = - (uu___381_548.FStar_Syntax_Syntax.actions); + (uu___380_548.FStar_Syntax_Syntax.actions); FStar_Syntax_Syntax.eff_attrs = - (uu___381_548.FStar_Syntax_Syntax.eff_attrs) + (uu___380_548.FStar_Syntax_Syntax.eff_attrs) } in let ed2 = match (effect_params, annotated_univ_names) with @@ -433,7 +433,7 @@ let (tc_eff_decl : in (us, uu____628) in - let uu___382_647 = ed1 in + let uu___381_647 = ed1 in let uu____648 = op ed1.FStar_Syntax_Syntax.ret_wp in let uu____649 = @@ -466,7 +466,7 @@ let (tc_eff_decl : let uu____672 = FStar_List.map (fun a -> - let uu___383_680 = a in + let uu___382_680 = a in let uu____681 = let uu____682 = op @@ -485,14 +485,14 @@ let (tc_eff_decl : in { FStar_Syntax_Syntax.action_name = - (uu___383_680.FStar_Syntax_Syntax.action_name); + (uu___382_680.FStar_Syntax_Syntax.action_name); FStar_Syntax_Syntax.action_unqualified_name = - (uu___383_680.FStar_Syntax_Syntax.action_unqualified_name); + (uu___382_680.FStar_Syntax_Syntax.action_unqualified_name); FStar_Syntax_Syntax.action_univs = - (uu___383_680.FStar_Syntax_Syntax.action_univs); + (uu___382_680.FStar_Syntax_Syntax.action_univs); FStar_Syntax_Syntax.action_params = - (uu___383_680.FStar_Syntax_Syntax.action_params); + (uu___382_680.FStar_Syntax_Syntax.action_params); FStar_Syntax_Syntax.action_defn = uu____681; FStar_Syntax_Syntax.action_typ = @@ -501,15 +501,15 @@ let (tc_eff_decl : in { FStar_Syntax_Syntax.cattributes = - (uu___382_647.FStar_Syntax_Syntax.cattributes); + (uu___381_647.FStar_Syntax_Syntax.cattributes); FStar_Syntax_Syntax.mname = - (uu___382_647.FStar_Syntax_Syntax.mname); + (uu___381_647.FStar_Syntax_Syntax.mname); FStar_Syntax_Syntax.univs = annotated_univ_names; FStar_Syntax_Syntax.binders = - (uu___382_647.FStar_Syntax_Syntax.binders); + (uu___381_647.FStar_Syntax_Syntax.binders); FStar_Syntax_Syntax.signature = - (uu___382_647.FStar_Syntax_Syntax.signature); + (uu___381_647.FStar_Syntax_Syntax.signature); FStar_Syntax_Syntax.ret_wp = uu____648; FStar_Syntax_Syntax.bind_wp = uu____649; FStar_Syntax_Syntax.if_then_else = uu____650; @@ -525,7 +525,7 @@ let (tc_eff_decl : FStar_Syntax_Syntax.bind_repr = uu____671; FStar_Syntax_Syntax.actions = uu____672; FStar_Syntax_Syntax.eff_attrs = - (uu___382_647.FStar_Syntax_Syntax.eff_attrs) + (uu___381_647.FStar_Syntax_Syntax.eff_attrs) } in let wp_with_fresh_result_type env2 mname signature1 @@ -1369,137 +1369,137 @@ let (tc_eff_decl : ed2.FStar_Syntax_Syntax.bind_repr).FStar_Syntax_Syntax.pos in let env4 = - let uu___384_2769 = env3 + let uu___383_2769 = env3 in { FStar_TypeChecker_Env.solver = - (uu___384_2769.FStar_TypeChecker_Env.solver); + (uu___383_2769.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___384_2769.FStar_TypeChecker_Env.range); + (uu___383_2769.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___384_2769.FStar_TypeChecker_Env.curmodule); + (uu___383_2769.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___384_2769.FStar_TypeChecker_Env.gamma); + (uu___383_2769.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___384_2769.FStar_TypeChecker_Env.gamma_sig); + (uu___383_2769.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___384_2769.FStar_TypeChecker_Env.gamma_cache); + (uu___383_2769.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___384_2769.FStar_TypeChecker_Env.modules); + (uu___383_2769.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___384_2769.FStar_TypeChecker_Env.expected_typ); + (uu___383_2769.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___384_2769.FStar_TypeChecker_Env.sigtab); + (uu___383_2769.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___384_2769.FStar_TypeChecker_Env.attrtab); + (uu___383_2769.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___384_2769.FStar_TypeChecker_Env.is_pattern); + (uu___383_2769.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___384_2769.FStar_TypeChecker_Env.instantiate_imp); + (uu___383_2769.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___384_2769.FStar_TypeChecker_Env.effects); + (uu___383_2769.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___384_2769.FStar_TypeChecker_Env.generalize); + (uu___383_2769.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___384_2769.FStar_TypeChecker_Env.letrecs); + (uu___383_2769.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___384_2769.FStar_TypeChecker_Env.top_level); + (uu___383_2769.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___384_2769.FStar_TypeChecker_Env.check_uvars); + (uu___383_2769.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___384_2769.FStar_TypeChecker_Env.use_eq); + (uu___383_2769.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___384_2769.FStar_TypeChecker_Env.is_iface); + (uu___383_2769.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___384_2769.FStar_TypeChecker_Env.admit); + (uu___383_2769.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___384_2769.FStar_TypeChecker_Env.lax_universes); + (uu___383_2769.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___384_2769.FStar_TypeChecker_Env.phase1); + (uu___383_2769.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___384_2769.FStar_TypeChecker_Env.failhard); + (uu___383_2769.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___384_2769.FStar_TypeChecker_Env.nosynth); + (uu___383_2769.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___384_2769.FStar_TypeChecker_Env.uvar_subtyping); + (uu___383_2769.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___384_2769.FStar_TypeChecker_Env.tc_term); + (uu___383_2769.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___384_2769.FStar_TypeChecker_Env.type_of); + (uu___383_2769.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___384_2769.FStar_TypeChecker_Env.universe_of); + (uu___383_2769.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___384_2769.FStar_TypeChecker_Env.check_type_of); + (uu___383_2769.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___384_2769.FStar_TypeChecker_Env.use_bv_sorts); + (uu___383_2769.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___384_2769.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___383_2769.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___384_2769.FStar_TypeChecker_Env.normalized_eff_names); + (uu___383_2769.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___384_2769.FStar_TypeChecker_Env.fv_delta_depths); + (uu___383_2769.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___384_2769.FStar_TypeChecker_Env.proof_ns); + (uu___383_2769.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___384_2769.FStar_TypeChecker_Env.synth_hook); + (uu___383_2769.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___384_2769.FStar_TypeChecker_Env.splice); + (uu___383_2769.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___384_2769.FStar_TypeChecker_Env.postprocess); + (uu___383_2769.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___384_2769.FStar_TypeChecker_Env.is_native_tactic); + (uu___383_2769.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___384_2769.FStar_TypeChecker_Env.identifier_info); + (uu___383_2769.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___384_2769.FStar_TypeChecker_Env.tc_hooks); + (uu___383_2769.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___384_2769.FStar_TypeChecker_Env.dsenv); + (uu___383_2769.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___384_2769.FStar_TypeChecker_Env.nbe) + (uu___383_2769.FStar_TypeChecker_Env.nbe) } in let br = check_and_gen' env4 @@ -1620,7 +1620,7 @@ let (tc_eff_decl : env2 uvs in let uu____2971 = - let uu___385_2972 = act + let uu___384_2972 = act in let uu____2973 = FStar_Syntax_Subst.subst_binders @@ -1640,10 +1640,10 @@ let (tc_eff_decl : { FStar_Syntax_Syntax.action_name = - (uu___385_2972.FStar_Syntax_Syntax.action_name); + (uu___384_2972.FStar_Syntax_Syntax.action_name); FStar_Syntax_Syntax.action_unqualified_name = - (uu___385_2972.FStar_Syntax_Syntax.action_unqualified_name); + (uu___384_2972.FStar_Syntax_Syntax.action_unqualified_name); FStar_Syntax_Syntax.action_univs = uvs; FStar_Syntax_Syntax.action_params @@ -1710,139 +1710,139 @@ let (tc_eff_decl : (match uu____3038 with | (act_typ1,uu____3046,g_t) -> let env' = - let uu___386_3049 = + let uu___385_3049 = FStar_TypeChecker_Env.set_expected_typ env3 act_typ1 in { FStar_TypeChecker_Env.solver = - (uu___386_3049.FStar_TypeChecker_Env.solver); + (uu___385_3049.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___386_3049.FStar_TypeChecker_Env.range); + (uu___385_3049.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___386_3049.FStar_TypeChecker_Env.curmodule); + (uu___385_3049.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___386_3049.FStar_TypeChecker_Env.gamma); + (uu___385_3049.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___386_3049.FStar_TypeChecker_Env.gamma_sig); + (uu___385_3049.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___386_3049.FStar_TypeChecker_Env.gamma_cache); + (uu___385_3049.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___386_3049.FStar_TypeChecker_Env.modules); + (uu___385_3049.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___386_3049.FStar_TypeChecker_Env.expected_typ); + (uu___385_3049.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___386_3049.FStar_TypeChecker_Env.sigtab); + (uu___385_3049.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___386_3049.FStar_TypeChecker_Env.attrtab); + (uu___385_3049.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___386_3049.FStar_TypeChecker_Env.is_pattern); + (uu___385_3049.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = false; FStar_TypeChecker_Env.effects = - (uu___386_3049.FStar_TypeChecker_Env.effects); + (uu___385_3049.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___386_3049.FStar_TypeChecker_Env.generalize); + (uu___385_3049.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___386_3049.FStar_TypeChecker_Env.letrecs); + (uu___385_3049.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___386_3049.FStar_TypeChecker_Env.top_level); + (uu___385_3049.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___386_3049.FStar_TypeChecker_Env.check_uvars); + (uu___385_3049.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___386_3049.FStar_TypeChecker_Env.use_eq); + (uu___385_3049.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___386_3049.FStar_TypeChecker_Env.is_iface); + (uu___385_3049.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___386_3049.FStar_TypeChecker_Env.admit); + (uu___385_3049.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___386_3049.FStar_TypeChecker_Env.lax); + (uu___385_3049.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___386_3049.FStar_TypeChecker_Env.lax_universes); + (uu___385_3049.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___386_3049.FStar_TypeChecker_Env.phase1); + (uu___385_3049.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___386_3049.FStar_TypeChecker_Env.failhard); + (uu___385_3049.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___386_3049.FStar_TypeChecker_Env.nosynth); + (uu___385_3049.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___386_3049.FStar_TypeChecker_Env.uvar_subtyping); + (uu___385_3049.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___386_3049.FStar_TypeChecker_Env.tc_term); + (uu___385_3049.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___386_3049.FStar_TypeChecker_Env.type_of); + (uu___385_3049.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___386_3049.FStar_TypeChecker_Env.universe_of); + (uu___385_3049.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___386_3049.FStar_TypeChecker_Env.check_type_of); + (uu___385_3049.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___386_3049.FStar_TypeChecker_Env.use_bv_sorts); + (uu___385_3049.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___386_3049.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___385_3049.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___386_3049.FStar_TypeChecker_Env.normalized_eff_names); + (uu___385_3049.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___386_3049.FStar_TypeChecker_Env.fv_delta_depths); + (uu___385_3049.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___386_3049.FStar_TypeChecker_Env.proof_ns); + (uu___385_3049.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___386_3049.FStar_TypeChecker_Env.synth_hook); + (uu___385_3049.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___386_3049.FStar_TypeChecker_Env.splice); + (uu___385_3049.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___386_3049.FStar_TypeChecker_Env.postprocess); + (uu___385_3049.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___386_3049.FStar_TypeChecker_Env.is_native_tactic); + (uu___385_3049.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___386_3049.FStar_TypeChecker_Env.identifier_info); + (uu___385_3049.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___386_3049.FStar_TypeChecker_Env.tc_hooks); + (uu___385_3049.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___386_3049.FStar_TypeChecker_Env.dsenv); + (uu___385_3049.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___386_3049.FStar_TypeChecker_Env.nbe) + (uu___385_3049.FStar_TypeChecker_Env.nbe) } in ((let uu____3052 = FStar_TypeChecker_Env.debug @@ -2107,21 +2107,21 @@ let (tc_eff_decl : univs1 act_typ4 in - let uu___387_3323 + let uu___386_3323 = act1 in { FStar_Syntax_Syntax.action_name = - (uu___387_3323.FStar_Syntax_Syntax.action_name); + (uu___386_3323.FStar_Syntax_Syntax.action_name); FStar_Syntax_Syntax.action_unqualified_name = - (uu___387_3323.FStar_Syntax_Syntax.action_unqualified_name); + (uu___386_3323.FStar_Syntax_Syntax.action_unqualified_name); FStar_Syntax_Syntax.action_univs = univs1; FStar_Syntax_Syntax.action_params = - (uu___387_3323.FStar_Syntax_Syntax.action_params); + (uu___386_3323.FStar_Syntax_Syntax.action_params); FStar_Syntax_Syntax.action_defn = act_defn2; @@ -2299,20 +2299,20 @@ let (tc_eff_decl : in (match uu____3604 with | (univs',typ) -> - let uu___388_3621 = act + let uu___387_3621 = act in { FStar_Syntax_Syntax.action_name = - (uu___388_3621.FStar_Syntax_Syntax.action_name); + (uu___387_3621.FStar_Syntax_Syntax.action_name); FStar_Syntax_Syntax.action_unqualified_name = - (uu___388_3621.FStar_Syntax_Syntax.action_unqualified_name); + (uu___387_3621.FStar_Syntax_Syntax.action_unqualified_name); FStar_Syntax_Syntax.action_univs = univs2; FStar_Syntax_Syntax.action_params = - (uu___388_3621.FStar_Syntax_Syntax.action_params); + (uu___387_3621.FStar_Syntax_Syntax.action_params); FStar_Syntax_Syntax.action_defn = defn; FStar_Syntax_Syntax.action_typ @@ -2320,7 +2320,7 @@ let (tc_eff_decl : }) in let ed3 = - let uu___389_3624 = ed2 in + let uu___388_3624 = ed2 in let uu____3625 = close1 (Prims.parse_int "0") return_wp @@ -2384,9 +2384,9 @@ let (tc_eff_decl : { FStar_Syntax_Syntax.cattributes = - (uu___389_3624.FStar_Syntax_Syntax.cattributes); + (uu___388_3624.FStar_Syntax_Syntax.cattributes); FStar_Syntax_Syntax.mname = - (uu___389_3624.FStar_Syntax_Syntax.mname); + (uu___388_3624.FStar_Syntax_Syntax.mname); FStar_Syntax_Syntax.univs = univs1; FStar_Syntax_Syntax.binders = @@ -2422,7 +2422,7 @@ let (tc_eff_decl : FStar_Syntax_Syntax.actions = uu____3668; FStar_Syntax_Syntax.eff_attrs = - (uu___389_3624.FStar_Syntax_Syntax.eff_attrs) + (uu___388_3624.FStar_Syntax_Syntax.eff_attrs) } in ((let uu____3672 = (FStar_TypeChecker_Env.debug @@ -2480,7 +2480,7 @@ let (cps_and_elaborate : match uu____3808 with | (bv,qual) -> let uu____3827 = - let uu___390_3828 = bv in + let uu___389_3828 = bv in let uu____3829 = FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.EraseUniverses] @@ -2488,9 +2488,9 @@ let (cps_and_elaborate : in { FStar_Syntax_Syntax.ppname = - (uu___390_3828.FStar_Syntax_Syntax.ppname); + (uu___389_3828.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___390_3828.FStar_Syntax_Syntax.index); + (uu___389_3828.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____3829 } in (uu____3827, qual)) effect_binders @@ -3218,7 +3218,7 @@ let (cps_and_elaborate : -> let uu____5891 = - let uu___391_5892 + let uu___390_5892 = bv in let uu____5893 = @@ -3230,10 +3230,10 @@ let (cps_and_elaborate : { FStar_Syntax_Syntax.ppname = - (uu___391_5892.FStar_Syntax_Syntax.ppname); + (uu___390_5892.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___391_5892.FStar_Syntax_Syntax.index); + (uu___390_5892.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____5893 @@ -3374,7 +3374,7 @@ let (cps_and_elaborate : = let uu____5968 = - let uu___392_5969 + let uu___391_5969 = action in let uu____5970 @@ -3390,13 +3390,13 @@ let (cps_and_elaborate : { FStar_Syntax_Syntax.action_name = - (uu___392_5969.FStar_Syntax_Syntax.action_name); + (uu___391_5969.FStar_Syntax_Syntax.action_name); FStar_Syntax_Syntax.action_unqualified_name = - (uu___392_5969.FStar_Syntax_Syntax.action_unqualified_name); + (uu___391_5969.FStar_Syntax_Syntax.action_unqualified_name); FStar_Syntax_Syntax.action_univs = - (uu___392_5969.FStar_Syntax_Syntax.action_univs); + (uu___391_5969.FStar_Syntax_Syntax.action_univs); FStar_Syntax_Syntax.action_params = []; FStar_Syntax_Syntax.action_defn @@ -3698,7 +3698,7 @@ let (cps_and_elaborate : in ()); (let ed1 = - let uu___393_6672 + let uu___392_6672 = ed in let uu____6673 = FStar_Syntax_Subst.close_binders @@ -3744,13 +3744,13 @@ let (cps_and_elaborate : { FStar_Syntax_Syntax.cattributes = - (uu___393_6672.FStar_Syntax_Syntax.cattributes); + (uu___392_6672.FStar_Syntax_Syntax.cattributes); FStar_Syntax_Syntax.mname = - (uu___393_6672.FStar_Syntax_Syntax.mname); + (uu___392_6672.FStar_Syntax_Syntax.mname); FStar_Syntax_Syntax.univs = - (uu___393_6672.FStar_Syntax_Syntax.univs); + (uu___392_6672.FStar_Syntax_Syntax.univs); FStar_Syntax_Syntax.binders = uu____6673; FStar_Syntax_Syntax.signature @@ -3761,28 +3761,28 @@ let (cps_and_elaborate : = uu____6683; FStar_Syntax_Syntax.if_then_else = - (uu___393_6672.FStar_Syntax_Syntax.if_then_else); + (uu___392_6672.FStar_Syntax_Syntax.if_then_else); FStar_Syntax_Syntax.ite_wp = - (uu___393_6672.FStar_Syntax_Syntax.ite_wp); + (uu___392_6672.FStar_Syntax_Syntax.ite_wp); FStar_Syntax_Syntax.stronger = - (uu___393_6672.FStar_Syntax_Syntax.stronger); + (uu___392_6672.FStar_Syntax_Syntax.stronger); FStar_Syntax_Syntax.close_wp = - (uu___393_6672.FStar_Syntax_Syntax.close_wp); + (uu___392_6672.FStar_Syntax_Syntax.close_wp); FStar_Syntax_Syntax.assert_p = - (uu___393_6672.FStar_Syntax_Syntax.assert_p); + (uu___392_6672.FStar_Syntax_Syntax.assert_p); FStar_Syntax_Syntax.assume_p = - (uu___393_6672.FStar_Syntax_Syntax.assume_p); + (uu___392_6672.FStar_Syntax_Syntax.assume_p); FStar_Syntax_Syntax.null_wp = - (uu___393_6672.FStar_Syntax_Syntax.null_wp); + (uu___392_6672.FStar_Syntax_Syntax.null_wp); FStar_Syntax_Syntax.trivial = - (uu___393_6672.FStar_Syntax_Syntax.trivial); + (uu___392_6672.FStar_Syntax_Syntax.trivial); FStar_Syntax_Syntax.repr = uu____6691; FStar_Syntax_Syntax.return_repr @@ -3793,7 +3793,7 @@ let (cps_and_elaborate : = actions1; FStar_Syntax_Syntax.eff_attrs = - (uu___393_6672.FStar_Syntax_Syntax.eff_attrs) + (uu___392_6672.FStar_Syntax_Syntax.eff_attrs) } in let uu____6708 = FStar_TypeChecker_DMFF.gen_wps_for_free @@ -4364,12 +4364,12 @@ let (tc_inductive : in () in try - (fun uu___395_7547 -> + (fun uu___394_7547 -> match () with | () -> let uu____7554 = tc_inductive' env1 ses quals lids in FStar_All.pipe_right uu____7554 (fun r -> pop1 (); r)) () - with | uu___394_7585 -> (pop1 (); FStar_Exn.raise uu___394_7585) + with | uu___393_7585 -> (pop1 (); FStar_Exn.raise uu___393_7585) let (z3_reset_options : FStar_TypeChecker_Env.env -> FStar_TypeChecker_Env.env) = @@ -4407,8 +4407,8 @@ let list_of_option : 'Auu____7993 . 'Auu____7993 FStar_Pervasives_Native.option -> 'Auu____7993 Prims.list = - fun uu___373_8002 -> - match uu___373_8002 with + fun uu___372_8002 -> + match uu___372_8002 with | FStar_Pervasives_Native.None -> [] | FStar_Pervasives_Native.Some x -> [x] @@ -4573,92 +4573,92 @@ let (tc_decl' : let uu____8827 = let uu____8828 = tc_inductive - (let uu___396_8837 = env1 in + (let uu___395_8837 = env1 in { FStar_TypeChecker_Env.solver = - (uu___396_8837.FStar_TypeChecker_Env.solver); + (uu___395_8837.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___396_8837.FStar_TypeChecker_Env.range); + (uu___395_8837.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___396_8837.FStar_TypeChecker_Env.curmodule); + (uu___395_8837.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___396_8837.FStar_TypeChecker_Env.gamma); + (uu___395_8837.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___396_8837.FStar_TypeChecker_Env.gamma_sig); + (uu___395_8837.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___396_8837.FStar_TypeChecker_Env.gamma_cache); + (uu___395_8837.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___396_8837.FStar_TypeChecker_Env.modules); + (uu___395_8837.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___396_8837.FStar_TypeChecker_Env.expected_typ); + (uu___395_8837.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___396_8837.FStar_TypeChecker_Env.sigtab); + (uu___395_8837.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___396_8837.FStar_TypeChecker_Env.attrtab); + (uu___395_8837.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___396_8837.FStar_TypeChecker_Env.is_pattern); + (uu___395_8837.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___396_8837.FStar_TypeChecker_Env.instantiate_imp); + (uu___395_8837.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___396_8837.FStar_TypeChecker_Env.effects); + (uu___395_8837.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___396_8837.FStar_TypeChecker_Env.generalize); + (uu___395_8837.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___396_8837.FStar_TypeChecker_Env.letrecs); + (uu___395_8837.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___396_8837.FStar_TypeChecker_Env.top_level); + (uu___395_8837.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___396_8837.FStar_TypeChecker_Env.check_uvars); + (uu___395_8837.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___396_8837.FStar_TypeChecker_Env.use_eq); + (uu___395_8837.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___396_8837.FStar_TypeChecker_Env.is_iface); + (uu___395_8837.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___396_8837.FStar_TypeChecker_Env.admit); + (uu___395_8837.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___396_8837.FStar_TypeChecker_Env.lax_universes); + (uu___395_8837.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = true; FStar_TypeChecker_Env.failhard = - (uu___396_8837.FStar_TypeChecker_Env.failhard); + (uu___395_8837.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___396_8837.FStar_TypeChecker_Env.nosynth); + (uu___395_8837.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___396_8837.FStar_TypeChecker_Env.uvar_subtyping); + (uu___395_8837.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___396_8837.FStar_TypeChecker_Env.tc_term); + (uu___395_8837.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___396_8837.FStar_TypeChecker_Env.type_of); + (uu___395_8837.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___396_8837.FStar_TypeChecker_Env.universe_of); + (uu___395_8837.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___396_8837.FStar_TypeChecker_Env.check_type_of); + (uu___395_8837.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___396_8837.FStar_TypeChecker_Env.use_bv_sorts); + (uu___395_8837.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___396_8837.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___395_8837.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___396_8837.FStar_TypeChecker_Env.normalized_eff_names); + (uu___395_8837.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___396_8837.FStar_TypeChecker_Env.fv_delta_depths); + (uu___395_8837.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___396_8837.FStar_TypeChecker_Env.proof_ns); + (uu___395_8837.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___396_8837.FStar_TypeChecker_Env.synth_hook); + (uu___395_8837.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___396_8837.FStar_TypeChecker_Env.splice); + (uu___395_8837.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___396_8837.FStar_TypeChecker_Env.postprocess); + (uu___395_8837.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___396_8837.FStar_TypeChecker_Env.is_native_tactic); + (uu___395_8837.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___396_8837.FStar_TypeChecker_Env.identifier_info); + (uu___395_8837.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___396_8837.FStar_TypeChecker_Env.tc_hooks); + (uu___395_8837.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___396_8837.FStar_TypeChecker_Env.dsenv); + (uu___395_8837.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___396_8837.FStar_TypeChecker_Env.nbe) + (uu___395_8837.FStar_TypeChecker_Env.nbe) }) ses se.FStar_Syntax_Syntax.sigquals lids in FStar_All.pipe_right uu____8828 @@ -4678,18 +4678,18 @@ let (tc_decl' : then let uu____8856 = FStar_Syntax_Print.sigelt_to_string - (let uu___397_8860 = se in + (let uu___396_8860 = se in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_bundle (ses1, lids)); FStar_Syntax_Syntax.sigrng = - (uu___397_8860.FStar_Syntax_Syntax.sigrng); + (uu___396_8860.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___397_8860.FStar_Syntax_Syntax.sigquals); + (uu___396_8860.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___397_8860.FStar_Syntax_Syntax.sigmeta); + (uu___396_8860.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___397_8860.FStar_Syntax_Syntax.sigattrs) + (uu___396_8860.FStar_Syntax_Syntax.sigattrs) }) in FStar_Util.print1 "Inductive after phase 1: %s\n" @@ -4702,16 +4702,16 @@ let (tc_decl' : (match uu____8870 with | (sigbndle,projectors_ses) -> let sigbndle1 = - let uu___398_8894 = sigbndle in + let uu___397_8894 = sigbndle in { FStar_Syntax_Syntax.sigel = - (uu___398_8894.FStar_Syntax_Syntax.sigel); + (uu___397_8894.FStar_Syntax_Syntax.sigel); FStar_Syntax_Syntax.sigrng = - (uu___398_8894.FStar_Syntax_Syntax.sigrng); + (uu___397_8894.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___398_8894.FStar_Syntax_Syntax.sigquals); + (uu___397_8894.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___398_8894.FStar_Syntax_Syntax.sigmeta); + (uu___397_8894.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = (se.FStar_Syntax_Syntax.sigattrs) } in @@ -4725,33 +4725,33 @@ let (tc_decl' : let effect_and_lift_ses = match lift_from_pure_opt with | FStar_Pervasives_Native.Some lift -> - [(let uu___399_8945 = se in + [(let uu___398_8945 = se in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_new_effect ne1); FStar_Syntax_Syntax.sigrng = - (uu___399_8945.FStar_Syntax_Syntax.sigrng); + (uu___398_8945.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___399_8945.FStar_Syntax_Syntax.sigquals); + (uu___398_8945.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___399_8945.FStar_Syntax_Syntax.sigmeta); + (uu___398_8945.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___399_8945.FStar_Syntax_Syntax.sigattrs) + (uu___398_8945.FStar_Syntax_Syntax.sigattrs) }); lift] | FStar_Pervasives_Native.None -> - [(let uu___400_8947 = se in + [(let uu___399_8947 = se in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_new_effect ne1); FStar_Syntax_Syntax.sigrng = - (uu___400_8947.FStar_Syntax_Syntax.sigrng); + (uu___399_8947.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___400_8947.FStar_Syntax_Syntax.sigquals); + (uu___399_8947.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___400_8947.FStar_Syntax_Syntax.sigmeta); + (uu___399_8947.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___400_8947.FStar_Syntax_Syntax.sigattrs) + (uu___399_8947.FStar_Syntax_Syntax.sigattrs) })] in ([], (FStar_List.append ses effect_and_lift_ses), env0)) @@ -4768,108 +4768,108 @@ let (tc_decl' : let uu____8959 = let uu____8960 = tc_eff_decl - (let uu___401_8963 = env in + (let uu___400_8963 = env in { FStar_TypeChecker_Env.solver = - (uu___401_8963.FStar_TypeChecker_Env.solver); + (uu___400_8963.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___401_8963.FStar_TypeChecker_Env.range); + (uu___400_8963.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___401_8963.FStar_TypeChecker_Env.curmodule); + (uu___400_8963.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___401_8963.FStar_TypeChecker_Env.gamma); + (uu___400_8963.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___401_8963.FStar_TypeChecker_Env.gamma_sig); + (uu___400_8963.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___401_8963.FStar_TypeChecker_Env.gamma_cache); + (uu___400_8963.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___401_8963.FStar_TypeChecker_Env.modules); + (uu___400_8963.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___401_8963.FStar_TypeChecker_Env.expected_typ); + (uu___400_8963.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___401_8963.FStar_TypeChecker_Env.sigtab); + (uu___400_8963.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___401_8963.FStar_TypeChecker_Env.attrtab); + (uu___400_8963.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___401_8963.FStar_TypeChecker_Env.is_pattern); + (uu___400_8963.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___401_8963.FStar_TypeChecker_Env.instantiate_imp); + (uu___400_8963.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___401_8963.FStar_TypeChecker_Env.effects); + (uu___400_8963.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___401_8963.FStar_TypeChecker_Env.generalize); + (uu___400_8963.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___401_8963.FStar_TypeChecker_Env.letrecs); + (uu___400_8963.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___401_8963.FStar_TypeChecker_Env.top_level); + (uu___400_8963.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___401_8963.FStar_TypeChecker_Env.check_uvars); + (uu___400_8963.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___401_8963.FStar_TypeChecker_Env.use_eq); + (uu___400_8963.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___401_8963.FStar_TypeChecker_Env.is_iface); + (uu___400_8963.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___401_8963.FStar_TypeChecker_Env.admit); + (uu___400_8963.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___401_8963.FStar_TypeChecker_Env.lax_universes); + (uu___400_8963.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = true; FStar_TypeChecker_Env.failhard = - (uu___401_8963.FStar_TypeChecker_Env.failhard); + (uu___400_8963.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___401_8963.FStar_TypeChecker_Env.nosynth); + (uu___400_8963.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___401_8963.FStar_TypeChecker_Env.uvar_subtyping); + (uu___400_8963.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___401_8963.FStar_TypeChecker_Env.tc_term); + (uu___400_8963.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___401_8963.FStar_TypeChecker_Env.type_of); + (uu___400_8963.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___401_8963.FStar_TypeChecker_Env.universe_of); + (uu___400_8963.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___401_8963.FStar_TypeChecker_Env.check_type_of); + (uu___400_8963.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___401_8963.FStar_TypeChecker_Env.use_bv_sorts); + (uu___400_8963.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___401_8963.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___400_8963.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___401_8963.FStar_TypeChecker_Env.normalized_eff_names); + (uu___400_8963.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___401_8963.FStar_TypeChecker_Env.fv_delta_depths); + (uu___400_8963.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___401_8963.FStar_TypeChecker_Env.proof_ns); + (uu___400_8963.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___401_8963.FStar_TypeChecker_Env.synth_hook); + (uu___400_8963.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___401_8963.FStar_TypeChecker_Env.splice); + (uu___400_8963.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___401_8963.FStar_TypeChecker_Env.postprocess); + (uu___400_8963.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___401_8963.FStar_TypeChecker_Env.is_native_tactic); + (uu___400_8963.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___401_8963.FStar_TypeChecker_Env.identifier_info); + (uu___400_8963.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___401_8963.FStar_TypeChecker_Env.tc_hooks); + (uu___400_8963.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___401_8963.FStar_TypeChecker_Env.dsenv); + (uu___400_8963.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___401_8963.FStar_TypeChecker_Env.nbe) + (uu___400_8963.FStar_TypeChecker_Env.nbe) }) ne in FStar_All.pipe_right uu____8960 (fun ne1 -> - let uu___402_8969 = se in + let uu___401_8969 = se in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_new_effect ne1); FStar_Syntax_Syntax.sigrng = - (uu___402_8969.FStar_Syntax_Syntax.sigrng); + (uu___401_8969.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___402_8969.FStar_Syntax_Syntax.sigquals); + (uu___401_8969.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___402_8969.FStar_Syntax_Syntax.sigmeta); + (uu___401_8969.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___402_8969.FStar_Syntax_Syntax.sigattrs) + (uu___401_8969.FStar_Syntax_Syntax.sigattrs) }) in FStar_All.pipe_right uu____8959 @@ -4886,18 +4886,18 @@ let (tc_decl' : then let uu____8976 = FStar_Syntax_Print.sigelt_to_string - (let uu___403_8980 = se in + (let uu___402_8980 = se in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_new_effect ne1); FStar_Syntax_Syntax.sigrng = - (uu___403_8980.FStar_Syntax_Syntax.sigrng); + (uu___402_8980.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___403_8980.FStar_Syntax_Syntax.sigquals); + (uu___402_8980.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___403_8980.FStar_Syntax_Syntax.sigmeta); + (uu___402_8980.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___403_8980.FStar_Syntax_Syntax.sigattrs) + (uu___402_8980.FStar_Syntax_Syntax.sigattrs) }) in FStar_Util.print1 "Effect decl after phase 1: %s\n" @@ -4907,18 +4907,18 @@ let (tc_decl' : else ne in let ne2 = tc_eff_decl env ne1 in let se1 = - let uu___404_8988 = se in + let uu___403_8988 = se in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_new_effect ne2); FStar_Syntax_Syntax.sigrng = - (uu___404_8988.FStar_Syntax_Syntax.sigrng); + (uu___403_8988.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___404_8988.FStar_Syntax_Syntax.sigquals); + (uu___403_8988.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___404_8988.FStar_Syntax_Syntax.sigmeta); + (uu___403_8988.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___404_8988.FStar_Syntax_Syntax.sigattrs) + (uu___403_8988.FStar_Syntax_Syntax.sigattrs) } in ([se1], [], env0) | FStar_Syntax_Syntax.Sig_sub_effect sub1 -> @@ -5166,93 +5166,93 @@ let (tc_decl' : (match uu____9296 with | (lift,lift_wp) -> let env1 = - let uu___405_9980 = env in + let uu___404_9980 = env in { FStar_TypeChecker_Env.solver = - (uu___405_9980.FStar_TypeChecker_Env.solver); + (uu___404_9980.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___405_9980.FStar_TypeChecker_Env.range); + (uu___404_9980.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___405_9980.FStar_TypeChecker_Env.curmodule); + (uu___404_9980.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___405_9980.FStar_TypeChecker_Env.gamma); + (uu___404_9980.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___405_9980.FStar_TypeChecker_Env.gamma_sig); + (uu___404_9980.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___405_9980.FStar_TypeChecker_Env.gamma_cache); + (uu___404_9980.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___405_9980.FStar_TypeChecker_Env.modules); + (uu___404_9980.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___405_9980.FStar_TypeChecker_Env.expected_typ); + (uu___404_9980.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___405_9980.FStar_TypeChecker_Env.sigtab); + (uu___404_9980.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___405_9980.FStar_TypeChecker_Env.attrtab); + (uu___404_9980.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___405_9980.FStar_TypeChecker_Env.is_pattern); + (uu___404_9980.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___405_9980.FStar_TypeChecker_Env.instantiate_imp); + (uu___404_9980.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___405_9980.FStar_TypeChecker_Env.effects); + (uu___404_9980.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___405_9980.FStar_TypeChecker_Env.generalize); + (uu___404_9980.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___405_9980.FStar_TypeChecker_Env.letrecs); + (uu___404_9980.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___405_9980.FStar_TypeChecker_Env.top_level); + (uu___404_9980.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___405_9980.FStar_TypeChecker_Env.check_uvars); + (uu___404_9980.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___405_9980.FStar_TypeChecker_Env.use_eq); + (uu___404_9980.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___405_9980.FStar_TypeChecker_Env.is_iface); + (uu___404_9980.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___405_9980.FStar_TypeChecker_Env.admit); + (uu___404_9980.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___405_9980.FStar_TypeChecker_Env.lax_universes); + (uu___404_9980.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___405_9980.FStar_TypeChecker_Env.phase1); + (uu___404_9980.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___405_9980.FStar_TypeChecker_Env.failhard); + (uu___404_9980.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___405_9980.FStar_TypeChecker_Env.nosynth); + (uu___404_9980.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___405_9980.FStar_TypeChecker_Env.uvar_subtyping); + (uu___404_9980.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___405_9980.FStar_TypeChecker_Env.tc_term); + (uu___404_9980.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___405_9980.FStar_TypeChecker_Env.type_of); + (uu___404_9980.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___405_9980.FStar_TypeChecker_Env.universe_of); + (uu___404_9980.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___405_9980.FStar_TypeChecker_Env.check_type_of); + (uu___404_9980.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___405_9980.FStar_TypeChecker_Env.use_bv_sorts); + (uu___404_9980.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___405_9980.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___404_9980.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___405_9980.FStar_TypeChecker_Env.normalized_eff_names); + (uu___404_9980.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___405_9980.FStar_TypeChecker_Env.fv_delta_depths); + (uu___404_9980.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___405_9980.FStar_TypeChecker_Env.proof_ns); + (uu___404_9980.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___405_9980.FStar_TypeChecker_Env.synth_hook); + (uu___404_9980.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___405_9980.FStar_TypeChecker_Env.splice); + (uu___404_9980.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___405_9980.FStar_TypeChecker_Env.postprocess); + (uu___404_9980.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___405_9980.FStar_TypeChecker_Env.is_native_tactic); + (uu___404_9980.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___405_9980.FStar_TypeChecker_Env.identifier_info); + (uu___404_9980.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___405_9980.FStar_TypeChecker_Env.tc_hooks); + (uu___404_9980.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___405_9980.FStar_TypeChecker_Env.dsenv); + (uu___404_9980.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___405_9980.FStar_TypeChecker_Env.nbe) + (uu___404_9980.FStar_TypeChecker_Env.nbe) } in let lift1 = match lift with @@ -5505,29 +5505,29 @@ let (tc_decl' : FStar_Errors.raise_error uu____10407 r else ()); (let sub2 = - let uu___406_10469 = sub1 in + let uu___405_10469 = sub1 in { FStar_Syntax_Syntax.source = - (uu___406_10469.FStar_Syntax_Syntax.source); + (uu___405_10469.FStar_Syntax_Syntax.source); FStar_Syntax_Syntax.target = - (uu___406_10469.FStar_Syntax_Syntax.target); + (uu___405_10469.FStar_Syntax_Syntax.target); FStar_Syntax_Syntax.lift_wp = (FStar_Pervasives_Native.Some lift_wp); FStar_Syntax_Syntax.lift = lift1 } in let se1 = - let uu___407_10471 = se in + let uu___406_10471 = se in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_sub_effect sub2); FStar_Syntax_Syntax.sigrng = - (uu___407_10471.FStar_Syntax_Syntax.sigrng); + (uu___406_10471.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___407_10471.FStar_Syntax_Syntax.sigquals); + (uu___406_10471.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___407_10471.FStar_Syntax_Syntax.sigmeta); + (uu___406_10471.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___407_10471.FStar_Syntax_Syntax.sigattrs) + (uu___406_10471.FStar_Syntax_Syntax.sigattrs) } in ([se1], [], env0)))))) | FStar_Syntax_Syntax.Sig_effect_abbrev (lid,uvs,tps,c,flags1) -> @@ -5681,38 +5681,38 @@ let (tc_decl' : uu____10879 r) else (); (let se1 = - let uu___408_10900 = se in + let uu___407_10900 = se in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_effect_abbrev (lid, uvs2, tps5, c5, flags1)); FStar_Syntax_Syntax.sigrng = - (uu___408_10900.FStar_Syntax_Syntax.sigrng); + (uu___407_10900.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___408_10900.FStar_Syntax_Syntax.sigquals); + (uu___407_10900.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___408_10900.FStar_Syntax_Syntax.sigmeta); + (uu___407_10900.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___408_10900.FStar_Syntax_Syntax.sigattrs) + (uu___407_10900.FStar_Syntax_Syntax.sigattrs) } in ([se1], [], env0)))))))))) | FStar_Syntax_Syntax.Sig_declare_typ (uu____10907,uu____10908,uu____10909) when FStar_All.pipe_right se.FStar_Syntax_Syntax.sigquals (FStar_Util.for_some - (fun uu___374_10914 -> - match uu___374_10914 with + (fun uu___373_10914 -> + match uu___373_10914 with | FStar_Syntax_Syntax.OnlyName -> true | uu____10917 -> false)) -> ([], [], env0) | FStar_Syntax_Syntax.Sig_let (uu____10923,uu____10924) when FStar_All.pipe_right se.FStar_Syntax_Syntax.sigquals (FStar_Util.for_some - (fun uu___374_10933 -> - match uu___374_10933 with + (fun uu___373_10933 -> + match uu___373_10933 with | FStar_Syntax_Syntax.OnlyName -> true | uu____10936 -> false)) -> ([], [], env0) @@ -5742,93 +5742,93 @@ let (tc_decl' : then let uu____10984 = tc_declare_typ - (let uu___409_10987 = env1 in + (let uu___408_10987 = env1 in { FStar_TypeChecker_Env.solver = - (uu___409_10987.FStar_TypeChecker_Env.solver); + (uu___408_10987.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___409_10987.FStar_TypeChecker_Env.range); + (uu___408_10987.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___409_10987.FStar_TypeChecker_Env.curmodule); + (uu___408_10987.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___409_10987.FStar_TypeChecker_Env.gamma); + (uu___408_10987.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___409_10987.FStar_TypeChecker_Env.gamma_sig); + (uu___408_10987.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___409_10987.FStar_TypeChecker_Env.gamma_cache); + (uu___408_10987.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___409_10987.FStar_TypeChecker_Env.modules); + (uu___408_10987.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___409_10987.FStar_TypeChecker_Env.expected_typ); + (uu___408_10987.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___409_10987.FStar_TypeChecker_Env.sigtab); + (uu___408_10987.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___409_10987.FStar_TypeChecker_Env.attrtab); + (uu___408_10987.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___409_10987.FStar_TypeChecker_Env.is_pattern); + (uu___408_10987.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___409_10987.FStar_TypeChecker_Env.instantiate_imp); + (uu___408_10987.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___409_10987.FStar_TypeChecker_Env.effects); + (uu___408_10987.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___409_10987.FStar_TypeChecker_Env.generalize); + (uu___408_10987.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___409_10987.FStar_TypeChecker_Env.letrecs); + (uu___408_10987.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___409_10987.FStar_TypeChecker_Env.top_level); + (uu___408_10987.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___409_10987.FStar_TypeChecker_Env.check_uvars); + (uu___408_10987.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___409_10987.FStar_TypeChecker_Env.use_eq); + (uu___408_10987.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___409_10987.FStar_TypeChecker_Env.is_iface); + (uu___408_10987.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___409_10987.FStar_TypeChecker_Env.admit); + (uu___408_10987.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___409_10987.FStar_TypeChecker_Env.lax_universes); + (uu___408_10987.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___409_10987.FStar_TypeChecker_Env.phase1); + (uu___408_10987.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___409_10987.FStar_TypeChecker_Env.failhard); + (uu___408_10987.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___409_10987.FStar_TypeChecker_Env.nosynth); + (uu___408_10987.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___409_10987.FStar_TypeChecker_Env.uvar_subtyping); + (uu___408_10987.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___409_10987.FStar_TypeChecker_Env.tc_term); + (uu___408_10987.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___409_10987.FStar_TypeChecker_Env.type_of); + (uu___408_10987.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___409_10987.FStar_TypeChecker_Env.universe_of); + (uu___408_10987.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___409_10987.FStar_TypeChecker_Env.check_type_of); + (uu___408_10987.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___409_10987.FStar_TypeChecker_Env.use_bv_sorts); + (uu___408_10987.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___409_10987.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___408_10987.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___409_10987.FStar_TypeChecker_Env.normalized_eff_names); + (uu___408_10987.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___409_10987.FStar_TypeChecker_Env.fv_delta_depths); + (uu___408_10987.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___409_10987.FStar_TypeChecker_Env.proof_ns); + (uu___408_10987.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___409_10987.FStar_TypeChecker_Env.synth_hook); + (uu___408_10987.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___409_10987.FStar_TypeChecker_Env.splice); + (uu___408_10987.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___409_10987.FStar_TypeChecker_Env.postprocess); + (uu___408_10987.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___409_10987.FStar_TypeChecker_Env.is_native_tactic); + (uu___408_10987.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___409_10987.FStar_TypeChecker_Env.identifier_info); + (uu___408_10987.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___409_10987.FStar_TypeChecker_Env.tc_hooks); + (uu___408_10987.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___409_10987.FStar_TypeChecker_Env.dsenv); + (uu___408_10987.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___409_10987.FStar_TypeChecker_Env.nbe) + (uu___408_10987.FStar_TypeChecker_Env.nbe) }) (uvs, t) se.FStar_Syntax_Syntax.sigrng in match uu____10984 with @@ -5858,19 +5858,19 @@ let (tc_decl' : in (match uu____11054 with | (uvs2,t2) -> - ([(let uu___410_11084 = se in + ([(let uu___409_11084 = se in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_declare_typ (lid, uvs2, t2)); FStar_Syntax_Syntax.sigrng = - (uu___410_11084.FStar_Syntax_Syntax.sigrng); + (uu___409_11084.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___410_11084.FStar_Syntax_Syntax.sigquals); + (uu___409_11084.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___410_11084.FStar_Syntax_Syntax.sigmeta); + (uu___409_11084.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___410_11084.FStar_Syntax_Syntax.sigattrs) + (uu___409_11084.FStar_Syntax_Syntax.sigattrs) })], [], env0)))) | FStar_Syntax_Syntax.Sig_assume (lid,uvs,t) -> let env1 = FStar_TypeChecker_Env.set_range env r in @@ -5883,92 +5883,92 @@ let (tc_decl' : then let uu____11109 = tc_assume - (let uu___411_11112 = env1 in + (let uu___410_11112 = env1 in { FStar_TypeChecker_Env.solver = - (uu___411_11112.FStar_TypeChecker_Env.solver); + (uu___410_11112.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___411_11112.FStar_TypeChecker_Env.range); + (uu___410_11112.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___411_11112.FStar_TypeChecker_Env.curmodule); + (uu___410_11112.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___411_11112.FStar_TypeChecker_Env.gamma); + (uu___410_11112.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___411_11112.FStar_TypeChecker_Env.gamma_sig); + (uu___410_11112.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___411_11112.FStar_TypeChecker_Env.gamma_cache); + (uu___410_11112.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___411_11112.FStar_TypeChecker_Env.modules); + (uu___410_11112.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___411_11112.FStar_TypeChecker_Env.expected_typ); + (uu___410_11112.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___411_11112.FStar_TypeChecker_Env.sigtab); + (uu___410_11112.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___411_11112.FStar_TypeChecker_Env.attrtab); + (uu___410_11112.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___411_11112.FStar_TypeChecker_Env.is_pattern); + (uu___410_11112.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___411_11112.FStar_TypeChecker_Env.instantiate_imp); + (uu___410_11112.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___411_11112.FStar_TypeChecker_Env.effects); + (uu___410_11112.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___411_11112.FStar_TypeChecker_Env.generalize); + (uu___410_11112.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___411_11112.FStar_TypeChecker_Env.letrecs); + (uu___410_11112.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___411_11112.FStar_TypeChecker_Env.top_level); + (uu___410_11112.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___411_11112.FStar_TypeChecker_Env.check_uvars); + (uu___410_11112.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___411_11112.FStar_TypeChecker_Env.use_eq); + (uu___410_11112.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___411_11112.FStar_TypeChecker_Env.is_iface); + (uu___410_11112.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___411_11112.FStar_TypeChecker_Env.admit); + (uu___410_11112.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___411_11112.FStar_TypeChecker_Env.lax_universes); + (uu___410_11112.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = true; FStar_TypeChecker_Env.failhard = - (uu___411_11112.FStar_TypeChecker_Env.failhard); + (uu___410_11112.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___411_11112.FStar_TypeChecker_Env.nosynth); + (uu___410_11112.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___411_11112.FStar_TypeChecker_Env.uvar_subtyping); + (uu___410_11112.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___411_11112.FStar_TypeChecker_Env.tc_term); + (uu___410_11112.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___411_11112.FStar_TypeChecker_Env.type_of); + (uu___410_11112.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___411_11112.FStar_TypeChecker_Env.universe_of); + (uu___410_11112.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___411_11112.FStar_TypeChecker_Env.check_type_of); + (uu___410_11112.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___411_11112.FStar_TypeChecker_Env.use_bv_sorts); + (uu___410_11112.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___411_11112.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___410_11112.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___411_11112.FStar_TypeChecker_Env.normalized_eff_names); + (uu___410_11112.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___411_11112.FStar_TypeChecker_Env.fv_delta_depths); + (uu___410_11112.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___411_11112.FStar_TypeChecker_Env.proof_ns); + (uu___410_11112.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___411_11112.FStar_TypeChecker_Env.synth_hook); + (uu___410_11112.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___411_11112.FStar_TypeChecker_Env.splice); + (uu___410_11112.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___411_11112.FStar_TypeChecker_Env.postprocess); + (uu___410_11112.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___411_11112.FStar_TypeChecker_Env.is_native_tactic); + (uu___410_11112.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___411_11112.FStar_TypeChecker_Env.identifier_info); + (uu___410_11112.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___411_11112.FStar_TypeChecker_Env.tc_hooks); + (uu___410_11112.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___411_11112.FStar_TypeChecker_Env.dsenv); + (uu___410_11112.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___411_11112.FStar_TypeChecker_Env.nbe) + (uu___410_11112.FStar_TypeChecker_Env.nbe) }) (uvs, t) se.FStar_Syntax_Syntax.sigrng in match uu____11109 with @@ -5995,18 +5995,18 @@ let (tc_decl' : tc_assume env1 (uvs1, t1) se.FStar_Syntax_Syntax.sigrng in (match uu____11180 with | (uvs2,t2) -> - ([(let uu___412_11210 = se in + ([(let uu___411_11210 = se in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_assume (lid, uvs2, t2)); FStar_Syntax_Syntax.sigrng = - (uu___412_11210.FStar_Syntax_Syntax.sigrng); + (uu___411_11210.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___412_11210.FStar_Syntax_Syntax.sigquals); + (uu___411_11210.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___412_11210.FStar_Syntax_Syntax.sigmeta); + (uu___411_11210.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___412_11210.FStar_Syntax_Syntax.sigattrs) + (uu___411_11210.FStar_Syntax_Syntax.sigattrs) })], [], env0))) | FStar_Syntax_Syntax.Sig_main e -> let env1 = FStar_TypeChecker_Env.set_range env r in @@ -6036,18 +6036,18 @@ let (tc_decl' : FStar_TypeChecker_Rel.force_trivial_guard env2 uu____11265); (let se1 = - let uu___413_11267 = se in + let uu___412_11267 = se in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_main e2); FStar_Syntax_Syntax.sigrng = - (uu___413_11267.FStar_Syntax_Syntax.sigrng); + (uu___412_11267.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___413_11267.FStar_Syntax_Syntax.sigquals); + (uu___412_11267.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___413_11267.FStar_Syntax_Syntax.sigmeta); + (uu___412_11267.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___413_11267.FStar_Syntax_Syntax.sigattrs) + (uu___412_11267.FStar_Syntax_Syntax.sigattrs) } in ([se1], [], env0))))) | FStar_Syntax_Syntax.Sig_splice (lids,t) -> @@ -6107,93 +6107,93 @@ let (tc_decl' : env.FStar_TypeChecker_Env.dsenv ses in let env1 = - let uu___414_11353 = env in + let uu___413_11353 = env in { FStar_TypeChecker_Env.solver = - (uu___414_11353.FStar_TypeChecker_Env.solver); + (uu___413_11353.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___414_11353.FStar_TypeChecker_Env.range); + (uu___413_11353.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___414_11353.FStar_TypeChecker_Env.curmodule); + (uu___413_11353.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___414_11353.FStar_TypeChecker_Env.gamma); + (uu___413_11353.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___414_11353.FStar_TypeChecker_Env.gamma_sig); + (uu___413_11353.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___414_11353.FStar_TypeChecker_Env.gamma_cache); + (uu___413_11353.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___414_11353.FStar_TypeChecker_Env.modules); + (uu___413_11353.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___414_11353.FStar_TypeChecker_Env.expected_typ); + (uu___413_11353.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___414_11353.FStar_TypeChecker_Env.sigtab); + (uu___413_11353.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___414_11353.FStar_TypeChecker_Env.attrtab); + (uu___413_11353.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___414_11353.FStar_TypeChecker_Env.is_pattern); + (uu___413_11353.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___414_11353.FStar_TypeChecker_Env.instantiate_imp); + (uu___413_11353.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___414_11353.FStar_TypeChecker_Env.effects); + (uu___413_11353.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___414_11353.FStar_TypeChecker_Env.generalize); + (uu___413_11353.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___414_11353.FStar_TypeChecker_Env.letrecs); + (uu___413_11353.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___414_11353.FStar_TypeChecker_Env.top_level); + (uu___413_11353.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___414_11353.FStar_TypeChecker_Env.check_uvars); + (uu___413_11353.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___414_11353.FStar_TypeChecker_Env.use_eq); + (uu___413_11353.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___414_11353.FStar_TypeChecker_Env.is_iface); + (uu___413_11353.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___414_11353.FStar_TypeChecker_Env.admit); + (uu___413_11353.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___414_11353.FStar_TypeChecker_Env.lax); + (uu___413_11353.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___414_11353.FStar_TypeChecker_Env.lax_universes); + (uu___413_11353.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___414_11353.FStar_TypeChecker_Env.phase1); + (uu___413_11353.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___414_11353.FStar_TypeChecker_Env.failhard); + (uu___413_11353.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___414_11353.FStar_TypeChecker_Env.nosynth); + (uu___413_11353.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___414_11353.FStar_TypeChecker_Env.uvar_subtyping); + (uu___413_11353.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___414_11353.FStar_TypeChecker_Env.tc_term); + (uu___413_11353.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___414_11353.FStar_TypeChecker_Env.type_of); + (uu___413_11353.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___414_11353.FStar_TypeChecker_Env.universe_of); + (uu___413_11353.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___414_11353.FStar_TypeChecker_Env.check_type_of); + (uu___413_11353.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___414_11353.FStar_TypeChecker_Env.use_bv_sorts); + (uu___413_11353.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___414_11353.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___413_11353.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___414_11353.FStar_TypeChecker_Env.normalized_eff_names); + (uu___413_11353.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___414_11353.FStar_TypeChecker_Env.fv_delta_depths); + (uu___413_11353.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___414_11353.FStar_TypeChecker_Env.proof_ns); + (uu___413_11353.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___414_11353.FStar_TypeChecker_Env.synth_hook); + (uu___413_11353.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___414_11353.FStar_TypeChecker_Env.splice); + (uu___413_11353.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___414_11353.FStar_TypeChecker_Env.postprocess); + (uu___413_11353.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___414_11353.FStar_TypeChecker_Env.is_native_tactic); + (uu___413_11353.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___414_11353.FStar_TypeChecker_Env.identifier_info); + (uu___413_11353.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___414_11353.FStar_TypeChecker_Env.tc_hooks); + (uu___413_11353.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = dsenv1; FStar_TypeChecker_Env.nbe = - (uu___414_11353.FStar_TypeChecker_Env.nbe) + (uu___413_11353.FStar_TypeChecker_Env.nbe) } in ([], ses, env1)))))) | FStar_Syntax_Syntax.Sig_let (lbs,lids) -> @@ -6272,21 +6272,21 @@ let (tc_decl' : with | (true ,uu____11814) -> (val_bv, aqual) | (false ,true ) -> - ((let uu___415_11828 = val_bv in + ((let uu___414_11828 = val_bv in { FStar_Syntax_Syntax.ppname = - (let uu___416_11831 = + (let uu___415_11831 = val_bv.FStar_Syntax_Syntax.ppname in { FStar_Ident.idText = ((body_bv.FStar_Syntax_Syntax.ppname).FStar_Ident.idText); FStar_Ident.idRange = - (uu___416_11831.FStar_Ident.idRange) + (uu___415_11831.FStar_Ident.idRange) }); FStar_Syntax_Syntax.index = - (uu___415_11828.FStar_Syntax_Syntax.index); + (uu___414_11828.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = - (uu___415_11828.FStar_Syntax_Syntax.sort) + (uu___414_11828.FStar_Syntax_Syntax.sort) }), aqual) | (false ,false ) -> (val_bv, aqual))) :: uu____11790 @@ -6300,25 +6300,25 @@ let (tc_decl' : FStar_Syntax_Syntax.mk uu____11845 in uu____11838 FStar_Pervasives_Native.None r1 | uu____11883 -> typ1 in - let uu___417_11884 = lb in + let uu___416_11884 = lb in let uu____11885 = rename_in_typ lb.FStar_Syntax_Syntax.lbdef lb.FStar_Syntax_Syntax.lbtyp in { FStar_Syntax_Syntax.lbname = - (uu___417_11884.FStar_Syntax_Syntax.lbname); + (uu___416_11884.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___417_11884.FStar_Syntax_Syntax.lbunivs); + (uu___416_11884.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = uu____11885; FStar_Syntax_Syntax.lbeff = - (uu___417_11884.FStar_Syntax_Syntax.lbeff); + (uu___416_11884.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = - (uu___417_11884.FStar_Syntax_Syntax.lbdef); + (uu___416_11884.FStar_Syntax_Syntax.lbdef); FStar_Syntax_Syntax.lbattrs = - (uu___417_11884.FStar_Syntax_Syntax.lbattrs); + (uu___416_11884.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___417_11884.FStar_Syntax_Syntax.lbpos) + (uu___416_11884.FStar_Syntax_Syntax.lbpos) } in let uu____11888 = FStar_All.pipe_right (FStar_Pervasives_Native.snd lbs) @@ -6403,8 +6403,8 @@ let (tc_decl' : let uu____12232 = FStar_All.pipe_right q (FStar_Util.for_some - (fun uu___375_12238 -> - match uu___375_12238 with + (fun uu___374_12238 -> + match uu___374_12238 with | FStar_Syntax_Syntax.Irreducible -> true | FStar_Syntax_Syntax.Visible_default -> true @@ -6434,92 +6434,92 @@ let (tc_decl' : FStar_Syntax_Syntax.mk uu____12263 in uu____12256 FStar_Pervasives_Native.None r in let env' = - let uu___418_12300 = env1 in + let uu___417_12300 = env1 in { FStar_TypeChecker_Env.solver = - (uu___418_12300.FStar_TypeChecker_Env.solver); + (uu___417_12300.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___418_12300.FStar_TypeChecker_Env.range); + (uu___417_12300.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___418_12300.FStar_TypeChecker_Env.curmodule); + (uu___417_12300.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___418_12300.FStar_TypeChecker_Env.gamma); + (uu___417_12300.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___418_12300.FStar_TypeChecker_Env.gamma_sig); + (uu___417_12300.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___418_12300.FStar_TypeChecker_Env.gamma_cache); + (uu___417_12300.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___418_12300.FStar_TypeChecker_Env.modules); + (uu___417_12300.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___418_12300.FStar_TypeChecker_Env.expected_typ); + (uu___417_12300.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___418_12300.FStar_TypeChecker_Env.sigtab); + (uu___417_12300.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___418_12300.FStar_TypeChecker_Env.attrtab); + (uu___417_12300.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___418_12300.FStar_TypeChecker_Env.is_pattern); + (uu___417_12300.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___418_12300.FStar_TypeChecker_Env.instantiate_imp); + (uu___417_12300.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___418_12300.FStar_TypeChecker_Env.effects); + (uu___417_12300.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = should_generalize; FStar_TypeChecker_Env.letrecs = - (uu___418_12300.FStar_TypeChecker_Env.letrecs); + (uu___417_12300.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = true; FStar_TypeChecker_Env.check_uvars = - (uu___418_12300.FStar_TypeChecker_Env.check_uvars); + (uu___417_12300.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___418_12300.FStar_TypeChecker_Env.use_eq); + (uu___417_12300.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___418_12300.FStar_TypeChecker_Env.is_iface); + (uu___417_12300.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___418_12300.FStar_TypeChecker_Env.admit); + (uu___417_12300.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___418_12300.FStar_TypeChecker_Env.lax); + (uu___417_12300.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___418_12300.FStar_TypeChecker_Env.lax_universes); + (uu___417_12300.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___418_12300.FStar_TypeChecker_Env.phase1); + (uu___417_12300.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___418_12300.FStar_TypeChecker_Env.failhard); + (uu___417_12300.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___418_12300.FStar_TypeChecker_Env.nosynth); + (uu___417_12300.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___418_12300.FStar_TypeChecker_Env.uvar_subtyping); + (uu___417_12300.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___418_12300.FStar_TypeChecker_Env.tc_term); + (uu___417_12300.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___418_12300.FStar_TypeChecker_Env.type_of); + (uu___417_12300.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___418_12300.FStar_TypeChecker_Env.universe_of); + (uu___417_12300.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___418_12300.FStar_TypeChecker_Env.check_type_of); + (uu___417_12300.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___418_12300.FStar_TypeChecker_Env.use_bv_sorts); + (uu___417_12300.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___418_12300.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___417_12300.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___418_12300.FStar_TypeChecker_Env.normalized_eff_names); + (uu___417_12300.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___418_12300.FStar_TypeChecker_Env.fv_delta_depths); + (uu___417_12300.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___418_12300.FStar_TypeChecker_Env.proof_ns); + (uu___417_12300.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___418_12300.FStar_TypeChecker_Env.synth_hook); + (uu___417_12300.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___418_12300.FStar_TypeChecker_Env.splice); + (uu___417_12300.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___418_12300.FStar_TypeChecker_Env.postprocess); + (uu___417_12300.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___418_12300.FStar_TypeChecker_Env.is_native_tactic); + (uu___417_12300.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___418_12300.FStar_TypeChecker_Env.identifier_info); + (uu___417_12300.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___418_12300.FStar_TypeChecker_Env.tc_hooks); + (uu___417_12300.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___418_12300.FStar_TypeChecker_Env.dsenv); + (uu___417_12300.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___418_12300.FStar_TypeChecker_Env.nbe) + (uu___417_12300.FStar_TypeChecker_Env.nbe) } in let e1 = let uu____12303 = @@ -6558,32 +6558,32 @@ let (tc_decl' : in if lb_unannotated then - let uu___419_12370 = e_lax in + let uu___418_12370 = e_lax in { FStar_Syntax_Syntax.n = (FStar_Syntax_Syntax.Tm_let ((false, - [(let uu___420_12385 = lb in + [(let uu___419_12385 = lb in { FStar_Syntax_Syntax.lbname = - (uu___420_12385.FStar_Syntax_Syntax.lbname); + (uu___419_12385.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___420_12385.FStar_Syntax_Syntax.lbunivs); + (uu___419_12385.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = FStar_Syntax_Syntax.tun; FStar_Syntax_Syntax.lbeff = - (uu___420_12385.FStar_Syntax_Syntax.lbeff); + (uu___419_12385.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = - (uu___420_12385.FStar_Syntax_Syntax.lbdef); + (uu___419_12385.FStar_Syntax_Syntax.lbdef); FStar_Syntax_Syntax.lbattrs = - (uu___420_12385.FStar_Syntax_Syntax.lbattrs); + (uu___419_12385.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___420_12385.FStar_Syntax_Syntax.lbpos) + (uu___419_12385.FStar_Syntax_Syntax.lbpos) })]), e2)); FStar_Syntax_Syntax.pos = - (uu___419_12370.FStar_Syntax_Syntax.pos); + (uu___418_12370.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___419_12370.FStar_Syntax_Syntax.vars) + (uu___418_12370.FStar_Syntax_Syntax.vars) } else e_lax | uu____12388 -> e_lax in @@ -6592,92 +6592,92 @@ let (tc_decl' : let uu____12391 = let uu____12392 = FStar_TypeChecker_TcTerm.tc_maybe_toplevel_term - (let uu___421_12401 = env' in + (let uu___420_12401 = env' in { FStar_TypeChecker_Env.solver = - (uu___421_12401.FStar_TypeChecker_Env.solver); + (uu___420_12401.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___421_12401.FStar_TypeChecker_Env.range); + (uu___420_12401.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___421_12401.FStar_TypeChecker_Env.curmodule); + (uu___420_12401.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___421_12401.FStar_TypeChecker_Env.gamma); + (uu___420_12401.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___421_12401.FStar_TypeChecker_Env.gamma_sig); + (uu___420_12401.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___421_12401.FStar_TypeChecker_Env.gamma_cache); + (uu___420_12401.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___421_12401.FStar_TypeChecker_Env.modules); + (uu___420_12401.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___421_12401.FStar_TypeChecker_Env.expected_typ); + (uu___420_12401.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___421_12401.FStar_TypeChecker_Env.sigtab); + (uu___420_12401.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___421_12401.FStar_TypeChecker_Env.attrtab); + (uu___420_12401.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___421_12401.FStar_TypeChecker_Env.is_pattern); + (uu___420_12401.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___421_12401.FStar_TypeChecker_Env.instantiate_imp); + (uu___420_12401.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___421_12401.FStar_TypeChecker_Env.effects); + (uu___420_12401.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___421_12401.FStar_TypeChecker_Env.generalize); + (uu___420_12401.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___421_12401.FStar_TypeChecker_Env.letrecs); + (uu___420_12401.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___421_12401.FStar_TypeChecker_Env.top_level); + (uu___420_12401.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___421_12401.FStar_TypeChecker_Env.check_uvars); + (uu___420_12401.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___421_12401.FStar_TypeChecker_Env.use_eq); + (uu___420_12401.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___421_12401.FStar_TypeChecker_Env.is_iface); + (uu___420_12401.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___421_12401.FStar_TypeChecker_Env.admit); + (uu___420_12401.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___421_12401.FStar_TypeChecker_Env.lax_universes); + (uu___420_12401.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = true; FStar_TypeChecker_Env.failhard = - (uu___421_12401.FStar_TypeChecker_Env.failhard); + (uu___420_12401.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___421_12401.FStar_TypeChecker_Env.nosynth); + (uu___420_12401.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___421_12401.FStar_TypeChecker_Env.uvar_subtyping); + (uu___420_12401.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___421_12401.FStar_TypeChecker_Env.tc_term); + (uu___420_12401.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___421_12401.FStar_TypeChecker_Env.type_of); + (uu___420_12401.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___421_12401.FStar_TypeChecker_Env.universe_of); + (uu___420_12401.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___421_12401.FStar_TypeChecker_Env.check_type_of); + (uu___420_12401.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___421_12401.FStar_TypeChecker_Env.use_bv_sorts); + (uu___420_12401.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___421_12401.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___420_12401.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___421_12401.FStar_TypeChecker_Env.normalized_eff_names); + (uu___420_12401.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___421_12401.FStar_TypeChecker_Env.fv_delta_depths); + (uu___420_12401.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___421_12401.FStar_TypeChecker_Env.proof_ns); + (uu___420_12401.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___421_12401.FStar_TypeChecker_Env.synth_hook); + (uu___420_12401.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___421_12401.FStar_TypeChecker_Env.splice); + (uu___420_12401.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___421_12401.FStar_TypeChecker_Env.postprocess); + (uu___420_12401.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___421_12401.FStar_TypeChecker_Env.is_native_tactic); + (uu___420_12401.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___421_12401.FStar_TypeChecker_Env.identifier_info); + (uu___420_12401.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___421_12401.FStar_TypeChecker_Env.tc_hooks); + (uu___420_12401.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___421_12401.FStar_TypeChecker_Env.dsenv); + (uu___420_12401.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___421_12401.FStar_TypeChecker_Env.nbe) + (uu___420_12401.FStar_TypeChecker_Env.nbe) }) e in FStar_All.pipe_right uu____12392 @@ -6727,16 +6727,16 @@ let (tc_decl' : (match uu____12437 with | (attrs,post_tau) -> let se1 = - let uu___422_12551 = se in + let uu___421_12551 = se in { FStar_Syntax_Syntax.sigel = - (uu___422_12551.FStar_Syntax_Syntax.sigel); + (uu___421_12551.FStar_Syntax_Syntax.sigel); FStar_Syntax_Syntax.sigrng = - (uu___422_12551.FStar_Syntax_Syntax.sigrng); + (uu___421_12551.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___422_12551.FStar_Syntax_Syntax.sigquals); + (uu___421_12551.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___422_12551.FStar_Syntax_Syntax.sigmeta); + (uu___421_12551.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = attrs } in let postprocess_lb tau lb = @@ -6745,21 +6745,21 @@ let (tc_decl' : lb.FStar_Syntax_Syntax.lbtyp lb.FStar_Syntax_Syntax.lbdef in - let uu___423_12564 = lb in + let uu___422_12564 = lb in { FStar_Syntax_Syntax.lbname = - (uu___423_12564.FStar_Syntax_Syntax.lbname); + (uu___422_12564.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___423_12564.FStar_Syntax_Syntax.lbunivs); + (uu___422_12564.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = - (uu___423_12564.FStar_Syntax_Syntax.lbtyp); + (uu___422_12564.FStar_Syntax_Syntax.lbtyp); FStar_Syntax_Syntax.lbeff = - (uu___423_12564.FStar_Syntax_Syntax.lbeff); + (uu___422_12564.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = lbdef; FStar_Syntax_Syntax.lbattrs = - (uu___423_12564.FStar_Syntax_Syntax.lbattrs); + (uu___422_12564.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___423_12564.FStar_Syntax_Syntax.lbpos) + (uu___422_12564.FStar_Syntax_Syntax.lbpos) } in let uu____12565 = let uu____12577 = @@ -6802,17 +6802,17 @@ let (tc_decl' : -> FStar_Syntax_Syntax.HasMaskedEffect :: quals | uu____12681 -> quals in - ((let uu___424_12690 = se1 in + ((let uu___423_12690 = se1 in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_let (lbs3, lids)); FStar_Syntax_Syntax.sigrng = - (uu___424_12690.FStar_Syntax_Syntax.sigrng); + (uu___423_12690.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = quals1; FStar_Syntax_Syntax.sigmeta = - (uu___424_12690.FStar_Syntax_Syntax.sigmeta); + (uu___423_12690.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___424_12690.FStar_Syntax_Syntax.sigattrs) + (uu___423_12690.FStar_Syntax_Syntax.sigattrs) }), lbs3) | uu____12693 -> failwith @@ -6906,93 +6906,93 @@ let (tc_decl : let env' = if lax1 then - let uu___425_12934 = env1 in + let uu___424_12934 = env1 in { FStar_TypeChecker_Env.solver = - (uu___425_12934.FStar_TypeChecker_Env.solver); + (uu___424_12934.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___425_12934.FStar_TypeChecker_Env.range); + (uu___424_12934.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___425_12934.FStar_TypeChecker_Env.curmodule); + (uu___424_12934.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___425_12934.FStar_TypeChecker_Env.gamma); + (uu___424_12934.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___425_12934.FStar_TypeChecker_Env.gamma_sig); + (uu___424_12934.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___425_12934.FStar_TypeChecker_Env.gamma_cache); + (uu___424_12934.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___425_12934.FStar_TypeChecker_Env.modules); + (uu___424_12934.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___425_12934.FStar_TypeChecker_Env.expected_typ); + (uu___424_12934.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___425_12934.FStar_TypeChecker_Env.sigtab); + (uu___424_12934.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___425_12934.FStar_TypeChecker_Env.attrtab); + (uu___424_12934.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___425_12934.FStar_TypeChecker_Env.is_pattern); + (uu___424_12934.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___425_12934.FStar_TypeChecker_Env.instantiate_imp); + (uu___424_12934.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___425_12934.FStar_TypeChecker_Env.effects); + (uu___424_12934.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___425_12934.FStar_TypeChecker_Env.generalize); + (uu___424_12934.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___425_12934.FStar_TypeChecker_Env.letrecs); + (uu___424_12934.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___425_12934.FStar_TypeChecker_Env.top_level); + (uu___424_12934.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___425_12934.FStar_TypeChecker_Env.check_uvars); + (uu___424_12934.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___425_12934.FStar_TypeChecker_Env.use_eq); + (uu___424_12934.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___425_12934.FStar_TypeChecker_Env.is_iface); + (uu___424_12934.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___425_12934.FStar_TypeChecker_Env.admit); + (uu___424_12934.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___425_12934.FStar_TypeChecker_Env.lax_universes); + (uu___424_12934.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___425_12934.FStar_TypeChecker_Env.phase1); + (uu___424_12934.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___425_12934.FStar_TypeChecker_Env.failhard); + (uu___424_12934.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___425_12934.FStar_TypeChecker_Env.nosynth); + (uu___424_12934.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___425_12934.FStar_TypeChecker_Env.uvar_subtyping); + (uu___424_12934.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___425_12934.FStar_TypeChecker_Env.tc_term); + (uu___424_12934.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___425_12934.FStar_TypeChecker_Env.type_of); + (uu___424_12934.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___425_12934.FStar_TypeChecker_Env.universe_of); + (uu___424_12934.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___425_12934.FStar_TypeChecker_Env.check_type_of); + (uu___424_12934.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___425_12934.FStar_TypeChecker_Env.use_bv_sorts); + (uu___424_12934.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___425_12934.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___424_12934.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___425_12934.FStar_TypeChecker_Env.normalized_eff_names); + (uu___424_12934.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___425_12934.FStar_TypeChecker_Env.fv_delta_depths); + (uu___424_12934.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___425_12934.FStar_TypeChecker_Env.proof_ns); + (uu___424_12934.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___425_12934.FStar_TypeChecker_Env.synth_hook); + (uu___424_12934.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___425_12934.FStar_TypeChecker_Env.splice); + (uu___424_12934.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___425_12934.FStar_TypeChecker_Env.postprocess); + (uu___424_12934.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___425_12934.FStar_TypeChecker_Env.is_native_tactic); + (uu___424_12934.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___425_12934.FStar_TypeChecker_Env.identifier_info); + (uu___424_12934.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___425_12934.FStar_TypeChecker_Env.tc_hooks); + (uu___424_12934.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___425_12934.FStar_TypeChecker_Env.dsenv); + (uu___424_12934.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___425_12934.FStar_TypeChecker_Env.nbe) + (uu___424_12934.FStar_TypeChecker_Env.nbe) } else env1 in ((let uu____12939 = @@ -7099,8 +7099,8 @@ let for_export : let is_abstract quals = FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___376_13263 -> - match uu___376_13263 with + (fun uu___375_13263 -> + match uu___375_13263 with | FStar_Syntax_Syntax.Abstract -> true | uu____13266 -> false)) in @@ -7132,7 +7132,7 @@ let for_export : | FStar_Syntax_Syntax.Sig_inductive_typ (l,us,bs,t,uu____13453,uu____13454) -> let dec = - let uu___426_13464 = se1 in + let uu___425_13464 = se1 in let uu____13465 = let uu____13466 = let uu____13473 = @@ -7145,33 +7145,33 @@ let for_export : { FStar_Syntax_Syntax.sigel = uu____13465; FStar_Syntax_Syntax.sigrng = - (uu___426_13464.FStar_Syntax_Syntax.sigrng); + (uu___425_13464.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = (FStar_Syntax_Syntax.Assumption :: FStar_Syntax_Syntax.New :: (se1.FStar_Syntax_Syntax.sigquals)); FStar_Syntax_Syntax.sigmeta = - (uu___426_13464.FStar_Syntax_Syntax.sigmeta); + (uu___425_13464.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___426_13464.FStar_Syntax_Syntax.sigattrs) + (uu___425_13464.FStar_Syntax_Syntax.sigattrs) } in ((dec :: out), hidden1) | FStar_Syntax_Syntax.Sig_datacon (l,us,t,uu____13484,uu____13485,uu____13486) -> let dec = - let uu___427_13494 = se1 in + let uu___426_13494 = se1 in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_declare_typ (l, us, t)); FStar_Syntax_Syntax.sigrng = - (uu___427_13494.FStar_Syntax_Syntax.sigrng); + (uu___426_13494.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = [FStar_Syntax_Syntax.Assumption]; FStar_Syntax_Syntax.sigmeta = - (uu___427_13494.FStar_Syntax_Syntax.sigmeta); + (uu___426_13494.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___427_13494.FStar_Syntax_Syntax.sigattrs) + (uu___426_13494.FStar_Syntax_Syntax.sigattrs) } in ((dec :: out), (l :: hidden1)) | uu____13499 -> (out, hidden1)) @@ -7189,25 +7189,25 @@ let for_export : in if uu____13549 then - ([(let uu___428_13568 = se in + ([(let uu___427_13568 = se in { FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_declare_typ (l, us, t)); FStar_Syntax_Syntax.sigrng = - (uu___428_13568.FStar_Syntax_Syntax.sigrng); + (uu___427_13568.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = [FStar_Syntax_Syntax.Assumption]; FStar_Syntax_Syntax.sigmeta = - (uu___428_13568.FStar_Syntax_Syntax.sigmeta); + (uu___427_13568.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___428_13568.FStar_Syntax_Syntax.sigattrs) + (uu___427_13568.FStar_Syntax_Syntax.sigattrs) })], (l :: hidden)) else (let uu____13571 = FStar_All.pipe_right se.FStar_Syntax_Syntax.sigquals (FStar_Util.for_some - (fun uu___377_13577 -> - match uu___377_13577 with + (fun uu___376_13577 -> + match uu___376_13577 with | FStar_Syntax_Syntax.Assumption -> true | FStar_Syntax_Syntax.Projector uu____13580 -> true | FStar_Syntax_Syntax.Discriminator uu____13586 -> @@ -7259,7 +7259,7 @@ let for_export : FStar_All.pipe_right (FStar_Pervasives_Native.snd lbs) (FStar_List.map (fun lb -> - let uu___429_13718 = se in + let uu___428_13718 = se in let uu____13719 = let uu____13720 = let uu____13727 = @@ -7277,14 +7277,14 @@ let for_export : { FStar_Syntax_Syntax.sigel = uu____13719; FStar_Syntax_Syntax.sigrng = - (uu___429_13718.FStar_Syntax_Syntax.sigrng); + (uu___428_13718.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = (FStar_Syntax_Syntax.Assumption :: (se.FStar_Syntax_Syntax.sigquals)); FStar_Syntax_Syntax.sigmeta = - (uu___429_13718.FStar_Syntax_Syntax.sigmeta); + (uu___428_13718.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___429_13718.FStar_Syntax_Syntax.sigattrs) + (uu___428_13718.FStar_Syntax_Syntax.sigattrs) })) in (uu____13704, hidden) @@ -7330,16 +7330,16 @@ let (add_sigelt_to_env : (uu____13813,uu____13814,uu____13815) when FStar_All.pipe_right se.FStar_Syntax_Syntax.sigquals (FStar_Util.for_some - (fun uu___378_13820 -> - match uu___378_13820 with + (fun uu___377_13820 -> + match uu___377_13820 with | FStar_Syntax_Syntax.OnlyName -> true | uu____13823 -> false)) -> env | FStar_Syntax_Syntax.Sig_let (uu____13825,uu____13826) when FStar_All.pipe_right se.FStar_Syntax_Syntax.sigquals (FStar_Util.for_some - (fun uu___378_13835 -> - match uu___378_13835 with + (fun uu___377_13835 -> + match uu___377_13835 with | FStar_Syntax_Syntax.OnlyName -> true | uu____13838 -> false)) -> env @@ -7520,91 +7520,91 @@ let (check_exports : fun modul -> fun exports -> let env1 = - let uu___430_14584 = env in + let uu___429_14584 = env in { FStar_TypeChecker_Env.solver = - (uu___430_14584.FStar_TypeChecker_Env.solver); + (uu___429_14584.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___430_14584.FStar_TypeChecker_Env.range); + (uu___429_14584.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___430_14584.FStar_TypeChecker_Env.curmodule); + (uu___429_14584.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___430_14584.FStar_TypeChecker_Env.gamma); + (uu___429_14584.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___430_14584.FStar_TypeChecker_Env.gamma_sig); + (uu___429_14584.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___430_14584.FStar_TypeChecker_Env.gamma_cache); + (uu___429_14584.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___430_14584.FStar_TypeChecker_Env.modules); + (uu___429_14584.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___430_14584.FStar_TypeChecker_Env.expected_typ); + (uu___429_14584.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___430_14584.FStar_TypeChecker_Env.sigtab); + (uu___429_14584.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___430_14584.FStar_TypeChecker_Env.attrtab); + (uu___429_14584.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___430_14584.FStar_TypeChecker_Env.is_pattern); + (uu___429_14584.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___430_14584.FStar_TypeChecker_Env.instantiate_imp); + (uu___429_14584.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___430_14584.FStar_TypeChecker_Env.effects); + (uu___429_14584.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___430_14584.FStar_TypeChecker_Env.generalize); + (uu___429_14584.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___430_14584.FStar_TypeChecker_Env.letrecs); + (uu___429_14584.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = true; FStar_TypeChecker_Env.check_uvars = - (uu___430_14584.FStar_TypeChecker_Env.check_uvars); + (uu___429_14584.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___430_14584.FStar_TypeChecker_Env.use_eq); + (uu___429_14584.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___430_14584.FStar_TypeChecker_Env.is_iface); + (uu___429_14584.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___430_14584.FStar_TypeChecker_Env.admit); + (uu___429_14584.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = true; FStar_TypeChecker_Env.phase1 = - (uu___430_14584.FStar_TypeChecker_Env.phase1); + (uu___429_14584.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___430_14584.FStar_TypeChecker_Env.failhard); + (uu___429_14584.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___430_14584.FStar_TypeChecker_Env.nosynth); + (uu___429_14584.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___430_14584.FStar_TypeChecker_Env.uvar_subtyping); + (uu___429_14584.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___430_14584.FStar_TypeChecker_Env.tc_term); + (uu___429_14584.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___430_14584.FStar_TypeChecker_Env.type_of); + (uu___429_14584.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___430_14584.FStar_TypeChecker_Env.universe_of); + (uu___429_14584.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___430_14584.FStar_TypeChecker_Env.check_type_of); + (uu___429_14584.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___430_14584.FStar_TypeChecker_Env.use_bv_sorts); + (uu___429_14584.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___430_14584.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___429_14584.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___430_14584.FStar_TypeChecker_Env.normalized_eff_names); + (uu___429_14584.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___430_14584.FStar_TypeChecker_Env.fv_delta_depths); + (uu___429_14584.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___430_14584.FStar_TypeChecker_Env.proof_ns); + (uu___429_14584.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___430_14584.FStar_TypeChecker_Env.synth_hook); + (uu___429_14584.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___430_14584.FStar_TypeChecker_Env.splice); + (uu___429_14584.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___430_14584.FStar_TypeChecker_Env.postprocess); + (uu___429_14584.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___430_14584.FStar_TypeChecker_Env.is_native_tactic); + (uu___429_14584.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___430_14584.FStar_TypeChecker_Env.identifier_info); + (uu___429_14584.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___430_14584.FStar_TypeChecker_Env.tc_hooks); + (uu___429_14584.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___430_14584.FStar_TypeChecker_Env.dsenv); + (uu___429_14584.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___430_14584.FStar_TypeChecker_Env.nbe) + (uu___429_14584.FStar_TypeChecker_Env.nbe) } in let check_term lid univs1 t = let uu____14604 = FStar_Syntax_Subst.open_univ_vars univs1 t in @@ -7819,7 +7819,7 @@ let (extract_interface : | FStar_Syntax_Syntax.Sig_inductive_typ (lid,uvs,bs,t,uu____15095,uu____15096) -> let s1 = - let uu___431_15106 = s in + let uu___430_15106 = s in let uu____15107 = let uu____15108 = let uu____15115 = @@ -7839,12 +7839,12 @@ let (extract_interface : { FStar_Syntax_Syntax.sigel = uu____15107; FStar_Syntax_Syntax.sigrng = - (uu___431_15106.FStar_Syntax_Syntax.sigrng); + (uu___430_15106.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = uu____15116; FStar_Syntax_Syntax.sigmeta = - (uu___431_15106.FStar_Syntax_Syntax.sigmeta); + (uu___430_15106.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___431_15106.FStar_Syntax_Syntax.sigattrs) + (uu___430_15106.FStar_Syntax_Syntax.sigattrs) } in [s1] | uu____15125 -> failwith "Impossible!" in @@ -7868,7 +7868,7 @@ let (extract_interface : in uu____15166 :: (s.FStar_Syntax_Syntax.sigattrs) else s.FStar_Syntax_Syntax.sigattrs in - let uu___432_15170 = s in + let uu___431_15170 = s in let uu____15171 = let uu____15174 = filter_out_abstract_and_inline s.FStar_Syntax_Syntax.sigquals @@ -7878,10 +7878,10 @@ let (extract_interface : FStar_Syntax_Syntax.sigel = (FStar_Syntax_Syntax.Sig_declare_typ (lid, uvs, t)); FStar_Syntax_Syntax.sigrng = - (uu___432_15170.FStar_Syntax_Syntax.sigrng); + (uu___431_15170.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = uu____15171; FStar_Syntax_Syntax.sigmeta = - (uu___432_15170.FStar_Syntax_Syntax.sigmeta); + (uu___431_15170.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = attrs } in @@ -7985,19 +7985,19 @@ let (extract_interface : if is_assume s.FStar_Syntax_Syntax.sigquals then (let uu____15619 = - let uu___433_15620 = s in + let uu___432_15620 = s in let uu____15621 = filter_out_abstract s.FStar_Syntax_Syntax.sigquals in { FStar_Syntax_Syntax.sigel = - (uu___433_15620.FStar_Syntax_Syntax.sigel); + (uu___432_15620.FStar_Syntax_Syntax.sigel); FStar_Syntax_Syntax.sigrng = - (uu___433_15620.FStar_Syntax_Syntax.sigrng); + (uu___432_15620.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = uu____15621; FStar_Syntax_Syntax.sigmeta = - (uu___433_15620.FStar_Syntax_Syntax.sigmeta); + (uu___432_15620.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___433_15620.FStar_Syntax_Syntax.sigattrs) + (uu___432_15620.FStar_Syntax_Syntax.sigattrs) } in [uu____15619]) else [] @@ -8072,37 +8072,37 @@ let (extract_interface : (if is_haseq_of_abstract_inductive then let uu____15841 = - let uu___434_15842 = s in + let uu___433_15842 = s in let uu____15843 = filter_out_abstract s.FStar_Syntax_Syntax.sigquals in { FStar_Syntax_Syntax.sigel = - (uu___434_15842.FStar_Syntax_Syntax.sigel); + (uu___433_15842.FStar_Syntax_Syntax.sigel); FStar_Syntax_Syntax.sigrng = - (uu___434_15842.FStar_Syntax_Syntax.sigrng); + (uu___433_15842.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = uu____15843; FStar_Syntax_Syntax.sigmeta = - (uu___434_15842.FStar_Syntax_Syntax.sigmeta); + (uu___433_15842.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___434_15842.FStar_Syntax_Syntax.sigattrs) + (uu___433_15842.FStar_Syntax_Syntax.sigattrs) } in [uu____15841] else []) else (let uu____15850 = - let uu___435_15851 = s in + let uu___434_15851 = s in let uu____15852 = filter_out_abstract s.FStar_Syntax_Syntax.sigquals in { FStar_Syntax_Syntax.sigel = - (uu___435_15851.FStar_Syntax_Syntax.sigel); + (uu___434_15851.FStar_Syntax_Syntax.sigel); FStar_Syntax_Syntax.sigrng = - (uu___435_15851.FStar_Syntax_Syntax.sigrng); + (uu___434_15851.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = uu____15852; FStar_Syntax_Syntax.sigmeta = - (uu___435_15851.FStar_Syntax_Syntax.sigmeta); + (uu___434_15851.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___435_15851.FStar_Syntax_Syntax.sigattrs) + (uu___434_15851.FStar_Syntax_Syntax.sigattrs) } in [uu____15850]) | FStar_Syntax_Syntax.Sig_new_effect uu____15855 -> [s] @@ -8111,7 +8111,7 @@ let (extract_interface : | FStar_Syntax_Syntax.Sig_effect_abbrev uu____15858 -> [s] | FStar_Syntax_Syntax.Sig_pragma uu____15871 -> [s]) in - let uu___436_15872 = m in + let uu___435_15872 = m in let uu____15873 = let uu____15874 = FStar_All.pipe_right m.FStar_Syntax_Syntax.declarations @@ -8119,10 +8119,10 @@ let (extract_interface : in FStar_All.pipe_right uu____15874 FStar_List.flatten in { - FStar_Syntax_Syntax.name = (uu___436_15872.FStar_Syntax_Syntax.name); + FStar_Syntax_Syntax.name = (uu___435_15872.FStar_Syntax_Syntax.name); FStar_Syntax_Syntax.declarations = uu____15873; FStar_Syntax_Syntax.exports = - (uu___436_15872.FStar_Syntax_Syntax.exports); + (uu___435_15872.FStar_Syntax_Syntax.exports); FStar_Syntax_Syntax.is_interface = true } @@ -8197,93 +8197,93 @@ let (tc_partial_modul : else "module") (modul.FStar_Syntax_Syntax.name).FStar_Ident.str in let env1 = - let uu___437_16094 = env in + let uu___436_16094 = env in { FStar_TypeChecker_Env.solver = - (uu___437_16094.FStar_TypeChecker_Env.solver); + (uu___436_16094.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___437_16094.FStar_TypeChecker_Env.range); + (uu___436_16094.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___437_16094.FStar_TypeChecker_Env.curmodule); + (uu___436_16094.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___437_16094.FStar_TypeChecker_Env.gamma); + (uu___436_16094.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___437_16094.FStar_TypeChecker_Env.gamma_sig); + (uu___436_16094.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___437_16094.FStar_TypeChecker_Env.gamma_cache); + (uu___436_16094.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___437_16094.FStar_TypeChecker_Env.modules); + (uu___436_16094.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___437_16094.FStar_TypeChecker_Env.expected_typ); + (uu___436_16094.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___437_16094.FStar_TypeChecker_Env.sigtab); + (uu___436_16094.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___437_16094.FStar_TypeChecker_Env.attrtab); + (uu___436_16094.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___437_16094.FStar_TypeChecker_Env.is_pattern); + (uu___436_16094.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___437_16094.FStar_TypeChecker_Env.instantiate_imp); + (uu___436_16094.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___437_16094.FStar_TypeChecker_Env.effects); + (uu___436_16094.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___437_16094.FStar_TypeChecker_Env.generalize); + (uu___436_16094.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___437_16094.FStar_TypeChecker_Env.letrecs); + (uu___436_16094.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___437_16094.FStar_TypeChecker_Env.top_level); + (uu___436_16094.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___437_16094.FStar_TypeChecker_Env.check_uvars); + (uu___436_16094.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___437_16094.FStar_TypeChecker_Env.use_eq); + (uu___436_16094.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = (modul.FStar_Syntax_Syntax.is_interface); FStar_TypeChecker_Env.admit = (Prims.op_Negation verify); FStar_TypeChecker_Env.lax = - (uu___437_16094.FStar_TypeChecker_Env.lax); + (uu___436_16094.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___437_16094.FStar_TypeChecker_Env.lax_universes); + (uu___436_16094.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___437_16094.FStar_TypeChecker_Env.phase1); + (uu___436_16094.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___437_16094.FStar_TypeChecker_Env.failhard); + (uu___436_16094.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___437_16094.FStar_TypeChecker_Env.nosynth); + (uu___436_16094.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___437_16094.FStar_TypeChecker_Env.uvar_subtyping); + (uu___436_16094.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___437_16094.FStar_TypeChecker_Env.tc_term); + (uu___436_16094.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___437_16094.FStar_TypeChecker_Env.type_of); + (uu___436_16094.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___437_16094.FStar_TypeChecker_Env.universe_of); + (uu___436_16094.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___437_16094.FStar_TypeChecker_Env.check_type_of); + (uu___436_16094.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___437_16094.FStar_TypeChecker_Env.use_bv_sorts); + (uu___436_16094.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___437_16094.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___436_16094.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___437_16094.FStar_TypeChecker_Env.normalized_eff_names); + (uu___436_16094.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___437_16094.FStar_TypeChecker_Env.fv_delta_depths); + (uu___436_16094.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___437_16094.FStar_TypeChecker_Env.proof_ns); + (uu___436_16094.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___437_16094.FStar_TypeChecker_Env.synth_hook); + (uu___436_16094.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___437_16094.FStar_TypeChecker_Env.splice); + (uu___436_16094.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___437_16094.FStar_TypeChecker_Env.postprocess); + (uu___436_16094.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___437_16094.FStar_TypeChecker_Env.is_native_tactic); + (uu___436_16094.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___437_16094.FStar_TypeChecker_Env.identifier_info); + (uu___436_16094.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___437_16094.FStar_TypeChecker_Env.tc_hooks); + (uu___436_16094.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___437_16094.FStar_TypeChecker_Env.dsenv); + (uu___436_16094.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___437_16094.FStar_TypeChecker_Env.nbe) + (uu___436_16094.FStar_TypeChecker_Env.nbe) } in let env2 = FStar_TypeChecker_Env.set_current_module env1 @@ -8293,15 +8293,15 @@ let (tc_partial_modul : in match uu____16096 with | (ses,exports,env3) -> - ((let uu___438_16129 = modul in + ((let uu___437_16129 = modul in { FStar_Syntax_Syntax.name = - (uu___438_16129.FStar_Syntax_Syntax.name); + (uu___437_16129.FStar_Syntax_Syntax.name); FStar_Syntax_Syntax.declarations = ses; FStar_Syntax_Syntax.exports = - (uu___438_16129.FStar_Syntax_Syntax.exports); + (uu___437_16129.FStar_Syntax_Syntax.exports); FStar_Syntax_Syntax.is_interface = - (uu___438_16129.FStar_Syntax_Syntax.is_interface) + (uu___437_16129.FStar_Syntax_Syntax.is_interface) }), exports, env3)) let (tc_more_partial_modul : @@ -8318,17 +8318,17 @@ let (tc_more_partial_modul : match uu____16158 with | (ses,exports,env1) -> let modul1 = - let uu___439_16189 = modul in + let uu___438_16189 = modul in { FStar_Syntax_Syntax.name = - (uu___439_16189.FStar_Syntax_Syntax.name); + (uu___438_16189.FStar_Syntax_Syntax.name); FStar_Syntax_Syntax.declarations = (FStar_List.append modul.FStar_Syntax_Syntax.declarations ses); FStar_Syntax_Syntax.exports = - (uu___439_16189.FStar_Syntax_Syntax.exports); + (uu___438_16189.FStar_Syntax_Syntax.exports); FStar_Syntax_Syntax.is_interface = - (uu___439_16189.FStar_Syntax_Syntax.is_interface) + (uu___438_16189.FStar_Syntax_Syntax.is_interface) } in (modul1, exports, env1) @@ -8429,7 +8429,7 @@ and (finish_partial_modul : (m.FStar_Syntax_Syntax.name).FStar_Ident.str) in let en01 = - let uu___440_16349 = en0 in + let uu___439_16349 = en0 in let uu____16350 = let uu____16365 = FStar_All.pipe_right @@ -8439,90 +8439,90 @@ and (finish_partial_modul : (uu____16365, FStar_Pervasives_Native.None) in { FStar_TypeChecker_Env.solver = - (uu___440_16349.FStar_TypeChecker_Env.solver); + (uu___439_16349.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___440_16349.FStar_TypeChecker_Env.range); + (uu___439_16349.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___440_16349.FStar_TypeChecker_Env.curmodule); + (uu___439_16349.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___440_16349.FStar_TypeChecker_Env.gamma); + (uu___439_16349.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___440_16349.FStar_TypeChecker_Env.gamma_sig); + (uu___439_16349.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___440_16349.FStar_TypeChecker_Env.gamma_cache); + (uu___439_16349.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___440_16349.FStar_TypeChecker_Env.modules); + (uu___439_16349.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___440_16349.FStar_TypeChecker_Env.expected_typ); + (uu___439_16349.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___440_16349.FStar_TypeChecker_Env.sigtab); + (uu___439_16349.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___440_16349.FStar_TypeChecker_Env.attrtab); + (uu___439_16349.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___440_16349.FStar_TypeChecker_Env.is_pattern); + (uu___439_16349.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___440_16349.FStar_TypeChecker_Env.instantiate_imp); + (uu___439_16349.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___440_16349.FStar_TypeChecker_Env.effects); + (uu___439_16349.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___440_16349.FStar_TypeChecker_Env.generalize); + (uu___439_16349.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___440_16349.FStar_TypeChecker_Env.letrecs); + (uu___439_16349.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___440_16349.FStar_TypeChecker_Env.top_level); + (uu___439_16349.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___440_16349.FStar_TypeChecker_Env.check_uvars); + (uu___439_16349.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___440_16349.FStar_TypeChecker_Env.use_eq); + (uu___439_16349.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___440_16349.FStar_TypeChecker_Env.is_iface); + (uu___439_16349.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___440_16349.FStar_TypeChecker_Env.admit); + (uu___439_16349.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___440_16349.FStar_TypeChecker_Env.lax); + (uu___439_16349.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___440_16349.FStar_TypeChecker_Env.lax_universes); + (uu___439_16349.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___440_16349.FStar_TypeChecker_Env.phase1); + (uu___439_16349.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___440_16349.FStar_TypeChecker_Env.failhard); + (uu___439_16349.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___440_16349.FStar_TypeChecker_Env.nosynth); + (uu___439_16349.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___440_16349.FStar_TypeChecker_Env.uvar_subtyping); + (uu___439_16349.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___440_16349.FStar_TypeChecker_Env.tc_term); + (uu___439_16349.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___440_16349.FStar_TypeChecker_Env.type_of); + (uu___439_16349.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___440_16349.FStar_TypeChecker_Env.universe_of); + (uu___439_16349.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___440_16349.FStar_TypeChecker_Env.check_type_of); + (uu___439_16349.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___440_16349.FStar_TypeChecker_Env.use_bv_sorts); + (uu___439_16349.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = uu____16350; FStar_TypeChecker_Env.normalized_eff_names = - (uu___440_16349.FStar_TypeChecker_Env.normalized_eff_names); + (uu___439_16349.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___440_16349.FStar_TypeChecker_Env.fv_delta_depths); + (uu___439_16349.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___440_16349.FStar_TypeChecker_Env.proof_ns); + (uu___439_16349.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___440_16349.FStar_TypeChecker_Env.synth_hook); + (uu___439_16349.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___440_16349.FStar_TypeChecker_Env.splice); + (uu___439_16349.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___440_16349.FStar_TypeChecker_Env.postprocess); + (uu___439_16349.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___440_16349.FStar_TypeChecker_Env.is_native_tactic); + (uu___439_16349.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___440_16349.FStar_TypeChecker_Env.identifier_info); + (uu___439_16349.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___440_16349.FStar_TypeChecker_Env.tc_hooks); + (uu___439_16349.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___440_16349.FStar_TypeChecker_Env.dsenv); + (uu___439_16349.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___440_16349.FStar_TypeChecker_Env.nbe) + (uu___439_16349.FStar_TypeChecker_Env.nbe) } in let uu____16411 = let uu____16413 = FStar_Options.interactive () in @@ -8537,28 +8537,28 @@ and (finish_partial_modul : let uu____16421 = tc_modul en0 modul_iface true in match uu____16421 with | (modul_iface1,env) -> - ((let uu___441_16434 = m in + ((let uu___440_16434 = m in { FStar_Syntax_Syntax.name = - (uu___441_16434.FStar_Syntax_Syntax.name); + (uu___440_16434.FStar_Syntax_Syntax.name); FStar_Syntax_Syntax.declarations = - (uu___441_16434.FStar_Syntax_Syntax.declarations); + (uu___440_16434.FStar_Syntax_Syntax.declarations); FStar_Syntax_Syntax.exports = (modul_iface1.FStar_Syntax_Syntax.exports); FStar_Syntax_Syntax.is_interface = - (uu___441_16434.FStar_Syntax_Syntax.is_interface) + (uu___440_16434.FStar_Syntax_Syntax.is_interface) }), env))) else (let modul = - let uu___442_16438 = m in + let uu___441_16438 = m in { FStar_Syntax_Syntax.name = - (uu___442_16438.FStar_Syntax_Syntax.name); + (uu___441_16438.FStar_Syntax_Syntax.name); FStar_Syntax_Syntax.declarations = - (uu___442_16438.FStar_Syntax_Syntax.declarations); + (uu___441_16438.FStar_Syntax_Syntax.declarations); FStar_Syntax_Syntax.exports = exports; FStar_Syntax_Syntax.is_interface = - (uu___442_16438.FStar_Syntax_Syntax.is_interface) + (uu___441_16438.FStar_Syntax_Syntax.is_interface) } in let env = FStar_TypeChecker_Env.finish_module en modul in (let uu____16441 = @@ -8663,7 +8663,7 @@ let (check_module : FStar_Util.print1 "Module before type checking:\n%s\n" uu____16601 else ()); (let env1 = - let uu___443_16607 = env in + let uu___442_16607 = env in let uu____16608 = let uu____16610 = FStar_Options.should_verify @@ -8672,90 +8672,90 @@ let (check_module : Prims.op_Negation uu____16610 in { FStar_TypeChecker_Env.solver = - (uu___443_16607.FStar_TypeChecker_Env.solver); + (uu___442_16607.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___443_16607.FStar_TypeChecker_Env.range); + (uu___442_16607.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___443_16607.FStar_TypeChecker_Env.curmodule); + (uu___442_16607.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___443_16607.FStar_TypeChecker_Env.gamma); + (uu___442_16607.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___443_16607.FStar_TypeChecker_Env.gamma_sig); + (uu___442_16607.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___443_16607.FStar_TypeChecker_Env.gamma_cache); + (uu___442_16607.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___443_16607.FStar_TypeChecker_Env.modules); + (uu___442_16607.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___443_16607.FStar_TypeChecker_Env.expected_typ); + (uu___442_16607.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___443_16607.FStar_TypeChecker_Env.sigtab); + (uu___442_16607.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___443_16607.FStar_TypeChecker_Env.attrtab); + (uu___442_16607.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___443_16607.FStar_TypeChecker_Env.is_pattern); + (uu___442_16607.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___443_16607.FStar_TypeChecker_Env.instantiate_imp); + (uu___442_16607.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___443_16607.FStar_TypeChecker_Env.effects); + (uu___442_16607.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___443_16607.FStar_TypeChecker_Env.generalize); + (uu___442_16607.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___443_16607.FStar_TypeChecker_Env.letrecs); + (uu___442_16607.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___443_16607.FStar_TypeChecker_Env.top_level); + (uu___442_16607.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___443_16607.FStar_TypeChecker_Env.check_uvars); + (uu___442_16607.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___443_16607.FStar_TypeChecker_Env.use_eq); + (uu___442_16607.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___443_16607.FStar_TypeChecker_Env.is_iface); + (uu___442_16607.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___443_16607.FStar_TypeChecker_Env.admit); + (uu___442_16607.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = uu____16608; FStar_TypeChecker_Env.lax_universes = - (uu___443_16607.FStar_TypeChecker_Env.lax_universes); + (uu___442_16607.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___443_16607.FStar_TypeChecker_Env.phase1); + (uu___442_16607.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___443_16607.FStar_TypeChecker_Env.failhard); + (uu___442_16607.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___443_16607.FStar_TypeChecker_Env.nosynth); + (uu___442_16607.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___443_16607.FStar_TypeChecker_Env.uvar_subtyping); + (uu___442_16607.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___443_16607.FStar_TypeChecker_Env.tc_term); + (uu___442_16607.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___443_16607.FStar_TypeChecker_Env.type_of); + (uu___442_16607.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___443_16607.FStar_TypeChecker_Env.universe_of); + (uu___442_16607.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___443_16607.FStar_TypeChecker_Env.check_type_of); + (uu___442_16607.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___443_16607.FStar_TypeChecker_Env.use_bv_sorts); + (uu___442_16607.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___443_16607.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___442_16607.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___443_16607.FStar_TypeChecker_Env.normalized_eff_names); + (uu___442_16607.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___443_16607.FStar_TypeChecker_Env.fv_delta_depths); + (uu___442_16607.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___443_16607.FStar_TypeChecker_Env.proof_ns); + (uu___442_16607.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___443_16607.FStar_TypeChecker_Env.synth_hook); + (uu___442_16607.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___443_16607.FStar_TypeChecker_Env.splice); + (uu___442_16607.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___443_16607.FStar_TypeChecker_Env.postprocess); + (uu___442_16607.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___443_16607.FStar_TypeChecker_Env.is_native_tactic); + (uu___442_16607.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___443_16607.FStar_TypeChecker_Env.identifier_info); + (uu___442_16607.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___443_16607.FStar_TypeChecker_Env.tc_hooks); + (uu___442_16607.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___443_16607.FStar_TypeChecker_Env.dsenv); + (uu___442_16607.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___443_16607.FStar_TypeChecker_Env.nbe) + (uu___442_16607.FStar_TypeChecker_Env.nbe) } in let uu____16612 = tc_modul env1 m b in match uu____16612 with @@ -8802,7 +8802,7 @@ let (check_module : in match uu____16671 with | (univnames1,e) -> - let uu___444_16678 = lb in + let uu___443_16678 = lb in let uu____16679 = let uu____16682 = FStar_TypeChecker_Env.push_univ_vars env2 @@ -8811,21 +8811,21 @@ let (check_module : n1 uu____16682 e in { FStar_Syntax_Syntax.lbname = - (uu___444_16678.FStar_Syntax_Syntax.lbname); + (uu___443_16678.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___444_16678.FStar_Syntax_Syntax.lbunivs); + (uu___443_16678.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = - (uu___444_16678.FStar_Syntax_Syntax.lbtyp); + (uu___443_16678.FStar_Syntax_Syntax.lbtyp); FStar_Syntax_Syntax.lbeff = - (uu___444_16678.FStar_Syntax_Syntax.lbeff); + (uu___443_16678.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = uu____16679; FStar_Syntax_Syntax.lbattrs = - (uu___444_16678.FStar_Syntax_Syntax.lbattrs); + (uu___443_16678.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___444_16678.FStar_Syntax_Syntax.lbpos) + (uu___443_16678.FStar_Syntax_Syntax.lbpos) } in - let uu___445_16683 = se in + let uu___444_16683 = se in let uu____16684 = let uu____16685 = let uu____16692 = @@ -8836,29 +8836,29 @@ let (check_module : { FStar_Syntax_Syntax.sigel = uu____16684; FStar_Syntax_Syntax.sigrng = - (uu___445_16683.FStar_Syntax_Syntax.sigrng); + (uu___444_16683.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___445_16683.FStar_Syntax_Syntax.sigquals); + (uu___444_16683.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___445_16683.FStar_Syntax_Syntax.sigmeta); + (uu___444_16683.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___445_16683.FStar_Syntax_Syntax.sigattrs) + (uu___444_16683.FStar_Syntax_Syntax.sigattrs) } | uu____16701 -> se in let normalized_module = - let uu___446_16703 = m1 in + let uu___445_16703 = m1 in let uu____16704 = FStar_List.map normalize_toplevel_lets m1.FStar_Syntax_Syntax.declarations in { FStar_Syntax_Syntax.name = - (uu___446_16703.FStar_Syntax_Syntax.name); + (uu___445_16703.FStar_Syntax_Syntax.name); FStar_Syntax_Syntax.declarations = uu____16704; FStar_Syntax_Syntax.exports = - (uu___446_16703.FStar_Syntax_Syntax.exports); + (uu___445_16703.FStar_Syntax_Syntax.exports); FStar_Syntax_Syntax.is_interface = - (uu___446_16703.FStar_Syntax_Syntax.is_interface) + (uu___445_16703.FStar_Syntax_Syntax.is_interface) } in let uu____16705 = FStar_Syntax_Print.modul_to_string normalized_module in diff --git a/src/ocaml-output/FStar_TypeChecker_TcInductive.ml b/src/ocaml-output/FStar_TypeChecker_TcInductive.ml index dde19957999..8a6dc40ed3f 100644 --- a/src/ocaml-output/FStar_TypeChecker_TcInductive.ml +++ b/src/ocaml-output/FStar_TypeChecker_TcInductive.ml @@ -212,7 +212,7 @@ let (tc_tycon : (uvs1, t_tc) in (uu____446, - (let uu___365_452 = s in + (let uu___364_452 = s in { FStar_Syntax_Syntax.sigel = @@ -221,16 +221,16 @@ let (tc_tycon : mutuals, data)); FStar_Syntax_Syntax.sigrng = - (uu___365_452.FStar_Syntax_Syntax.sigrng); + (uu___364_452.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___365_452.FStar_Syntax_Syntax.sigquals); + (uu___364_452.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___365_452.FStar_Syntax_Syntax.sigmeta); + (uu___364_452.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___365_452.FStar_Syntax_Syntax.sigattrs) + (uu___364_452.FStar_Syntax_Syntax.sigattrs) }), u, guard1))))))))) | uu____457 -> failwith "impossible" @@ -656,7 +656,7 @@ let (tc_data : FStar_Syntax_Subst.close_univ_vars _uvs1 t2 in - ((let uu___366_1468 = se + ((let uu___365_1468 = se in { FStar_Syntax_Syntax.sigel @@ -667,16 +667,16 @@ let (tc_data : [])); FStar_Syntax_Syntax.sigrng = - (uu___366_1468.FStar_Syntax_Syntax.sigrng); + (uu___365_1468.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___366_1468.FStar_Syntax_Syntax.sigquals); + (uu___365_1468.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___366_1468.FStar_Syntax_Syntax.sigmeta); + (uu___365_1468.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___366_1468.FStar_Syntax_Syntax.sigattrs) + (uu___365_1468.FStar_Syntax_Syntax.sigattrs) }), g)))))))))))) | uu____1472 -> failwith "impossible" @@ -697,18 +697,18 @@ let (generalize_and_inst_within : let tc_universe_vars = FStar_List.map FStar_Pervasives_Native.snd tcs in let g1 = - let uu___367_1539 = g in + let uu___366_1539 = g in { FStar_TypeChecker_Env.guard_f = - (uu___367_1539.FStar_TypeChecker_Env.guard_f); + (uu___366_1539.FStar_TypeChecker_Env.guard_f); FStar_TypeChecker_Env.deferred = - (uu___367_1539.FStar_TypeChecker_Env.deferred); + (uu___366_1539.FStar_TypeChecker_Env.deferred); FStar_TypeChecker_Env.univ_ineqs = (tc_universe_vars, (FStar_Pervasives_Native.snd g.FStar_TypeChecker_Env.univ_ineqs)); FStar_TypeChecker_Env.implicits = - (uu___367_1539.FStar_TypeChecker_Env.implicits) + (uu___366_1539.FStar_TypeChecker_Env.implicits) } in (let uu____1549 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) @@ -858,7 +858,7 @@ let (generalize_and_inst_within : in (match uu____1959 with | (tps1,t3) -> - let uu___368_2100 = se + let uu___367_2100 = se in { FStar_Syntax_Syntax.sigel @@ -870,16 +870,16 @@ let (generalize_and_inst_within : datas1)); FStar_Syntax_Syntax.sigrng = - (uu___368_2100.FStar_Syntax_Syntax.sigrng); + (uu___367_2100.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___368_2100.FStar_Syntax_Syntax.sigquals); + (uu___367_2100.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___368_2100.FStar_Syntax_Syntax.sigmeta); + (uu___367_2100.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___368_2100.FStar_Syntax_Syntax.sigattrs) + (uu___367_2100.FStar_Syntax_Syntax.sigattrs) }) | uu____2105 -> failwith "Impossible")) @@ -899,8 +899,8 @@ let (generalize_and_inst_within : let tc_insts = FStar_All.pipe_right tcs1 (FStar_List.map - (fun uu___356_2134 -> - match uu___356_2134 with + (fun uu___355_2134 -> + match uu___355_2134 with | { FStar_Syntax_Syntax.sigel = @@ -939,7 +939,7 @@ let (generalize_and_inst_within : (FStar_Syntax_Subst.close_univ_vars uvs1) in - let uu___369_2213 = d + let uu___368_2213 = d in { FStar_Syntax_Syntax.sigel @@ -950,16 +950,16 @@ let (generalize_and_inst_within : mutuals)); FStar_Syntax_Syntax.sigrng = - (uu___369_2213.FStar_Syntax_Syntax.sigrng); + (uu___368_2213.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___369_2213.FStar_Syntax_Syntax.sigquals); + (uu___368_2213.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___369_2213.FStar_Syntax_Syntax.sigmeta); + (uu___368_2213.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___369_2213.FStar_Syntax_Syntax.sigattrs) + (uu___368_2213.FStar_Syntax_Syntax.sigattrs) } | uu____2217 -> failwith "Impossible")) @@ -1830,7 +1830,7 @@ let (get_optimized_haseq_axiom : in let fml = FStar_Syntax_Util.mk_imp haseq_bs haseq_ind in let fml1 = - let uu___370_5060 = fml in + let uu___369_5060 = fml in let uu____5061 = let uu____5062 = let uu____5069 = @@ -1846,9 +1846,9 @@ let (get_optimized_haseq_axiom : { FStar_Syntax_Syntax.n = uu____5061; FStar_Syntax_Syntax.pos = - (uu___370_5060.FStar_Syntax_Syntax.pos); + (uu___369_5060.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___370_5060.FStar_Syntax_Syntax.vars) + (uu___369_5060.FStar_Syntax_Syntax.vars) } in let fml2 = FStar_List.fold_right @@ -2189,8 +2189,8 @@ let (unoptimized_haseq_data : | FStar_Syntax_Syntax.Tm_meta (t',uu____6255) -> is_mutual t' | uu____6260 -> false - and exists_mutual uu___357_6262 = - match uu___357_6262 with + and exists_mutual uu___356_6262 = + match uu___356_6262 with | [] -> false | hd1::tl1 -> (is_mutual hd1) || (exists_mutual tl1) in @@ -2382,7 +2382,7 @@ let (unoptimized_haseq_ty : let fml = FStar_Syntax_Util.mk_imp data_cond haseq_ind in let fml1 = - let uu___371_6847 = fml in + let uu___370_6847 = fml in let uu____6848 = let uu____6849 = let uu____6856 = @@ -2399,9 +2399,9 @@ let (unoptimized_haseq_ty : { FStar_Syntax_Syntax.n = uu____6848; FStar_Syntax_Syntax.pos = - (uu___371_6847.FStar_Syntax_Syntax.pos); + (uu___370_6847.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___371_6847.FStar_Syntax_Syntax.vars) + (uu___370_6847.FStar_Syntax_Syntax.vars) } in let fml2 = FStar_List.fold_right @@ -2523,8 +2523,8 @@ let (check_inductive_well_typedness : let uu____7257 = FStar_All.pipe_right ses (FStar_List.partition - (fun uu___358_7282 -> - match uu___358_7282 with + (fun uu___357_7282 -> + match uu___357_7282 with | { FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_inductive_typ uu____7284; @@ -2539,8 +2539,8 @@ let (check_inductive_well_typedness : ((let uu____7333 = FStar_All.pipe_right datas (FStar_Util.for_some - (fun uu___359_7344 -> - match uu___359_7344 with + (fun uu___358_7344 -> + match uu___358_7344 with | { FStar_Syntax_Syntax.sigel = FStar_Syntax_Syntax.Sig_datacon uu____7346; @@ -2609,17 +2609,17 @@ let (check_inductive_well_typedness : | uu____7525 -> failwith "Impossible, can't happen" in - let uu___372_7527 = se in + let uu___371_7527 = se in { FStar_Syntax_Syntax.sigel = sigel; FStar_Syntax_Syntax.sigrng = - (uu___372_7527.FStar_Syntax_Syntax.sigrng); + (uu___371_7527.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___372_7527.FStar_Syntax_Syntax.sigquals); + (uu___371_7527.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___372_7527.FStar_Syntax_Syntax.sigmeta); + (uu___371_7527.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___372_7527.FStar_Syntax_Syntax.sigattrs) + (uu___371_7527.FStar_Syntax_Syntax.sigattrs) }) tys in let datas1 = @@ -2641,17 +2641,17 @@ let (check_inductive_well_typedness : | uu____7568 -> failwith "Impossible, can't happen" in - let uu___373_7570 = se in + let uu___372_7570 = se in { FStar_Syntax_Syntax.sigel = sigel; FStar_Syntax_Syntax.sigrng = - (uu___373_7570.FStar_Syntax_Syntax.sigrng); + (uu___372_7570.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = - (uu___373_7570.FStar_Syntax_Syntax.sigquals); + (uu___372_7570.FStar_Syntax_Syntax.sigquals); FStar_Syntax_Syntax.sigmeta = - (uu___373_7570.FStar_Syntax_Syntax.sigmeta); + (uu___372_7570.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___373_7570.FStar_Syntax_Syntax.sigattrs) + (uu___372_7570.FStar_Syntax_Syntax.sigattrs) }) datas in let uu____7571 = @@ -2984,12 +2984,12 @@ let (mk_discriminator_and_indexed_projectors : FStar_Syntax_Util.b2t uu____8292 in FStar_Syntax_Util.refine x uu____8289 in let uu____8338 = - let uu___374_8339 = projectee arg_typ in + let uu___373_8339 = projectee arg_typ in { FStar_Syntax_Syntax.ppname = - (uu___374_8339.FStar_Syntax_Syntax.ppname); + (uu___373_8339.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___374_8339.FStar_Syntax_Syntax.index); + (uu___373_8339.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = sort } in FStar_Syntax_Syntax.mk_binder uu____8338) @@ -3046,8 +3046,8 @@ let (mk_discriminator_and_indexed_projectors : let quals = let uu____8505 = FStar_List.filter - (fun uu___360_8509 -> - match uu___360_8509 with + (fun uu___359_8509 -> + match uu___359_8509 with | FStar_Syntax_Syntax.Abstract -> Prims.op_Negation only_decl | FStar_Syntax_Syntax.Inline_for_extraction @@ -3401,8 +3401,8 @@ let (mk_discriminator_and_indexed_projectors : then let uu____9214 = FStar_List.filter - (fun uu___361_9218 -> - match uu___361_9218 + (fun uu___360_9218 -> + match uu___360_9218 with | FStar_Syntax_Syntax.Abstract -> false @@ -3416,8 +3416,8 @@ let (mk_discriminator_and_indexed_projectors : let iquals1 = FStar_All.pipe_right iquals (FStar_List.filter - (fun uu___362_9236 -> - match uu___362_9236 + (fun uu___361_9236 -> + match uu___361_9236 with | FStar_Syntax_Syntax.Inline_for_extraction -> true @@ -3810,8 +3810,8 @@ let (mk_data_operations : FStar_All.pipe_right se.FStar_Syntax_Syntax.sigquals (FStar_Util.for_some - (fun uu___363_9969 -> - match uu___363_9969 with + (fun uu___362_9969 -> + match uu___362_9969 with | FStar_Syntax_Syntax.RecordConstructor uu____9971 -> true | uu____9981 -> false)) @@ -3820,8 +3820,8 @@ let (mk_data_operations : then false else should_refine in let fv_qual = - let filter_records uu___364_9996 = - match uu___364_9996 with + let filter_records uu___363_9996 = + match uu___363_9996 with | FStar_Syntax_Syntax.RecordConstructor (uu____9999,fns) -> FStar_Pervasives_Native.Some diff --git a/src/ocaml-output/FStar_TypeChecker_TcTerm.ml b/src/ocaml-output/FStar_TypeChecker_TcTerm.ml index 995c668495f..a4b19f057da 100644 --- a/src/ocaml-output/FStar_TypeChecker_TcTerm.ml +++ b/src/ocaml-output/FStar_TypeChecker_TcTerm.ml @@ -2,172 +2,172 @@ open Prims let (instantiate_both : FStar_TypeChecker_Env.env -> FStar_TypeChecker_Env.env) = fun env -> - let uu___354_6 = env in + let uu___353_6 = env in { FStar_TypeChecker_Env.solver = - (uu___354_6.FStar_TypeChecker_Env.solver); - FStar_TypeChecker_Env.range = (uu___354_6.FStar_TypeChecker_Env.range); + (uu___353_6.FStar_TypeChecker_Env.solver); + FStar_TypeChecker_Env.range = (uu___353_6.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___354_6.FStar_TypeChecker_Env.curmodule); - FStar_TypeChecker_Env.gamma = (uu___354_6.FStar_TypeChecker_Env.gamma); + (uu___353_6.FStar_TypeChecker_Env.curmodule); + FStar_TypeChecker_Env.gamma = (uu___353_6.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___354_6.FStar_TypeChecker_Env.gamma_sig); + (uu___353_6.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___354_6.FStar_TypeChecker_Env.gamma_cache); + (uu___353_6.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___354_6.FStar_TypeChecker_Env.modules); + (uu___353_6.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___354_6.FStar_TypeChecker_Env.expected_typ); + (uu___353_6.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___354_6.FStar_TypeChecker_Env.sigtab); + (uu___353_6.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___354_6.FStar_TypeChecker_Env.attrtab); + (uu___353_6.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___354_6.FStar_TypeChecker_Env.is_pattern); + (uu___353_6.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = true; FStar_TypeChecker_Env.effects = - (uu___354_6.FStar_TypeChecker_Env.effects); + (uu___353_6.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___354_6.FStar_TypeChecker_Env.generalize); + (uu___353_6.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___354_6.FStar_TypeChecker_Env.letrecs); + (uu___353_6.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___354_6.FStar_TypeChecker_Env.top_level); + (uu___353_6.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___354_6.FStar_TypeChecker_Env.check_uvars); + (uu___353_6.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___354_6.FStar_TypeChecker_Env.use_eq); + (uu___353_6.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___354_6.FStar_TypeChecker_Env.is_iface); - FStar_TypeChecker_Env.admit = (uu___354_6.FStar_TypeChecker_Env.admit); - FStar_TypeChecker_Env.lax = (uu___354_6.FStar_TypeChecker_Env.lax); + (uu___353_6.FStar_TypeChecker_Env.is_iface); + FStar_TypeChecker_Env.admit = (uu___353_6.FStar_TypeChecker_Env.admit); + FStar_TypeChecker_Env.lax = (uu___353_6.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___354_6.FStar_TypeChecker_Env.lax_universes); + (uu___353_6.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___354_6.FStar_TypeChecker_Env.phase1); + (uu___353_6.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___354_6.FStar_TypeChecker_Env.failhard); + (uu___353_6.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___354_6.FStar_TypeChecker_Env.nosynth); + (uu___353_6.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___354_6.FStar_TypeChecker_Env.uvar_subtyping); + (uu___353_6.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___354_6.FStar_TypeChecker_Env.tc_term); + (uu___353_6.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___354_6.FStar_TypeChecker_Env.type_of); + (uu___353_6.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___354_6.FStar_TypeChecker_Env.universe_of); + (uu___353_6.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___354_6.FStar_TypeChecker_Env.check_type_of); + (uu___353_6.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___354_6.FStar_TypeChecker_Env.use_bv_sorts); + (uu___353_6.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___354_6.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___353_6.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___354_6.FStar_TypeChecker_Env.normalized_eff_names); + (uu___353_6.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___354_6.FStar_TypeChecker_Env.fv_delta_depths); + (uu___353_6.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___354_6.FStar_TypeChecker_Env.proof_ns); + (uu___353_6.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___354_6.FStar_TypeChecker_Env.synth_hook); + (uu___353_6.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___354_6.FStar_TypeChecker_Env.splice); + (uu___353_6.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___354_6.FStar_TypeChecker_Env.postprocess); + (uu___353_6.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___354_6.FStar_TypeChecker_Env.is_native_tactic); + (uu___353_6.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___354_6.FStar_TypeChecker_Env.identifier_info); + (uu___353_6.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___354_6.FStar_TypeChecker_Env.tc_hooks); - FStar_TypeChecker_Env.dsenv = (uu___354_6.FStar_TypeChecker_Env.dsenv); - FStar_TypeChecker_Env.nbe = (uu___354_6.FStar_TypeChecker_Env.nbe) + (uu___353_6.FStar_TypeChecker_Env.tc_hooks); + FStar_TypeChecker_Env.dsenv = (uu___353_6.FStar_TypeChecker_Env.dsenv); + FStar_TypeChecker_Env.nbe = (uu___353_6.FStar_TypeChecker_Env.nbe) } let (no_inst : FStar_TypeChecker_Env.env -> FStar_TypeChecker_Env.env) = fun env -> - let uu___355_14 = env in + let uu___354_14 = env in { FStar_TypeChecker_Env.solver = - (uu___355_14.FStar_TypeChecker_Env.solver); - FStar_TypeChecker_Env.range = (uu___355_14.FStar_TypeChecker_Env.range); + (uu___354_14.FStar_TypeChecker_Env.solver); + FStar_TypeChecker_Env.range = (uu___354_14.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___355_14.FStar_TypeChecker_Env.curmodule); - FStar_TypeChecker_Env.gamma = (uu___355_14.FStar_TypeChecker_Env.gamma); + (uu___354_14.FStar_TypeChecker_Env.curmodule); + FStar_TypeChecker_Env.gamma = (uu___354_14.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___355_14.FStar_TypeChecker_Env.gamma_sig); + (uu___354_14.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___355_14.FStar_TypeChecker_Env.gamma_cache); + (uu___354_14.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___355_14.FStar_TypeChecker_Env.modules); + (uu___354_14.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___355_14.FStar_TypeChecker_Env.expected_typ); + (uu___354_14.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___355_14.FStar_TypeChecker_Env.sigtab); + (uu___354_14.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___355_14.FStar_TypeChecker_Env.attrtab); + (uu___354_14.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___355_14.FStar_TypeChecker_Env.is_pattern); + (uu___354_14.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = false; FStar_TypeChecker_Env.effects = - (uu___355_14.FStar_TypeChecker_Env.effects); + (uu___354_14.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___355_14.FStar_TypeChecker_Env.generalize); + (uu___354_14.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___355_14.FStar_TypeChecker_Env.letrecs); + (uu___354_14.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___355_14.FStar_TypeChecker_Env.top_level); + (uu___354_14.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___355_14.FStar_TypeChecker_Env.check_uvars); + (uu___354_14.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___355_14.FStar_TypeChecker_Env.use_eq); + (uu___354_14.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___355_14.FStar_TypeChecker_Env.is_iface); - FStar_TypeChecker_Env.admit = (uu___355_14.FStar_TypeChecker_Env.admit); - FStar_TypeChecker_Env.lax = (uu___355_14.FStar_TypeChecker_Env.lax); + (uu___354_14.FStar_TypeChecker_Env.is_iface); + FStar_TypeChecker_Env.admit = (uu___354_14.FStar_TypeChecker_Env.admit); + FStar_TypeChecker_Env.lax = (uu___354_14.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___355_14.FStar_TypeChecker_Env.lax_universes); + (uu___354_14.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___355_14.FStar_TypeChecker_Env.phase1); + (uu___354_14.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___355_14.FStar_TypeChecker_Env.failhard); + (uu___354_14.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___355_14.FStar_TypeChecker_Env.nosynth); + (uu___354_14.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___355_14.FStar_TypeChecker_Env.uvar_subtyping); + (uu___354_14.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___355_14.FStar_TypeChecker_Env.tc_term); + (uu___354_14.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___355_14.FStar_TypeChecker_Env.type_of); + (uu___354_14.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___355_14.FStar_TypeChecker_Env.universe_of); + (uu___354_14.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___355_14.FStar_TypeChecker_Env.check_type_of); + (uu___354_14.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___355_14.FStar_TypeChecker_Env.use_bv_sorts); + (uu___354_14.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___355_14.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___354_14.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___355_14.FStar_TypeChecker_Env.normalized_eff_names); + (uu___354_14.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___355_14.FStar_TypeChecker_Env.fv_delta_depths); + (uu___354_14.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___355_14.FStar_TypeChecker_Env.proof_ns); + (uu___354_14.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___355_14.FStar_TypeChecker_Env.synth_hook); + (uu___354_14.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___355_14.FStar_TypeChecker_Env.splice); + (uu___354_14.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___355_14.FStar_TypeChecker_Env.postprocess); + (uu___354_14.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___355_14.FStar_TypeChecker_Env.is_native_tactic); + (uu___354_14.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___355_14.FStar_TypeChecker_Env.identifier_info); + (uu___354_14.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___355_14.FStar_TypeChecker_Env.tc_hooks); - FStar_TypeChecker_Env.dsenv = (uu___355_14.FStar_TypeChecker_Env.dsenv); - FStar_TypeChecker_Env.nbe = (uu___355_14.FStar_TypeChecker_Env.nbe) + (uu___354_14.FStar_TypeChecker_Env.tc_hooks); + FStar_TypeChecker_Env.dsenv = (uu___354_14.FStar_TypeChecker_Env.dsenv); + FStar_TypeChecker_Env.nbe = (uu___354_14.FStar_TypeChecker_Env.nbe) } let (mk_lex_list : @@ -202,8 +202,8 @@ let (is_eq : FStar_Syntax_Syntax.arg_qualifier FStar_Pervasives_Native.option -> Prims.bool) = - fun uu___347_121 -> - match uu___347_121 with + fun uu___346_121 -> + match uu___346_121 with | FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Equality ) -> true | uu____126 -> false @@ -803,93 +803,93 @@ let (guard_letrecs : | letrecs -> let r = FStar_TypeChecker_Env.get_range env in let env1 = - let uu___356_1592 = env in + let uu___355_1592 = env in { FStar_TypeChecker_Env.solver = - (uu___356_1592.FStar_TypeChecker_Env.solver); + (uu___355_1592.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___356_1592.FStar_TypeChecker_Env.range); + (uu___355_1592.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___356_1592.FStar_TypeChecker_Env.curmodule); + (uu___355_1592.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___356_1592.FStar_TypeChecker_Env.gamma); + (uu___355_1592.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___356_1592.FStar_TypeChecker_Env.gamma_sig); + (uu___355_1592.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___356_1592.FStar_TypeChecker_Env.gamma_cache); + (uu___355_1592.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___356_1592.FStar_TypeChecker_Env.modules); + (uu___355_1592.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___356_1592.FStar_TypeChecker_Env.expected_typ); + (uu___355_1592.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___356_1592.FStar_TypeChecker_Env.sigtab); + (uu___355_1592.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___356_1592.FStar_TypeChecker_Env.attrtab); + (uu___355_1592.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___356_1592.FStar_TypeChecker_Env.is_pattern); + (uu___355_1592.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___356_1592.FStar_TypeChecker_Env.instantiate_imp); + (uu___355_1592.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___356_1592.FStar_TypeChecker_Env.effects); + (uu___355_1592.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___356_1592.FStar_TypeChecker_Env.generalize); + (uu___355_1592.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = []; FStar_TypeChecker_Env.top_level = - (uu___356_1592.FStar_TypeChecker_Env.top_level); + (uu___355_1592.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___356_1592.FStar_TypeChecker_Env.check_uvars); + (uu___355_1592.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___356_1592.FStar_TypeChecker_Env.use_eq); + (uu___355_1592.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___356_1592.FStar_TypeChecker_Env.is_iface); + (uu___355_1592.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___356_1592.FStar_TypeChecker_Env.admit); + (uu___355_1592.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___356_1592.FStar_TypeChecker_Env.lax); + (uu___355_1592.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___356_1592.FStar_TypeChecker_Env.lax_universes); + (uu___355_1592.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___356_1592.FStar_TypeChecker_Env.phase1); + (uu___355_1592.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___356_1592.FStar_TypeChecker_Env.failhard); + (uu___355_1592.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___356_1592.FStar_TypeChecker_Env.nosynth); + (uu___355_1592.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___356_1592.FStar_TypeChecker_Env.uvar_subtyping); + (uu___355_1592.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___356_1592.FStar_TypeChecker_Env.tc_term); + (uu___355_1592.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___356_1592.FStar_TypeChecker_Env.type_of); + (uu___355_1592.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___356_1592.FStar_TypeChecker_Env.universe_of); + (uu___355_1592.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___356_1592.FStar_TypeChecker_Env.check_type_of); + (uu___355_1592.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___356_1592.FStar_TypeChecker_Env.use_bv_sorts); + (uu___355_1592.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___356_1592.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___355_1592.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___356_1592.FStar_TypeChecker_Env.normalized_eff_names); + (uu___355_1592.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___356_1592.FStar_TypeChecker_Env.fv_delta_depths); + (uu___355_1592.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___356_1592.FStar_TypeChecker_Env.proof_ns); + (uu___355_1592.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___356_1592.FStar_TypeChecker_Env.synth_hook); + (uu___355_1592.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___356_1592.FStar_TypeChecker_Env.splice); + (uu___355_1592.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___356_1592.FStar_TypeChecker_Env.postprocess); + (uu___355_1592.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___356_1592.FStar_TypeChecker_Env.is_native_tactic); + (uu___355_1592.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___356_1592.FStar_TypeChecker_Env.identifier_info); + (uu___355_1592.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___356_1592.FStar_TypeChecker_Env.tc_hooks); + (uu___355_1592.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___356_1592.FStar_TypeChecker_Env.dsenv); + (uu___355_1592.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___356_1592.FStar_TypeChecker_Env.nbe) + (uu___355_1592.FStar_TypeChecker_Env.nbe) } in let precedes = FStar_TypeChecker_Util.fvar_const env1 @@ -944,8 +944,8 @@ let (guard_letrecs : let uu____1763 = FStar_All.pipe_right cflags (FStar_List.tryFind - (fun uu___348_1772 -> - match uu___348_1772 with + (fun uu___347_1772 -> + match uu___347_1772 with | FStar_Syntax_Syntax.DECREASES uu____1774 -> true | uu____1778 -> false)) in @@ -1021,15 +1021,15 @@ let (guard_letrecs : (match uu____2042 with | (bs,(last1,imp)) -> let last2 = - let uu___357_2105 = last1 in + let uu___356_2105 = last1 in let uu____2106 = FStar_Syntax_Util.refine last1 precedes2 in { FStar_Syntax_Syntax.ppname = - (uu___357_2105.FStar_Syntax_Syntax.ppname); + (uu___356_2105.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___357_2105.FStar_Syntax_Syntax.index); + (uu___356_2105.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = uu____2106 } in let refined_formals = @@ -1107,93 +1107,93 @@ let rec (tc_term : FStar_Util.record_time (fun uu____2855 -> tc_maybe_toplevel_term - (let uu___358_2858 = env in + (let uu___357_2858 = env in { FStar_TypeChecker_Env.solver = - (uu___358_2858.FStar_TypeChecker_Env.solver); + (uu___357_2858.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___358_2858.FStar_TypeChecker_Env.range); + (uu___357_2858.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___358_2858.FStar_TypeChecker_Env.curmodule); + (uu___357_2858.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___358_2858.FStar_TypeChecker_Env.gamma); + (uu___357_2858.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___358_2858.FStar_TypeChecker_Env.gamma_sig); + (uu___357_2858.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___358_2858.FStar_TypeChecker_Env.gamma_cache); + (uu___357_2858.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___358_2858.FStar_TypeChecker_Env.modules); + (uu___357_2858.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___358_2858.FStar_TypeChecker_Env.expected_typ); + (uu___357_2858.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___358_2858.FStar_TypeChecker_Env.sigtab); + (uu___357_2858.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___358_2858.FStar_TypeChecker_Env.attrtab); + (uu___357_2858.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___358_2858.FStar_TypeChecker_Env.is_pattern); + (uu___357_2858.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___358_2858.FStar_TypeChecker_Env.instantiate_imp); + (uu___357_2858.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___358_2858.FStar_TypeChecker_Env.effects); + (uu___357_2858.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___358_2858.FStar_TypeChecker_Env.generalize); + (uu___357_2858.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___358_2858.FStar_TypeChecker_Env.letrecs); + (uu___357_2858.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = false; FStar_TypeChecker_Env.check_uvars = - (uu___358_2858.FStar_TypeChecker_Env.check_uvars); + (uu___357_2858.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___358_2858.FStar_TypeChecker_Env.use_eq); + (uu___357_2858.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___358_2858.FStar_TypeChecker_Env.is_iface); + (uu___357_2858.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___358_2858.FStar_TypeChecker_Env.admit); + (uu___357_2858.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___358_2858.FStar_TypeChecker_Env.lax); + (uu___357_2858.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___358_2858.FStar_TypeChecker_Env.lax_universes); + (uu___357_2858.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___358_2858.FStar_TypeChecker_Env.phase1); + (uu___357_2858.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___358_2858.FStar_TypeChecker_Env.failhard); + (uu___357_2858.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___358_2858.FStar_TypeChecker_Env.nosynth); + (uu___357_2858.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___358_2858.FStar_TypeChecker_Env.uvar_subtyping); + (uu___357_2858.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___358_2858.FStar_TypeChecker_Env.tc_term); + (uu___357_2858.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___358_2858.FStar_TypeChecker_Env.type_of); + (uu___357_2858.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___358_2858.FStar_TypeChecker_Env.universe_of); + (uu___357_2858.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___358_2858.FStar_TypeChecker_Env.check_type_of); + (uu___357_2858.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___358_2858.FStar_TypeChecker_Env.use_bv_sorts); + (uu___357_2858.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___358_2858.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___357_2858.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___358_2858.FStar_TypeChecker_Env.normalized_eff_names); + (uu___357_2858.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___358_2858.FStar_TypeChecker_Env.fv_delta_depths); + (uu___357_2858.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___358_2858.FStar_TypeChecker_Env.proof_ns); + (uu___357_2858.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___358_2858.FStar_TypeChecker_Env.synth_hook); + (uu___357_2858.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___358_2858.FStar_TypeChecker_Env.splice); + (uu___357_2858.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___358_2858.FStar_TypeChecker_Env.postprocess); + (uu___357_2858.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___358_2858.FStar_TypeChecker_Env.is_native_tactic); + (uu___357_2858.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___358_2858.FStar_TypeChecker_Env.identifier_info); + (uu___357_2858.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___358_2858.FStar_TypeChecker_Env.tc_hooks); + (uu___357_2858.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___358_2858.FStar_TypeChecker_Env.dsenv); + (uu___357_2858.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___358_2858.FStar_TypeChecker_Env.nbe) + (uu___357_2858.FStar_TypeChecker_Env.nbe) }) e) in match uu____2836 with @@ -1272,8 +1272,8 @@ and (tc_maybe_toplevel_term : | FStar_Syntax_Syntax.Tm_type uu____3050 -> tc_value env1 e | FStar_Syntax_Syntax.Tm_unknown -> tc_value env1 e | FStar_Syntax_Syntax.Tm_quoted (qt,qi) -> - let projl uu___349_3066 = - match uu___349_3066 with + let projl uu___348_3066 = + match uu___348_3066 with | FStar_Util.Inl x -> x | FStar_Util.Inr uu____3072 -> failwith "projl fail" in let non_trivial_antiquotes qi1 = @@ -1319,7 +1319,7 @@ and (tc_maybe_toplevel_term : t.FStar_Syntax_Syntax.pos) z in let qi1 = - let uu___359_3204 = qi in + let uu___358_3204 = qi in let uu____3205 = FStar_List.map (fun uu____3233 -> @@ -1331,7 +1331,7 @@ and (tc_maybe_toplevel_term : in { FStar_Syntax_Syntax.qkind = - (uu___359_3204.FStar_Syntax_Syntax.qkind); + (uu___358_3204.FStar_Syntax_Syntax.qkind); FStar_Syntax_Syntax.antiquotes = uu____3205 } in let nq = @@ -1387,10 +1387,10 @@ and (tc_maybe_toplevel_term : (match uu____3348 with | (aqs_rev,guard) -> let qi1 = - let uu___360_3516 = qi in + let uu___359_3516 = qi in { FStar_Syntax_Syntax.qkind = - (uu___360_3516.FStar_Syntax_Syntax.qkind); + (uu___359_3516.FStar_Syntax_Syntax.qkind); FStar_Syntax_Syntax.antiquotes = (FStar_List.rev aqs_rev) } in @@ -1424,93 +1424,93 @@ and (tc_maybe_toplevel_term : | (env',uu____3549) -> let uu____3554 = tc_term - (let uu___361_3563 = env' in + (let uu___360_3563 = env' in { FStar_TypeChecker_Env.solver = - (uu___361_3563.FStar_TypeChecker_Env.solver); + (uu___360_3563.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___361_3563.FStar_TypeChecker_Env.range); + (uu___360_3563.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___361_3563.FStar_TypeChecker_Env.curmodule); + (uu___360_3563.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___361_3563.FStar_TypeChecker_Env.gamma); + (uu___360_3563.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___361_3563.FStar_TypeChecker_Env.gamma_sig); + (uu___360_3563.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___361_3563.FStar_TypeChecker_Env.gamma_cache); + (uu___360_3563.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___361_3563.FStar_TypeChecker_Env.modules); + (uu___360_3563.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___361_3563.FStar_TypeChecker_Env.expected_typ); + (uu___360_3563.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___361_3563.FStar_TypeChecker_Env.sigtab); + (uu___360_3563.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___361_3563.FStar_TypeChecker_Env.attrtab); + (uu___360_3563.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___361_3563.FStar_TypeChecker_Env.is_pattern); + (uu___360_3563.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___361_3563.FStar_TypeChecker_Env.instantiate_imp); + (uu___360_3563.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___361_3563.FStar_TypeChecker_Env.effects); + (uu___360_3563.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___361_3563.FStar_TypeChecker_Env.generalize); + (uu___360_3563.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___361_3563.FStar_TypeChecker_Env.letrecs); + (uu___360_3563.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___361_3563.FStar_TypeChecker_Env.top_level); + (uu___360_3563.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___361_3563.FStar_TypeChecker_Env.check_uvars); + (uu___360_3563.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___361_3563.FStar_TypeChecker_Env.use_eq); + (uu___360_3563.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___361_3563.FStar_TypeChecker_Env.is_iface); + (uu___360_3563.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___361_3563.FStar_TypeChecker_Env.admit); + (uu___360_3563.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___361_3563.FStar_TypeChecker_Env.lax_universes); + (uu___360_3563.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___361_3563.FStar_TypeChecker_Env.phase1); + (uu___360_3563.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___361_3563.FStar_TypeChecker_Env.failhard); + (uu___360_3563.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___361_3563.FStar_TypeChecker_Env.nosynth); + (uu___360_3563.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___361_3563.FStar_TypeChecker_Env.uvar_subtyping); + (uu___360_3563.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___361_3563.FStar_TypeChecker_Env.tc_term); + (uu___360_3563.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___361_3563.FStar_TypeChecker_Env.type_of); + (uu___360_3563.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___361_3563.FStar_TypeChecker_Env.universe_of); + (uu___360_3563.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___361_3563.FStar_TypeChecker_Env.check_type_of); + (uu___360_3563.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___361_3563.FStar_TypeChecker_Env.use_bv_sorts); + (uu___360_3563.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___361_3563.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___360_3563.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___361_3563.FStar_TypeChecker_Env.normalized_eff_names); + (uu___360_3563.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___361_3563.FStar_TypeChecker_Env.fv_delta_depths); + (uu___360_3563.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___361_3563.FStar_TypeChecker_Env.proof_ns); + (uu___360_3563.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___361_3563.FStar_TypeChecker_Env.synth_hook); + (uu___360_3563.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___361_3563.FStar_TypeChecker_Env.splice); + (uu___360_3563.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___361_3563.FStar_TypeChecker_Env.postprocess); + (uu___360_3563.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___361_3563.FStar_TypeChecker_Env.is_native_tactic); + (uu___360_3563.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___361_3563.FStar_TypeChecker_Env.identifier_info); + (uu___360_3563.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___361_3563.FStar_TypeChecker_Env.tc_hooks); + (uu___360_3563.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___361_3563.FStar_TypeChecker_Env.dsenv); + (uu___360_3563.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___361_3563.FStar_TypeChecker_Env.nbe) + (uu___360_3563.FStar_TypeChecker_Env.nbe) }) qt in (match uu____3554 with @@ -1564,16 +1564,16 @@ and (tc_maybe_toplevel_term : (match uu____3629 with | (e2,c,g) -> let g1 = - let uu___362_3646 = g in + let uu___361_3646 = g in { FStar_TypeChecker_Env.guard_f = FStar_TypeChecker_Common.Trivial; FStar_TypeChecker_Env.deferred = - (uu___362_3646.FStar_TypeChecker_Env.deferred); + (uu___361_3646.FStar_TypeChecker_Env.deferred); FStar_TypeChecker_Env.univ_ineqs = - (uu___362_3646.FStar_TypeChecker_Env.univ_ineqs); + (uu___361_3646.FStar_TypeChecker_Env.univ_ineqs); FStar_TypeChecker_Env.implicits = - (uu___362_3646.FStar_TypeChecker_Env.implicits) + (uu___361_3646.FStar_TypeChecker_Env.implicits) } in let uu____3647 = FStar_Syntax_Syntax.mk @@ -1600,16 +1600,16 @@ and (tc_maybe_toplevel_term : (match uu____3697 with | (pats1,g') -> let g'1 = - let uu___363_3776 = g' in + let uu___362_3776 = g' in { FStar_TypeChecker_Env.guard_f = FStar_TypeChecker_Common.Trivial; FStar_TypeChecker_Env.deferred = - (uu___363_3776.FStar_TypeChecker_Env.deferred); + (uu___362_3776.FStar_TypeChecker_Env.deferred); FStar_TypeChecker_Env.univ_ineqs = - (uu___363_3776.FStar_TypeChecker_Env.univ_ineqs); + (uu___362_3776.FStar_TypeChecker_Env.univ_ineqs); FStar_TypeChecker_Env.implicits = - (uu___363_3776.FStar_TypeChecker_Env.implicits) + (uu___362_3776.FStar_TypeChecker_Env.implicits) } in let uu____3777 = FStar_Syntax_Syntax.mk @@ -2478,8 +2478,8 @@ and (tc_maybe_toplevel_term : let uu____7062 = let uu____7064 = FStar_TypeChecker_Env.expected_typ env0 in FStar_All.pipe_right uu____7064 - (fun uu___350_7071 -> - match uu___350_7071 with + (fun uu___349_7071 -> + match uu___349_7071 with | FStar_Pervasives_Native.None -> "none" | FStar_Pervasives_Native.Some t -> FStar_Syntax_Print.term_to_string t) @@ -2866,13 +2866,13 @@ and (tc_synth : (FStar_TypeChecker_Rel.force_trivial_guard env g2; (let t = env.FStar_TypeChecker_Env.synth_hook env typ1 - (let uu___364_8622 = tau1 in + (let uu___363_8622 = tau1 in { FStar_Syntax_Syntax.n = - (uu___364_8622.FStar_Syntax_Syntax.n); + (uu___363_8622.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = rng; FStar_Syntax_Syntax.vars = - (uu___364_8622.FStar_Syntax_Syntax.vars) + (uu___363_8622.FStar_Syntax_Syntax.vars) }) in (let uu____8624 = @@ -2906,93 +2906,93 @@ and (tc_tactic : fun env -> fun tau -> let env1 = - let uu___365_8640 = env in + let uu___364_8640 = env in { FStar_TypeChecker_Env.solver = - (uu___365_8640.FStar_TypeChecker_Env.solver); + (uu___364_8640.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___365_8640.FStar_TypeChecker_Env.range); + (uu___364_8640.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___365_8640.FStar_TypeChecker_Env.curmodule); + (uu___364_8640.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___365_8640.FStar_TypeChecker_Env.gamma); + (uu___364_8640.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___365_8640.FStar_TypeChecker_Env.gamma_sig); + (uu___364_8640.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___365_8640.FStar_TypeChecker_Env.gamma_cache); + (uu___364_8640.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___365_8640.FStar_TypeChecker_Env.modules); + (uu___364_8640.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___365_8640.FStar_TypeChecker_Env.expected_typ); + (uu___364_8640.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___365_8640.FStar_TypeChecker_Env.sigtab); + (uu___364_8640.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___365_8640.FStar_TypeChecker_Env.attrtab); + (uu___364_8640.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___365_8640.FStar_TypeChecker_Env.is_pattern); + (uu___364_8640.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___365_8640.FStar_TypeChecker_Env.instantiate_imp); + (uu___364_8640.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___365_8640.FStar_TypeChecker_Env.effects); + (uu___364_8640.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___365_8640.FStar_TypeChecker_Env.generalize); + (uu___364_8640.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___365_8640.FStar_TypeChecker_Env.letrecs); + (uu___364_8640.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___365_8640.FStar_TypeChecker_Env.top_level); + (uu___364_8640.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___365_8640.FStar_TypeChecker_Env.check_uvars); + (uu___364_8640.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___365_8640.FStar_TypeChecker_Env.use_eq); + (uu___364_8640.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___365_8640.FStar_TypeChecker_Env.is_iface); + (uu___364_8640.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___365_8640.FStar_TypeChecker_Env.admit); + (uu___364_8640.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___365_8640.FStar_TypeChecker_Env.lax); + (uu___364_8640.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___365_8640.FStar_TypeChecker_Env.lax_universes); + (uu___364_8640.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___365_8640.FStar_TypeChecker_Env.phase1); + (uu___364_8640.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = true; FStar_TypeChecker_Env.nosynth = - (uu___365_8640.FStar_TypeChecker_Env.nosynth); + (uu___364_8640.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___365_8640.FStar_TypeChecker_Env.uvar_subtyping); + (uu___364_8640.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___365_8640.FStar_TypeChecker_Env.tc_term); + (uu___364_8640.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___365_8640.FStar_TypeChecker_Env.type_of); + (uu___364_8640.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___365_8640.FStar_TypeChecker_Env.universe_of); + (uu___364_8640.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___365_8640.FStar_TypeChecker_Env.check_type_of); + (uu___364_8640.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___365_8640.FStar_TypeChecker_Env.use_bv_sorts); + (uu___364_8640.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___365_8640.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___364_8640.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___365_8640.FStar_TypeChecker_Env.normalized_eff_names); + (uu___364_8640.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___365_8640.FStar_TypeChecker_Env.fv_delta_depths); + (uu___364_8640.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___365_8640.FStar_TypeChecker_Env.proof_ns); + (uu___364_8640.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___365_8640.FStar_TypeChecker_Env.synth_hook); + (uu___364_8640.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___365_8640.FStar_TypeChecker_Env.splice); + (uu___364_8640.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___365_8640.FStar_TypeChecker_Env.postprocess); + (uu___364_8640.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___365_8640.FStar_TypeChecker_Env.is_native_tactic); + (uu___364_8640.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___365_8640.FStar_TypeChecker_Env.identifier_info); + (uu___364_8640.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___365_8640.FStar_TypeChecker_Env.tc_hooks); + (uu___364_8640.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___365_8640.FStar_TypeChecker_Env.dsenv); + (uu___364_8640.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___365_8640.FStar_TypeChecker_Env.nbe) + (uu___364_8640.FStar_TypeChecker_Env.nbe) } in tc_check_tot_or_gtot_term env1 tau FStar_Syntax_Syntax.t_tactic_unit @@ -3039,8 +3039,8 @@ and (tc_value : in FStar_Util.Inr uu____8759) in - let is_data_ctor uu___351_8769 = - match uu___351_8769 with + let is_data_ctor uu___350_8769 = + match uu___350_8769 with | FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Data_ctor ) -> true | FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Record_ctor @@ -3127,12 +3127,12 @@ and (tc_value : | (t,rng) -> let x1 = FStar_Syntax_Syntax.set_range_of_bv - (let uu___366_9005 = x in + (let uu___365_9005 = x in { FStar_Syntax_Syntax.ppname = - (uu___366_9005.FStar_Syntax_Syntax.ppname); + (uu___365_9005.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___366_9005.FStar_Syntax_Syntax.index); + (uu___365_9005.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t }) rng in @@ -3292,15 +3292,15 @@ and (tc_value : (match uu____9267 with | (c2,uc,f) -> let e1 = - let uu___367_9286 = + let uu___366_9286 = FStar_Syntax_Util.arrow bs2 c2 in { FStar_Syntax_Syntax.n = - (uu___367_9286.FStar_Syntax_Syntax.n); + (uu___366_9286.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = (top.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___367_9286.FStar_Syntax_Syntax.vars) + (uu___366_9286.FStar_Syntax_Syntax.vars) } in (check_smt_pat env3 e1 bs2 c2; (let u = FStar_Syntax_Syntax.U_max (uc :: us) @@ -3385,18 +3385,18 @@ and (tc_value : (match uu____9444 with | (phi2,uu____9458,f2) -> let e1 = - let uu___368_9463 = + let uu___367_9463 = FStar_Syntax_Util.refine (FStar_Pervasives_Native.fst x2) phi2 in { FStar_Syntax_Syntax.n = - (uu___368_9463.FStar_Syntax_Syntax.n); + (uu___367_9463.FStar_Syntax_Syntax.n); FStar_Syntax_Syntax.pos = (top.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___368_9463.FStar_Syntax_Syntax.vars) + (uu___367_9463.FStar_Syntax_Syntax.vars) } in let t = FStar_Syntax_Syntax.mk @@ -3427,15 +3427,15 @@ and (tc_value : then let uu____9530 = FStar_Syntax_Print.term_to_string - (let uu___369_9534 = top in + (let uu___368_9534 = top in { FStar_Syntax_Syntax.n = (FStar_Syntax_Syntax.Tm_abs (bs1, body, FStar_Pervasives_Native.None)); FStar_Syntax_Syntax.pos = - (uu___369_9534.FStar_Syntax_Syntax.pos); + (uu___368_9534.FStar_Syntax_Syntax.pos); FStar_Syntax_Syntax.vars = - (uu___369_9534.FStar_Syntax_Syntax.vars) + (uu___368_9534.FStar_Syntax_Syntax.vars) }) in FStar_Util.print1 "Abstraction is: %s\n" uu____9530 @@ -3626,8 +3626,8 @@ and (tc_comp : FStar_All.pipe_right c1.FStar_Syntax_Syntax.flags (FStar_List.map - (fun uu___352_10093 -> - match uu___352_10093 with + (fun uu___351_10093 -> + match uu___351_10093 with | FStar_Syntax_Syntax.DECREASES e -> let uu____10101 = @@ -3659,18 +3659,18 @@ and (tc_comp : in let c2 = FStar_Syntax_Syntax.mk_Comp - (let uu___370_10171 = c1 in + (let uu___369_10171 = c1 in { FStar_Syntax_Syntax.comp_univs = comp_univs; FStar_Syntax_Syntax.effect_name = - (uu___370_10171.FStar_Syntax_Syntax.effect_name); + (uu___369_10171.FStar_Syntax_Syntax.effect_name); FStar_Syntax_Syntax.result_typ = (FStar_Pervasives_Native.fst res); FStar_Syntax_Syntax.effect_args = args2; FStar_Syntax_Syntax.flags = - (uu___370_10171.FStar_Syntax_Syntax.flags) + (uu___369_10171.FStar_Syntax_Syntax.flags) }) in let u_c = @@ -3874,12 +3874,12 @@ and (tc_abs : match uu____10602 with | (t,g_env) -> let hd2 = - let uu___371_10692 = hd1 in + let uu___370_10692 = hd1 in { FStar_Syntax_Syntax.ppname = - (uu___371_10692.FStar_Syntax_Syntax.ppname); + (uu___370_10692.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___371_10692.FStar_Syntax_Syntax.index); + (uu___370_10692.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t } in let b = (hd2, imp) in @@ -4095,93 +4095,93 @@ and (tc_abs : let mk_letrec_env envbody bs1 c = let letrecs = guard_letrecs envbody bs1 c in let envbody1 = - let uu___372_12106 = envbody in + let uu___371_12106 = envbody in { FStar_TypeChecker_Env.solver = - (uu___372_12106.FStar_TypeChecker_Env.solver); + (uu___371_12106.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___372_12106.FStar_TypeChecker_Env.range); + (uu___371_12106.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___372_12106.FStar_TypeChecker_Env.curmodule); + (uu___371_12106.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___372_12106.FStar_TypeChecker_Env.gamma); + (uu___371_12106.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___372_12106.FStar_TypeChecker_Env.gamma_sig); + (uu___371_12106.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___372_12106.FStar_TypeChecker_Env.gamma_cache); + (uu___371_12106.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___372_12106.FStar_TypeChecker_Env.modules); + (uu___371_12106.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___372_12106.FStar_TypeChecker_Env.expected_typ); + (uu___371_12106.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___372_12106.FStar_TypeChecker_Env.sigtab); + (uu___371_12106.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___372_12106.FStar_TypeChecker_Env.attrtab); + (uu___371_12106.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___372_12106.FStar_TypeChecker_Env.is_pattern); + (uu___371_12106.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___372_12106.FStar_TypeChecker_Env.instantiate_imp); + (uu___371_12106.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___372_12106.FStar_TypeChecker_Env.effects); + (uu___371_12106.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___372_12106.FStar_TypeChecker_Env.generalize); + (uu___371_12106.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = []; FStar_TypeChecker_Env.top_level = - (uu___372_12106.FStar_TypeChecker_Env.top_level); + (uu___371_12106.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___372_12106.FStar_TypeChecker_Env.check_uvars); + (uu___371_12106.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___372_12106.FStar_TypeChecker_Env.use_eq); + (uu___371_12106.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___372_12106.FStar_TypeChecker_Env.is_iface); + (uu___371_12106.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___372_12106.FStar_TypeChecker_Env.admit); + (uu___371_12106.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___372_12106.FStar_TypeChecker_Env.lax); + (uu___371_12106.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___372_12106.FStar_TypeChecker_Env.lax_universes); + (uu___371_12106.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___372_12106.FStar_TypeChecker_Env.phase1); + (uu___371_12106.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___372_12106.FStar_TypeChecker_Env.failhard); + (uu___371_12106.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___372_12106.FStar_TypeChecker_Env.nosynth); + (uu___371_12106.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___372_12106.FStar_TypeChecker_Env.uvar_subtyping); + (uu___371_12106.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___372_12106.FStar_TypeChecker_Env.tc_term); + (uu___371_12106.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___372_12106.FStar_TypeChecker_Env.type_of); + (uu___371_12106.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___372_12106.FStar_TypeChecker_Env.universe_of); + (uu___371_12106.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___372_12106.FStar_TypeChecker_Env.check_type_of); + (uu___371_12106.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___372_12106.FStar_TypeChecker_Env.use_bv_sorts); + (uu___371_12106.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___372_12106.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___371_12106.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___372_12106.FStar_TypeChecker_Env.normalized_eff_names); + (uu___371_12106.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___372_12106.FStar_TypeChecker_Env.fv_delta_depths); + (uu___371_12106.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___372_12106.FStar_TypeChecker_Env.proof_ns); + (uu___371_12106.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___372_12106.FStar_TypeChecker_Env.synth_hook); + (uu___371_12106.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___372_12106.FStar_TypeChecker_Env.splice); + (uu___371_12106.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___372_12106.FStar_TypeChecker_Env.postprocess); + (uu___371_12106.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___372_12106.FStar_TypeChecker_Env.is_native_tactic); + (uu___371_12106.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___372_12106.FStar_TypeChecker_Env.identifier_info); + (uu___371_12106.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___372_12106.FStar_TypeChecker_Env.tc_hooks); + (uu___371_12106.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___372_12106.FStar_TypeChecker_Env.dsenv); + (uu___371_12106.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___372_12106.FStar_TypeChecker_Env.nbe) + (uu___371_12106.FStar_TypeChecker_Env.nbe) } in let uu____12113 = FStar_All.pipe_right letrecs @@ -4214,15 +4214,15 @@ and (tc_abs : | FStar_Util.Inl x -> let uu____12316 = FStar_Syntax_Syntax.mk_binder - (let uu___373_12319 + (let uu___372_12319 = x in { FStar_Syntax_Syntax.ppname = - (uu___373_12319.FStar_Syntax_Syntax.ppname); + (uu___372_12319.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___373_12319.FStar_Syntax_Syntax.index); + (uu___372_12319.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t4 }) @@ -4351,92 +4351,92 @@ and (tc_abs : | uu____12779 -> true in let uu____12787 = tc_term - (let uu___374_12796 = envbody1 in + (let uu___373_12796 = envbody1 in { FStar_TypeChecker_Env.solver = - (uu___374_12796.FStar_TypeChecker_Env.solver); + (uu___373_12796.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___374_12796.FStar_TypeChecker_Env.range); + (uu___373_12796.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___374_12796.FStar_TypeChecker_Env.curmodule); + (uu___373_12796.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___374_12796.FStar_TypeChecker_Env.gamma); + (uu___373_12796.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___374_12796.FStar_TypeChecker_Env.gamma_sig); + (uu___373_12796.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___374_12796.FStar_TypeChecker_Env.gamma_cache); + (uu___373_12796.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___374_12796.FStar_TypeChecker_Env.modules); + (uu___373_12796.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___374_12796.FStar_TypeChecker_Env.expected_typ); + (uu___373_12796.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___374_12796.FStar_TypeChecker_Env.sigtab); + (uu___373_12796.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___374_12796.FStar_TypeChecker_Env.attrtab); + (uu___373_12796.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___374_12796.FStar_TypeChecker_Env.is_pattern); + (uu___373_12796.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___374_12796.FStar_TypeChecker_Env.instantiate_imp); + (uu___373_12796.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___374_12796.FStar_TypeChecker_Env.effects); + (uu___373_12796.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___374_12796.FStar_TypeChecker_Env.generalize); + (uu___373_12796.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___374_12796.FStar_TypeChecker_Env.letrecs); + (uu___373_12796.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = false; FStar_TypeChecker_Env.check_uvars = - (uu___374_12796.FStar_TypeChecker_Env.check_uvars); + (uu___373_12796.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = use_eq; FStar_TypeChecker_Env.is_iface = - (uu___374_12796.FStar_TypeChecker_Env.is_iface); + (uu___373_12796.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___374_12796.FStar_TypeChecker_Env.admit); + (uu___373_12796.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___374_12796.FStar_TypeChecker_Env.lax); + (uu___373_12796.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___374_12796.FStar_TypeChecker_Env.lax_universes); + (uu___373_12796.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___374_12796.FStar_TypeChecker_Env.phase1); + (uu___373_12796.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___374_12796.FStar_TypeChecker_Env.failhard); + (uu___373_12796.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___374_12796.FStar_TypeChecker_Env.nosynth); + (uu___373_12796.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___374_12796.FStar_TypeChecker_Env.uvar_subtyping); + (uu___373_12796.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___374_12796.FStar_TypeChecker_Env.tc_term); + (uu___373_12796.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___374_12796.FStar_TypeChecker_Env.type_of); + (uu___373_12796.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___374_12796.FStar_TypeChecker_Env.universe_of); + (uu___373_12796.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___374_12796.FStar_TypeChecker_Env.check_type_of); + (uu___373_12796.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___374_12796.FStar_TypeChecker_Env.use_bv_sorts); + (uu___373_12796.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___374_12796.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___373_12796.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___374_12796.FStar_TypeChecker_Env.normalized_eff_names); + (uu___373_12796.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___374_12796.FStar_TypeChecker_Env.fv_delta_depths); + (uu___373_12796.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___374_12796.FStar_TypeChecker_Env.proof_ns); + (uu___373_12796.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___374_12796.FStar_TypeChecker_Env.synth_hook); + (uu___373_12796.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___374_12796.FStar_TypeChecker_Env.splice); + (uu___373_12796.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___374_12796.FStar_TypeChecker_Env.postprocess); + (uu___373_12796.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___374_12796.FStar_TypeChecker_Env.is_native_tactic); + (uu___373_12796.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___374_12796.FStar_TypeChecker_Env.identifier_info); + (uu___373_12796.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___374_12796.FStar_TypeChecker_Env.tc_hooks); + (uu___373_12796.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___374_12796.FStar_TypeChecker_Env.dsenv); + (uu___373_12796.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___374_12796.FStar_TypeChecker_Env.nbe) + (uu___373_12796.FStar_TypeChecker_Env.nbe) }) body1 in match uu____12787 with @@ -4453,95 +4453,95 @@ and (tc_abs : FStar_Syntax_Syntax.lcomp_comp cbody in (body2, uu____12835) in check_expected_effect - (let uu___375_12838 = envbody1 in + (let uu___374_12838 = envbody1 in { FStar_TypeChecker_Env.solver = - (uu___375_12838.FStar_TypeChecker_Env.solver); + (uu___374_12838.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___375_12838.FStar_TypeChecker_Env.range); + (uu___374_12838.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___375_12838.FStar_TypeChecker_Env.curmodule); + (uu___374_12838.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___375_12838.FStar_TypeChecker_Env.gamma); + (uu___374_12838.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___375_12838.FStar_TypeChecker_Env.gamma_sig); + (uu___374_12838.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___375_12838.FStar_TypeChecker_Env.gamma_cache); + (uu___374_12838.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___375_12838.FStar_TypeChecker_Env.modules); + (uu___374_12838.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___375_12838.FStar_TypeChecker_Env.expected_typ); + (uu___374_12838.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___375_12838.FStar_TypeChecker_Env.sigtab); + (uu___374_12838.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___375_12838.FStar_TypeChecker_Env.attrtab); + (uu___374_12838.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___375_12838.FStar_TypeChecker_Env.is_pattern); + (uu___374_12838.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___375_12838.FStar_TypeChecker_Env.instantiate_imp); + (uu___374_12838.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___375_12838.FStar_TypeChecker_Env.effects); + (uu___374_12838.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___375_12838.FStar_TypeChecker_Env.generalize); + (uu___374_12838.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___375_12838.FStar_TypeChecker_Env.letrecs); + (uu___374_12838.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___375_12838.FStar_TypeChecker_Env.top_level); + (uu___374_12838.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___375_12838.FStar_TypeChecker_Env.check_uvars); + (uu___374_12838.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = use_eq; FStar_TypeChecker_Env.is_iface = - (uu___375_12838.FStar_TypeChecker_Env.is_iface); + (uu___374_12838.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___375_12838.FStar_TypeChecker_Env.admit); + (uu___374_12838.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___375_12838.FStar_TypeChecker_Env.lax); + (uu___374_12838.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___375_12838.FStar_TypeChecker_Env.lax_universes); + (uu___374_12838.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___375_12838.FStar_TypeChecker_Env.phase1); + (uu___374_12838.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___375_12838.FStar_TypeChecker_Env.failhard); + (uu___374_12838.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___375_12838.FStar_TypeChecker_Env.nosynth); + (uu___374_12838.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___375_12838.FStar_TypeChecker_Env.uvar_subtyping); + (uu___374_12838.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___375_12838.FStar_TypeChecker_Env.tc_term); + (uu___374_12838.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___375_12838.FStar_TypeChecker_Env.type_of); + (uu___374_12838.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___375_12838.FStar_TypeChecker_Env.universe_of); + (uu___374_12838.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___375_12838.FStar_TypeChecker_Env.check_type_of); + (uu___374_12838.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___375_12838.FStar_TypeChecker_Env.use_bv_sorts); + (uu___374_12838.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___375_12838.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___374_12838.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___375_12838.FStar_TypeChecker_Env.normalized_eff_names); + (uu___374_12838.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___375_12838.FStar_TypeChecker_Env.fv_delta_depths); + (uu___374_12838.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___375_12838.FStar_TypeChecker_Env.proof_ns); + (uu___374_12838.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___375_12838.FStar_TypeChecker_Env.synth_hook); + (uu___374_12838.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___375_12838.FStar_TypeChecker_Env.splice); + (uu___374_12838.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___375_12838.FStar_TypeChecker_Env.postprocess); + (uu___374_12838.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___375_12838.FStar_TypeChecker_Env.is_native_tactic); + (uu___374_12838.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___375_12838.FStar_TypeChecker_Env.identifier_info); + (uu___374_12838.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___375_12838.FStar_TypeChecker_Env.tc_hooks); + (uu___374_12838.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___375_12838.FStar_TypeChecker_Env.dsenv); + (uu___374_12838.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___375_12838.FStar_TypeChecker_Env.nbe) + (uu___374_12838.FStar_TypeChecker_Env.nbe) }) c_opt uu____12830 in (match uu____12823 with @@ -4681,15 +4681,15 @@ and (check_application_args : (match uu____13176 with | (rt,g0) -> let cres1 = - let uu___376_13190 = cres in + let uu___375_13190 = cres in { FStar_Syntax_Syntax.eff_name = - (uu___376_13190.FStar_Syntax_Syntax.eff_name); + (uu___375_13190.FStar_Syntax_Syntax.eff_name); FStar_Syntax_Syntax.res_typ = rt; FStar_Syntax_Syntax.cflags = - (uu___376_13190.FStar_Syntax_Syntax.cflags); + (uu___375_13190.FStar_Syntax_Syntax.cflags); FStar_Syntax_Syntax.comp_thunk = - (uu___376_13190.FStar_Syntax_Syntax.comp_thunk) + (uu___375_13190.FStar_Syntax_Syntax.comp_thunk) } in let uu____13191 = match bs with @@ -5080,8 +5080,8 @@ and (check_application_args : comp2.FStar_Syntax_Syntax.res_typ in let bind_lifted_args e - uu___353_14096 = - match uu___353_14096 with + uu___352_14096 = + match uu___352_14096 with | FStar_Pervasives_Native.None -> e | FStar_Pervasives_Native.Some @@ -5234,135 +5234,104 @@ and (check_application_args : (match uu____14798 with | (t1,g_ex) -> let uu____14811 = - FStar_TypeChecker_Util.new_implicit_var + let uu____14824 = + let uu____14831 = + let uu____14836 = + FStar_Dyn.mkdyn env in + (uu____14836, tau2) in + FStar_Pervasives_Native.Some + uu____14831 + in + FStar_TypeChecker_Env.new_implicit_var_aux "Instantiating meta argument in application" head1.FStar_Syntax_Syntax.pos env t1 + FStar_Syntax_Syntax.Strict + uu____14824 in (match uu____14811 with - | (varg,uu____14832,implicits) -> - let mark_meta_implicits tau3 g1 = - let uu___377_14857 = g1 in - let uu____14858 = - FStar_List.map - (fun imp -> - let uu___378_14864 = imp - in - { - FStar_TypeChecker_Env.imp_reason - = - (uu___378_14864.FStar_TypeChecker_Env.imp_reason); - FStar_TypeChecker_Env.imp_uvar - = - (uu___378_14864.FStar_TypeChecker_Env.imp_uvar); - FStar_TypeChecker_Env.imp_tm - = - (uu___378_14864.FStar_TypeChecker_Env.imp_tm); - FStar_TypeChecker_Env.imp_range - = - (uu___378_14864.FStar_TypeChecker_Env.imp_range); - FStar_TypeChecker_Env.imp_meta - = - (FStar_Pervasives_Native.Some - (env, tau3)) - }) - g1.FStar_TypeChecker_Env.implicits - in - { - FStar_TypeChecker_Env.guard_f = - (uu___377_14857.FStar_TypeChecker_Env.guard_f); - FStar_TypeChecker_Env.deferred = - (uu___377_14857.FStar_TypeChecker_Env.deferred); - FStar_TypeChecker_Env.univ_ineqs - = - (uu___377_14857.FStar_TypeChecker_Env.univ_ineqs); - FStar_TypeChecker_Env.implicits - = uu____14858 - } in - let implicits1 = - mark_meta_implicits tau2 implicits - in + | (varg,uu____14849,implicits) -> let subst2 = (FStar_Syntax_Syntax.NT (x, varg)) :: subst1 in let arg = - let uu____14884 = + let uu____14877 = FStar_Syntax_Syntax.as_implicit true in - (varg, uu____14884) in + (varg, uu____14877) in let guard = FStar_List.fold_right FStar_TypeChecker_Env.conj_guard - [g_ex; g; g_tau] implicits1 + [g_ex; g; g_tau] implicits in - let uu____14893 = - let uu____14928 = - let uu____14939 = - let uu____14948 = - let uu____14949 = + let uu____14886 = + let uu____14921 = + let uu____14932 = + let uu____14941 = + let uu____14942 = FStar_Syntax_Syntax.mk_Total t1 in FStar_All.pipe_right - uu____14949 + uu____14942 FStar_Syntax_Util.lcomp_of_comp in (arg, FStar_Pervasives_Native.None, - uu____14948) + uu____14941) in - uu____14939 :: outargs in - (subst2, uu____14928, (arg :: + uu____14932 :: outargs in + (subst2, uu____14921, (arg :: arg_rets), guard, fvs) in - tc_args head_info uu____14893 rest + tc_args head_info uu____14886 rest args1))) | ((x,aqual)::rest,(e,aq)::rest') -> ((match (aqual, aq) with - | (uu____15065,FStar_Pervasives_Native.Some - (FStar_Syntax_Syntax.Meta uu____15066)) -> + | (uu____15058,FStar_Pervasives_Native.Some + (FStar_Syntax_Syntax.Meta uu____15059)) -> FStar_Errors.raise_error (FStar_Errors.Fatal_InconsistentImplicitQualifier, "Inconsistent implicit qualifier; cannot apply meta arguments, just use #") e.FStar_Syntax_Syntax.pos | (FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Meta - uu____15077),FStar_Pervasives_Native.Some - (FStar_Syntax_Syntax.Implicit uu____15078)) -> + uu____15070),FStar_Pervasives_Native.Some + (FStar_Syntax_Syntax.Implicit uu____15071)) -> () | (FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Implicit - uu____15086),FStar_Pervasives_Native.Some - (FStar_Syntax_Syntax.Implicit uu____15087)) -> + uu____15079),FStar_Pervasives_Native.Some + (FStar_Syntax_Syntax.Implicit uu____15080)) -> () | (FStar_Pervasives_Native.None ,FStar_Pervasives_Native.None ) -> () | (FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Equality ),FStar_Pervasives_Native.None ) -> () - | uu____15102 -> - let uu____15111 = - let uu____15117 = - let uu____15119 = + | uu____15095 -> + let uu____15104 = + let uu____15110 = + let uu____15112 = FStar_Syntax_Print.aqual_to_string aqual in - let uu____15121 = + let uu____15114 = FStar_Syntax_Print.aqual_to_string aq in - let uu____15123 = + let uu____15116 = FStar_Syntax_Print.bv_to_string x in - let uu____15125 = + let uu____15118 = FStar_Syntax_Print.term_to_string e in FStar_Util.format4 "Inconsistent implicit qualifier; %s vs %s\nfor bvar %s and term %s" - uu____15119 uu____15121 uu____15123 - uu____15125 + uu____15112 uu____15114 uu____15116 + uu____15118 in (FStar_Errors.Fatal_InconsistentImplicitQualifier, - uu____15117) + uu____15110) in - FStar_Errors.raise_error uu____15111 + FStar_Errors.raise_error uu____15104 e.FStar_Syntax_Syntax.pos); (let targ = FStar_Syntax_Subst.subst subst1 @@ -5371,188 +5340,188 @@ and (check_application_args : let aqual1 = FStar_Syntax_Subst.subst_imp subst1 aqual in let x1 = - let uu___379_15132 = x in + let uu___376_15125 = x in { FStar_Syntax_Syntax.ppname = - (uu___379_15132.FStar_Syntax_Syntax.ppname); + (uu___376_15125.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___379_15132.FStar_Syntax_Syntax.index); + (uu___376_15125.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = targ } in - (let uu____15134 = + (let uu____15127 = FStar_TypeChecker_Env.debug env FStar_Options.Extreme in - if uu____15134 + if uu____15127 then - let uu____15137 = + let uu____15130 = FStar_Syntax_Print.bv_to_string x1 in - let uu____15139 = + let uu____15132 = FStar_Syntax_Print.term_to_string x1.FStar_Syntax_Syntax.sort in - let uu____15141 = + let uu____15134 = FStar_Syntax_Print.term_to_string e in - let uu____15143 = + let uu____15136 = FStar_Syntax_Print.subst_to_string subst1 in - let uu____15145 = + let uu____15138 = FStar_Syntax_Print.term_to_string targ in FStar_Util.print5 "\tFormal is %s : %s\tType of arg %s (after subst %s) = %s\n" - uu____15137 uu____15139 uu____15141 - uu____15143 uu____15145 + uu____15130 uu____15132 uu____15134 + uu____15136 uu____15138 else ()); - (let uu____15150 = + (let uu____15143 = check_no_escape (FStar_Pervasives_Native.Some head1) env fvs targ in - match uu____15150 with + match uu____15143 with | (targ1,g_ex) -> let env1 = FStar_TypeChecker_Env.set_expected_typ env targ1 in let env2 = - let uu___380_15165 = env1 in + let uu___377_15158 = env1 in { FStar_TypeChecker_Env.solver = - (uu___380_15165.FStar_TypeChecker_Env.solver); + (uu___377_15158.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___380_15165.FStar_TypeChecker_Env.range); + (uu___377_15158.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___380_15165.FStar_TypeChecker_Env.curmodule); + (uu___377_15158.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___380_15165.FStar_TypeChecker_Env.gamma); + (uu___377_15158.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___380_15165.FStar_TypeChecker_Env.gamma_sig); + (uu___377_15158.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___380_15165.FStar_TypeChecker_Env.gamma_cache); + (uu___377_15158.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___380_15165.FStar_TypeChecker_Env.modules); + (uu___377_15158.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___380_15165.FStar_TypeChecker_Env.expected_typ); + (uu___377_15158.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___380_15165.FStar_TypeChecker_Env.sigtab); + (uu___377_15158.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___380_15165.FStar_TypeChecker_Env.attrtab); + (uu___377_15158.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___380_15165.FStar_TypeChecker_Env.is_pattern); + (uu___377_15158.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___380_15165.FStar_TypeChecker_Env.instantiate_imp); + (uu___377_15158.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___380_15165.FStar_TypeChecker_Env.effects); + (uu___377_15158.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___380_15165.FStar_TypeChecker_Env.generalize); + (uu___377_15158.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___380_15165.FStar_TypeChecker_Env.letrecs); + (uu___377_15158.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___380_15165.FStar_TypeChecker_Env.top_level); + (uu___377_15158.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___380_15165.FStar_TypeChecker_Env.check_uvars); + (uu___377_15158.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = (is_eq aqual1); FStar_TypeChecker_Env.is_iface = - (uu___380_15165.FStar_TypeChecker_Env.is_iface); + (uu___377_15158.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___380_15165.FStar_TypeChecker_Env.admit); + (uu___377_15158.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___380_15165.FStar_TypeChecker_Env.lax); + (uu___377_15158.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___380_15165.FStar_TypeChecker_Env.lax_universes); + (uu___377_15158.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___380_15165.FStar_TypeChecker_Env.phase1); + (uu___377_15158.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___380_15165.FStar_TypeChecker_Env.failhard); + (uu___377_15158.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___380_15165.FStar_TypeChecker_Env.nosynth); + (uu___377_15158.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___380_15165.FStar_TypeChecker_Env.uvar_subtyping); + (uu___377_15158.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___380_15165.FStar_TypeChecker_Env.tc_term); + (uu___377_15158.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___380_15165.FStar_TypeChecker_Env.type_of); + (uu___377_15158.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___380_15165.FStar_TypeChecker_Env.universe_of); + (uu___377_15158.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___380_15165.FStar_TypeChecker_Env.check_type_of); + (uu___377_15158.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___380_15165.FStar_TypeChecker_Env.use_bv_sorts); + (uu___377_15158.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___380_15165.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___377_15158.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___380_15165.FStar_TypeChecker_Env.normalized_eff_names); + (uu___377_15158.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___380_15165.FStar_TypeChecker_Env.fv_delta_depths); + (uu___377_15158.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___380_15165.FStar_TypeChecker_Env.proof_ns); + (uu___377_15158.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___380_15165.FStar_TypeChecker_Env.synth_hook); + (uu___377_15158.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___380_15165.FStar_TypeChecker_Env.splice); + (uu___377_15158.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___380_15165.FStar_TypeChecker_Env.postprocess); + (uu___377_15158.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___380_15165.FStar_TypeChecker_Env.is_native_tactic); + (uu___377_15158.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___380_15165.FStar_TypeChecker_Env.identifier_info); + (uu___377_15158.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___380_15165.FStar_TypeChecker_Env.tc_hooks); + (uu___377_15158.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___380_15165.FStar_TypeChecker_Env.dsenv); + (uu___377_15158.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___380_15165.FStar_TypeChecker_Env.nbe) + (uu___377_15158.FStar_TypeChecker_Env.nbe) } in - ((let uu____15167 = + ((let uu____15160 = FStar_TypeChecker_Env.debug env2 FStar_Options.High in - if uu____15167 + if uu____15160 then - let uu____15170 = + let uu____15163 = FStar_Syntax_Print.tag_of_term e in - let uu____15172 = + let uu____15165 = FStar_Syntax_Print.term_to_string e in - let uu____15174 = + let uu____15167 = FStar_Syntax_Print.term_to_string targ1 in FStar_Util.print3 "Checking arg (%s) %s at type %s\n" - uu____15170 uu____15172 uu____15174 + uu____15163 uu____15165 uu____15167 else ()); - (let uu____15179 = tc_term env2 e in - match uu____15179 with + (let uu____15172 = tc_term env2 e in + match uu____15172 with | (e1,c,g_e) -> let g1 = - let uu____15196 = + let uu____15189 = FStar_TypeChecker_Env.conj_guard g g_e in FStar_All.pipe_left (FStar_TypeChecker_Env.conj_guard - g_ex) uu____15196 + g_ex) uu____15189 in let arg = (e1, aq) in let xterm = - let uu____15219 = - let uu____15222 = - let uu____15231 = + let uu____15212 = + let uu____15215 = + let uu____15224 = FStar_Syntax_Syntax.bv_to_name x1 in FStar_Syntax_Syntax.as_arg - uu____15231 + uu____15224 in FStar_Pervasives_Native.fst - uu____15222 + uu____15215 in - (uu____15219, aq) in - let uu____15240 = + (uu____15212, aq) in + let uu____15233 = (FStar_Syntax_Util.is_tot_or_gtot_lcomp c) || @@ -5560,13 +5529,13 @@ and (check_application_args : env2 c.FStar_Syntax_Syntax.eff_name) in - if uu____15240 + if uu____15233 then let subst2 = - let uu____15250 = FStar_List.hd bs + let uu____15243 = FStar_List.hd bs in maybe_extend_subst subst1 - uu____15250 e1 + uu____15243 e1 in tc_args head_info (subst2, @@ -5583,44 +5552,44 @@ and (check_application_args : x1), c) :: outargs), (xterm :: arg_rets), g1, (x1 :: fvs)) rest rest'))))) - | (uu____15349,[]) -> + | (uu____15342,[]) -> monadic_application head_info subst1 outargs arg_rets g fvs bs - | ([],arg::uu____15385) -> - let uu____15436 = + | ([],arg::uu____15378) -> + let uu____15429 = monadic_application head_info subst1 outargs arg_rets g fvs [] in - (match uu____15436 with + (match uu____15429 with | (head2,chead1,ghead1) -> let rec aux norm1 solve ghead2 tres = let tres1 = - let uu____15492 = + let uu____15485 = FStar_Syntax_Subst.compress tres in - FStar_All.pipe_right uu____15492 + FStar_All.pipe_right uu____15485 FStar_Syntax_Util.unrefine in match tres1.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_arrow (bs1,cres') -> - let uu____15523 = + let uu____15516 = FStar_Syntax_Subst.open_comp bs1 cres' in - (match uu____15523 with + (match uu____15516 with | (bs2,cres'1) -> let head_info1 = - let uu____15545 = + let uu____15538 = FStar_Syntax_Util.lcomp_of_comp cres'1 in (head2, chead1, ghead2, - uu____15545) + uu____15538) in - ((let uu____15547 = + ((let uu____15540 = FStar_TypeChecker_Env.debug env FStar_Options.Low in - if uu____15547 + if uu____15540 then FStar_Errors.log_issue tres1.FStar_Syntax_Syntax.pos @@ -5631,323 +5600,323 @@ and (check_application_args : ([], [], [], FStar_TypeChecker_Env.trivial_guard, []) bs2 args1)) - | uu____15594 when Prims.op_Negation norm1 + | uu____15587 when Prims.op_Negation norm1 -> let rec norm_tres tres2 = let tres3 = FStar_TypeChecker_Normalize.unfold_whnf env tres2 in - let uu____15602 = - let uu____15603 = + let uu____15595 = + let uu____15596 = FStar_Syntax_Subst.compress tres3 in - uu____15603.FStar_Syntax_Syntax.n + uu____15596.FStar_Syntax_Syntax.n in - match uu____15602 with + match uu____15595 with | FStar_Syntax_Syntax.Tm_refine ({ FStar_Syntax_Syntax.ppname = - uu____15606; + uu____15599; FStar_Syntax_Syntax.index = - uu____15607; + uu____15600; FStar_Syntax_Syntax.sort = - tres4;_},uu____15609) + tres4;_},uu____15602) -> norm_tres tres4 - | uu____15617 -> tres3 in - let uu____15618 = norm_tres tres1 in - aux true solve ghead2 uu____15618 - | uu____15620 when Prims.op_Negation solve + | uu____15610 -> tres3 in + let uu____15611 = norm_tres tres1 in + aux true solve ghead2 uu____15611 + | uu____15613 when Prims.op_Negation solve -> let ghead3 = FStar_TypeChecker_Rel.solve_deferred_constraints env ghead2 in aux norm1 true ghead3 tres1 - | uu____15623 -> - let uu____15624 = - let uu____15630 = - let uu____15632 = + | uu____15616 -> + let uu____15617 = + let uu____15623 = + let uu____15625 = FStar_TypeChecker_Normalize.term_to_string env thead in - let uu____15634 = + let uu____15627 = FStar_Util.string_of_int n_args in - let uu____15642 = + let uu____15635 = FStar_Syntax_Print.term_to_string tres1 in FStar_Util.format3 "Too many arguments to function of type %s; got %s arguments, remaining type is %s" - uu____15632 uu____15634 - uu____15642 + uu____15625 uu____15627 + uu____15635 in (FStar_Errors.Fatal_ToManyArgumentToFunction, - uu____15630) + uu____15623) in - let uu____15646 = + let uu____15639 = FStar_Syntax_Syntax.argpos arg in - FStar_Errors.raise_error uu____15624 - uu____15646 + FStar_Errors.raise_error uu____15617 + uu____15639 in aux false false ghead1 chead1.FStar_Syntax_Syntax.res_typ)) in let rec check_function_app tf guard = - let uu____15676 = - let uu____15677 = + let uu____15669 = + let uu____15670 = FStar_TypeChecker_Normalize.unfold_whnf env tf in - uu____15677.FStar_Syntax_Syntax.n in - match uu____15676 with - | FStar_Syntax_Syntax.Tm_uvar uu____15686 -> - let uu____15699 = + uu____15670.FStar_Syntax_Syntax.n in + match uu____15669 with + | FStar_Syntax_Syntax.Tm_uvar uu____15679 -> + let uu____15692 = FStar_List.fold_right - (fun uu____15730 -> - fun uu____15731 -> - match uu____15731 with + (fun uu____15723 -> + fun uu____15724 -> + match uu____15724 with | (bs,guard1) -> - let uu____15758 = - let uu____15771 = - let uu____15772 = + let uu____15751 = + let uu____15764 = + let uu____15765 = FStar_Syntax_Util.type_u () in - FStar_All.pipe_right uu____15772 + FStar_All.pipe_right uu____15765 FStar_Pervasives_Native.fst in FStar_TypeChecker_Util.new_implicit_var "formal parameter" tf.FStar_Syntax_Syntax.pos env - uu____15771 + uu____15764 in - (match uu____15758 with - | (t,uu____15789,g) -> - let uu____15803 = - let uu____15806 = + (match uu____15751 with + | (t,uu____15782,g) -> + let uu____15796 = + let uu____15799 = FStar_Syntax_Syntax.null_binder t in - uu____15806 :: bs in - let uu____15807 = + uu____15799 :: bs in + let uu____15800 = FStar_TypeChecker_Env.conj_guard g guard1 in - (uu____15803, uu____15807))) args + (uu____15796, uu____15800))) args ([], guard) in - (match uu____15699 with + (match uu____15692 with | (bs,guard1) -> - let uu____15824 = - let uu____15831 = - let uu____15844 = - let uu____15845 = FStar_Syntax_Util.type_u () + let uu____15817 = + let uu____15824 = + let uu____15837 = + let uu____15838 = FStar_Syntax_Util.type_u () in - FStar_All.pipe_right uu____15845 + FStar_All.pipe_right uu____15838 FStar_Pervasives_Native.fst in FStar_TypeChecker_Util.new_implicit_var "result type" tf.FStar_Syntax_Syntax.pos env - uu____15844 + uu____15837 in - match uu____15831 with - | (t,uu____15862,g) -> - let uu____15876 = FStar_Options.ml_ish () in - if uu____15876 + match uu____15824 with + | (t,uu____15855,g) -> + let uu____15869 = FStar_Options.ml_ish () in + if uu____15869 then - let uu____15885 = + let uu____15878 = FStar_Syntax_Util.ml_comp t r in - let uu____15888 = + let uu____15881 = FStar_TypeChecker_Env.conj_guard guard1 g in - (uu____15885, uu____15888) + (uu____15878, uu____15881) else - (let uu____15893 = + (let uu____15886 = FStar_Syntax_Syntax.mk_Total t in - let uu____15896 = + let uu____15889 = FStar_TypeChecker_Env.conj_guard guard1 g in - (uu____15893, uu____15896)) + (uu____15886, uu____15889)) in - (match uu____15824 with + (match uu____15817 with | (cres,guard2) -> let bs_cres = FStar_Syntax_Util.arrow bs cres in - ((let uu____15915 = + ((let uu____15908 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) FStar_Options.Extreme in - if uu____15915 + if uu____15908 then - let uu____15919 = + let uu____15912 = FStar_Syntax_Print.term_to_string head1 in - let uu____15921 = + let uu____15914 = FStar_Syntax_Print.term_to_string tf in - let uu____15923 = + let uu____15916 = FStar_Syntax_Print.term_to_string bs_cres in FStar_Util.print3 "Forcing the type of %s from %s to %s\n" - uu____15919 uu____15921 uu____15923 + uu____15912 uu____15914 uu____15916 else ()); (let g = - let uu____15929 = + let uu____15922 = FStar_TypeChecker_Rel.teq env tf bs_cres in FStar_TypeChecker_Rel.solve_deferred_constraints - env uu____15929 + env uu____15922 in - let uu____15930 = + let uu____15923 = FStar_TypeChecker_Env.conj_guard g guard2 in - check_function_app bs_cres uu____15930)))) + check_function_app bs_cres uu____15923)))) | FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_uvar - uu____15931; - FStar_Syntax_Syntax.pos = uu____15932; - FStar_Syntax_Syntax.vars = uu____15933;_},uu____15934) + uu____15924; + FStar_Syntax_Syntax.pos = uu____15925; + FStar_Syntax_Syntax.vars = uu____15926;_},uu____15927) -> - let uu____15971 = + let uu____15964 = FStar_List.fold_right - (fun uu____16002 -> - fun uu____16003 -> - match uu____16003 with + (fun uu____15995 -> + fun uu____15996 -> + match uu____15996 with | (bs,guard1) -> - let uu____16030 = - let uu____16043 = - let uu____16044 = + let uu____16023 = + let uu____16036 = + let uu____16037 = FStar_Syntax_Util.type_u () in - FStar_All.pipe_right uu____16044 + FStar_All.pipe_right uu____16037 FStar_Pervasives_Native.fst in FStar_TypeChecker_Util.new_implicit_var "formal parameter" tf.FStar_Syntax_Syntax.pos env - uu____16043 + uu____16036 in - (match uu____16030 with - | (t,uu____16061,g) -> - let uu____16075 = - let uu____16078 = + (match uu____16023 with + | (t,uu____16054,g) -> + let uu____16068 = + let uu____16071 = FStar_Syntax_Syntax.null_binder t in - uu____16078 :: bs in - let uu____16079 = + uu____16071 :: bs in + let uu____16072 = FStar_TypeChecker_Env.conj_guard g guard1 in - (uu____16075, uu____16079))) args + (uu____16068, uu____16072))) args ([], guard) in - (match uu____15971 with + (match uu____15964 with | (bs,guard1) -> - let uu____16096 = - let uu____16103 = - let uu____16116 = - let uu____16117 = FStar_Syntax_Util.type_u () + let uu____16089 = + let uu____16096 = + let uu____16109 = + let uu____16110 = FStar_Syntax_Util.type_u () in - FStar_All.pipe_right uu____16117 + FStar_All.pipe_right uu____16110 FStar_Pervasives_Native.fst in FStar_TypeChecker_Util.new_implicit_var "result type" tf.FStar_Syntax_Syntax.pos env - uu____16116 + uu____16109 in - match uu____16103 with - | (t,uu____16134,g) -> - let uu____16148 = FStar_Options.ml_ish () in - if uu____16148 + match uu____16096 with + | (t,uu____16127,g) -> + let uu____16141 = FStar_Options.ml_ish () in + if uu____16141 then - let uu____16157 = + let uu____16150 = FStar_Syntax_Util.ml_comp t r in - let uu____16160 = + let uu____16153 = FStar_TypeChecker_Env.conj_guard guard1 g in - (uu____16157, uu____16160) + (uu____16150, uu____16153) else - (let uu____16165 = + (let uu____16158 = FStar_Syntax_Syntax.mk_Total t in - let uu____16168 = + let uu____16161 = FStar_TypeChecker_Env.conj_guard guard1 g in - (uu____16165, uu____16168)) + (uu____16158, uu____16161)) in - (match uu____16096 with + (match uu____16089 with | (cres,guard2) -> let bs_cres = FStar_Syntax_Util.arrow bs cres in - ((let uu____16187 = + ((let uu____16180 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) FStar_Options.Extreme in - if uu____16187 + if uu____16180 then - let uu____16191 = + let uu____16184 = FStar_Syntax_Print.term_to_string head1 in - let uu____16193 = + let uu____16186 = FStar_Syntax_Print.term_to_string tf in - let uu____16195 = + let uu____16188 = FStar_Syntax_Print.term_to_string bs_cres in FStar_Util.print3 "Forcing the type of %s from %s to %s\n" - uu____16191 uu____16193 uu____16195 + uu____16184 uu____16186 uu____16188 else ()); (let g = - let uu____16201 = + let uu____16194 = FStar_TypeChecker_Rel.teq env tf bs_cres in FStar_TypeChecker_Rel.solve_deferred_constraints - env uu____16201 + env uu____16194 in - let uu____16202 = + let uu____16195 = FStar_TypeChecker_Env.conj_guard g guard2 in - check_function_app bs_cres uu____16202)))) + check_function_app bs_cres uu____16195)))) | FStar_Syntax_Syntax.Tm_arrow (bs,c) -> - let uu____16225 = FStar_Syntax_Subst.open_comp bs c in - (match uu____16225 with + let uu____16218 = FStar_Syntax_Subst.open_comp bs c in + (match uu____16218 with | (bs1,c1) -> let head_info = - let uu____16247 = + let uu____16240 = FStar_Syntax_Util.lcomp_of_comp c1 in - (head1, chead, ghead, uu____16247) in - ((let uu____16249 = + (head1, chead, ghead, uu____16240) in + ((let uu____16242 = FStar_TypeChecker_Env.debug env FStar_Options.Extreme in - if uu____16249 + if uu____16242 then - let uu____16252 = + let uu____16245 = FStar_Syntax_Print.term_to_string head1 in - let uu____16254 = + let uu____16247 = FStar_Syntax_Print.term_to_string tf in - let uu____16256 = + let uu____16249 = FStar_Syntax_Print.binders_to_string ", " bs1 in - let uu____16259 = + let uu____16252 = FStar_Syntax_Print.comp_to_string c1 in FStar_Util.print4 "######tc_args of head %s @ %s with formals=%s and result type=%s\n" - uu____16252 uu____16254 uu____16256 - uu____16259 + uu____16245 uu____16247 uu____16249 + uu____16252 else ()); tc_args head_info ([], [], [], guard, []) bs1 args)) - | FStar_Syntax_Syntax.Tm_refine (bv,uu____16305) -> + | FStar_Syntax_Syntax.Tm_refine (bv,uu____16298) -> check_function_app bv.FStar_Syntax_Syntax.sort guard | FStar_Syntax_Syntax.Tm_ascribed - (t,uu____16311,uu____16312) -> + (t,uu____16304,uu____16305) -> check_function_app t guard - | uu____16353 -> - let uu____16354 = + | uu____16346 -> + let uu____16347 = FStar_TypeChecker_Err.expected_function_typ env tf in - FStar_Errors.raise_error uu____16354 + FStar_Errors.raise_error uu____16347 head1.FStar_Syntax_Syntax.pos in check_function_app thead FStar_TypeChecker_Env.trivial_guard) @@ -5980,75 +5949,75 @@ and (check_short_circuit_args : ((FStar_List.length bs) = (FStar_List.length args)) -> let res_t = FStar_Syntax_Util.comp_result c in - let uu____16437 = + let uu____16430 = FStar_List.fold_left2 - (fun uu____16506 -> - fun uu____16507 -> - fun uu____16508 -> - match (uu____16506, uu____16507, uu____16508) + (fun uu____16499 -> + fun uu____16500 -> + fun uu____16501 -> + match (uu____16499, uu____16500, uu____16501) with | ((seen,guard,ghost),(e,aq),(b,aq')) -> - ((let uu____16661 = - let uu____16663 = + ((let uu____16654 = + let uu____16656 = FStar_Syntax_Util.eq_aqual aq aq' in - uu____16663 <> FStar_Syntax_Util.Equal + uu____16656 <> FStar_Syntax_Util.Equal in - if uu____16661 + if uu____16654 then FStar_Errors.raise_error (FStar_Errors.Fatal_InconsistentImplicitQualifier, "Inconsistent implicit qualifiers") e.FStar_Syntax_Syntax.pos else ()); - (let uu____16669 = + (let uu____16662 = tc_check_tot_or_gtot_term env e b.FStar_Syntax_Syntax.sort in - match uu____16669 with + match uu____16662 with | (e1,c1,g) -> let short = FStar_TypeChecker_Util.short_circuit head1 seen in let g1 = - let uu____16698 = + let uu____16691 = FStar_TypeChecker_Env.guard_of_guard_formula short in FStar_TypeChecker_Env.imp_guard - uu____16698 g + uu____16691 g in let ghost1 = ghost || - ((let uu____16703 = + ((let uu____16696 = FStar_Syntax_Util.is_total_lcomp c1 in - Prims.op_Negation uu____16703) + Prims.op_Negation uu____16696) && - (let uu____16706 = + (let uu____16699 = FStar_TypeChecker_Util.is_pure_effect env c1.FStar_Syntax_Syntax.eff_name in - Prims.op_Negation uu____16706)) + Prims.op_Negation uu____16699)) in - let uu____16708 = - let uu____16719 = - let uu____16730 = + let uu____16701 = + let uu____16712 = + let uu____16723 = FStar_Syntax_Syntax.as_arg e1 in - [uu____16730] in - FStar_List.append seen uu____16719 + [uu____16723] in + FStar_List.append seen uu____16712 in - let uu____16763 = + let uu____16756 = FStar_TypeChecker_Env.conj_guard guard g1 in - (uu____16708, uu____16763, ghost1)))) + (uu____16701, uu____16756, ghost1)))) ([], g_head, false) args bs in - (match uu____16437 with + (match uu____16430 with | (args1,guard,ghost) -> let e = FStar_Syntax_Syntax.mk_Tm_app head1 args1 @@ -6057,17 +6026,17 @@ and (check_short_circuit_args : let c1 = if ghost then - let uu____16831 = + let uu____16824 = FStar_Syntax_Syntax.mk_GTotal res_t in - FStar_All.pipe_right uu____16831 + FStar_All.pipe_right uu____16824 FStar_Syntax_Util.lcomp_of_comp else FStar_Syntax_Util.lcomp_of_comp c in - let uu____16834 = + let uu____16827 = FStar_TypeChecker_Util.strengthen_precondition FStar_Pervasives_Native.None env e c1 guard in - (match uu____16834 with | (c2,g) -> (e, c2, g))) - | uu____16851 -> + (match uu____16827 with | (c2,g) -> (e, c2, g))) + | uu____16844 -> check_application_args env head1 chead g_head args expected_topt @@ -6090,25 +6059,25 @@ and (tc_pat : let expected_pat_typ env1 pos scrutinee_t = let rec aux norm1 t = let t1 = FStar_Syntax_Util.unrefine t in - let uu____16942 = FStar_Syntax_Util.head_and_args t1 in - match uu____16942 with + let uu____16935 = FStar_Syntax_Util.head_and_args t1 in + match uu____16935 with | (head1,args) -> - let uu____16985 = - let uu____16986 = FStar_Syntax_Subst.compress head1 in - uu____16986.FStar_Syntax_Syntax.n in - (match uu____16985 with + let uu____16978 = + let uu____16979 = FStar_Syntax_Subst.compress head1 in + uu____16979.FStar_Syntax_Syntax.n in + (match uu____16978 with | FStar_Syntax_Syntax.Tm_uinst ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_fvar f; - FStar_Syntax_Syntax.pos = uu____16990; - FStar_Syntax_Syntax.vars = uu____16991;_},us) + FStar_Syntax_Syntax.pos = uu____16983; + FStar_Syntax_Syntax.vars = uu____16984;_},us) -> unfold_once t1 f us args | FStar_Syntax_Syntax.Tm_fvar f -> unfold_once t1 f [] args - | uu____16998 -> + | uu____16991 -> if norm1 then t1 else - (let uu____17002 = + (let uu____16995 = FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.HNF; FStar_TypeChecker_Env.Unmeta; @@ -6116,30 +6085,30 @@ and (tc_pat : FStar_TypeChecker_Env.UnfoldUntil FStar_Syntax_Syntax.delta_constant] env1 t1 in - aux true uu____17002)) + aux true uu____16995)) and unfold_once t f us args = - let uu____17020 = + let uu____17013 = FStar_TypeChecker_Env.is_type_constructor env1 (f.FStar_Syntax_Syntax.fv_name).FStar_Syntax_Syntax.v in - if uu____17020 + if uu____17013 then t else - (let uu____17025 = + (let uu____17018 = FStar_TypeChecker_Env.lookup_definition [FStar_TypeChecker_Env.Unfold FStar_Syntax_Syntax.delta_constant] env1 (f.FStar_Syntax_Syntax.fv_name).FStar_Syntax_Syntax.v in - match uu____17025 with + match uu____17018 with | FStar_Pervasives_Native.None -> t | FStar_Pervasives_Native.Some head_def_ts -> - let uu____17045 = + let uu____17038 = FStar_TypeChecker_Env.inst_tscheme_with head_def_ts us in - (match uu____17045 with - | (uu____17050,head_def) -> + (match uu____17038 with + | (uu____17043,head_def) -> let t' = FStar_Syntax_Syntax.mk_Tm_app head_def args FStar_Pervasives_Native.None @@ -6152,79 +6121,79 @@ and (tc_pat : in aux false t'1)) in - let uu____17057 = + let uu____17050 = FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.Beta; FStar_TypeChecker_Env.Iota] env1 scrutinee_t in - aux false uu____17057 in + aux false uu____17050 in let pat_typ_ok env1 pat_t1 scrutinee_t = - (let uu____17076 = + (let uu____17069 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Patterns") in - if uu____17076 + if uu____17069 then - let uu____17081 = FStar_Syntax_Print.term_to_string pat_t1 in - let uu____17083 = FStar_Syntax_Print.term_to_string scrutinee_t + let uu____17074 = FStar_Syntax_Print.term_to_string pat_t1 in + let uu____17076 = FStar_Syntax_Print.term_to_string scrutinee_t in FStar_Util.print2 "$$$$$$$$$$$$pat_typ_ok? %s vs. %s\n" - uu____17081 uu____17083 + uu____17074 uu____17076 else ()); (let fail2 msg = let msg1 = - let uu____17103 = FStar_Syntax_Print.term_to_string pat_t1 in - let uu____17105 = + let uu____17096 = FStar_Syntax_Print.term_to_string pat_t1 in + let uu____17098 = FStar_Syntax_Print.term_to_string scrutinee_t in FStar_Util.format3 "Type of pattern (%s) does not match type of scrutinee (%s)%s" - uu____17103 uu____17105 msg + uu____17096 uu____17098 msg in FStar_Errors.raise_error (FStar_Errors.Fatal_MismatchedPatternType, msg1) p0.FStar_Syntax_Syntax.p in - let uu____17109 = FStar_Syntax_Util.head_and_args scrutinee_t in - match uu____17109 with + let uu____17102 = FStar_Syntax_Util.head_and_args scrutinee_t in + match uu____17102 with | (head_s,args_s) -> let pat_t2 = FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.Beta] env1 pat_t1 in - let uu____17153 = FStar_Syntax_Util.un_uinst head_s in - (match uu____17153 with + let uu____17146 = FStar_Syntax_Util.un_uinst head_s in + (match uu____17146 with | { FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_fvar - uu____17154; - FStar_Syntax_Syntax.pos = uu____17155; - FStar_Syntax_Syntax.vars = uu____17156;_} -> - let uu____17159 = FStar_Syntax_Util.head_and_args pat_t2 + uu____17147; + FStar_Syntax_Syntax.pos = uu____17148; + FStar_Syntax_Syntax.vars = uu____17149;_} -> + let uu____17152 = FStar_Syntax_Util.head_and_args pat_t2 in - (match uu____17159 with + (match uu____17152 with | (head_p,args_p) -> - let uu____17202 = + let uu____17195 = FStar_TypeChecker_Rel.teq_nosmt_force env1 head_p head_s in - if uu____17202 + if uu____17195 then - let uu____17205 = - let uu____17206 = + let uu____17198 = + let uu____17199 = FStar_Syntax_Util.un_uinst head_p in - uu____17206.FStar_Syntax_Syntax.n in - (match uu____17205 with + uu____17199.FStar_Syntax_Syntax.n in + (match uu____17198 with | FStar_Syntax_Syntax.Tm_fvar f -> - ((let uu____17211 = - let uu____17213 = - let uu____17215 = + ((let uu____17204 = + let uu____17206 = + let uu____17208 = FStar_Syntax_Syntax.lid_of_fv f in FStar_TypeChecker_Env.is_type_constructor - env1 uu____17215 + env1 uu____17208 in FStar_All.pipe_left Prims.op_Negation - uu____17213 + uu____17206 in - if uu____17211 + if uu____17204 then fail2 "Pattern matching a non-inductive type" @@ -6234,61 +6203,61 @@ and (tc_pat : (FStar_List.length args_s) then fail2 "" else (); - (let uu____17243 = - let uu____17268 = - let uu____17272 = + (let uu____17236 = + let uu____17261 = + let uu____17265 = FStar_Syntax_Syntax.lid_of_fv f in FStar_TypeChecker_Env.num_inductive_ty_params - env1 uu____17272 + env1 uu____17265 in - match uu____17268 with + match uu____17261 with | FStar_Pervasives_Native.None -> (args_p, args_s) | FStar_Pervasives_Native.Some n1 -> - let uu____17321 = + let uu____17314 = FStar_Util.first_N n1 args_p in - (match uu____17321 with - | (params_p,uu____17379) -> - let uu____17420 = + (match uu____17314 with + | (params_p,uu____17372) -> + let uu____17413 = FStar_Util.first_N n1 args_s in - (match uu____17420 with - | (params_s,uu____17478) -> + (match uu____17413 with + | (params_s,uu____17471) -> (params_p, params_s))) in - match uu____17243 with + match uu____17236 with | (params_p,params_s) -> FStar_List.fold_left2 (fun out -> - fun uu____17607 -> - fun uu____17608 -> - match (uu____17607, - uu____17608) + fun uu____17600 -> + fun uu____17601 -> + match (uu____17600, + uu____17601) with - | ((p,uu____17642),(s,uu____17644)) + | ((p,uu____17635),(s,uu____17637)) -> - let uu____17677 = + let uu____17670 = FStar_TypeChecker_Rel.teq_nosmt env1 p s in - (match uu____17677 with + (match uu____17670 with | FStar_Pervasives_Native.None -> - let uu____17680 = - let uu____17682 = + let uu____17673 = + let uu____17675 = FStar_Syntax_Print.term_to_string p in - let uu____17684 = + let uu____17677 = FStar_Syntax_Print.term_to_string s in FStar_Util.format2 "; parameter %s <> parameter %s" - uu____17682 - uu____17684 + uu____17675 + uu____17677 in - fail2 uu____17680 + fail2 uu____17673 | FStar_Pervasives_Native.Some g -> let g1 = @@ -6299,23 +6268,23 @@ and (tc_pat : g1 out)) FStar_TypeChecker_Env.trivial_guard params_p params_s)) - | uu____17689 -> + | uu____17682 -> fail2 "Pattern matching a non-inductive type") else - (let uu____17693 = - let uu____17695 = + (let uu____17686 = + let uu____17688 = FStar_Syntax_Print.term_to_string head_p in - let uu____17697 = + let uu____17690 = FStar_Syntax_Print.term_to_string head_s in FStar_Util.format2 "; head mismatch %s vs %s" - uu____17695 uu____17697 + uu____17688 uu____17690 in - fail2 uu____17693)) - | uu____17700 -> - let uu____17701 = + fail2 uu____17686)) + | uu____17693 -> + let uu____17694 = FStar_TypeChecker_Rel.teq_nosmt env1 pat_t2 scrutinee_t in - (match uu____17701 with + (match uu____17694 with | FStar_Pervasives_Native.None -> fail2 "" | FStar_Pervasives_Native.Some g -> let g1 = @@ -6325,20 +6294,20 @@ and (tc_pat : g1))) in let type_of_simple_pat env1 e = - let uu____17738 = FStar_Syntax_Util.head_and_args e in - match uu____17738 with + let uu____17731 = FStar_Syntax_Util.head_and_args e in + match uu____17731 with | (head1,args) -> (match head1.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_fvar f -> - let uu____17802 = + let uu____17795 = FStar_TypeChecker_Env.lookup_datacon env1 (f.FStar_Syntax_Syntax.fv_name).FStar_Syntax_Syntax.v in - (match uu____17802 with + (match uu____17795 with | (us,t_f) -> - let uu____17819 = FStar_Syntax_Util.arrow_formals t_f + let uu____17812 = FStar_Syntax_Util.arrow_formals t_f in - (match uu____17819 with + (match uu____17812 with | (formals,t) -> (if (FStar_List.length formals) <> @@ -6347,8 +6316,8 @@ and (tc_pat : fail1 "Pattern is not a fully-applied data constructor" else (); - (let rec aux uu____17948 formals1 args1 = - match uu____17948 with + (let rec aux uu____17941 formals1 args1 = + match uu____17941 with | (subst1,args_out,bvs,guard) -> (match (formals1, args1) with | ([],[]) -> @@ -6362,35 +6331,35 @@ and (tc_pat : FStar_Pervasives_Native.None e.FStar_Syntax_Syntax.pos in - let uu____18093 = + let uu____18086 = FStar_Syntax_Subst.subst subst1 t in - (pat_e, uu____18093, bvs, guard) - | ((f1,uu____18099)::formals2,(a,imp_a)::args2) + (pat_e, uu____18086, bvs, guard) + | ((f1,uu____18092)::formals2,(a,imp_a)::args2) -> let t_f1 = FStar_Syntax_Subst.subst subst1 f1.FStar_Syntax_Syntax.sort in - let uu____18157 = - let uu____18178 = - let uu____18179 = + let uu____18150 = + let uu____18171 = + let uu____18172 = FStar_Syntax_Subst.compress a in - uu____18179.FStar_Syntax_Syntax.n + uu____18172.FStar_Syntax_Syntax.n in - match uu____18178 with + match uu____18171 with | FStar_Syntax_Syntax.Tm_name x -> let x1 = - let uu___381_18204 = x in + let uu___378_18197 = x in { FStar_Syntax_Syntax.ppname = - (uu___381_18204.FStar_Syntax_Syntax.ppname); + (uu___378_18197.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___381_18204.FStar_Syntax_Syntax.index); + (uu___378_18197.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t_f1 } in @@ -6406,16 +6375,16 @@ and (tc_pat : (FStar_List.append bvs [x1]), FStar_TypeChecker_Env.trivial_guard) | FStar_Syntax_Syntax.Tm_uvar - uu____18227 -> + uu____18220 -> let env2 = FStar_TypeChecker_Env.set_expected_typ env1 t_f1 in - let uu____18241 = + let uu____18234 = tc_tot_or_gtot_term env2 a in - (match uu____18241 with - | (a1,uu____18269,g) -> + (match uu____18234 with + | (a1,uu____18262,g) -> let g1 = FStar_TypeChecker_Rel.discharge_guard_no_smt env2 g @@ -6426,289 +6395,289 @@ and (tc_pat : :: subst1 in ((a1, imp_a), subst2, bvs, g1)) - | uu____18293 -> + | uu____18286 -> fail1 "Not a simple pattern" in - (match uu____18157 with + (match uu____18150 with | (a1,subst2,bvs1,g) -> - let uu____18355 = - let uu____18378 = + let uu____18348 = + let uu____18371 = FStar_TypeChecker_Env.conj_guard g guard in (subst2, (FStar_List.append args_out [a1]), bvs1, - uu____18378) + uu____18371) in - aux uu____18355 formals2 args2) - | uu____18417 -> + aux uu____18348 formals2 args2) + | uu____18410 -> fail1 "Not a fully applued pattern") in aux ([], [], [], FStar_TypeChecker_Env.trivial_guard) formals args)))) - | uu____18473 -> fail1 "Not a simple pattern") + | uu____18466 -> fail1 "Not a simple pattern") in let rec check_nested_pattern env1 p t = - (let uu____18522 = + (let uu____18515 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Patterns") in - if uu____18522 + if uu____18515 then - let uu____18527 = FStar_Syntax_Print.pat_to_string p in - let uu____18529 = FStar_Syntax_Print.term_to_string t in - FStar_Util.print2 "Checking pattern %s at type %s\n" uu____18527 - uu____18529 + let uu____18520 = FStar_Syntax_Print.pat_to_string p in + let uu____18522 = FStar_Syntax_Print.term_to_string t in + FStar_Util.print2 "Checking pattern %s at type %s\n" uu____18520 + uu____18522 else ()); (match p.FStar_Syntax_Syntax.v with - | FStar_Syntax_Syntax.Pat_dot_term uu____18544 -> - let uu____18551 = - let uu____18553 = FStar_Syntax_Print.pat_to_string p in + | FStar_Syntax_Syntax.Pat_dot_term uu____18537 -> + let uu____18544 = + let uu____18546 = FStar_Syntax_Print.pat_to_string p in FStar_Util.format1 "Impossible: Expected an undecorated pattern, got %s" - uu____18553 + uu____18546 in - failwith uu____18551 + failwith uu____18544 | FStar_Syntax_Syntax.Pat_wild x -> let x1 = - let uu___382_18568 = x in + let uu___379_18561 = x in { FStar_Syntax_Syntax.ppname = - (uu___382_18568.FStar_Syntax_Syntax.ppname); + (uu___379_18561.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___382_18568.FStar_Syntax_Syntax.index); + (uu___379_18561.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t } in - let uu____18569 = FStar_Syntax_Syntax.bv_to_name x1 in - ([x1], uu____18569, - (let uu___383_18573 = p in + let uu____18562 = FStar_Syntax_Syntax.bv_to_name x1 in + ([x1], uu____18562, + (let uu___380_18566 = p in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_wild x1); FStar_Syntax_Syntax.p = - (uu___383_18573.FStar_Syntax_Syntax.p) + (uu___380_18566.FStar_Syntax_Syntax.p) }), FStar_TypeChecker_Env.trivial_guard) | FStar_Syntax_Syntax.Pat_var x -> let x1 = - let uu___384_18576 = x in + let uu___381_18569 = x in { FStar_Syntax_Syntax.ppname = - (uu___384_18576.FStar_Syntax_Syntax.ppname); + (uu___381_18569.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___384_18576.FStar_Syntax_Syntax.index); + (uu___381_18569.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t } in - let uu____18577 = FStar_Syntax_Syntax.bv_to_name x1 in - ([x1], uu____18577, - (let uu___385_18581 = p in + let uu____18570 = FStar_Syntax_Syntax.bv_to_name x1 in + ([x1], uu____18570, + (let uu___382_18574 = p in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_var x1); FStar_Syntax_Syntax.p = - (uu___385_18581.FStar_Syntax_Syntax.p) + (uu___382_18574.FStar_Syntax_Syntax.p) }), FStar_TypeChecker_Env.trivial_guard) - | FStar_Syntax_Syntax.Pat_constant uu____18582 -> - let uu____18583 = + | FStar_Syntax_Syntax.Pat_constant uu____18575 -> + let uu____18576 = FStar_TypeChecker_PatternUtils.pat_as_exp false env1 p in - (match uu____18583 with - | (uu____18605,e_c,uu____18607,uu____18608) -> - let uu____18613 = tc_tot_or_gtot_term env1 e_c in - (match uu____18613 with + (match uu____18576 with + | (uu____18598,e_c,uu____18600,uu____18601) -> + let uu____18606 = tc_tot_or_gtot_term env1 e_c in + (match uu____18606 with | (e_c1,lc,g) -> (FStar_TypeChecker_Rel.force_trivial_guard env1 g; (let expected_t = expected_pat_typ env1 p0.FStar_Syntax_Syntax.p t in - (let uu____18636 = - let uu____18638 = + (let uu____18629 = + let uu____18631 = FStar_TypeChecker_Rel.teq_nosmt_force env1 lc.FStar_Syntax_Syntax.res_typ expected_t in - Prims.op_Negation uu____18638 in - if uu____18636 + Prims.op_Negation uu____18631 in + if uu____18629 then - let uu____18641 = - let uu____18643 = + let uu____18634 = + let uu____18636 = FStar_Syntax_Print.term_to_string lc.FStar_Syntax_Syntax.res_typ in - let uu____18645 = + let uu____18638 = FStar_Syntax_Print.term_to_string expected_t in FStar_Util.format2 "Type of pattern (%s) does not match type of scrutinee (%s)" - uu____18643 uu____18645 + uu____18636 uu____18638 in - fail1 uu____18641 + fail1 uu____18634 else ()); ([], e_c1, p, FStar_TypeChecker_Env.trivial_guard))))) | FStar_Syntax_Syntax.Pat_cons (fv,sub_pats) -> let simple_pat = let simple_sub_pats = FStar_List.map - (fun uu____18703 -> - match uu____18703 with + (fun uu____18696 -> + match uu____18696 with | (p1,b) -> (match p1.FStar_Syntax_Syntax.v with - | FStar_Syntax_Syntax.Pat_dot_term uu____18733 + | FStar_Syntax_Syntax.Pat_dot_term uu____18726 -> (p1, b) - | uu____18743 -> - let uu____18744 = - let uu____18747 = - let uu____18748 = + | uu____18736 -> + let uu____18737 = + let uu____18740 = + let uu____18741 = FStar_Syntax_Syntax.new_bv (FStar_Pervasives_Native.Some (p1.FStar_Syntax_Syntax.p)) FStar_Syntax_Syntax.tun in - FStar_Syntax_Syntax.Pat_var uu____18748 + FStar_Syntax_Syntax.Pat_var uu____18741 in - FStar_Syntax_Syntax.withinfo uu____18747 + FStar_Syntax_Syntax.withinfo uu____18740 p1.FStar_Syntax_Syntax.p in - (uu____18744, b))) sub_pats + (uu____18737, b))) sub_pats in - let uu___386_18752 = p in + let uu___383_18745 = p in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_cons (fv, simple_sub_pats)); FStar_Syntax_Syntax.p = - (uu___386_18752.FStar_Syntax_Syntax.p) + (uu___383_18745.FStar_Syntax_Syntax.p) } in let sub_pats1 = FStar_All.pipe_right sub_pats (FStar_List.filter - (fun uu____18797 -> - match uu____18797 with - | (x,uu____18807) -> + (fun uu____18790 -> + match uu____18790 with + | (x,uu____18800) -> (match x.FStar_Syntax_Syntax.v with - | FStar_Syntax_Syntax.Pat_dot_term uu____18815 + | FStar_Syntax_Syntax.Pat_dot_term uu____18808 -> false - | uu____18823 -> true))) + | uu____18816 -> true))) in - let uu____18825 = + let uu____18818 = FStar_TypeChecker_PatternUtils.pat_as_exp false env1 simple_pat in - (match uu____18825 with + (match uu____18818 with | (simple_bvs,simple_pat_e,g0,simple_pat_elab) -> (if (FStar_List.length simple_bvs) <> (FStar_List.length sub_pats1) then - (let uu____18862 = - let uu____18864 = + (let uu____18855 = + let uu____18857 = FStar_Range.string_of_range p.FStar_Syntax_Syntax.p in - let uu____18866 = + let uu____18859 = FStar_Syntax_Print.pat_to_string simple_pat in - let uu____18868 = + let uu____18861 = FStar_Util.string_of_int (FStar_List.length sub_pats1) in - let uu____18875 = + let uu____18868 = FStar_Util.string_of_int (FStar_List.length simple_bvs) in FStar_Util.format4 "(%s) Impossible: pattern bvar mismatch: %s; expected %s sub pats; got %s" - uu____18864 uu____18866 uu____18868 uu____18875 + uu____18857 uu____18859 uu____18861 uu____18868 in - failwith uu____18862) + failwith uu____18855) else (); - (let uu____18880 = - let uu____18889 = + (let uu____18873 = + let uu____18882 = type_of_simple_pat env1 simple_pat_e in - match uu____18889 with + match uu____18882 with | (simple_pat_e1,simple_pat_t,simple_bvs1,guard) -> let g' = - let uu____18917 = + let uu____18910 = expected_pat_typ env1 p0.FStar_Syntax_Syntax.p t in - pat_typ_ok env1 simple_pat_t uu____18917 in + pat_typ_ok env1 simple_pat_t uu____18910 in let guard1 = FStar_TypeChecker_Env.conj_guard guard g' in - ((let uu____18920 = + ((let uu____18913 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env1) (FStar_Options.Other "Patterns") in - if uu____18920 + if uu____18913 then - let uu____18925 = + let uu____18918 = FStar_Syntax_Print.term_to_string simple_pat_e1 in - let uu____18927 = + let uu____18920 = FStar_Syntax_Print.term_to_string simple_pat_t in - let uu____18929 = - let uu____18931 = + let uu____18922 = + let uu____18924 = FStar_List.map (fun x -> - let uu____18939 = - let uu____18941 = + let uu____18932 = + let uu____18934 = FStar_Syntax_Print.bv_to_string x in - let uu____18943 = - let uu____18945 = - let uu____18947 = + let uu____18936 = + let uu____18938 = + let uu____18940 = FStar_Syntax_Print.term_to_string x.FStar_Syntax_Syntax.sort in - Prims.strcat uu____18947 ")" + Prims.strcat uu____18940 ")" in - Prims.strcat " : " uu____18945 + Prims.strcat " : " uu____18938 in - Prims.strcat uu____18941 - uu____18943 + Prims.strcat uu____18934 + uu____18936 in - Prims.strcat "(" uu____18939) + Prims.strcat "(" uu____18932) simple_bvs1 in - FStar_All.pipe_right uu____18931 + FStar_All.pipe_right uu____18924 (FStar_String.concat " ") in FStar_Util.print3 "$$$$$$$$$$$$Checked simple pattern %s at type %s with bvs=%s\n" - uu____18925 uu____18927 uu____18929 + uu____18918 uu____18920 uu____18922 else ()); (simple_pat_e1, simple_bvs1, guard1)) in - match uu____18880 with + match uu____18873 with | (simple_pat_e1,simple_bvs1,g1) -> - let uu____18979 = - let uu____19001 = - let uu____19023 = + let uu____18972 = + let uu____18994 = + let uu____19016 = FStar_TypeChecker_Env.conj_guard g0 g1 in - (env1, [], [], [], uu____19023) in + (env1, [], [], [], uu____19016) in FStar_List.fold_left2 - (fun uu____19084 -> - fun uu____19085 -> + (fun uu____19077 -> + fun uu____19078 -> fun x -> - match (uu____19084, uu____19085) with + match (uu____19077, uu____19078) with | ((env2,bvs,pats,subst1,g),(p1,b)) -> let expected_t = FStar_Syntax_Subst.subst subst1 x.FStar_Syntax_Syntax.sort in - let uu____19218 = + let uu____19211 = check_nested_pattern env2 p1 expected_t in - (match uu____19218 with + (match uu____19211 with | (bvs_p,e_p,p2,g') -> let env3 = FStar_TypeChecker_Env.push_bvs env2 bvs_p in - let uu____19259 = + let uu____19252 = FStar_TypeChecker_Env.conj_guard g g' in @@ -6718,10 +6687,10 @@ and (tc_pat : [(p2, b)]), ((FStar_Syntax_Syntax.NT (x, e_p)) :: subst1), - uu____19259))) uu____19001 + uu____19252))) uu____18994 sub_pats1 simple_bvs1 in - (match uu____18979 with + (match uu____18972 with | (_env,bvs,checked_sub_pats,subst1,g) -> let pat_e = FStar_Syntax_Subst.subst subst1 @@ -6740,34 +6709,34 @@ and (tc_pat : e in let hd2 = - let uu___387_19471 = hd1 in + let uu___384_19464 = hd1 in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_dot_term (x, e1)); FStar_Syntax_Syntax.p = - (uu___387_19471.FStar_Syntax_Syntax.p) + (uu___384_19464.FStar_Syntax_Syntax.p) } in - let uu____19476 = + let uu____19469 = aux simple_pats1 bvs1 sub_pats2 in - (hd2, b) :: uu____19476 + (hd2, b) :: uu____19469 | FStar_Syntax_Syntax.Pat_var x -> (match (bvs1, sub_pats2) with - | (x'::bvs2,(hd2,uu____19520)::sub_pats3) + | (x'::bvs2,(hd2,uu____19513)::sub_pats3) when FStar_Syntax_Syntax.bv_eq x x' -> - let uu____19557 = + let uu____19550 = aux simple_pats1 bvs2 sub_pats3 in - (hd2, b) :: uu____19557 - | uu____19577 -> + (hd2, b) :: uu____19550 + | uu____19570 -> failwith "Impossible: simple pat variable mismatch") - | uu____19603 -> + | uu____19596 -> failwith "Impossible: expected a simple pattern") in @@ -6778,146 +6747,146 @@ and (tc_pat : aux simple_pats simple_bvs1 checked_sub_pats in - let uu___388_19646 = pat in + let uu___385_19639 = pat in { FStar_Syntax_Syntax.v = (FStar_Syntax_Syntax.Pat_cons (fv1, nested_pats)); FStar_Syntax_Syntax.p = - (uu___388_19646.FStar_Syntax_Syntax.p) + (uu___385_19639.FStar_Syntax_Syntax.p) } - | uu____19658 -> failwith "Impossible" in - let uu____19662 = + | uu____19651 -> failwith "Impossible" in + let uu____19655 = reconstruct_nested_pat simple_pat_elab in - (bvs, pat_e, uu____19662, g)))))) + (bvs, pat_e, uu____19655, g)))))) in - (let uu____19666 = + (let uu____19659 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Patterns") in - if uu____19666 + if uu____19659 then - let uu____19671 = FStar_Syntax_Print.pat_to_string p0 in - FStar_Util.print1 "Checking pattern: %s\n" uu____19671 + let uu____19664 = FStar_Syntax_Print.pat_to_string p0 in + FStar_Util.print1 "Checking pattern: %s\n" uu____19664 else ()); - (let uu____19676 = - let uu____19687 = - let uu___389_19688 = - let uu____19689 = FStar_TypeChecker_Env.clear_expected_typ env + (let uu____19669 = + let uu____19680 = + let uu___386_19681 = + let uu____19682 = FStar_TypeChecker_Env.clear_expected_typ env in - FStar_All.pipe_right uu____19689 FStar_Pervasives_Native.fst + FStar_All.pipe_right uu____19682 FStar_Pervasives_Native.fst in { FStar_TypeChecker_Env.solver = - (uu___389_19688.FStar_TypeChecker_Env.solver); + (uu___386_19681.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___389_19688.FStar_TypeChecker_Env.range); + (uu___386_19681.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___389_19688.FStar_TypeChecker_Env.curmodule); + (uu___386_19681.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___389_19688.FStar_TypeChecker_Env.gamma); + (uu___386_19681.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___389_19688.FStar_TypeChecker_Env.gamma_sig); + (uu___386_19681.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___389_19688.FStar_TypeChecker_Env.gamma_cache); + (uu___386_19681.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___389_19688.FStar_TypeChecker_Env.modules); + (uu___386_19681.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___389_19688.FStar_TypeChecker_Env.expected_typ); + (uu___386_19681.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___389_19688.FStar_TypeChecker_Env.sigtab); + (uu___386_19681.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___389_19688.FStar_TypeChecker_Env.attrtab); + (uu___386_19681.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___389_19688.FStar_TypeChecker_Env.is_pattern); + (uu___386_19681.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___389_19688.FStar_TypeChecker_Env.instantiate_imp); + (uu___386_19681.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___389_19688.FStar_TypeChecker_Env.effects); + (uu___386_19681.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___389_19688.FStar_TypeChecker_Env.generalize); + (uu___386_19681.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___389_19688.FStar_TypeChecker_Env.letrecs); + (uu___386_19681.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___389_19688.FStar_TypeChecker_Env.top_level); + (uu___386_19681.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___389_19688.FStar_TypeChecker_Env.check_uvars); + (uu___386_19681.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = true; FStar_TypeChecker_Env.is_iface = - (uu___389_19688.FStar_TypeChecker_Env.is_iface); + (uu___386_19681.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___389_19688.FStar_TypeChecker_Env.admit); + (uu___386_19681.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___389_19688.FStar_TypeChecker_Env.lax); + (uu___386_19681.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___389_19688.FStar_TypeChecker_Env.lax_universes); + (uu___386_19681.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___389_19688.FStar_TypeChecker_Env.phase1); + (uu___386_19681.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___389_19688.FStar_TypeChecker_Env.failhard); + (uu___386_19681.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___389_19688.FStar_TypeChecker_Env.nosynth); + (uu___386_19681.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___389_19688.FStar_TypeChecker_Env.uvar_subtyping); + (uu___386_19681.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___389_19688.FStar_TypeChecker_Env.tc_term); + (uu___386_19681.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___389_19688.FStar_TypeChecker_Env.type_of); + (uu___386_19681.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___389_19688.FStar_TypeChecker_Env.universe_of); + (uu___386_19681.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___389_19688.FStar_TypeChecker_Env.check_type_of); + (uu___386_19681.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___389_19688.FStar_TypeChecker_Env.use_bv_sorts); + (uu___386_19681.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___389_19688.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___386_19681.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___389_19688.FStar_TypeChecker_Env.normalized_eff_names); + (uu___386_19681.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___389_19688.FStar_TypeChecker_Env.fv_delta_depths); + (uu___386_19681.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___389_19688.FStar_TypeChecker_Env.proof_ns); + (uu___386_19681.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___389_19688.FStar_TypeChecker_Env.synth_hook); + (uu___386_19681.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___389_19688.FStar_TypeChecker_Env.splice); + (uu___386_19681.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___389_19688.FStar_TypeChecker_Env.postprocess); + (uu___386_19681.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___389_19688.FStar_TypeChecker_Env.is_native_tactic); + (uu___386_19681.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___389_19688.FStar_TypeChecker_Env.identifier_info); + (uu___386_19681.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___389_19688.FStar_TypeChecker_Env.tc_hooks); + (uu___386_19681.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___389_19688.FStar_TypeChecker_Env.dsenv); + (uu___386_19681.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___389_19688.FStar_TypeChecker_Env.nbe) + (uu___386_19681.FStar_TypeChecker_Env.nbe) } in - let uu____19705 = + let uu____19698 = FStar_TypeChecker_PatternUtils.elaborate_pat env p0 in - check_nested_pattern uu____19687 uu____19705 pat_t in - match uu____19676 with + check_nested_pattern uu____19680 uu____19698 pat_t in + match uu____19669 with | (bvs,pat_e,pat,g) -> - ((let uu____19729 = + ((let uu____19722 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Patterns") in - if uu____19729 + if uu____19722 then - let uu____19734 = FStar_Syntax_Print.pat_to_string pat in - let uu____19736 = FStar_Syntax_Print.term_to_string pat_e + let uu____19727 = FStar_Syntax_Print.pat_to_string pat in + let uu____19729 = FStar_Syntax_Print.term_to_string pat_e in FStar_Util.print2 - "Done checking pattern %s as expression %s\n" uu____19734 - uu____19736 + "Done checking pattern %s as expression %s\n" uu____19727 + uu____19729 else ()); - (let uu____19741 = FStar_TypeChecker_Env.push_bvs env bvs in - let uu____19742 = + (let uu____19734 = FStar_TypeChecker_Env.push_bvs env bvs in + let uu____19735 = FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.Beta] env pat_e in - (pat, bvs, uu____19741, pat_e, uu____19742, g)))) + (pat, bvs, uu____19734, pat_e, uu____19735, g)))) and (tc_eqn : FStar_Syntax_Syntax.bv -> @@ -6937,59 +6906,59 @@ and (tc_eqn : fun scrutinee -> fun env -> fun branch1 -> - let uu____19788 = FStar_Syntax_Subst.open_branch branch1 in - match uu____19788 with + let uu____19781 = FStar_Syntax_Subst.open_branch branch1 in + match uu____19781 with | (pattern,when_clause,branch_exp) -> - let uu____19834 = branch1 in - (match uu____19834 with - | (cpat,uu____19876,cbr) -> + let uu____19827 = branch1 in + (match uu____19827 with + | (cpat,uu____19869,cbr) -> let pat_t = scrutinee.FStar_Syntax_Syntax.sort in let scrutinee_tm = FStar_Syntax_Syntax.bv_to_name scrutinee in - let uu____19898 = - let uu____19905 = + let uu____19891 = + let uu____19898 = FStar_TypeChecker_Env.push_bv env scrutinee in - FStar_All.pipe_right uu____19905 + FStar_All.pipe_right uu____19898 FStar_TypeChecker_Env.clear_expected_typ in - (match uu____19898 with - | (scrutinee_env,uu____19939) -> - let uu____19944 = tc_pat env pat_t pattern in - (match uu____19944 with + (match uu____19891 with + | (scrutinee_env,uu____19932) -> + let uu____19937 = tc_pat env pat_t pattern in + (match uu____19937 with | (pattern1,pat_bvs1,pat_env,pat_exp,norm_pat_exp,guard_pat) -> - let uu____19995 = + let uu____19988 = match when_clause with | FStar_Pervasives_Native.None -> (FStar_Pervasives_Native.None, FStar_TypeChecker_Env.trivial_guard) | FStar_Pervasives_Native.Some e -> - let uu____20025 = + let uu____20018 = FStar_TypeChecker_Env.should_verify env in - if uu____20025 + if uu____20018 then FStar_Errors.raise_error (FStar_Errors.Fatal_WhenClauseNotSupported, "When clauses are not yet supported in --verify mode; they will be some day") e.FStar_Syntax_Syntax.pos else - (let uu____20048 = - let uu____20055 = + (let uu____20041 = + let uu____20048 = FStar_TypeChecker_Env.set_expected_typ pat_env FStar_Syntax_Util.t_bool in - tc_term uu____20055 e in - match uu____20048 with + tc_term uu____20048 e in + match uu____20041 with | (e1,c,g) -> ((FStar_Pervasives_Native.Some e1), g)) in - (match uu____19995 with + (match uu____19988 with | (when_clause1,g_when) -> - let uu____20109 = tc_term pat_env branch_exp + let uu____20102 = tc_term pat_env branch_exp in - (match uu____20109 with + (match uu____20102 with | (branch_exp1,c,g_branch) -> (FStar_TypeChecker_Env.def_check_guard_wf cbr.FStar_Syntax_Syntax.pos @@ -6999,7 +6968,7 @@ and (tc_eqn : | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some w -> - let uu____20165 = + let uu____20158 = FStar_Syntax_Util.mk_eq2 FStar_Syntax_Syntax.U_zero FStar_Syntax_Util.t_bool w @@ -7008,18 +6977,18 @@ and (tc_eqn : FStar_All.pipe_left (fun _0_2 -> FStar_Pervasives_Native.Some - _0_2) uu____20165 + _0_2) uu____20158 in - let uu____20176 = + let uu____20169 = let eqs = - let uu____20198 = - let uu____20200 = + let uu____20191 = + let uu____20193 = FStar_TypeChecker_Env.should_verify env in - Prims.op_Negation uu____20200 + Prims.op_Negation uu____20193 in - if uu____20198 + if uu____20191 then FStar_Pervasives_Native.None else (let e = @@ -7029,44 +6998,44 @@ and (tc_eqn : match e.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_uvar - uu____20216 -> + uu____20209 -> FStar_Pervasives_Native.None | FStar_Syntax_Syntax.Tm_constant - uu____20231 -> + uu____20224 -> FStar_Pervasives_Native.None | FStar_Syntax_Syntax.Tm_fvar - uu____20234 -> + uu____20227 -> FStar_Pervasives_Native.None - | uu____20237 -> - let uu____20238 = - let uu____20241 = + | uu____20230 -> + let uu____20231 = + let uu____20234 = env.FStar_TypeChecker_Env.universe_of env pat_t in FStar_Syntax_Util.mk_eq2 - uu____20241 pat_t + uu____20234 pat_t scrutinee_tm e in FStar_Pervasives_Native.Some - uu____20238) + uu____20231) in - let uu____20244 = + let uu____20237 = FStar_TypeChecker_Util.strengthen_precondition FStar_Pervasives_Native.None env branch_exp1 c g_branch in - match uu____20244 with + match uu____20237 with | (c1,g_branch1) -> - let uu____20271 = + let uu____20264 = match (eqs, when_condition) with - | uu____20288 when - let uu____20301 = + | uu____20281 when + let uu____20294 = FStar_TypeChecker_Env.should_verify env in Prims.op_Negation - uu____20301 + uu____20294 -> (c1, g_when) | (FStar_Pervasives_Native.None ,FStar_Pervasives_Native.None @@ -7082,15 +7051,15 @@ and (tc_eqn : FStar_TypeChecker_Env.guard_of_guard_formula gf in - let uu____20332 = + let uu____20325 = FStar_TypeChecker_Util.weaken_precondition env c1 gf in - let uu____20333 = + let uu____20326 = FStar_TypeChecker_Env.imp_guard g g_when in - (uu____20332, uu____20333) + (uu____20325, uu____20326) | (FStar_Pervasives_Native.Some f,FStar_Pervasives_Native.Some w) -> @@ -7099,26 +7068,26 @@ and (tc_eqn : f in let g_fw = - let uu____20354 = + let uu____20347 = FStar_Syntax_Util.mk_conj f w in FStar_TypeChecker_Common.NonTrivial - uu____20354 + uu____20347 in - let uu____20355 = + let uu____20348 = FStar_TypeChecker_Util.weaken_precondition env c1 g_fw in - let uu____20356 = - let uu____20357 = + let uu____20349 = + let uu____20350 = FStar_TypeChecker_Env.guard_of_guard_formula g_f in FStar_TypeChecker_Env.imp_guard - uu____20357 g_when + uu____20350 g_when in - (uu____20355, uu____20356) + (uu____20348, uu____20349) | (FStar_Pervasives_Native.None ,FStar_Pervasives_Native.Some w) -> @@ -7130,13 +7099,13 @@ and (tc_eqn : FStar_TypeChecker_Env.guard_of_guard_formula g_w in - let uu____20375 = + let uu____20368 = FStar_TypeChecker_Util.weaken_precondition env c1 g_w in - (uu____20375, g_when) + (uu____20368, g_when) in - (match uu____20271 with + (match uu____20264 with | (c_weak,g_when_weak) -> let binders = FStar_List.map @@ -7146,12 +7115,12 @@ and (tc_eqn : let maybe_return_c_weak should_return1 = let c_weak1 = - let uu____20418 = + let uu____20411 = should_return1 && (FStar_Syntax_Util.is_pure_or_ghost_lcomp c_weak) in - if uu____20418 + if uu____20411 then FStar_TypeChecker_Util.maybe_assume_result_eq_pure_term env branch_exp1 @@ -7160,47 +7129,47 @@ and (tc_eqn : FStar_TypeChecker_Util.close_lcomp env pat_bvs1 c_weak1 in - let uu____20423 = + let uu____20416 = FStar_TypeChecker_Env.close_guard env binders g_when_weak in - let uu____20424 = + let uu____20417 = FStar_TypeChecker_Env.conj_guard guard_pat g_branch1 in ((c_weak.FStar_Syntax_Syntax.eff_name), (c_weak.FStar_Syntax_Syntax.cflags), maybe_return_c_weak, - uu____20423, uu____20424)) + uu____20416, uu____20417)) in - match uu____20176 with + match uu____20169 with | (effect_label,cflags,maybe_return_c,g_when1,g_branch1) -> let branch_guard = - let uu____20475 = - let uu____20477 = + let uu____20468 = + let uu____20470 = FStar_TypeChecker_Env.should_verify env in - Prims.op_Negation uu____20477 + Prims.op_Negation uu____20470 in - if uu____20475 + if uu____20468 then FStar_Syntax_Util.t_true else (let rec build_branch_guard scrutinee_tm1 pat_exp1 = let discriminate scrutinee_tm2 f = - let uu____20522 = - let uu____20530 = + let uu____20515 = + let uu____20523 = FStar_TypeChecker_Env.typ_of_datacon env f.FStar_Syntax_Syntax.v in FStar_TypeChecker_Env.datacons_of_typ - env uu____20530 + env uu____20523 in - match uu____20522 with + match uu____20515 with | (is_induc,datacons) -> if (Prims.op_Negation @@ -7215,16 +7184,16 @@ and (tc_eqn : FStar_Syntax_Util.mk_discriminator f.FStar_Syntax_Syntax.v in - let uu____20546 = + let uu____20539 = FStar_TypeChecker_Env.try_lookup_lid env discriminator in - (match uu____20546 + (match uu____20539 with | FStar_Pervasives_Native.None -> [] - | uu____20567 -> + | uu____20560 -> let disc = FStar_Syntax_Syntax.fvar discriminator @@ -7233,26 +7202,26 @@ and (tc_eqn : FStar_Pervasives_Native.None in let disc1 = - let uu____20583 + let uu____20576 = - let uu____20588 + let uu____20581 = - let uu____20589 + let uu____20582 = FStar_Syntax_Syntax.as_arg scrutinee_tm2 in - [uu____20589] + [uu____20582] in FStar_Syntax_Syntax.mk_Tm_app disc - uu____20588 + uu____20581 in - uu____20583 + uu____20576 FStar_Pervasives_Native.None scrutinee_tm2.FStar_Syntax_Syntax.pos in - let uu____20616 + let uu____20609 = FStar_Syntax_Util.mk_eq2 FStar_Syntax_Syntax.U_zero @@ -7260,30 +7229,30 @@ and (tc_eqn : disc1 FStar_Syntax_Util.exp_true_bool in - [uu____20616]) + [uu____20609]) else [] in - let fail1 uu____20624 = - let uu____20625 = - let uu____20627 = + let fail1 uu____20617 = + let uu____20618 = + let uu____20620 = FStar_Range.string_of_range pat_exp1.FStar_Syntax_Syntax.pos in - let uu____20629 = + let uu____20622 = FStar_Syntax_Print.term_to_string pat_exp1 in - let uu____20631 = + let uu____20624 = FStar_Syntax_Print.tag_of_term pat_exp1 in FStar_Util.format3 "tc_eqn: Impossible (%s) %s (%s)" - uu____20627 - uu____20629 - uu____20631 + uu____20620 + uu____20622 + uu____20624 in - failwith uu____20625 in + failwith uu____20618 in let rec head_constructor t = match t.FStar_Syntax_Syntax.n @@ -7292,136 +7261,136 @@ and (tc_eqn : fv -> fv.FStar_Syntax_Syntax.fv_name | FStar_Syntax_Syntax.Tm_uinst - (t1,uu____20646) -> + (t1,uu____20639) -> head_constructor t1 - | uu____20651 -> fail1 () + | uu____20644 -> fail1 () in let pat_exp2 = - let uu____20655 = + let uu____20648 = FStar_Syntax_Subst.compress pat_exp1 in FStar_All.pipe_right - uu____20655 + uu____20648 FStar_Syntax_Util.unmeta in match pat_exp2.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_uvar - uu____20660 -> [] + uu____20653 -> [] | FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_uvar - uu____20673; + uu____20666; FStar_Syntax_Syntax.pos - = uu____20674; + = uu____20667; FStar_Syntax_Syntax.vars - = uu____20675;_},uu____20676) + = uu____20668;_},uu____20669) -> [] | FStar_Syntax_Syntax.Tm_name - uu____20713 -> [] + uu____20706 -> [] | FStar_Syntax_Syntax.Tm_constant (FStar_Const.Const_unit ) -> [] | FStar_Syntax_Syntax.Tm_constant c1 -> - let uu____20715 = - let uu____20716 = + let uu____20708 = + let uu____20709 = tc_constant env pat_exp2.FStar_Syntax_Syntax.pos c1 in FStar_Syntax_Util.mk_eq2 FStar_Syntax_Syntax.U_zero - uu____20716 + uu____20709 scrutinee_tm1 pat_exp2 in - [uu____20715] + [uu____20708] | FStar_Syntax_Syntax.Tm_uinst - uu____20717 -> + uu____20710 -> let f = head_constructor pat_exp2 in - let uu____20725 = - let uu____20727 = + let uu____20718 = + let uu____20720 = FStar_TypeChecker_Env.is_datacon env f.FStar_Syntax_Syntax.v in Prims.op_Negation - uu____20727 + uu____20720 in - if uu____20725 + if uu____20718 then [] else - (let uu____20734 = + (let uu____20727 = head_constructor pat_exp2 in discriminate scrutinee_tm1 - uu____20734) + uu____20727) | FStar_Syntax_Syntax.Tm_fvar - uu____20737 -> + uu____20730 -> let f = head_constructor pat_exp2 in - let uu____20739 = - let uu____20741 = + let uu____20732 = + let uu____20734 = FStar_TypeChecker_Env.is_datacon env f.FStar_Syntax_Syntax.v in Prims.op_Negation - uu____20741 + uu____20734 in - if uu____20739 + if uu____20732 then [] else - (let uu____20748 = + (let uu____20741 = head_constructor pat_exp2 in discriminate scrutinee_tm1 - uu____20748) + uu____20741) | FStar_Syntax_Syntax.Tm_app (head1,args) -> let f = head_constructor head1 in - let uu____20778 = - let uu____20780 = + let uu____20771 = + let uu____20773 = FStar_TypeChecker_Env.is_datacon env f.FStar_Syntax_Syntax.v in Prims.op_Negation - uu____20780 + uu____20773 in - if uu____20778 + if uu____20771 then [] else (let sub_term_guards = - let uu____20790 = + let uu____20783 = FStar_All.pipe_right args (FStar_List.mapi (fun i -> fun - uu____20826 + uu____20819 -> - match uu____20826 + match uu____20819 with | - (ei,uu____20839) + (ei,uu____20832) -> let projector = @@ -7429,52 +7398,52 @@ and (tc_eqn : env f.FStar_Syntax_Syntax.v i in - let uu____20849 + let uu____20842 = FStar_TypeChecker_Env.try_lookup_lid env projector in - (match uu____20849 + (match uu____20842 with | FStar_Pervasives_Native.None -> [] | - uu____20870 + uu____20863 -> let sub_term = - let uu____20884 + let uu____20877 = - let uu____20889 + let uu____20882 = - let uu____20890 + let uu____20883 = FStar_Ident.set_lid_range projector f.FStar_Syntax_Syntax.p in FStar_Syntax_Syntax.fvar - uu____20890 + uu____20883 (FStar_Syntax_Syntax.Delta_equational_at_level (Prims.parse_int "1")) FStar_Pervasives_Native.None in - let uu____20892 + let uu____20885 = - let uu____20893 + let uu____20886 = FStar_Syntax_Syntax.as_arg scrutinee_tm1 in - [uu____20893] + [uu____20886] in FStar_Syntax_Syntax.mk_Tm_app - uu____20889 - uu____20892 + uu____20882 + uu____20885 in - uu____20884 + uu____20877 FStar_Pervasives_Native.None f.FStar_Syntax_Syntax.p in @@ -7483,56 +7452,56 @@ and (tc_eqn : ei))) in FStar_All.pipe_right - uu____20790 + uu____20783 FStar_List.flatten in - let uu____20926 = + let uu____20919 = discriminate scrutinee_tm1 f in FStar_List.append - uu____20926 + uu____20919 sub_term_guards) - | uu____20929 -> [] in + | uu____20922 -> [] in let build_and_check_branch_guard scrutinee_tm1 pat = - let uu____20945 = - let uu____20947 = + let uu____20938 = + let uu____20940 = FStar_TypeChecker_Env.should_verify env in Prims.op_Negation - uu____20947 + uu____20940 in - if uu____20945 + if uu____20938 then FStar_TypeChecker_Util.fvar_const env FStar_Parser_Const.true_lid else (let t = - let uu____20953 = + let uu____20946 = build_branch_guard scrutinee_tm1 pat in FStar_All.pipe_left FStar_Syntax_Util.mk_conj_l - uu____20953 + uu____20946 in - let uu____20962 = + let uu____20955 = FStar_Syntax_Util.type_u () in - match uu____20962 with - | (k,uu____20968) -> - let uu____20969 = + match uu____20955 with + | (k,uu____20961) -> + let uu____20962 = tc_check_tot_or_gtot_term scrutinee_env t k in - (match uu____20969 + (match uu____20962 with - | (t1,uu____20977,uu____20978) + | (t1,uu____20970,uu____20971) -> t1)) in let branch_guard = @@ -7554,38 +7523,38 @@ and (tc_eqn : FStar_TypeChecker_Env.conj_guard g_when1 g_branch1 in - ((let uu____20990 = + ((let uu____20983 = FStar_TypeChecker_Env.debug env FStar_Options.High in - if uu____20990 + if uu____20983 then - let uu____20993 = + let uu____20986 = FStar_TypeChecker_Rel.guard_to_string env guard in FStar_All.pipe_left (FStar_Util.print1 "Carrying guard from match: %s\n") - uu____20993 + uu____20986 else ()); - (let uu____20999 = + (let uu____20992 = FStar_Syntax_Subst.close_branch (pattern1, when_clause1, branch_exp1) in - let uu____21016 = - let uu____21017 = + let uu____21009 = + let uu____21010 = FStar_List.map FStar_Syntax_Syntax.mk_binder pat_bvs1 in FStar_TypeChecker_Util.close_guard_implicits - env uu____21017 guard + env uu____21010 guard in - (uu____20999, branch_guard, + (uu____20992, branch_guard, effect_label, cflags, - maybe_return_c, uu____21016)))))))))) + maybe_return_c, uu____21009)))))))))) and (check_top_level_let : FStar_TypeChecker_Env.env -> @@ -7598,44 +7567,44 @@ and (check_top_level_let : let env1 = instantiate_both env in match e.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_let ((false ,lb::[]),e2) -> - let uu____21064 = check_let_bound_def true env1 lb in - (match uu____21064 with + let uu____21057 = check_let_bound_def true env1 lb in + (match uu____21057 with | (e1,univ_vars1,c1,g1,annotated) -> - let uu____21090 = + let uu____21083 = if annotated && (Prims.op_Negation env1.FStar_TypeChecker_Env.generalize) then - let uu____21112 = + let uu____21105 = FStar_TypeChecker_Normalize.reduce_uvar_solutions env1 e1 in - (g1, uu____21112, univ_vars1, c1) + (g1, uu____21105, univ_vars1, c1) else (let g11 = - let uu____21118 = + let uu____21111 = FStar_TypeChecker_Rel.solve_deferred_constraints env1 g1 in - FStar_All.pipe_right uu____21118 + FStar_All.pipe_right uu____21111 (FStar_TypeChecker_Rel.resolve_implicits env1) in - let uu____21119 = - let uu____21132 = - let uu____21147 = - let uu____21156 = - let uu____21163 = + let uu____21112 = + let uu____21125 = + let uu____21140 = + let uu____21149 = + let uu____21156 = FStar_Syntax_Syntax.lcomp_comp c1 in ((lb.FStar_Syntax_Syntax.lbname), e1, - uu____21163) + uu____21156) in - [uu____21156] in + [uu____21149] in FStar_TypeChecker_Util.generalize env1 false - uu____21147 + uu____21140 in - FStar_List.hd uu____21132 in - match uu____21119 with - | (uu____21199,univs1,e11,c11,gvs) -> + FStar_List.hd uu____21125 in + match uu____21112 with + | (uu____21192,univs1,e11,c11,gvs) -> let g12 = FStar_All.pipe_left (FStar_TypeChecker_Env.map_guard g11) @@ -7649,30 +7618,30 @@ and (check_top_level_let : in let g13 = FStar_TypeChecker_Env.abstract_guard_n gvs g12 in - let uu____21213 = FStar_Syntax_Util.lcomp_of_comp c11 + let uu____21206 = FStar_Syntax_Util.lcomp_of_comp c11 in - (g13, e11, univs1, uu____21213)) + (g13, e11, univs1, uu____21206)) in - (match uu____21090 with + (match uu____21083 with | (g11,e11,univ_vars2,c11) -> - let uu____21230 = - let uu____21239 = + let uu____21223 = + let uu____21232 = FStar_TypeChecker_Env.should_verify env1 in - if uu____21239 + if uu____21232 then - let uu____21250 = + let uu____21243 = FStar_TypeChecker_Util.check_top_level env1 g11 c11 in - match uu____21250 with + match uu____21243 with | (ok,c12) -> (if ok then (e2, c12) else - ((let uu____21284 = + ((let uu____21277 = FStar_TypeChecker_Env.get_range env1 in - FStar_Errors.log_issue uu____21284 + FStar_Errors.log_issue uu____21277 FStar_TypeChecker_Err.top_level_effect); - (let uu____21285 = + (let uu____21278 = FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_meta (e2, @@ -7681,13 +7650,13 @@ and (check_top_level_let : FStar_Pervasives_Native.None e2.FStar_Syntax_Syntax.pos in - (uu____21285, c12)))) + (uu____21278, c12)))) else (FStar_TypeChecker_Rel.force_trivial_guard env1 g11; (let c = - let uu____21300 = + let uu____21293 = FStar_Syntax_Syntax.lcomp_comp c11 in - FStar_All.pipe_right uu____21300 + FStar_All.pipe_right uu____21293 (FStar_TypeChecker_Normalize.normalize_comp [FStar_TypeChecker_Env.Beta; FStar_TypeChecker_Env.NoFullNorm; @@ -7695,14 +7664,14 @@ and (check_top_level_let : env1) in let e21 = - let uu____21306 = + let uu____21299 = FStar_Syntax_Util.is_pure_comp c in - if uu____21306 + if uu____21299 then e2 else - ((let uu____21314 = + ((let uu____21307 = FStar_TypeChecker_Env.get_range env1 in - FStar_Errors.log_issue uu____21314 + FStar_Errors.log_issue uu____21307 FStar_TypeChecker_Err.top_level_effect); FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_meta @@ -7714,22 +7683,22 @@ and (check_top_level_let : in (e21, c))) in - (match uu____21230 with + (match uu____21223 with | (e21,c12) -> - ((let uu____21338 = + ((let uu____21331 = FStar_TypeChecker_Env.debug env1 FStar_Options.Medium in - if uu____21338 + if uu____21331 then - let uu____21341 = + let uu____21334 = FStar_Syntax_Print.term_to_string e11 in FStar_Util.print1 - "Let binding BEFORE tcnorm: %s\n" uu____21341 + "Let binding BEFORE tcnorm: %s\n" uu____21334 else ()); (let e12 = - let uu____21347 = FStar_Options.tcnorm () in - if uu____21347 + let uu____21340 = FStar_Options.tcnorm () in + if uu____21340 then FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.UnfoldAttr @@ -7742,16 +7711,16 @@ and (check_top_level_let : FStar_TypeChecker_Env.DoNotUnfoldPureLets] env1 e11 else e11 in - (let uu____21353 = + (let uu____21346 = FStar_TypeChecker_Env.debug env1 FStar_Options.Medium in - if uu____21353 + if uu____21346 then - let uu____21356 = + let uu____21349 = FStar_Syntax_Print.term_to_string e12 in FStar_Util.print1 - "Let binding AFTER tcnorm: %s\n" uu____21356 + "Let binding AFTER tcnorm: %s\n" uu____21349 else ()); (let cres = FStar_TypeChecker_Env.null_wp_for_eff env1 @@ -7768,18 +7737,18 @@ and (check_top_level_let : lb.FStar_Syntax_Syntax.lbattrs lb.FStar_Syntax_Syntax.lbpos in - let uu____21365 = + let uu____21358 = FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_let ((false, [lb1]), e21)) FStar_Pervasives_Native.None e.FStar_Syntax_Syntax.pos in - let uu____21379 = + let uu____21372 = FStar_Syntax_Util.lcomp_of_comp cres in - (uu____21365, uu____21379, + (uu____21358, uu____21372, FStar_TypeChecker_Env.trivial_guard))))))) - | uu____21380 -> failwith "Impossible" + | uu____21373 -> failwith "Impossible" and (check_inner_let : FStar_TypeChecker_Env.env -> @@ -7793,103 +7762,103 @@ and (check_inner_let : match e.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_let ((false ,lb::[]),e2) -> let env2 = - let uu___390_21415 = env1 in + let uu___387_21408 = env1 in { FStar_TypeChecker_Env.solver = - (uu___390_21415.FStar_TypeChecker_Env.solver); + (uu___387_21408.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___390_21415.FStar_TypeChecker_Env.range); + (uu___387_21408.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___390_21415.FStar_TypeChecker_Env.curmodule); + (uu___387_21408.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___390_21415.FStar_TypeChecker_Env.gamma); + (uu___387_21408.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___390_21415.FStar_TypeChecker_Env.gamma_sig); + (uu___387_21408.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___390_21415.FStar_TypeChecker_Env.gamma_cache); + (uu___387_21408.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___390_21415.FStar_TypeChecker_Env.modules); + (uu___387_21408.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___390_21415.FStar_TypeChecker_Env.expected_typ); + (uu___387_21408.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___390_21415.FStar_TypeChecker_Env.sigtab); + (uu___387_21408.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___390_21415.FStar_TypeChecker_Env.attrtab); + (uu___387_21408.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___390_21415.FStar_TypeChecker_Env.is_pattern); + (uu___387_21408.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___390_21415.FStar_TypeChecker_Env.instantiate_imp); + (uu___387_21408.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___390_21415.FStar_TypeChecker_Env.effects); + (uu___387_21408.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___390_21415.FStar_TypeChecker_Env.generalize); + (uu___387_21408.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___390_21415.FStar_TypeChecker_Env.letrecs); + (uu___387_21408.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = false; FStar_TypeChecker_Env.check_uvars = - (uu___390_21415.FStar_TypeChecker_Env.check_uvars); + (uu___387_21408.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___390_21415.FStar_TypeChecker_Env.use_eq); + (uu___387_21408.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___390_21415.FStar_TypeChecker_Env.is_iface); + (uu___387_21408.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___390_21415.FStar_TypeChecker_Env.admit); + (uu___387_21408.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___390_21415.FStar_TypeChecker_Env.lax); + (uu___387_21408.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___390_21415.FStar_TypeChecker_Env.lax_universes); + (uu___387_21408.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___390_21415.FStar_TypeChecker_Env.phase1); + (uu___387_21408.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___390_21415.FStar_TypeChecker_Env.failhard); + (uu___387_21408.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___390_21415.FStar_TypeChecker_Env.nosynth); + (uu___387_21408.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___390_21415.FStar_TypeChecker_Env.uvar_subtyping); + (uu___387_21408.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___390_21415.FStar_TypeChecker_Env.tc_term); + (uu___387_21408.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___390_21415.FStar_TypeChecker_Env.type_of); + (uu___387_21408.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___390_21415.FStar_TypeChecker_Env.universe_of); + (uu___387_21408.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___390_21415.FStar_TypeChecker_Env.check_type_of); + (uu___387_21408.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___390_21415.FStar_TypeChecker_Env.use_bv_sorts); + (uu___387_21408.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___390_21415.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___387_21408.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___390_21415.FStar_TypeChecker_Env.normalized_eff_names); + (uu___387_21408.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___390_21415.FStar_TypeChecker_Env.fv_delta_depths); + (uu___387_21408.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___390_21415.FStar_TypeChecker_Env.proof_ns); + (uu___387_21408.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___390_21415.FStar_TypeChecker_Env.synth_hook); + (uu___387_21408.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___390_21415.FStar_TypeChecker_Env.splice); + (uu___387_21408.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___390_21415.FStar_TypeChecker_Env.postprocess); + (uu___387_21408.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___390_21415.FStar_TypeChecker_Env.is_native_tactic); + (uu___387_21408.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___390_21415.FStar_TypeChecker_Env.identifier_info); + (uu___387_21408.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___390_21415.FStar_TypeChecker_Env.tc_hooks); + (uu___387_21408.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___390_21415.FStar_TypeChecker_Env.dsenv); + (uu___387_21408.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___390_21415.FStar_TypeChecker_Env.nbe) + (uu___387_21408.FStar_TypeChecker_Env.nbe) } in - let uu____21417 = - let uu____21429 = - let uu____21430 = FStar_TypeChecker_Env.clear_expected_typ env2 + let uu____21410 = + let uu____21422 = + let uu____21423 = FStar_TypeChecker_Env.clear_expected_typ env2 in - FStar_All.pipe_right uu____21430 FStar_Pervasives_Native.fst + FStar_All.pipe_right uu____21423 FStar_Pervasives_Native.fst in - check_let_bound_def false uu____21429 lb in - (match uu____21417 with - | (e1,uu____21453,c1,g1,annotated) -> + check_let_bound_def false uu____21422 lb in + (match uu____21410 with + | (e1,uu____21446,c1,g1,annotated) -> let pure_or_ghost = FStar_Syntax_Util.is_pure_or_ghost_lcomp c1 in let is_inline_let = @@ -7900,56 +7869,56 @@ and (check_inner_let : in (if is_inline_let && (Prims.op_Negation pure_or_ghost) then - (let uu____21467 = - let uu____21473 = - let uu____21475 = FStar_Syntax_Print.term_to_string e1 + (let uu____21460 = + let uu____21466 = + let uu____21468 = FStar_Syntax_Print.term_to_string e1 in - let uu____21477 = + let uu____21470 = FStar_Syntax_Print.lid_to_string c1.FStar_Syntax_Syntax.eff_name in FStar_Util.format2 "Definitions marked @inline_let are expected to be pure or ghost; got an expression \"%s\" with effect \"%s\"" - uu____21475 uu____21477 + uu____21468 uu____21470 in - (FStar_Errors.Fatal_ExpectedPureExpression, uu____21473) + (FStar_Errors.Fatal_ExpectedPureExpression, uu____21466) in - FStar_Errors.raise_error uu____21467 + FStar_Errors.raise_error uu____21460 e1.FStar_Syntax_Syntax.pos) else (); (let attrs = - let uu____21488 = + let uu____21481 = (pure_or_ghost && (Prims.op_Negation is_inline_let)) && (FStar_Syntax_Util.is_unit c1.FStar_Syntax_Syntax.res_typ) in - if uu____21488 + if uu____21481 then FStar_Syntax_Util.inline_let_attr :: (lb.FStar_Syntax_Syntax.lbattrs) else lb.FStar_Syntax_Syntax.lbattrs in let x = - let uu___391_21500 = + let uu___388_21493 = FStar_Util.left lb.FStar_Syntax_Syntax.lbname in { FStar_Syntax_Syntax.ppname = - (uu___391_21500.FStar_Syntax_Syntax.ppname); + (uu___388_21493.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___391_21500.FStar_Syntax_Syntax.index); + (uu___388_21493.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = (c1.FStar_Syntax_Syntax.res_typ) } in - let uu____21501 = - let uu____21506 = - let uu____21507 = FStar_Syntax_Syntax.mk_binder x in - [uu____21507] in - FStar_Syntax_Subst.open_term uu____21506 e2 in - match uu____21501 with + let uu____21494 = + let uu____21499 = + let uu____21500 = FStar_Syntax_Syntax.mk_binder x in + [uu____21500] in + FStar_Syntax_Subst.open_term uu____21499 e2 in + match uu____21494 with | (xb,e21) -> let xbinder = FStar_List.hd xb in let x1 = FStar_Pervasives_Native.fst xbinder in let env_x = FStar_TypeChecker_Env.push_bv env2 x1 in - let uu____21551 = tc_term env_x e21 in - (match uu____21551 with + let uu____21544 = tc_term env_x e21 in + (match uu____21544 with | (e22,c2,g2) -> let cres = FStar_TypeChecker_Util.maybe_return_e2_and_bind @@ -7977,15 +7946,15 @@ and (check_inner_let : lb.FStar_Syntax_Syntax.lbpos in let e3 = - let uu____21576 = - let uu____21583 = - let uu____21584 = - let uu____21598 = + let uu____21569 = + let uu____21576 = + let uu____21577 = + let uu____21591 = FStar_Syntax_Subst.close xb e23 in - ((false, [lb1]), uu____21598) in - FStar_Syntax_Syntax.Tm_let uu____21584 in - FStar_Syntax_Syntax.mk uu____21583 in - uu____21576 FStar_Pervasives_Native.None + ((false, [lb1]), uu____21591) in + FStar_Syntax_Syntax.Tm_let uu____21577 in + FStar_Syntax_Syntax.mk uu____21576 in + uu____21569 FStar_Pervasives_Native.None e.FStar_Syntax_Syntax.pos in let e4 = @@ -7994,32 +7963,32 @@ and (check_inner_let : cres.FStar_Syntax_Syntax.res_typ in let x_eq_e1 = - let uu____21619 = - let uu____21620 = + let uu____21612 = + let uu____21613 = env2.FStar_TypeChecker_Env.universe_of env2 c1.FStar_Syntax_Syntax.res_typ in - let uu____21621 = + let uu____21614 = FStar_Syntax_Syntax.bv_to_name x1 in - FStar_Syntax_Util.mk_eq2 uu____21620 - c1.FStar_Syntax_Syntax.res_typ uu____21621 + FStar_Syntax_Util.mk_eq2 uu____21613 + c1.FStar_Syntax_Syntax.res_typ uu____21614 e11 in FStar_All.pipe_left (fun _0_3 -> FStar_TypeChecker_Common.NonTrivial _0_3) - uu____21619 + uu____21612 in let g21 = - let uu____21623 = - let uu____21624 = + let uu____21616 = + let uu____21617 = FStar_TypeChecker_Env.guard_of_guard_formula x_eq_e1 in - FStar_TypeChecker_Env.imp_guard uu____21624 g2 + FStar_TypeChecker_Env.imp_guard uu____21617 g2 in FStar_TypeChecker_Env.close_guard env2 xb - uu____21623 + uu____21616 in let g22 = FStar_TypeChecker_Util.close_guard_implicits env2 @@ -8027,77 +7996,77 @@ and (check_inner_let : in let guard = FStar_TypeChecker_Env.conj_guard g1 g22 in - let uu____21627 = - let uu____21629 = + let uu____21620 = + let uu____21622 = FStar_TypeChecker_Env.expected_typ env2 in - FStar_Option.isSome uu____21629 in - if uu____21627 + FStar_Option.isSome uu____21622 in + if uu____21620 then let tt = - let uu____21640 = + let uu____21633 = FStar_TypeChecker_Env.expected_typ env2 in - FStar_All.pipe_right uu____21640 + FStar_All.pipe_right uu____21633 FStar_Option.get in - ((let uu____21646 = + ((let uu____21639 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env2) (FStar_Options.Other "Exports") in - if uu____21646 + if uu____21639 then - let uu____21651 = + let uu____21644 = FStar_Syntax_Print.term_to_string tt in - let uu____21653 = + let uu____21646 = FStar_Syntax_Print.term_to_string cres.FStar_Syntax_Syntax.res_typ in FStar_Util.print2 "Got expected type from env %s\ncres.res_typ=%s\n" - uu____21651 uu____21653 + uu____21644 uu____21646 else ()); (e4, cres, guard)) else - (let uu____21660 = + (let uu____21653 = check_no_escape FStar_Pervasives_Native.None env2 [x1] cres.FStar_Syntax_Syntax.res_typ in - match uu____21660 with + match uu____21653 with | (t,g_ex) -> - ((let uu____21674 = + ((let uu____21667 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env2) (FStar_Options.Other "Exports") in - if uu____21674 + if uu____21667 then - let uu____21679 = + let uu____21672 = FStar_Syntax_Print.term_to_string cres.FStar_Syntax_Syntax.res_typ in - let uu____21681 = + let uu____21674 = FStar_Syntax_Print.term_to_string t in FStar_Util.print2 "Checked %s has no escaping types; normalized to %s\n" - uu____21679 uu____21681 + uu____21672 uu____21674 else ()); - (let uu____21686 = + (let uu____21679 = FStar_TypeChecker_Env.conj_guard g_ex guard in (e4, - (let uu___392_21688 = cres in + (let uu___389_21681 = cres in { FStar_Syntax_Syntax.eff_name = - (uu___392_21688.FStar_Syntax_Syntax.eff_name); + (uu___389_21681.FStar_Syntax_Syntax.eff_name); FStar_Syntax_Syntax.res_typ = t; FStar_Syntax_Syntax.cflags = - (uu___392_21688.FStar_Syntax_Syntax.cflags); + (uu___389_21681.FStar_Syntax_Syntax.cflags); FStar_Syntax_Syntax.comp_thunk = - (uu___392_21688.FStar_Syntax_Syntax.comp_thunk) - }), uu____21686)))))))) - | uu____21689 -> + (uu___389_21681.FStar_Syntax_Syntax.comp_thunk) + }), uu____21679)))))))) + | uu____21682 -> failwith "Impossible (inner let with more than one lb)" and (check_top_level_let_rec : @@ -8111,42 +8080,42 @@ and (check_top_level_let_rec : let env1 = instantiate_both env in match top.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_let ((true ,lbs),e2) -> - let uu____21725 = FStar_Syntax_Subst.open_let_rec lbs e2 in - (match uu____21725 with + let uu____21718 = FStar_Syntax_Subst.open_let_rec lbs e2 in + (match uu____21718 with | (lbs1,e21) -> - let uu____21744 = + let uu____21737 = FStar_TypeChecker_Env.clear_expected_typ env1 in - (match uu____21744 with + (match uu____21737 with | (env0,topt) -> - let uu____21763 = build_let_rec_env true env0 lbs1 in - (match uu____21763 with + let uu____21756 = build_let_rec_env true env0 lbs1 in + (match uu____21756 with | (lbs2,rec_env,g_t) -> - let uu____21786 = check_let_recs rec_env lbs2 in - (match uu____21786 with + let uu____21779 = check_let_recs rec_env lbs2 in + (match uu____21779 with | (lbs3,g_lbs) -> let g_lbs1 = - let uu____21806 = - let uu____21807 = + let uu____21799 = + let uu____21800 = FStar_TypeChecker_Env.conj_guard g_t g_lbs in - FStar_All.pipe_right uu____21807 + FStar_All.pipe_right uu____21800 (FStar_TypeChecker_Rel.solve_deferred_constraints env1) in - FStar_All.pipe_right uu____21806 + FStar_All.pipe_right uu____21799 (FStar_TypeChecker_Rel.resolve_implicits env1) in let all_lb_names = - let uu____21813 = + let uu____21806 = FStar_All.pipe_right lbs3 (FStar_List.map (fun lb -> FStar_Util.right lb.FStar_Syntax_Syntax.lbname)) in - FStar_All.pipe_right uu____21813 + FStar_All.pipe_right uu____21806 (fun _0_4 -> FStar_Pervasives_Native.Some _0_4) in @@ -8179,25 +8148,25 @@ and (check_top_level_let_rec : lb.FStar_Syntax_Syntax.lbpos)) else (let ecs = - let uu____21866 = + let uu____21859 = FStar_All.pipe_right lbs3 (FStar_List.map (fun lb -> - let uu____21900 = + let uu____21893 = FStar_Syntax_Syntax.mk_Total lb.FStar_Syntax_Syntax.lbtyp in ((lb.FStar_Syntax_Syntax.lbname), (lb.FStar_Syntax_Syntax.lbdef), - uu____21900))) + uu____21893))) in FStar_TypeChecker_Util.generalize env1 - true uu____21866 + true uu____21859 in FStar_List.map2 - (fun uu____21935 -> + (fun uu____21928 -> fun lb -> - match uu____21935 with + match uu____21928 with | (x,uvs,e,c,gvs) -> FStar_Syntax_Util.close_univs_and_mk_letbinding all_lb_names x uvs @@ -8210,34 +8179,34 @@ and (check_top_level_let_rec : ecs lbs3) in let cres = - let uu____21983 = + let uu____21976 = FStar_Syntax_Syntax.mk_Total FStar_Syntax_Syntax.t_unit in FStar_All.pipe_left - FStar_Syntax_Util.lcomp_of_comp uu____21983 + FStar_Syntax_Util.lcomp_of_comp uu____21976 in - let uu____21984 = + let uu____21977 = FStar_Syntax_Subst.close_let_rec lbs4 e21 in - (match uu____21984 with + (match uu____21977 with | (lbs5,e22) -> - ((let uu____22004 = + ((let uu____21997 = FStar_TypeChecker_Rel.discharge_guard env1 g_lbs1 in - FStar_All.pipe_right uu____22004 + FStar_All.pipe_right uu____21997 (FStar_TypeChecker_Rel.force_trivial_guard env1)); - (let uu____22005 = + (let uu____21998 = FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_let ((true, lbs5), e22)) FStar_Pervasives_Native.None top.FStar_Syntax_Syntax.pos in - (uu____22005, cres, + (uu____21998, cres, FStar_TypeChecker_Env.trivial_guard)))))))) - | uu____22019 -> failwith "Impossible" + | uu____22012 -> failwith "Impossible" and (check_inner_let_rec : FStar_TypeChecker_Env.env -> @@ -8250,64 +8219,64 @@ and (check_inner_let_rec : let env1 = instantiate_both env in match top.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_let ((true ,lbs),e2) -> - let uu____22055 = FStar_Syntax_Subst.open_let_rec lbs e2 in - (match uu____22055 with + let uu____22048 = FStar_Syntax_Subst.open_let_rec lbs e2 in + (match uu____22048 with | (lbs1,e21) -> - let uu____22074 = + let uu____22067 = FStar_TypeChecker_Env.clear_expected_typ env1 in - (match uu____22074 with + (match uu____22067 with | (env0,topt) -> - let uu____22093 = build_let_rec_env false env0 lbs1 in - (match uu____22093 with + let uu____22086 = build_let_rec_env false env0 lbs1 in + (match uu____22086 with | (lbs2,rec_env,g_t) -> - let uu____22116 = - let uu____22123 = check_let_recs rec_env lbs2 in - FStar_All.pipe_right uu____22123 - (fun uu____22146 -> - match uu____22146 with + let uu____22109 = + let uu____22116 = check_let_recs rec_env lbs2 in + FStar_All.pipe_right uu____22116 + (fun uu____22139 -> + match uu____22139 with | (lbs3,g) -> - let uu____22165 = + let uu____22158 = FStar_TypeChecker_Env.conj_guard g_t g in - (lbs3, uu____22165)) + (lbs3, uu____22158)) in - (match uu____22116 with + (match uu____22109 with | (lbs3,g_lbs) -> - let uu____22180 = + let uu____22173 = FStar_All.pipe_right lbs3 (FStar_Util.fold_map (fun env2 -> fun lb -> let x = - let uu___393_22203 = + let uu___390_22196 = FStar_Util.left lb.FStar_Syntax_Syntax.lbname in { FStar_Syntax_Syntax.ppname = - (uu___393_22203.FStar_Syntax_Syntax.ppname); + (uu___390_22196.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___393_22203.FStar_Syntax_Syntax.index); + (uu___390_22196.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = (lb.FStar_Syntax_Syntax.lbtyp) } in let lb1 = - let uu___394_22205 = lb in + let uu___391_22198 = lb in { FStar_Syntax_Syntax.lbname = (FStar_Util.Inl x); FStar_Syntax_Syntax.lbunivs = - (uu___394_22205.FStar_Syntax_Syntax.lbunivs); + (uu___391_22198.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = - (uu___394_22205.FStar_Syntax_Syntax.lbtyp); + (uu___391_22198.FStar_Syntax_Syntax.lbtyp); FStar_Syntax_Syntax.lbeff = - (uu___394_22205.FStar_Syntax_Syntax.lbeff); + (uu___391_22198.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = - (uu___394_22205.FStar_Syntax_Syntax.lbdef); + (uu___391_22198.FStar_Syntax_Syntax.lbdef); FStar_Syntax_Syntax.lbattrs = - (uu___394_22205.FStar_Syntax_Syntax.lbattrs); + (uu___391_22198.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___394_22205.FStar_Syntax_Syntax.lbpos) + (uu___391_22198.FStar_Syntax_Syntax.lbpos) } in let env3 = FStar_TypeChecker_Env.push_let_binding @@ -8318,7 +8287,7 @@ and (check_inner_let_rec : in (env3, lb1)) env1) in - (match uu____22180 with + (match uu____22173 with | (env2,lbs4) -> let bvs = FStar_All.pipe_right lbs4 @@ -8327,8 +8296,8 @@ and (check_inner_let_rec : FStar_Util.left lb.FStar_Syntax_Syntax.lbname)) in - let uu____22232 = tc_term env2 e21 in - (match uu____22232 with + let uu____22225 = tc_term env2 e21 in + (match uu____22225 with | (e22,cres,g2) -> let cres1 = FStar_TypeChecker_Util.maybe_assume_result_eq_pure_term @@ -8340,17 +8309,17 @@ and (check_inner_let_rec : [FStar_Syntax_Syntax.SHOULD_NOT_INLINE] in let guard = - let uu____22251 = - let uu____22252 = + let uu____22244 = + let uu____22245 = FStar_List.map FStar_Syntax_Syntax.mk_binder bvs in FStar_TypeChecker_Env.close_guard - env2 uu____22252 g2 + env2 uu____22245 g2 in FStar_TypeChecker_Env.conj_guard - g_lbs uu____22251 + g_lbs uu____22244 in let cres3 = FStar_TypeChecker_Util.close_lcomp @@ -8361,37 +8330,37 @@ and (check_inner_let_rec : cres3.FStar_Syntax_Syntax.res_typ in let cres4 = - let uu___395_22262 = cres3 in + let uu___392_22255 = cres3 in { FStar_Syntax_Syntax.eff_name = - (uu___395_22262.FStar_Syntax_Syntax.eff_name); + (uu___392_22255.FStar_Syntax_Syntax.eff_name); FStar_Syntax_Syntax.res_typ = tres; FStar_Syntax_Syntax.cflags = - (uu___395_22262.FStar_Syntax_Syntax.cflags); + (uu___392_22255.FStar_Syntax_Syntax.cflags); FStar_Syntax_Syntax.comp_thunk = - (uu___395_22262.FStar_Syntax_Syntax.comp_thunk) + (uu___392_22255.FStar_Syntax_Syntax.comp_thunk) } in let guard1 = let bs = FStar_All.pipe_right lbs4 (FStar_List.map (fun lb -> - let uu____22270 = + let uu____22263 = FStar_Util.left lb.FStar_Syntax_Syntax.lbname in FStar_Syntax_Syntax.mk_binder - uu____22270)) + uu____22263)) in FStar_TypeChecker_Util.close_guard_implicits env2 bs guard in - let uu____22271 = + let uu____22264 = FStar_Syntax_Subst.close_let_rec lbs4 e22 in - (match uu____22271 with + (match uu____22264 with | (lbs5,e23) -> let e = FStar_Syntax_Syntax.mk @@ -8402,40 +8371,40 @@ and (check_inner_let_rec : in (match topt with | FStar_Pervasives_Native.Some - uu____22312 -> + uu____22305 -> (e, cres4, guard1) | FStar_Pervasives_Native.None -> - let uu____22313 = + let uu____22306 = check_no_escape FStar_Pervasives_Native.None env2 bvs tres in - (match uu____22313 with + (match uu____22306 with | (tres1,g_ex) -> let cres5 = - let uu___396_22327 = + let uu___393_22320 = cres4 in { FStar_Syntax_Syntax.eff_name = - (uu___396_22327.FStar_Syntax_Syntax.eff_name); + (uu___393_22320.FStar_Syntax_Syntax.eff_name); FStar_Syntax_Syntax.res_typ = tres1; FStar_Syntax_Syntax.cflags = - (uu___396_22327.FStar_Syntax_Syntax.cflags); + (uu___393_22320.FStar_Syntax_Syntax.cflags); FStar_Syntax_Syntax.comp_thunk = - (uu___396_22327.FStar_Syntax_Syntax.comp_thunk) + (uu___393_22320.FStar_Syntax_Syntax.comp_thunk) } in - let uu____22328 = + let uu____22321 = FStar_TypeChecker_Env.conj_guard g_ex guard1 in (e, cres5, - uu____22328)))))))))) - | uu____22329 -> failwith "Impossible" + uu____22321)))))))))) + | uu____22322 -> failwith "Impossible" and (build_let_rec_env : Prims.bool -> @@ -8449,45 +8418,45 @@ and (build_let_rec_env : fun lbs -> let env0 = env in let termination_check_enabled lbname lbdef lbtyp = - let uu____22377 = FStar_Options.ml_ish () in - if uu____22377 + let uu____22370 = FStar_Options.ml_ish () in + if uu____22370 then false else (let t = FStar_TypeChecker_Normalize.unfold_whnf env lbtyp in - let uu____22385 = FStar_Syntax_Util.arrow_formals_comp t in - match uu____22385 with + let uu____22378 = FStar_Syntax_Util.arrow_formals_comp t in + match uu____22378 with | (formals,c) -> - let uu____22417 = FStar_Syntax_Util.abs_formals lbdef in - (match uu____22417 with - | (actuals,uu____22428,uu____22429) -> + let uu____22410 = FStar_Syntax_Util.abs_formals lbdef in + (match uu____22410 with + | (actuals,uu____22421,uu____22422) -> if ((FStar_List.length formals) < (Prims.parse_int "1")) || ((FStar_List.length actuals) < (Prims.parse_int "1")) then - let uu____22450 = - let uu____22456 = - let uu____22458 = + let uu____22443 = + let uu____22449 = + let uu____22451 = FStar_Syntax_Print.term_to_string lbdef in - let uu____22460 = + let uu____22453 = FStar_Syntax_Print.term_to_string lbtyp in FStar_Util.format2 "Only function literals with arrow types can be defined recursively; got %s : %s" - uu____22458 uu____22460 + uu____22451 uu____22453 in (FStar_Errors.Fatal_RecursiveFunctionLiteral, - uu____22456) + uu____22449) in - FStar_Errors.raise_error uu____22450 + FStar_Errors.raise_error uu____22443 lbtyp.FStar_Syntax_Syntax.pos else (let actuals1 = - let uu____22468 = + let uu____22461 = FStar_TypeChecker_Env.set_expected_typ env lbtyp in FStar_TypeChecker_Util.maybe_add_implicit_binders - uu____22468 actuals + uu____22461 actuals in if (FStar_List.length formals) <> @@ -8498,30 +8467,30 @@ and (build_let_rec_env : if n1 = (Prims.parse_int "1") then "1 argument was found" else - (let uu____22503 = + (let uu____22496 = FStar_Util.string_of_int n1 in FStar_Util.format1 "%s arguments were found" - uu____22503) + uu____22496) in let formals_msg = let n1 = FStar_List.length formals in if n1 = (Prims.parse_int "1") then "1 argument" else - (let uu____22532 = + (let uu____22525 = FStar_Util.string_of_int n1 in FStar_Util.format1 "%s arguments" - uu____22532) + uu____22525) in let msg = - let uu____22543 = + let uu____22536 = FStar_Syntax_Print.term_to_string lbtyp in - let uu____22545 = + let uu____22538 = FStar_Syntax_Print.lbname_to_string lbname in FStar_Util.format4 "From its type %s, the definition of `let rec %s` expects a function with %s, but %s" - uu____22543 uu____22545 formals_msg + uu____22536 uu____22538 formals_msg actuals_msg in FStar_Errors.raise_error @@ -8536,17 +8505,17 @@ and (build_let_rec_env : (FStar_List.contains FStar_Syntax_Syntax.TotalEffect))))) in - let uu____22557 = + let uu____22550 = FStar_List.fold_left - (fun uu____22590 -> + (fun uu____22583 -> fun lb -> - match uu____22590 with + match uu____22583 with | (lbs1,env1,g_acc) -> - let uu____22615 = + let uu____22608 = FStar_TypeChecker_Util.extract_let_rec_annotation env1 lb in - (match uu____22615 with + (match uu____22608 with | (univ_vars1,t,check_t) -> let env2 = FStar_TypeChecker_Env.push_univ_vars env1 @@ -8556,7 +8525,7 @@ and (build_let_rec_env : FStar_Syntax_Util.unascribe lb.FStar_Syntax_Syntax.lbdef in - let uu____22638 = + let uu____22631 = if Prims.op_Negation check_t then (g_acc, t) else @@ -8564,227 +8533,227 @@ and (build_let_rec_env : FStar_TypeChecker_Env.push_univ_vars env0 univ_vars1 in - let uu____22657 = - let uu____22664 = - let uu____22665 = + let uu____22650 = + let uu____22657 = + let uu____22658 = FStar_Syntax_Util.type_u () in FStar_All.pipe_left - FStar_Pervasives_Native.fst uu____22665 + FStar_Pervasives_Native.fst uu____22658 in tc_check_tot_or_gtot_term - (let uu___397_22676 = env01 in + (let uu___394_22669 = env01 in { FStar_TypeChecker_Env.solver = - (uu___397_22676.FStar_TypeChecker_Env.solver); + (uu___394_22669.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___397_22676.FStar_TypeChecker_Env.range); + (uu___394_22669.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___397_22676.FStar_TypeChecker_Env.curmodule); + (uu___394_22669.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___397_22676.FStar_TypeChecker_Env.gamma); + (uu___394_22669.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___397_22676.FStar_TypeChecker_Env.gamma_sig); + (uu___394_22669.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___397_22676.FStar_TypeChecker_Env.gamma_cache); + (uu___394_22669.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___397_22676.FStar_TypeChecker_Env.modules); + (uu___394_22669.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___397_22676.FStar_TypeChecker_Env.expected_typ); + (uu___394_22669.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___397_22676.FStar_TypeChecker_Env.sigtab); + (uu___394_22669.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___397_22676.FStar_TypeChecker_Env.attrtab); + (uu___394_22669.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___397_22676.FStar_TypeChecker_Env.is_pattern); + (uu___394_22669.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___397_22676.FStar_TypeChecker_Env.instantiate_imp); + (uu___394_22669.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___397_22676.FStar_TypeChecker_Env.effects); + (uu___394_22669.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___397_22676.FStar_TypeChecker_Env.generalize); + (uu___394_22669.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___397_22676.FStar_TypeChecker_Env.letrecs); + (uu___394_22669.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___397_22676.FStar_TypeChecker_Env.top_level); + (uu___394_22669.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = true; FStar_TypeChecker_Env.use_eq = - (uu___397_22676.FStar_TypeChecker_Env.use_eq); + (uu___394_22669.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___397_22676.FStar_TypeChecker_Env.is_iface); + (uu___394_22669.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___397_22676.FStar_TypeChecker_Env.admit); + (uu___394_22669.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___397_22676.FStar_TypeChecker_Env.lax); + (uu___394_22669.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___397_22676.FStar_TypeChecker_Env.lax_universes); + (uu___394_22669.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___397_22676.FStar_TypeChecker_Env.phase1); + (uu___394_22669.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___397_22676.FStar_TypeChecker_Env.failhard); + (uu___394_22669.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___397_22676.FStar_TypeChecker_Env.nosynth); + (uu___394_22669.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___397_22676.FStar_TypeChecker_Env.uvar_subtyping); + (uu___394_22669.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___397_22676.FStar_TypeChecker_Env.tc_term); + (uu___394_22669.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___397_22676.FStar_TypeChecker_Env.type_of); + (uu___394_22669.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___397_22676.FStar_TypeChecker_Env.universe_of); + (uu___394_22669.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___397_22676.FStar_TypeChecker_Env.check_type_of); + (uu___394_22669.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___397_22676.FStar_TypeChecker_Env.use_bv_sorts); + (uu___394_22669.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___397_22676.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___394_22669.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___397_22676.FStar_TypeChecker_Env.normalized_eff_names); + (uu___394_22669.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___397_22676.FStar_TypeChecker_Env.fv_delta_depths); + (uu___394_22669.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___397_22676.FStar_TypeChecker_Env.proof_ns); + (uu___394_22669.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___397_22676.FStar_TypeChecker_Env.synth_hook); + (uu___394_22669.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___397_22676.FStar_TypeChecker_Env.splice); + (uu___394_22669.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___397_22676.FStar_TypeChecker_Env.postprocess); + (uu___394_22669.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___397_22676.FStar_TypeChecker_Env.is_native_tactic); + (uu___394_22669.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___397_22676.FStar_TypeChecker_Env.identifier_info); + (uu___394_22669.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___397_22676.FStar_TypeChecker_Env.tc_hooks); + (uu___394_22669.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___397_22676.FStar_TypeChecker_Env.dsenv); + (uu___394_22669.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___397_22676.FStar_TypeChecker_Env.nbe) - }) t uu____22664 + (uu___394_22669.FStar_TypeChecker_Env.nbe) + }) t uu____22657 in - match uu____22657 with - | (t1,uu____22685,g) -> - let uu____22687 = - let uu____22688 = - let uu____22689 = + match uu____22650 with + | (t1,uu____22678,g) -> + let uu____22680 = + let uu____22681 = + let uu____22682 = FStar_All.pipe_right g (FStar_TypeChecker_Rel.resolve_implicits env2) in - FStar_All.pipe_right uu____22689 + FStar_All.pipe_right uu____22682 (FStar_TypeChecker_Rel.discharge_guard env2) in FStar_TypeChecker_Env.conj_guard g_acc - uu____22688 + uu____22681 in - let uu____22690 = norm env01 t1 in - (uu____22687, uu____22690)) + let uu____22683 = norm env01 t1 in + (uu____22680, uu____22683)) in - (match uu____22638 with + (match uu____22631 with | (g,t1) -> let env3 = - let uu____22710 = + let uu____22703 = termination_check_enabled lb.FStar_Syntax_Syntax.lbname e t1 in - if uu____22710 + if uu____22703 then - let uu___398_22713 = env2 in + let uu___395_22706 = env2 in { FStar_TypeChecker_Env.solver = - (uu___398_22713.FStar_TypeChecker_Env.solver); + (uu___395_22706.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___398_22713.FStar_TypeChecker_Env.range); + (uu___395_22706.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___398_22713.FStar_TypeChecker_Env.curmodule); + (uu___395_22706.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___398_22713.FStar_TypeChecker_Env.gamma); + (uu___395_22706.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___398_22713.FStar_TypeChecker_Env.gamma_sig); + (uu___395_22706.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___398_22713.FStar_TypeChecker_Env.gamma_cache); + (uu___395_22706.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___398_22713.FStar_TypeChecker_Env.modules); + (uu___395_22706.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___398_22713.FStar_TypeChecker_Env.expected_typ); + (uu___395_22706.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___398_22713.FStar_TypeChecker_Env.sigtab); + (uu___395_22706.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___398_22713.FStar_TypeChecker_Env.attrtab); + (uu___395_22706.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___398_22713.FStar_TypeChecker_Env.is_pattern); + (uu___395_22706.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___398_22713.FStar_TypeChecker_Env.instantiate_imp); + (uu___395_22706.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___398_22713.FStar_TypeChecker_Env.effects); + (uu___395_22706.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___398_22713.FStar_TypeChecker_Env.generalize); + (uu___395_22706.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = (((lb.FStar_Syntax_Syntax.lbname), t1, univ_vars1) :: (env2.FStar_TypeChecker_Env.letrecs)); FStar_TypeChecker_Env.top_level = - (uu___398_22713.FStar_TypeChecker_Env.top_level); + (uu___395_22706.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___398_22713.FStar_TypeChecker_Env.check_uvars); + (uu___395_22706.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___398_22713.FStar_TypeChecker_Env.use_eq); + (uu___395_22706.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___398_22713.FStar_TypeChecker_Env.is_iface); + (uu___395_22706.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___398_22713.FStar_TypeChecker_Env.admit); + (uu___395_22706.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___398_22713.FStar_TypeChecker_Env.lax); + (uu___395_22706.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___398_22713.FStar_TypeChecker_Env.lax_universes); + (uu___395_22706.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___398_22713.FStar_TypeChecker_Env.phase1); + (uu___395_22706.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___398_22713.FStar_TypeChecker_Env.failhard); + (uu___395_22706.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___398_22713.FStar_TypeChecker_Env.nosynth); + (uu___395_22706.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___398_22713.FStar_TypeChecker_Env.uvar_subtyping); + (uu___395_22706.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___398_22713.FStar_TypeChecker_Env.tc_term); + (uu___395_22706.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___398_22713.FStar_TypeChecker_Env.type_of); + (uu___395_22706.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___398_22713.FStar_TypeChecker_Env.universe_of); + (uu___395_22706.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___398_22713.FStar_TypeChecker_Env.check_type_of); + (uu___395_22706.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___398_22713.FStar_TypeChecker_Env.use_bv_sorts); + (uu___395_22706.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___398_22713.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___395_22706.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___398_22713.FStar_TypeChecker_Env.normalized_eff_names); + (uu___395_22706.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___398_22713.FStar_TypeChecker_Env.fv_delta_depths); + (uu___395_22706.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___398_22713.FStar_TypeChecker_Env.proof_ns); + (uu___395_22706.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___398_22713.FStar_TypeChecker_Env.synth_hook); + (uu___395_22706.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___398_22713.FStar_TypeChecker_Env.splice); + (uu___395_22706.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___398_22713.FStar_TypeChecker_Env.postprocess); + (uu___395_22706.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___398_22713.FStar_TypeChecker_Env.is_native_tactic); + (uu___395_22706.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___398_22713.FStar_TypeChecker_Env.identifier_info); + (uu___395_22706.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___398_22713.FStar_TypeChecker_Env.tc_hooks); + (uu___395_22706.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___398_22713.FStar_TypeChecker_Env.dsenv); + (uu___395_22706.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___398_22713.FStar_TypeChecker_Env.nbe) + (uu___395_22706.FStar_TypeChecker_Env.nbe) } else FStar_TypeChecker_Env.push_let_binding @@ -8792,24 +8761,24 @@ and (build_let_rec_env : (univ_vars1, t1) in let lb1 = - let uu___399_22727 = lb in + let uu___396_22720 = lb in { FStar_Syntax_Syntax.lbname = - (uu___399_22727.FStar_Syntax_Syntax.lbname); + (uu___396_22720.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = univ_vars1; FStar_Syntax_Syntax.lbtyp = t1; FStar_Syntax_Syntax.lbeff = - (uu___399_22727.FStar_Syntax_Syntax.lbeff); + (uu___396_22720.FStar_Syntax_Syntax.lbeff); FStar_Syntax_Syntax.lbdef = e; FStar_Syntax_Syntax.lbattrs = - (uu___399_22727.FStar_Syntax_Syntax.lbattrs); + (uu___396_22720.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___399_22727.FStar_Syntax_Syntax.lbpos) + (uu___396_22720.FStar_Syntax_Syntax.lbpos) } in ((lb1 :: lbs1), env3, g)))) ([], env, FStar_TypeChecker_Env.trivial_guard) lbs in - match uu____22557 with + match uu____22550 with | (lbs1,env1,g) -> ((FStar_List.rev lbs1), env1, g) and (check_let_recs : @@ -8820,62 +8789,62 @@ and (check_let_recs : = fun env -> fun lbs -> - let uu____22753 = - let uu____22762 = + let uu____22746 = + let uu____22755 = FStar_All.pipe_right lbs (FStar_List.map (fun lb -> - let uu____22788 = + let uu____22781 = FStar_Syntax_Util.abs_formals lb.FStar_Syntax_Syntax.lbdef in - match uu____22788 with + match uu____22781 with | (bs,t,lcomp) -> (match bs with | [] -> - let uu____22818 = + let uu____22811 = FStar_Syntax_Syntax.range_of_lbname lb.FStar_Syntax_Syntax.lbname in FStar_Errors.raise_error (FStar_Errors.Fatal_RecursiveFunctionLiteral, "Only function literals may be defined recursively") - uu____22818 - | uu____22825 -> + uu____22811 + | uu____22818 -> let lb1 = - let uu___400_22828 = lb in - let uu____22829 = + let uu___397_22821 = lb in + let uu____22822 = FStar_Syntax_Util.abs bs t lcomp in { FStar_Syntax_Syntax.lbname = - (uu___400_22828.FStar_Syntax_Syntax.lbname); + (uu___397_22821.FStar_Syntax_Syntax.lbname); FStar_Syntax_Syntax.lbunivs = - (uu___400_22828.FStar_Syntax_Syntax.lbunivs); + (uu___397_22821.FStar_Syntax_Syntax.lbunivs); FStar_Syntax_Syntax.lbtyp = - (uu___400_22828.FStar_Syntax_Syntax.lbtyp); + (uu___397_22821.FStar_Syntax_Syntax.lbtyp); FStar_Syntax_Syntax.lbeff = - (uu___400_22828.FStar_Syntax_Syntax.lbeff); - FStar_Syntax_Syntax.lbdef = uu____22829; + (uu___397_22821.FStar_Syntax_Syntax.lbeff); + FStar_Syntax_Syntax.lbdef = uu____22822; FStar_Syntax_Syntax.lbattrs = - (uu___400_22828.FStar_Syntax_Syntax.lbattrs); + (uu___397_22821.FStar_Syntax_Syntax.lbattrs); FStar_Syntax_Syntax.lbpos = - (uu___400_22828.FStar_Syntax_Syntax.lbpos) + (uu___397_22821.FStar_Syntax_Syntax.lbpos) } in - let uu____22832 = - let uu____22839 = + let uu____22825 = + let uu____22832 = FStar_TypeChecker_Env.set_expected_typ env lb1.FStar_Syntax_Syntax.lbtyp in - tc_tot_or_gtot_term uu____22839 + tc_tot_or_gtot_term uu____22832 lb1.FStar_Syntax_Syntax.lbdef in - (match uu____22832 with + (match uu____22825 with | (e,c,g) -> - ((let uu____22848 = - let uu____22850 = + ((let uu____22841 = + let uu____22843 = FStar_Syntax_Util.is_total_lcomp c in - Prims.op_Negation uu____22850 in - if uu____22848 + Prims.op_Negation uu____22843 in + if uu____22841 then FStar_Errors.raise_error (FStar_Errors.Fatal_UnexpectedGTotForLetRec, @@ -8893,8 +8862,8 @@ and (check_let_recs : in (lb2, g))))))) in - FStar_All.pipe_right uu____22762 FStar_List.unzip in - match uu____22753 with + FStar_All.pipe_right uu____22755 FStar_List.unzip in + match uu____22746 with | (lbs1,gs) -> let g_lbs = FStar_List.fold_right FStar_TypeChecker_Env.conj_guard gs @@ -8913,12 +8882,12 @@ and (check_let_bound_def : fun top_level -> fun env -> fun lb -> - let uu____22906 = FStar_TypeChecker_Env.clear_expected_typ env in - match uu____22906 with - | (env1,uu____22925) -> + let uu____22899 = FStar_TypeChecker_Env.clear_expected_typ env in + match uu____22899 with + | (env1,uu____22918) -> let e1 = lb.FStar_Syntax_Syntax.lbdef in - let uu____22933 = check_lbtyp top_level env lb in - (match uu____22933 with + let uu____22926 = check_lbtyp top_level env lb in + (match uu____22926 with | (topt,wf_annot,univ_vars1,univ_opening,env11) -> (if (Prims.op_Negation top_level) && (univ_vars1 <> []) then @@ -8928,134 +8897,134 @@ and (check_let_bound_def : e1.FStar_Syntax_Syntax.pos else (); (let e11 = FStar_Syntax_Subst.subst univ_opening e1 in - let uu____22982 = + let uu____22975 = tc_maybe_toplevel_term - (let uu___401_22991 = env11 in + (let uu___398_22984 = env11 in { FStar_TypeChecker_Env.solver = - (uu___401_22991.FStar_TypeChecker_Env.solver); + (uu___398_22984.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___401_22991.FStar_TypeChecker_Env.range); + (uu___398_22984.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___401_22991.FStar_TypeChecker_Env.curmodule); + (uu___398_22984.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___401_22991.FStar_TypeChecker_Env.gamma); + (uu___398_22984.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___401_22991.FStar_TypeChecker_Env.gamma_sig); + (uu___398_22984.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___401_22991.FStar_TypeChecker_Env.gamma_cache); + (uu___398_22984.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___401_22991.FStar_TypeChecker_Env.modules); + (uu___398_22984.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___401_22991.FStar_TypeChecker_Env.expected_typ); + (uu___398_22984.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___401_22991.FStar_TypeChecker_Env.sigtab); + (uu___398_22984.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___401_22991.FStar_TypeChecker_Env.attrtab); + (uu___398_22984.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___401_22991.FStar_TypeChecker_Env.is_pattern); + (uu___398_22984.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___401_22991.FStar_TypeChecker_Env.instantiate_imp); + (uu___398_22984.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___401_22991.FStar_TypeChecker_Env.effects); + (uu___398_22984.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___401_22991.FStar_TypeChecker_Env.generalize); + (uu___398_22984.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___401_22991.FStar_TypeChecker_Env.letrecs); + (uu___398_22984.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = top_level; FStar_TypeChecker_Env.check_uvars = - (uu___401_22991.FStar_TypeChecker_Env.check_uvars); + (uu___398_22984.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___401_22991.FStar_TypeChecker_Env.use_eq); + (uu___398_22984.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___401_22991.FStar_TypeChecker_Env.is_iface); + (uu___398_22984.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___401_22991.FStar_TypeChecker_Env.admit); + (uu___398_22984.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___401_22991.FStar_TypeChecker_Env.lax); + (uu___398_22984.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___401_22991.FStar_TypeChecker_Env.lax_universes); + (uu___398_22984.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___401_22991.FStar_TypeChecker_Env.phase1); + (uu___398_22984.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___401_22991.FStar_TypeChecker_Env.failhard); + (uu___398_22984.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___401_22991.FStar_TypeChecker_Env.nosynth); + (uu___398_22984.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___401_22991.FStar_TypeChecker_Env.uvar_subtyping); + (uu___398_22984.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___401_22991.FStar_TypeChecker_Env.tc_term); + (uu___398_22984.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___401_22991.FStar_TypeChecker_Env.type_of); + (uu___398_22984.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___401_22991.FStar_TypeChecker_Env.universe_of); + (uu___398_22984.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___401_22991.FStar_TypeChecker_Env.check_type_of); + (uu___398_22984.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___401_22991.FStar_TypeChecker_Env.use_bv_sorts); + (uu___398_22984.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___401_22991.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___398_22984.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___401_22991.FStar_TypeChecker_Env.normalized_eff_names); + (uu___398_22984.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___401_22991.FStar_TypeChecker_Env.fv_delta_depths); + (uu___398_22984.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___401_22991.FStar_TypeChecker_Env.proof_ns); + (uu___398_22984.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___401_22991.FStar_TypeChecker_Env.synth_hook); + (uu___398_22984.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___401_22991.FStar_TypeChecker_Env.splice); + (uu___398_22984.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___401_22991.FStar_TypeChecker_Env.postprocess); + (uu___398_22984.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___401_22991.FStar_TypeChecker_Env.is_native_tactic); + (uu___398_22984.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___401_22991.FStar_TypeChecker_Env.identifier_info); + (uu___398_22984.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___401_22991.FStar_TypeChecker_Env.tc_hooks); + (uu___398_22984.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___401_22991.FStar_TypeChecker_Env.dsenv); + (uu___398_22984.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___401_22991.FStar_TypeChecker_Env.nbe) + (uu___398_22984.FStar_TypeChecker_Env.nbe) }) e11 in - match uu____22982 with + match uu____22975 with | (e12,c1,g1) -> - let uu____23006 = - let uu____23011 = + let uu____22999 = + let uu____23004 = FStar_TypeChecker_Env.set_range env11 e12.FStar_Syntax_Syntax.pos in FStar_TypeChecker_Util.strengthen_precondition (FStar_Pervasives_Native.Some - (fun uu____23017 -> + (fun uu____23010 -> FStar_Util.return_all FStar_TypeChecker_Err.ill_kinded_type)) - uu____23011 e12 c1 wf_annot + uu____23004 e12 c1 wf_annot in - (match uu____23006 with + (match uu____22999 with | (c11,guard_f) -> let g11 = FStar_TypeChecker_Env.conj_guard g1 guard_f in - ((let uu____23034 = + ((let uu____23027 = FStar_TypeChecker_Env.debug env FStar_Options.Extreme in - if uu____23034 + if uu____23027 then - let uu____23037 = + let uu____23030 = FStar_Syntax_Print.lbname_to_string lb.FStar_Syntax_Syntax.lbname in - let uu____23039 = + let uu____23032 = FStar_Syntax_Print.lcomp_to_string c11 in - let uu____23041 = + let uu____23034 = FStar_TypeChecker_Rel.guard_to_string env g11 in FStar_Util.print3 "checked let-bound def %s : %s guard is %s\n" - uu____23037 uu____23039 uu____23041 + uu____23030 uu____23032 uu____23034 else ()); (e12, univ_vars1, c11, g11, (FStar_Option.isSome topt))))))) @@ -9075,23 +9044,23 @@ and (check_lbtyp : let t = FStar_Syntax_Subst.compress lb.FStar_Syntax_Syntax.lbtyp in match t.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_unknown -> - let uu____23080 = + let uu____23073 = FStar_Syntax_Subst.univ_var_opening lb.FStar_Syntax_Syntax.lbunivs in - (match uu____23080 with + (match uu____23073 with | (univ_opening,univ_vars1) -> - let uu____23113 = + let uu____23106 = FStar_TypeChecker_Env.push_univ_vars env univ_vars1 in (FStar_Pervasives_Native.None, FStar_TypeChecker_Env.trivial_guard, univ_vars1, - univ_opening, uu____23113)) - | uu____23118 -> - let uu____23119 = + univ_opening, uu____23106)) + | uu____23111 -> + let uu____23112 = FStar_Syntax_Subst.univ_var_opening lb.FStar_Syntax_Syntax.lbunivs in - (match uu____23119 with + (match uu____23112 with | (univ_opening,univ_vars1) -> let t1 = FStar_Syntax_Subst.subst univ_opening t in let env1 = @@ -9100,45 +9069,45 @@ and (check_lbtyp : top_level && (Prims.op_Negation env.FStar_TypeChecker_Env.generalize) then - let uu____23169 = + let uu____23162 = FStar_TypeChecker_Env.set_expected_typ env1 t1 in ((FStar_Pervasives_Native.Some t1), FStar_TypeChecker_Env.trivial_guard, univ_vars1, - univ_opening, uu____23169) + univ_opening, uu____23162) else - (let uu____23176 = FStar_Syntax_Util.type_u () in - match uu____23176 with - | (k,uu____23196) -> - let uu____23197 = tc_check_tot_or_gtot_term env1 t1 k + (let uu____23169 = FStar_Syntax_Util.type_u () in + match uu____23169 with + | (k,uu____23189) -> + let uu____23190 = tc_check_tot_or_gtot_term env1 t1 k in - (match uu____23197 with - | (t2,uu____23219,g) -> - ((let uu____23222 = + (match uu____23190 with + | (t2,uu____23212,g) -> + ((let uu____23215 = FStar_TypeChecker_Env.debug env FStar_Options.Medium in - if uu____23222 + if uu____23215 then - let uu____23225 = - let uu____23227 = + let uu____23218 = + let uu____23220 = FStar_Syntax_Util.range_of_lbname lb.FStar_Syntax_Syntax.lbname in - FStar_Range.string_of_range uu____23227 + FStar_Range.string_of_range uu____23220 in - let uu____23228 = + let uu____23221 = FStar_Syntax_Print.term_to_string t2 in FStar_Util.print2 "(%s) Checked type annotation %s\n" - uu____23225 uu____23228 + uu____23218 uu____23221 else ()); (let t3 = norm env1 t2 in - let uu____23234 = + let uu____23227 = FStar_TypeChecker_Env.set_expected_typ env1 t3 in ((FStar_Pervasives_Native.Some t3), g, - univ_vars1, univ_opening, uu____23234)))))) + univ_vars1, univ_opening, uu____23227)))))) and (tc_binder : FStar_TypeChecker_Env.env -> @@ -9151,73 +9120,73 @@ and (tc_binder : FStar_Syntax_Syntax.universe) FStar_Pervasives_Native.tuple4) = fun env -> - fun uu____23240 -> - match uu____23240 with + fun uu____23233 -> + match uu____23233 with | (x,imp) -> - let uu____23267 = FStar_Syntax_Util.type_u () in - (match uu____23267 with + let uu____23260 = FStar_Syntax_Util.type_u () in + (match uu____23260 with | (tu,u) -> - ((let uu____23289 = + ((let uu____23282 = FStar_TypeChecker_Env.debug env FStar_Options.Extreme in - if uu____23289 + if uu____23282 then - let uu____23292 = FStar_Syntax_Print.bv_to_string x in - let uu____23294 = + let uu____23285 = FStar_Syntax_Print.bv_to_string x in + let uu____23287 = FStar_Syntax_Print.term_to_string x.FStar_Syntax_Syntax.sort in - let uu____23296 = FStar_Syntax_Print.term_to_string tu in + let uu____23289 = FStar_Syntax_Print.term_to_string tu in FStar_Util.print3 "Checking binder %s:%s at type %s\n" - uu____23292 uu____23294 uu____23296 + uu____23285 uu____23287 uu____23289 else ()); - (let uu____23301 = + (let uu____23294 = tc_check_tot_or_gtot_term env x.FStar_Syntax_Syntax.sort tu in - match uu____23301 with - | (t,uu____23323,g) -> - let uu____23325 = + match uu____23294 with + | (t,uu____23316,g) -> + let uu____23318 = match imp with | FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Meta tau) -> - let uu____23341 = tc_tactic env tau in - (match uu____23341 with - | (tau1,uu____23355,g1) -> + let uu____23334 = tc_tactic env tau in + (match uu____23334 with + | (tau1,uu____23348,g1) -> ((FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Meta tau1)), g1)) - | uu____23359 -> + | uu____23352 -> (imp, FStar_TypeChecker_Env.trivial_guard) in - (match uu____23325 with + (match uu____23318 with | (imp1,g') -> let x1 = - ((let uu___402_23394 = x in + ((let uu___399_23387 = x in { FStar_Syntax_Syntax.ppname = - (uu___402_23394.FStar_Syntax_Syntax.ppname); + (uu___399_23387.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___402_23394.FStar_Syntax_Syntax.index); + (uu___399_23387.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t }), imp1) in - ((let uu____23396 = + ((let uu____23389 = FStar_TypeChecker_Env.debug env FStar_Options.High in - if uu____23396 + if uu____23389 then - let uu____23399 = + let uu____23392 = FStar_Syntax_Print.bv_to_string (FStar_Pervasives_Native.fst x1) in - let uu____23403 = + let uu____23396 = FStar_Syntax_Print.term_to_string t in FStar_Util.print2 - "Pushing binder %s at type %s\n" uu____23399 - uu____23403 + "Pushing binder %s at type %s\n" uu____23392 + uu____23396 else ()); - (let uu____23408 = push_binding env x1 in - (x1, uu____23408, g, u))))))) + (let uu____23401 = push_binding env x1 in + (x1, uu____23401, g, u))))))) and (tc_binders : FStar_TypeChecker_Env.env -> @@ -9227,30 +9196,30 @@ and (tc_binders : = fun env -> fun bs -> - (let uu____23420 = + (let uu____23413 = FStar_TypeChecker_Env.debug env FStar_Options.Extreme in - if uu____23420 + if uu____23413 then - let uu____23423 = FStar_Syntax_Print.binders_to_string ", " bs in - FStar_Util.print1 "Checking binders %s\n" uu____23423 + let uu____23416 = FStar_Syntax_Print.binders_to_string ", " bs in + FStar_Util.print1 "Checking binders %s\n" uu____23416 else ()); (let rec aux env1 bs1 = match bs1 with | [] -> ([], env1, FStar_TypeChecker_Env.trivial_guard, []) | b::bs2 -> - let uu____23536 = tc_binder env1 b in - (match uu____23536 with + let uu____23529 = tc_binder env1 b in + (match uu____23529 with | (b1,env',g,u) -> - let uu____23585 = aux env' bs2 in - (match uu____23585 with + let uu____23578 = aux env' bs2 in + (match uu____23578 with | (bs3,env'1,g',us) -> - let uu____23646 = - let uu____23647 = + let uu____23639 = + let uu____23640 = FStar_TypeChecker_Env.close_guard_univs [u] [b1] g' in - FStar_TypeChecker_Env.conj_guard g uu____23647 in - ((b1 :: bs3), env'1, uu____23646, (u :: us)))) + FStar_TypeChecker_Env.conj_guard g uu____23640 in + ((b1 :: bs3), env'1, uu____23639, (u :: us)))) in aux env bs) @@ -9268,29 +9237,29 @@ and (tc_smt_pats : fun pats -> let tc_args env1 args = FStar_List.fold_right - (fun uu____23754 -> - fun uu____23755 -> - match (uu____23754, uu____23755) with + (fun uu____23747 -> + fun uu____23748 -> + match (uu____23747, uu____23748) with | ((t,imp),(args1,g)) -> - let uu____23846 = tc_term env1 t in - (match uu____23846 with - | (t1,uu____23866,g') -> - let uu____23868 = + let uu____23839 = tc_term env1 t in + (match uu____23839 with + | (t1,uu____23859,g') -> + let uu____23861 = FStar_TypeChecker_Env.conj_guard g g' in - (((t1, imp) :: args1), uu____23868))) args + (((t1, imp) :: args1), uu____23861))) args ([], FStar_TypeChecker_Env.trivial_guard) in FStar_List.fold_right (fun p -> - fun uu____23922 -> - match uu____23922 with + fun uu____23915 -> + match uu____23915 with | (pats1,g) -> - let uu____23949 = tc_args env p in - (match uu____23949 with + let uu____23942 = tc_args env p in + (match uu____23942 with | (args,g') -> - let uu____23962 = FStar_TypeChecker_Env.conj_guard g g' + let uu____23955 = FStar_TypeChecker_Env.conj_guard g g' in - ((args :: pats1), uu____23962))) pats + ((args :: pats1), uu____23955))) pats ([], FStar_TypeChecker_Env.trivial_guard) and (tc_tot_or_gtot_term : @@ -9301,62 +9270,62 @@ and (tc_tot_or_gtot_term : = fun env -> fun e -> - let uu____23975 = tc_maybe_toplevel_term env e in - match uu____23975 with + let uu____23968 = tc_maybe_toplevel_term env e in + match uu____23968 with | (e1,c,g) -> - let uu____23991 = FStar_Syntax_Util.is_tot_or_gtot_lcomp c in - if uu____23991 + let uu____23984 = FStar_Syntax_Util.is_tot_or_gtot_lcomp c in + if uu____23984 then (e1, c, g) else (let g1 = FStar_TypeChecker_Rel.solve_deferred_constraints env g in let c1 = FStar_Syntax_Syntax.lcomp_comp c in let c2 = norm_c env c1 in - let uu____24005 = - let uu____24011 = + let uu____23998 = + let uu____24004 = FStar_TypeChecker_Util.is_pure_effect env (FStar_Syntax_Util.comp_effect_name c2) in - if uu____24011 + if uu____24004 then - let uu____24019 = + let uu____24012 = FStar_Syntax_Syntax.mk_Total (FStar_Syntax_Util.comp_result c2) in - (uu____24019, false) + (uu____24012, false) else - (let uu____24024 = + (let uu____24017 = FStar_Syntax_Syntax.mk_GTotal (FStar_Syntax_Util.comp_result c2) in - (uu____24024, true)) + (uu____24017, true)) in - match uu____24005 with + match uu____23998 with | (target_comp,allow_ghost) -> - let uu____24037 = + let uu____24030 = FStar_TypeChecker_Rel.sub_comp env c2 target_comp in - (match uu____24037 with + (match uu____24030 with | FStar_Pervasives_Native.Some g' -> - let uu____24047 = + let uu____24040 = FStar_Syntax_Util.lcomp_of_comp target_comp in - let uu____24048 = + let uu____24041 = FStar_TypeChecker_Env.conj_guard g1 g' in - (e1, uu____24047, uu____24048) - | uu____24049 -> + (e1, uu____24040, uu____24041) + | uu____24042 -> if allow_ghost then - let uu____24059 = + let uu____24052 = FStar_TypeChecker_Err.expected_ghost_expression e1 c2 in - FStar_Errors.raise_error uu____24059 + FStar_Errors.raise_error uu____24052 e1.FStar_Syntax_Syntax.pos else - (let uu____24073 = + (let uu____24066 = FStar_TypeChecker_Err.expected_pure_expression e1 c2 in - FStar_Errors.raise_error uu____24073 + FStar_Errors.raise_error uu____24066 e1.FStar_Syntax_Syntax.pos))) and (tc_check_tot_or_gtot_term : @@ -9380,8 +9349,8 @@ and (tc_trivial_guard : = fun env -> fun t -> - let uu____24097 = tc_tot_or_gtot_term env t in - match uu____24097 with + let uu____24090 = tc_tot_or_gtot_term env t in + match uu____24090 with | (t1,c,g) -> (FStar_TypeChecker_Rel.force_trivial_guard env g; (t1, c)) @@ -9393,147 +9362,147 @@ let (type_of_tot_term : = fun env -> fun e -> - (let uu____24130 = + (let uu____24123 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "RelCheck") in - if uu____24130 + if uu____24123 then - let uu____24135 = FStar_Syntax_Print.term_to_string e in - FStar_Util.print1 "Checking term %s\n" uu____24135 + let uu____24128 = FStar_Syntax_Print.term_to_string e in + FStar_Util.print1 "Checking term %s\n" uu____24128 else ()); (let env1 = - let uu___403_24141 = env in + let uu___400_24134 = env in { FStar_TypeChecker_Env.solver = - (uu___403_24141.FStar_TypeChecker_Env.solver); + (uu___400_24134.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___403_24141.FStar_TypeChecker_Env.range); + (uu___400_24134.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___403_24141.FStar_TypeChecker_Env.curmodule); + (uu___400_24134.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___403_24141.FStar_TypeChecker_Env.gamma); + (uu___400_24134.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___403_24141.FStar_TypeChecker_Env.gamma_sig); + (uu___400_24134.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___403_24141.FStar_TypeChecker_Env.gamma_cache); + (uu___400_24134.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___403_24141.FStar_TypeChecker_Env.modules); + (uu___400_24134.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___403_24141.FStar_TypeChecker_Env.expected_typ); + (uu___400_24134.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___403_24141.FStar_TypeChecker_Env.sigtab); + (uu___400_24134.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___403_24141.FStar_TypeChecker_Env.attrtab); + (uu___400_24134.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___403_24141.FStar_TypeChecker_Env.is_pattern); + (uu___400_24134.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___403_24141.FStar_TypeChecker_Env.instantiate_imp); + (uu___400_24134.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___403_24141.FStar_TypeChecker_Env.effects); + (uu___400_24134.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___403_24141.FStar_TypeChecker_Env.generalize); + (uu___400_24134.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = []; FStar_TypeChecker_Env.top_level = false; FStar_TypeChecker_Env.check_uvars = - (uu___403_24141.FStar_TypeChecker_Env.check_uvars); + (uu___400_24134.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___403_24141.FStar_TypeChecker_Env.use_eq); + (uu___400_24134.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___403_24141.FStar_TypeChecker_Env.is_iface); + (uu___400_24134.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___403_24141.FStar_TypeChecker_Env.admit); + (uu___400_24134.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___403_24141.FStar_TypeChecker_Env.lax); + (uu___400_24134.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___403_24141.FStar_TypeChecker_Env.lax_universes); + (uu___400_24134.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___403_24141.FStar_TypeChecker_Env.phase1); + (uu___400_24134.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___403_24141.FStar_TypeChecker_Env.failhard); + (uu___400_24134.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___403_24141.FStar_TypeChecker_Env.nosynth); + (uu___400_24134.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___403_24141.FStar_TypeChecker_Env.uvar_subtyping); + (uu___400_24134.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___403_24141.FStar_TypeChecker_Env.tc_term); + (uu___400_24134.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___403_24141.FStar_TypeChecker_Env.type_of); + (uu___400_24134.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___403_24141.FStar_TypeChecker_Env.universe_of); + (uu___400_24134.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___403_24141.FStar_TypeChecker_Env.check_type_of); + (uu___400_24134.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___403_24141.FStar_TypeChecker_Env.use_bv_sorts); + (uu___400_24134.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___403_24141.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___400_24134.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___403_24141.FStar_TypeChecker_Env.normalized_eff_names); + (uu___400_24134.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___403_24141.FStar_TypeChecker_Env.fv_delta_depths); + (uu___400_24134.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___403_24141.FStar_TypeChecker_Env.proof_ns); + (uu___400_24134.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___403_24141.FStar_TypeChecker_Env.synth_hook); + (uu___400_24134.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___403_24141.FStar_TypeChecker_Env.splice); + (uu___400_24134.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___403_24141.FStar_TypeChecker_Env.postprocess); + (uu___400_24134.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___403_24141.FStar_TypeChecker_Env.is_native_tactic); + (uu___400_24134.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___403_24141.FStar_TypeChecker_Env.identifier_info); + (uu___400_24134.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___403_24141.FStar_TypeChecker_Env.tc_hooks); + (uu___400_24134.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___403_24141.FStar_TypeChecker_Env.dsenv); + (uu___400_24134.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___403_24141.FStar_TypeChecker_Env.nbe) + (uu___400_24134.FStar_TypeChecker_Env.nbe) } in - let uu____24149 = + let uu____24142 = try - (fun uu___405_24163 -> + (fun uu___402_24156 -> match () with | () -> tc_tot_or_gtot_term env1 e) () with - | FStar_Errors.Error (e1,msg,uu____24184) -> - let uu____24187 = FStar_TypeChecker_Env.get_range env1 in - FStar_Errors.raise_error (e1, msg) uu____24187 + | FStar_Errors.Error (e1,msg,uu____24177) -> + let uu____24180 = FStar_TypeChecker_Env.get_range env1 in + FStar_Errors.raise_error (e1, msg) uu____24180 in - match uu____24149 with + match uu____24142 with | (t,c,g) -> - let uu____24204 = FStar_Syntax_Util.is_total_lcomp c in - if uu____24204 + let uu____24197 = FStar_Syntax_Util.is_total_lcomp c in + if uu____24197 then (t, (c.FStar_Syntax_Syntax.res_typ), g) else - (let uu____24215 = - let uu____24221 = - let uu____24223 = FStar_Syntax_Print.term_to_string e in + (let uu____24208 = + let uu____24214 = + let uu____24216 = FStar_Syntax_Print.term_to_string e in FStar_Util.format1 "Implicit argument: Expected a total term; got a ghost term: %s" - uu____24223 + uu____24216 in - (FStar_Errors.Fatal_UnexpectedImplictArgument, uu____24221) + (FStar_Errors.Fatal_UnexpectedImplictArgument, uu____24214) in - let uu____24227 = FStar_TypeChecker_Env.get_range env1 in - FStar_Errors.raise_error uu____24215 uu____24227)) + let uu____24220 = FStar_TypeChecker_Env.get_range env1 in + FStar_Errors.raise_error uu____24208 uu____24220)) let level_of_type_fail : - 'Auu____24243 . + 'Auu____24236 . FStar_TypeChecker_Env.env -> - FStar_Syntax_Syntax.term -> Prims.string -> 'Auu____24243 + FStar_Syntax_Syntax.term -> Prims.string -> 'Auu____24236 = fun env -> fun e -> fun t -> - let uu____24261 = - let uu____24267 = - let uu____24269 = FStar_Syntax_Print.term_to_string e in + let uu____24254 = + let uu____24260 = + let uu____24262 = FStar_Syntax_Print.term_to_string e in FStar_Util.format2 "Expected a term of type 'Type'; got %s : %s" - uu____24269 t + uu____24262 t in - (FStar_Errors.Fatal_UnexpectedTermType, uu____24267) in - let uu____24273 = FStar_TypeChecker_Env.get_range env in - FStar_Errors.raise_error uu____24261 uu____24273 + (FStar_Errors.Fatal_UnexpectedTermType, uu____24260) in + let uu____24266 = FStar_TypeChecker_Env.get_range env in + FStar_Errors.raise_error uu____24254 uu____24266 let (level_of_type : FStar_TypeChecker_Env.env -> @@ -9545,12 +9514,12 @@ let (level_of_type : fun e -> fun t -> let rec aux retry t1 = - let uu____24311 = - let uu____24312 = FStar_Syntax_Util.unrefine t1 in - uu____24312.FStar_Syntax_Syntax.n in - match uu____24311 with + let uu____24304 = + let uu____24305 = FStar_Syntax_Util.unrefine t1 in + uu____24305.FStar_Syntax_Syntax.n in + match uu____24304 with | FStar_Syntax_Syntax.Tm_type u -> u - | uu____24316 -> + | uu____24309 -> if retry then let t2 = @@ -9560,105 +9529,105 @@ let (level_of_type : in aux false t2 else - (let uu____24322 = FStar_Syntax_Util.type_u () in - match uu____24322 with + (let uu____24315 = FStar_Syntax_Util.type_u () in + match uu____24315 with | (t_u,u) -> let env1 = - let uu___406_24330 = env in + let uu___403_24323 = env in { FStar_TypeChecker_Env.solver = - (uu___406_24330.FStar_TypeChecker_Env.solver); + (uu___403_24323.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___406_24330.FStar_TypeChecker_Env.range); + (uu___403_24323.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___406_24330.FStar_TypeChecker_Env.curmodule); + (uu___403_24323.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___406_24330.FStar_TypeChecker_Env.gamma); + (uu___403_24323.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___406_24330.FStar_TypeChecker_Env.gamma_sig); + (uu___403_24323.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___406_24330.FStar_TypeChecker_Env.gamma_cache); + (uu___403_24323.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___406_24330.FStar_TypeChecker_Env.modules); + (uu___403_24323.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___406_24330.FStar_TypeChecker_Env.expected_typ); + (uu___403_24323.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___406_24330.FStar_TypeChecker_Env.sigtab); + (uu___403_24323.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___406_24330.FStar_TypeChecker_Env.attrtab); + (uu___403_24323.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___406_24330.FStar_TypeChecker_Env.is_pattern); + (uu___403_24323.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___406_24330.FStar_TypeChecker_Env.instantiate_imp); + (uu___403_24323.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___406_24330.FStar_TypeChecker_Env.effects); + (uu___403_24323.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___406_24330.FStar_TypeChecker_Env.generalize); + (uu___403_24323.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___406_24330.FStar_TypeChecker_Env.letrecs); + (uu___403_24323.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___406_24330.FStar_TypeChecker_Env.top_level); + (uu___403_24323.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___406_24330.FStar_TypeChecker_Env.check_uvars); + (uu___403_24323.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___406_24330.FStar_TypeChecker_Env.use_eq); + (uu___403_24323.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___406_24330.FStar_TypeChecker_Env.is_iface); + (uu___403_24323.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___406_24330.FStar_TypeChecker_Env.admit); + (uu___403_24323.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___406_24330.FStar_TypeChecker_Env.lax_universes); + (uu___403_24323.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___406_24330.FStar_TypeChecker_Env.phase1); + (uu___403_24323.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___406_24330.FStar_TypeChecker_Env.failhard); + (uu___403_24323.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___406_24330.FStar_TypeChecker_Env.nosynth); + (uu___403_24323.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___406_24330.FStar_TypeChecker_Env.uvar_subtyping); + (uu___403_24323.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___406_24330.FStar_TypeChecker_Env.tc_term); + (uu___403_24323.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___406_24330.FStar_TypeChecker_Env.type_of); + (uu___403_24323.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___406_24330.FStar_TypeChecker_Env.universe_of); + (uu___403_24323.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___406_24330.FStar_TypeChecker_Env.check_type_of); + (uu___403_24323.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___406_24330.FStar_TypeChecker_Env.use_bv_sorts); + (uu___403_24323.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___406_24330.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___403_24323.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___406_24330.FStar_TypeChecker_Env.normalized_eff_names); + (uu___403_24323.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___406_24330.FStar_TypeChecker_Env.fv_delta_depths); + (uu___403_24323.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___406_24330.FStar_TypeChecker_Env.proof_ns); + (uu___403_24323.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___406_24330.FStar_TypeChecker_Env.synth_hook); + (uu___403_24323.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___406_24330.FStar_TypeChecker_Env.splice); + (uu___403_24323.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___406_24330.FStar_TypeChecker_Env.postprocess); + (uu___403_24323.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___406_24330.FStar_TypeChecker_Env.is_native_tactic); + (uu___403_24323.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___406_24330.FStar_TypeChecker_Env.identifier_info); + (uu___403_24323.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___406_24330.FStar_TypeChecker_Env.tc_hooks); + (uu___403_24323.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___406_24330.FStar_TypeChecker_Env.dsenv); + (uu___403_24323.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___406_24330.FStar_TypeChecker_Env.nbe) + (uu___403_24323.FStar_TypeChecker_Env.nbe) } in let g = FStar_TypeChecker_Rel.teq env1 t1 t_u in ((match g.FStar_TypeChecker_Env.guard_f with | FStar_TypeChecker_Common.NonTrivial f -> - let uu____24335 = + let uu____24328 = FStar_Syntax_Print.term_to_string t1 in - level_of_type_fail env1 e uu____24335 - | uu____24337 -> + level_of_type_fail env1 e uu____24328 + | uu____24330 -> FStar_TypeChecker_Rel.force_trivial_guard env1 g); u)) in @@ -9671,61 +9640,61 @@ let rec (universe_of_aux : = fun env -> fun e -> - let uu____24356 = - let uu____24357 = FStar_Syntax_Subst.compress e in - uu____24357.FStar_Syntax_Syntax.n in - match uu____24356 with - | FStar_Syntax_Syntax.Tm_bvar uu____24362 -> failwith "Impossible" + let uu____24349 = + let uu____24350 = FStar_Syntax_Subst.compress e in + uu____24350.FStar_Syntax_Syntax.n in + match uu____24349 with + | FStar_Syntax_Syntax.Tm_bvar uu____24355 -> failwith "Impossible" | FStar_Syntax_Syntax.Tm_unknown -> failwith "Impossible" - | FStar_Syntax_Syntax.Tm_delayed uu____24369 -> failwith "Impossible" - | FStar_Syntax_Syntax.Tm_let uu____24395 -> + | FStar_Syntax_Syntax.Tm_delayed uu____24362 -> failwith "Impossible" + | FStar_Syntax_Syntax.Tm_let uu____24388 -> let e1 = FStar_TypeChecker_Normalize.normalize [] env e in universe_of_aux env e1 - | FStar_Syntax_Syntax.Tm_abs (bs,t,uu____24412) -> + | FStar_Syntax_Syntax.Tm_abs (bs,t,uu____24405) -> level_of_type_fail env e "arrow type" | FStar_Syntax_Syntax.Tm_uvar (u,s) -> FStar_Syntax_Subst.subst' s u.FStar_Syntax_Syntax.ctx_uvar_typ - | FStar_Syntax_Syntax.Tm_meta (t,uu____24459) -> universe_of_aux env t + | FStar_Syntax_Syntax.Tm_meta (t,uu____24452) -> universe_of_aux env t | FStar_Syntax_Syntax.Tm_name n1 -> n1.FStar_Syntax_Syntax.sort | FStar_Syntax_Syntax.Tm_fvar fv -> - let uu____24466 = + let uu____24459 = FStar_TypeChecker_Env.lookup_lid env (fv.FStar_Syntax_Syntax.fv_name).FStar_Syntax_Syntax.v in - (match uu____24466 with | ((uu____24477,t),uu____24479) -> t) + (match uu____24459 with | ((uu____24470,t),uu____24472) -> t) | FStar_Syntax_Syntax.Tm_lazy i -> - let uu____24485 = FStar_Syntax_Util.unfold_lazy i in - universe_of_aux env uu____24485 + let uu____24478 = FStar_Syntax_Util.unfold_lazy i in + universe_of_aux env uu____24478 | FStar_Syntax_Syntax.Tm_ascribed - (uu____24488,(FStar_Util.Inl t,uu____24490),uu____24491) -> t + (uu____24481,(FStar_Util.Inl t,uu____24483),uu____24484) -> t | FStar_Syntax_Syntax.Tm_ascribed - (uu____24538,(FStar_Util.Inr c,uu____24540),uu____24541) -> + (uu____24531,(FStar_Util.Inr c,uu____24533),uu____24534) -> FStar_Syntax_Util.comp_result c | FStar_Syntax_Syntax.Tm_type u -> FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_type (FStar_Syntax_Syntax.U_succ u)) FStar_Pervasives_Native.None e.FStar_Syntax_Syntax.pos - | FStar_Syntax_Syntax.Tm_quoted uu____24589 -> FStar_Syntax_Util.ktype0 + | FStar_Syntax_Syntax.Tm_quoted uu____24582 -> FStar_Syntax_Util.ktype0 | FStar_Syntax_Syntax.Tm_constant sc -> tc_constant env e.FStar_Syntax_Syntax.pos sc | FStar_Syntax_Syntax.Tm_uinst ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_fvar fv; - FStar_Syntax_Syntax.pos = uu____24598; - FStar_Syntax_Syntax.vars = uu____24599;_},us) + FStar_Syntax_Syntax.pos = uu____24591; + FStar_Syntax_Syntax.vars = uu____24592;_},us) -> - let uu____24605 = + let uu____24598 = FStar_TypeChecker_Env.lookup_lid env (fv.FStar_Syntax_Syntax.fv_name).FStar_Syntax_Syntax.v in - (match uu____24605 with - | ((us',t),uu____24618) -> + (match uu____24598 with + | ((us',t),uu____24611) -> (if (FStar_List.length us) <> (FStar_List.length us') then - (let uu____24625 = FStar_TypeChecker_Env.get_range env in + (let uu____24618 = FStar_TypeChecker_Env.get_range env in FStar_Errors.raise_error (FStar_Errors.Fatal_UnexpectedNumberOfUniverse, "Unexpected number of universe instantiations") - uu____24625) + uu____24618) else FStar_List.iter2 (fun u' -> @@ -9733,31 +9702,31 @@ let rec (universe_of_aux : match u' with | FStar_Syntax_Syntax.U_unif u'' -> FStar_Syntax_Unionfind.univ_change u'' u - | uu____24644 -> failwith "Impossible") us' us; + | uu____24637 -> failwith "Impossible") us' us; t)) - | FStar_Syntax_Syntax.Tm_uinst uu____24646 -> + | FStar_Syntax_Syntax.Tm_uinst uu____24639 -> failwith "Impossible: Tm_uinst's head must be an fvar" - | FStar_Syntax_Syntax.Tm_refine (x,uu____24657) -> + | FStar_Syntax_Syntax.Tm_refine (x,uu____24650) -> universe_of_aux env x.FStar_Syntax_Syntax.sort | FStar_Syntax_Syntax.Tm_arrow (bs,c) -> - let uu____24684 = FStar_Syntax_Subst.open_comp bs c in - (match uu____24684 with + let uu____24677 = FStar_Syntax_Subst.open_comp bs c in + (match uu____24677 with | (bs1,c1) -> let us = FStar_List.map - (fun uu____24706 -> - match uu____24706 with - | (b,uu____24714) -> - let uu____24719 = + (fun uu____24699 -> + match uu____24699 with + | (b,uu____24707) -> + let uu____24712 = universe_of_aux env b.FStar_Syntax_Syntax.sort in level_of_type env b.FStar_Syntax_Syntax.sort - uu____24719) bs1 + uu____24712) bs1 in let u_res = let res = FStar_Syntax_Util.comp_result c1 in - let uu____24726 = universe_of_aux env res in - level_of_type env res uu____24726 in + let uu____24719 = universe_of_aux env res in + level_of_type env res uu____24719 in let u_c = FStar_All.pipe_right c1 (FStar_TypeChecker_Util.universe_of_comp env u_res) @@ -9773,193 +9742,193 @@ let rec (universe_of_aux : let hd3 = FStar_Syntax_Subst.compress hd2 in match hd3.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_unknown -> failwith "Impossible" - | FStar_Syntax_Syntax.Tm_bvar uu____24845 -> + | FStar_Syntax_Syntax.Tm_bvar uu____24838 -> failwith "Impossible" - | FStar_Syntax_Syntax.Tm_delayed uu____24863 -> + | FStar_Syntax_Syntax.Tm_delayed uu____24856 -> failwith "Impossible" - | FStar_Syntax_Syntax.Tm_fvar uu____24903 -> - let uu____24904 = universe_of_aux env hd3 in - (uu____24904, args1) - | FStar_Syntax_Syntax.Tm_name uu____24919 -> - let uu____24920 = universe_of_aux env hd3 in - (uu____24920, args1) - | FStar_Syntax_Syntax.Tm_uvar uu____24935 -> - let uu____24948 = universe_of_aux env hd3 in - (uu____24948, args1) - | FStar_Syntax_Syntax.Tm_uinst uu____24963 -> - let uu____24970 = universe_of_aux env hd3 in - (uu____24970, args1) - | FStar_Syntax_Syntax.Tm_ascribed uu____24985 -> - let uu____25012 = universe_of_aux env hd3 in - (uu____25012, args1) - | FStar_Syntax_Syntax.Tm_refine uu____25027 -> - let uu____25034 = universe_of_aux env hd3 in - (uu____25034, args1) - | FStar_Syntax_Syntax.Tm_constant uu____25049 -> - let uu____25050 = universe_of_aux env hd3 in - (uu____25050, args1) - | FStar_Syntax_Syntax.Tm_arrow uu____25065 -> - let uu____25080 = universe_of_aux env hd3 in - (uu____25080, args1) - | FStar_Syntax_Syntax.Tm_meta uu____25095 -> - let uu____25102 = universe_of_aux env hd3 in - (uu____25102, args1) - | FStar_Syntax_Syntax.Tm_type uu____25117 -> - let uu____25118 = universe_of_aux env hd3 in - (uu____25118, args1) - | FStar_Syntax_Syntax.Tm_match (uu____25133,hd4::uu____25135) -> - let uu____25200 = FStar_Syntax_Subst.open_branch hd4 in - (match uu____25200 with - | (uu____25217,uu____25218,hd5) -> - let uu____25236 = FStar_Syntax_Util.head_and_args hd5 + | FStar_Syntax_Syntax.Tm_fvar uu____24896 -> + let uu____24897 = universe_of_aux env hd3 in + (uu____24897, args1) + | FStar_Syntax_Syntax.Tm_name uu____24912 -> + let uu____24913 = universe_of_aux env hd3 in + (uu____24913, args1) + | FStar_Syntax_Syntax.Tm_uvar uu____24928 -> + let uu____24941 = universe_of_aux env hd3 in + (uu____24941, args1) + | FStar_Syntax_Syntax.Tm_uinst uu____24956 -> + let uu____24963 = universe_of_aux env hd3 in + (uu____24963, args1) + | FStar_Syntax_Syntax.Tm_ascribed uu____24978 -> + let uu____25005 = universe_of_aux env hd3 in + (uu____25005, args1) + | FStar_Syntax_Syntax.Tm_refine uu____25020 -> + let uu____25027 = universe_of_aux env hd3 in + (uu____25027, args1) + | FStar_Syntax_Syntax.Tm_constant uu____25042 -> + let uu____25043 = universe_of_aux env hd3 in + (uu____25043, args1) + | FStar_Syntax_Syntax.Tm_arrow uu____25058 -> + let uu____25073 = universe_of_aux env hd3 in + (uu____25073, args1) + | FStar_Syntax_Syntax.Tm_meta uu____25088 -> + let uu____25095 = universe_of_aux env hd3 in + (uu____25095, args1) + | FStar_Syntax_Syntax.Tm_type uu____25110 -> + let uu____25111 = universe_of_aux env hd3 in + (uu____25111, args1) + | FStar_Syntax_Syntax.Tm_match (uu____25126,hd4::uu____25128) -> + let uu____25193 = FStar_Syntax_Subst.open_branch hd4 in + (match uu____25193 with + | (uu____25210,uu____25211,hd5) -> + let uu____25229 = FStar_Syntax_Util.head_and_args hd5 in - (match uu____25236 with + (match uu____25229 with | (hd6,args2) -> type_of_head retry hd6 args2)) - | uu____25295 when retry -> + | uu____25288 when retry -> let e1 = FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.Beta; FStar_TypeChecker_Env.DoNotUnfoldPureLets] env e in - let uu____25297 = FStar_Syntax_Util.head_and_args e1 in - (match uu____25297 with + let uu____25290 = FStar_Syntax_Util.head_and_args e1 in + (match uu____25290 with | (hd4,args2) -> type_of_head false hd4 args2) - | uu____25357 -> - let uu____25358 = + | uu____25350 -> + let uu____25351 = FStar_TypeChecker_Env.clear_expected_typ env in - (match uu____25358 with - | (env1,uu____25382) -> + (match uu____25351 with + | (env1,uu____25375) -> let env2 = - let uu___407_25388 = env1 in + let uu___404_25381 = env1 in { FStar_TypeChecker_Env.solver = - (uu___407_25388.FStar_TypeChecker_Env.solver); + (uu___404_25381.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___407_25388.FStar_TypeChecker_Env.range); + (uu___404_25381.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___407_25388.FStar_TypeChecker_Env.curmodule); + (uu___404_25381.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___407_25388.FStar_TypeChecker_Env.gamma); + (uu___404_25381.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___407_25388.FStar_TypeChecker_Env.gamma_sig); + (uu___404_25381.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___407_25388.FStar_TypeChecker_Env.gamma_cache); + (uu___404_25381.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___407_25388.FStar_TypeChecker_Env.modules); + (uu___404_25381.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___407_25388.FStar_TypeChecker_Env.expected_typ); + (uu___404_25381.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___407_25388.FStar_TypeChecker_Env.sigtab); + (uu___404_25381.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___407_25388.FStar_TypeChecker_Env.attrtab); + (uu___404_25381.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___407_25388.FStar_TypeChecker_Env.is_pattern); + (uu___404_25381.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___407_25388.FStar_TypeChecker_Env.instantiate_imp); + (uu___404_25381.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___407_25388.FStar_TypeChecker_Env.effects); + (uu___404_25381.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___407_25388.FStar_TypeChecker_Env.generalize); + (uu___404_25381.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___407_25388.FStar_TypeChecker_Env.letrecs); + (uu___404_25381.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = false; FStar_TypeChecker_Env.check_uvars = - (uu___407_25388.FStar_TypeChecker_Env.check_uvars); + (uu___404_25381.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___407_25388.FStar_TypeChecker_Env.use_eq); + (uu___404_25381.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___407_25388.FStar_TypeChecker_Env.is_iface); + (uu___404_25381.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___407_25388.FStar_TypeChecker_Env.admit); + (uu___404_25381.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = true; FStar_TypeChecker_Env.lax_universes = - (uu___407_25388.FStar_TypeChecker_Env.lax_universes); + (uu___404_25381.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___407_25388.FStar_TypeChecker_Env.phase1); + (uu___404_25381.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___407_25388.FStar_TypeChecker_Env.failhard); + (uu___404_25381.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___407_25388.FStar_TypeChecker_Env.nosynth); + (uu___404_25381.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___407_25388.FStar_TypeChecker_Env.uvar_subtyping); + (uu___404_25381.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___407_25388.FStar_TypeChecker_Env.tc_term); + (uu___404_25381.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___407_25388.FStar_TypeChecker_Env.type_of); + (uu___404_25381.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___407_25388.FStar_TypeChecker_Env.universe_of); + (uu___404_25381.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___407_25388.FStar_TypeChecker_Env.check_type_of); + (uu___404_25381.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = true; FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___407_25388.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___404_25381.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___407_25388.FStar_TypeChecker_Env.normalized_eff_names); + (uu___404_25381.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___407_25388.FStar_TypeChecker_Env.fv_delta_depths); + (uu___404_25381.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___407_25388.FStar_TypeChecker_Env.proof_ns); + (uu___404_25381.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___407_25388.FStar_TypeChecker_Env.synth_hook); + (uu___404_25381.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___407_25388.FStar_TypeChecker_Env.splice); + (uu___404_25381.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___407_25388.FStar_TypeChecker_Env.postprocess); + (uu___404_25381.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___407_25388.FStar_TypeChecker_Env.is_native_tactic); + (uu___404_25381.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___407_25388.FStar_TypeChecker_Env.identifier_info); + (uu___404_25381.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___407_25388.FStar_TypeChecker_Env.tc_hooks); + (uu___404_25381.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___407_25388.FStar_TypeChecker_Env.dsenv); + (uu___404_25381.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___407_25388.FStar_TypeChecker_Env.nbe) + (uu___404_25381.FStar_TypeChecker_Env.nbe) } in - ((let uu____25393 = + ((let uu____25386 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env2) (FStar_Options.Other "UniverseOf") in - if uu____25393 + if uu____25386 then - let uu____25398 = - let uu____25400 = + let uu____25391 = + let uu____25393 = FStar_TypeChecker_Env.get_range env2 in - FStar_Range.string_of_range uu____25400 in - let uu____25401 = + FStar_Range.string_of_range uu____25393 in + let uu____25394 = FStar_Syntax_Print.term_to_string hd3 in FStar_Util.print2 "%s: About to type-check %s\n" - uu____25398 uu____25401 + uu____25391 uu____25394 else ()); - (let uu____25406 = tc_term env2 hd3 in - match uu____25406 with - | (uu____25429,{ + (let uu____25399 = tc_term env2 hd3 in + match uu____25399 with + | (uu____25422,{ FStar_Syntax_Syntax.eff_name = - uu____25430; + uu____25423; FStar_Syntax_Syntax.res_typ = t; FStar_Syntax_Syntax.cflags = - uu____25432; + uu____25425; FStar_Syntax_Syntax.comp_thunk = - uu____25433;_},g) + uu____25426;_},g) -> - ((let uu____25447 = + ((let uu____25440 = FStar_TypeChecker_Rel.solve_deferred_constraints env2 g in - FStar_All.pipe_right uu____25447 (fun a1 -> ())); + FStar_All.pipe_right uu____25440 (fun a1 -> ())); (t, args1))))) in - let uu____25460 = type_of_head true hd1 args in - (match uu____25460 with + let uu____25453 = type_of_head true hd1 args in + (match uu____25453 with | (t,args1) -> let t1 = FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.UnfoldUntil FStar_Syntax_Syntax.delta_constant] env t in - let uu____25507 = FStar_Syntax_Util.arrow_formals_comp t1 in - (match uu____25507 with + let uu____25500 = FStar_Syntax_Util.arrow_formals_comp t1 in + (match uu____25500 with | (bs,res) -> let res1 = FStar_Syntax_Util.comp_result res in if (FStar_List.length bs) = (FStar_List.length args1) @@ -9968,14 +9937,14 @@ let rec (universe_of_aux : in FStar_Syntax_Subst.subst subst1 res1 else - (let uu____25563 = + (let uu____25556 = FStar_Syntax_Print.term_to_string res1 in - level_of_type_fail env e uu____25563))) - | FStar_Syntax_Syntax.Tm_match (uu____25567,hd1::uu____25569) -> - let uu____25634 = FStar_Syntax_Subst.open_branch hd1 in - (match uu____25634 with - | (uu____25637,uu____25638,hd2) -> universe_of_aux env hd2) - | FStar_Syntax_Syntax.Tm_match (uu____25656,[]) -> + level_of_type_fail env e uu____25556))) + | FStar_Syntax_Syntax.Tm_match (uu____25560,hd1::uu____25562) -> + let uu____25627 = FStar_Syntax_Subst.open_branch hd1 in + (match uu____25627 with + | (uu____25630,uu____25631,hd2) -> universe_of_aux env hd2) + | FStar_Syntax_Syntax.Tm_match (uu____25649,[]) -> level_of_type_fail env e "empty match cases" let (universe_of : @@ -9984,8 +9953,8 @@ let (universe_of : = fun env -> fun e -> - let uu____25705 = universe_of_aux env e in - level_of_type env e uu____25705 + let uu____25698 = universe_of_aux env e in + level_of_type env e uu____25698 let (tc_tparams : FStar_TypeChecker_Env.env_t -> @@ -9995,8 +9964,8 @@ let (tc_tparams : = fun env -> fun tps -> - let uu____25731 = tc_binders env tps in - match uu____25731 with + let uu____25724 = tc_binders env tps in + match uu____25724 with | (tps1,env1,g,us) -> (FStar_TypeChecker_Rel.force_trivial_guard env1 g; (tps1, env1, us)) @@ -10013,142 +9982,142 @@ let rec (type_of_well_typed_term : in let t1 = FStar_Syntax_Subst.compress t in match t1.FStar_Syntax_Syntax.n with - | FStar_Syntax_Syntax.Tm_delayed uu____25789 -> failwith "Impossible" - | FStar_Syntax_Syntax.Tm_bvar uu____25815 -> failwith "Impossible" + | FStar_Syntax_Syntax.Tm_delayed uu____25782 -> failwith "Impossible" + | FStar_Syntax_Syntax.Tm_bvar uu____25808 -> failwith "Impossible" | FStar_Syntax_Syntax.Tm_name x -> FStar_Pervasives_Native.Some (x.FStar_Syntax_Syntax.sort) | FStar_Syntax_Syntax.Tm_lazy i -> - let uu____25821 = FStar_Syntax_Util.unfold_lazy i in - type_of_well_typed_term env uu____25821 + let uu____25814 = FStar_Syntax_Util.unfold_lazy i in + type_of_well_typed_term env uu____25814 | FStar_Syntax_Syntax.Tm_fvar fv -> - let uu____25823 = + let uu____25816 = FStar_TypeChecker_Env.try_lookup_and_inst_lid env [] (fv.FStar_Syntax_Syntax.fv_name).FStar_Syntax_Syntax.v in - FStar_Util.bind_opt uu____25823 - (fun uu____25837 -> - match uu____25837 with - | (t2,uu____25845) -> FStar_Pervasives_Native.Some t2) + FStar_Util.bind_opt uu____25816 + (fun uu____25830 -> + match uu____25830 with + | (t2,uu____25838) -> FStar_Pervasives_Native.Some t2) | FStar_Syntax_Syntax.Tm_uinst ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_fvar fv; - FStar_Syntax_Syntax.pos = uu____25847; - FStar_Syntax_Syntax.vars = uu____25848;_},us) + FStar_Syntax_Syntax.pos = uu____25840; + FStar_Syntax_Syntax.vars = uu____25841;_},us) -> - let uu____25854 = + let uu____25847 = FStar_TypeChecker_Env.try_lookup_and_inst_lid env us (fv.FStar_Syntax_Syntax.fv_name).FStar_Syntax_Syntax.v in - FStar_Util.bind_opt uu____25854 - (fun uu____25868 -> - match uu____25868 with - | (t2,uu____25876) -> FStar_Pervasives_Native.Some t2) + FStar_Util.bind_opt uu____25847 + (fun uu____25861 -> + match uu____25861 with + | (t2,uu____25869) -> FStar_Pervasives_Native.Some t2) | FStar_Syntax_Syntax.Tm_constant (FStar_Const.Const_reify ) -> FStar_Pervasives_Native.None | FStar_Syntax_Syntax.Tm_constant (FStar_Const.Const_reflect - uu____25877) -> FStar_Pervasives_Native.None + uu____25870) -> FStar_Pervasives_Native.None | FStar_Syntax_Syntax.Tm_constant sc -> - let uu____25879 = tc_constant env t1.FStar_Syntax_Syntax.pos sc in - FStar_Pervasives_Native.Some uu____25879 + let uu____25872 = tc_constant env t1.FStar_Syntax_Syntax.pos sc in + FStar_Pervasives_Native.Some uu____25872 | FStar_Syntax_Syntax.Tm_type u -> - let uu____25881 = mk_tm_type (FStar_Syntax_Syntax.U_succ u) in - FStar_Pervasives_Native.Some uu____25881 + let uu____25874 = mk_tm_type (FStar_Syntax_Syntax.U_succ u) in + FStar_Pervasives_Native.Some uu____25874 | FStar_Syntax_Syntax.Tm_abs (bs,body,FStar_Pervasives_Native.Some { FStar_Syntax_Syntax.residual_effect = eff; FStar_Syntax_Syntax.residual_typ = FStar_Pervasives_Native.Some tbody; - FStar_Syntax_Syntax.residual_flags = uu____25886;_}) + FStar_Syntax_Syntax.residual_flags = uu____25879;_}) -> let mk_comp = - let uu____25930 = + let uu____25923 = FStar_Ident.lid_equals eff FStar_Parser_Const.effect_Tot_lid in - if uu____25930 + if uu____25923 then FStar_Pervasives_Native.Some FStar_Syntax_Syntax.mk_Total' else - (let uu____25961 = + (let uu____25954 = FStar_Ident.lid_equals eff FStar_Parser_Const.effect_GTot_lid in - if uu____25961 + if uu____25954 then FStar_Pervasives_Native.Some FStar_Syntax_Syntax.mk_GTotal' else FStar_Pervasives_Native.None) in FStar_Util.bind_opt mk_comp (fun f -> - let uu____26031 = universe_of_well_typed_term env tbody in - FStar_Util.bind_opt uu____26031 + let uu____26024 = universe_of_well_typed_term env tbody in + FStar_Util.bind_opt uu____26024 (fun u -> - let uu____26039 = - let uu____26042 = - let uu____26049 = - let uu____26050 = - let uu____26065 = + let uu____26032 = + let uu____26035 = + let uu____26042 = + let uu____26043 = + let uu____26058 = f tbody (FStar_Pervasives_Native.Some u) in - (bs, uu____26065) in - FStar_Syntax_Syntax.Tm_arrow uu____26050 in - FStar_Syntax_Syntax.mk uu____26049 in - uu____26042 FStar_Pervasives_Native.None + (bs, uu____26058) in + FStar_Syntax_Syntax.Tm_arrow uu____26043 in + FStar_Syntax_Syntax.mk uu____26042 in + uu____26035 FStar_Pervasives_Native.None t1.FStar_Syntax_Syntax.pos in - FStar_Pervasives_Native.Some uu____26039)) + FStar_Pervasives_Native.Some uu____26032)) | FStar_Syntax_Syntax.Tm_arrow (bs,c) -> - let uu____26105 = FStar_Syntax_Subst.open_comp bs c in - (match uu____26105 with + let uu____26098 = FStar_Syntax_Subst.open_comp bs c in + (match uu____26098 with | (bs1,c1) -> let rec aux env1 us bs2 = match bs2 with | [] -> - let uu____26164 = + let uu____26157 = universe_of_well_typed_term env1 (FStar_Syntax_Util.comp_result c1) in - FStar_Util.bind_opt uu____26164 + FStar_Util.bind_opt uu____26157 (fun uc -> - let uu____26172 = + let uu____26165 = mk_tm_type (FStar_Syntax_Syntax.U_max (uc :: us)) in - FStar_Pervasives_Native.Some uu____26172) + FStar_Pervasives_Native.Some uu____26165) | (x,imp)::bs3 -> - let uu____26198 = + let uu____26191 = universe_of_well_typed_term env1 x.FStar_Syntax_Syntax.sort in - FStar_Util.bind_opt uu____26198 + FStar_Util.bind_opt uu____26191 (fun u_x -> let env2 = FStar_TypeChecker_Env.push_bv env1 x in aux env2 (u_x :: us) bs3) in aux env [] bs1) - | FStar_Syntax_Syntax.Tm_abs uu____26207 -> + | FStar_Syntax_Syntax.Tm_abs uu____26200 -> FStar_Pervasives_Native.None - | FStar_Syntax_Syntax.Tm_refine (x,uu____26227) -> - let uu____26232 = + | FStar_Syntax_Syntax.Tm_refine (x,uu____26220) -> + let uu____26225 = universe_of_well_typed_term env x.FStar_Syntax_Syntax.sort in - FStar_Util.bind_opt uu____26232 + FStar_Util.bind_opt uu____26225 (fun u_x -> - let uu____26240 = mk_tm_type u_x in - FStar_Pervasives_Native.Some uu____26240) + let uu____26233 = mk_tm_type u_x in + FStar_Pervasives_Native.Some uu____26233) | FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_constant (FStar_Const.Const_range_of ); - FStar_Syntax_Syntax.pos = uu____26245; - FStar_Syntax_Syntax.vars = uu____26246;_},a::hd1::rest) + FStar_Syntax_Syntax.pos = uu____26238; + FStar_Syntax_Syntax.vars = uu____26239;_},a::hd1::rest) -> let rest1 = hd1 :: rest in - let uu____26325 = FStar_Syntax_Util.head_and_args t1 in - (match uu____26325 with - | (unary_op1,uu____26345) -> + let uu____26318 = FStar_Syntax_Util.head_and_args t1 in + (match uu____26318 with + | (unary_op1,uu____26338) -> let head1 = - let uu____26373 = + let uu____26366 = FStar_Range.union_ranges unary_op1.FStar_Syntax_Syntax.pos (FStar_Pervasives_Native.fst a).FStar_Syntax_Syntax.pos in FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_app (unary_op1, [a])) - FStar_Pervasives_Native.None uu____26373 + FStar_Pervasives_Native.None uu____26366 in let t2 = FStar_Syntax_Syntax.mk @@ -10160,21 +10129,21 @@ let rec (type_of_well_typed_term : ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_constant (FStar_Const.Const_set_range_of ); - FStar_Syntax_Syntax.pos = uu____26421; - FStar_Syntax_Syntax.vars = uu____26422;_},a1::a2::hd1::rest) + FStar_Syntax_Syntax.pos = uu____26414; + FStar_Syntax_Syntax.vars = uu____26415;_},a1::a2::hd1::rest) -> let rest1 = hd1 :: rest in - let uu____26518 = FStar_Syntax_Util.head_and_args t1 in - (match uu____26518 with - | (unary_op1,uu____26538) -> + let uu____26511 = FStar_Syntax_Util.head_and_args t1 in + (match uu____26511 with + | (unary_op1,uu____26531) -> let head1 = - let uu____26566 = + let uu____26559 = FStar_Range.union_ranges unary_op1.FStar_Syntax_Syntax.pos (FStar_Pervasives_Native.fst a1).FStar_Syntax_Syntax.pos in FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_app (unary_op1, [a1; a2])) - FStar_Pervasives_Native.None uu____26566 + FStar_Pervasives_Native.None uu____26559 in let t2 = FStar_Syntax_Syntax.mk @@ -10186,32 +10155,32 @@ let rec (type_of_well_typed_term : ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_constant (FStar_Const.Const_range_of ); - FStar_Syntax_Syntax.pos = uu____26622; - FStar_Syntax_Syntax.vars = uu____26623;_},uu____26624::[]) + FStar_Syntax_Syntax.pos = uu____26615; + FStar_Syntax_Syntax.vars = uu____26616;_},uu____26617::[]) -> FStar_Pervasives_Native.Some FStar_Syntax_Syntax.t_range | FStar_Syntax_Syntax.Tm_app ({ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_constant (FStar_Const.Const_set_range_of ); - FStar_Syntax_Syntax.pos = uu____26663; - FStar_Syntax_Syntax.vars = uu____26664;_},(t2,uu____26666)::uu____26667::[]) + FStar_Syntax_Syntax.pos = uu____26656; + FStar_Syntax_Syntax.vars = uu____26657;_},(t2,uu____26659)::uu____26660::[]) -> type_of_well_typed_term env t2 | FStar_Syntax_Syntax.Tm_app (hd1,args) -> let t_hd = type_of_well_typed_term env hd1 in let rec aux t_hd1 = - let uu____26763 = - let uu____26764 = + let uu____26756 = + let uu____26757 = FStar_TypeChecker_Normalize.unfold_whnf env t_hd1 in - uu____26764.FStar_Syntax_Syntax.n in - match uu____26763 with + uu____26757.FStar_Syntax_Syntax.n in + match uu____26756 with | FStar_Syntax_Syntax.Tm_arrow (bs,c) -> let n_args = FStar_List.length args in let n_bs = FStar_List.length bs in let bs_t_opt = if n_args < n_bs then - let uu____26847 = FStar_Util.first_N n_args bs in - match uu____26847 with + let uu____26840 = FStar_Util.first_N n_args bs in + match uu____26840 with | (bs1,rest) -> let t2 = FStar_Syntax_Syntax.mk @@ -10219,24 +10188,24 @@ let rec (type_of_well_typed_term : FStar_Pervasives_Native.None t_hd1.FStar_Syntax_Syntax.pos in - let uu____26939 = - let uu____26944 = FStar_Syntax_Syntax.mk_Total t2 + let uu____26932 = + let uu____26937 = FStar_Syntax_Syntax.mk_Total t2 in - FStar_Syntax_Subst.open_comp bs1 uu____26944 in - (match uu____26939 with + FStar_Syntax_Subst.open_comp bs1 uu____26937 in + (match uu____26932 with | (bs2,c1) -> FStar_Pervasives_Native.Some (bs2, (FStar_Syntax_Util.comp_result c1))) else if n_args = n_bs then - (let uu____27006 = FStar_Syntax_Subst.open_comp bs c + (let uu____26999 = FStar_Syntax_Subst.open_comp bs c in - match uu____27006 with + match uu____26999 with | (bs1,c1) -> - let uu____27027 = + let uu____27020 = FStar_Syntax_Util.is_tot_or_gtot_comp c1 in - if uu____27027 + if uu____27020 then FStar_Pervasives_Native.Some (bs1, (FStar_Syntax_Util.comp_result c1)) @@ -10244,8 +10213,8 @@ let rec (type_of_well_typed_term : else FStar_Pervasives_Native.None in FStar_Util.bind_opt bs_t_opt - (fun uu____27109 -> - match uu____27109 with + (fun uu____27102 -> + match uu____27102 with | (bs1,t2) -> let subst1 = FStar_List.map2 @@ -10256,36 +10225,36 @@ let rec (type_of_well_typed_term : (FStar_Pervasives_Native.fst a))) bs1 args in - let uu____27185 = FStar_Syntax_Subst.subst subst1 t2 + let uu____27178 = FStar_Syntax_Subst.subst subst1 t2 in - FStar_Pervasives_Native.Some uu____27185) - | FStar_Syntax_Syntax.Tm_refine (x,uu____27187) -> + FStar_Pervasives_Native.Some uu____27178) + | FStar_Syntax_Syntax.Tm_refine (x,uu____27180) -> aux x.FStar_Syntax_Syntax.sort - | FStar_Syntax_Syntax.Tm_ascribed (t2,uu____27193,uu____27194) -> + | FStar_Syntax_Syntax.Tm_ascribed (t2,uu____27186,uu____27187) -> aux t2 - | uu____27235 -> FStar_Pervasives_Native.None in + | uu____27228 -> FStar_Pervasives_Native.None in FStar_Util.bind_opt t_hd aux | FStar_Syntax_Syntax.Tm_ascribed - (uu____27236,(FStar_Util.Inl t2,uu____27238),uu____27239) -> + (uu____27229,(FStar_Util.Inl t2,uu____27231),uu____27232) -> FStar_Pervasives_Native.Some t2 | FStar_Syntax_Syntax.Tm_ascribed - (uu____27286,(FStar_Util.Inr c,uu____27288),uu____27289) -> + (uu____27279,(FStar_Util.Inr c,uu____27281),uu____27282) -> FStar_Pervasives_Native.Some (FStar_Syntax_Util.comp_result c) | FStar_Syntax_Syntax.Tm_uvar (u,s) -> - let uu____27354 = + let uu____27347 = FStar_Syntax_Subst.subst' s u.FStar_Syntax_Syntax.ctx_uvar_typ in - FStar_Pervasives_Native.Some uu____27354 + FStar_Pervasives_Native.Some uu____27347 | FStar_Syntax_Syntax.Tm_quoted (tm,qi) -> FStar_Pervasives_Native.Some FStar_Syntax_Syntax.t_term - | FStar_Syntax_Syntax.Tm_meta (t2,uu____27362) -> + | FStar_Syntax_Syntax.Tm_meta (t2,uu____27355) -> type_of_well_typed_term env t2 - | FStar_Syntax_Syntax.Tm_match uu____27367 -> + | FStar_Syntax_Syntax.Tm_match uu____27360 -> FStar_Pervasives_Native.None - | FStar_Syntax_Syntax.Tm_let uu____27390 -> + | FStar_Syntax_Syntax.Tm_let uu____27383 -> FStar_Pervasives_Native.None | FStar_Syntax_Syntax.Tm_unknown -> FStar_Pervasives_Native.None - | FStar_Syntax_Syntax.Tm_uinst uu____27404 -> + | FStar_Syntax_Syntax.Tm_uinst uu____27397 -> FStar_Pervasives_Native.None and (universe_of_well_typed_term : @@ -10295,14 +10264,14 @@ and (universe_of_well_typed_term : = fun env -> fun t -> - let uu____27415 = type_of_well_typed_term env t in - match uu____27415 with + let uu____27408 = type_of_well_typed_term env t in + match uu____27408 with | FStar_Pervasives_Native.Some { FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_type u; - FStar_Syntax_Syntax.pos = uu____27421; - FStar_Syntax_Syntax.vars = uu____27422;_} + FStar_Syntax_Syntax.pos = uu____27414; + FStar_Syntax_Syntax.vars = uu____27415;_} -> FStar_Pervasives_Native.Some u - | uu____27425 -> FStar_Pervasives_Native.None + | uu____27418 -> FStar_Pervasives_Native.None let (check_type_of_well_typed_term' : Prims.bool -> @@ -10316,140 +10285,140 @@ let (check_type_of_well_typed_term' : fun k -> let env1 = FStar_TypeChecker_Env.set_expected_typ env k in let env2 = - let uu___408_27453 = env1 in + let uu___405_27446 = env1 in { FStar_TypeChecker_Env.solver = - (uu___408_27453.FStar_TypeChecker_Env.solver); + (uu___405_27446.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___408_27453.FStar_TypeChecker_Env.range); + (uu___405_27446.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___408_27453.FStar_TypeChecker_Env.curmodule); + (uu___405_27446.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___408_27453.FStar_TypeChecker_Env.gamma); + (uu___405_27446.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___408_27453.FStar_TypeChecker_Env.gamma_sig); + (uu___405_27446.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___408_27453.FStar_TypeChecker_Env.gamma_cache); + (uu___405_27446.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___408_27453.FStar_TypeChecker_Env.modules); + (uu___405_27446.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___408_27453.FStar_TypeChecker_Env.expected_typ); + (uu___405_27446.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___408_27453.FStar_TypeChecker_Env.sigtab); + (uu___405_27446.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___408_27453.FStar_TypeChecker_Env.attrtab); + (uu___405_27446.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___408_27453.FStar_TypeChecker_Env.is_pattern); + (uu___405_27446.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___408_27453.FStar_TypeChecker_Env.instantiate_imp); + (uu___405_27446.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___408_27453.FStar_TypeChecker_Env.effects); + (uu___405_27446.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___408_27453.FStar_TypeChecker_Env.generalize); + (uu___405_27446.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___408_27453.FStar_TypeChecker_Env.letrecs); + (uu___405_27446.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___408_27453.FStar_TypeChecker_Env.top_level); + (uu___405_27446.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___408_27453.FStar_TypeChecker_Env.check_uvars); + (uu___405_27446.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___408_27453.FStar_TypeChecker_Env.use_eq); + (uu___405_27446.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___408_27453.FStar_TypeChecker_Env.is_iface); + (uu___405_27446.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___408_27453.FStar_TypeChecker_Env.admit); + (uu___405_27446.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___408_27453.FStar_TypeChecker_Env.lax); + (uu___405_27446.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___408_27453.FStar_TypeChecker_Env.lax_universes); + (uu___405_27446.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___408_27453.FStar_TypeChecker_Env.phase1); + (uu___405_27446.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___408_27453.FStar_TypeChecker_Env.failhard); + (uu___405_27446.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___408_27453.FStar_TypeChecker_Env.nosynth); + (uu___405_27446.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___408_27453.FStar_TypeChecker_Env.uvar_subtyping); + (uu___405_27446.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___408_27453.FStar_TypeChecker_Env.tc_term); + (uu___405_27446.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___408_27453.FStar_TypeChecker_Env.type_of); + (uu___405_27446.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___408_27453.FStar_TypeChecker_Env.universe_of); + (uu___405_27446.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___408_27453.FStar_TypeChecker_Env.check_type_of); + (uu___405_27446.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = true; FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___408_27453.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___405_27446.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___408_27453.FStar_TypeChecker_Env.normalized_eff_names); + (uu___405_27446.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___408_27453.FStar_TypeChecker_Env.fv_delta_depths); + (uu___405_27446.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___408_27453.FStar_TypeChecker_Env.proof_ns); + (uu___405_27446.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___408_27453.FStar_TypeChecker_Env.synth_hook); + (uu___405_27446.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___408_27453.FStar_TypeChecker_Env.splice); + (uu___405_27446.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___408_27453.FStar_TypeChecker_Env.postprocess); + (uu___405_27446.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___408_27453.FStar_TypeChecker_Env.is_native_tactic); + (uu___405_27446.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___408_27453.FStar_TypeChecker_Env.identifier_info); + (uu___405_27446.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___408_27453.FStar_TypeChecker_Env.tc_hooks); + (uu___405_27446.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___408_27453.FStar_TypeChecker_Env.dsenv); + (uu___405_27446.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___408_27453.FStar_TypeChecker_Env.nbe) + (uu___405_27446.FStar_TypeChecker_Env.nbe) } in - let slow_check uu____27460 = + let slow_check uu____27453 = if must_total then - let uu____27462 = env2.FStar_TypeChecker_Env.type_of env2 t in - match uu____27462 with | (uu____27469,uu____27470,g) -> g + let uu____27455 = env2.FStar_TypeChecker_Env.type_of env2 t in + match uu____27455 with | (uu____27462,uu____27463,g) -> g else - (let uu____27474 = env2.FStar_TypeChecker_Env.tc_term env2 t + (let uu____27467 = env2.FStar_TypeChecker_Env.tc_term env2 t in - match uu____27474 with | (uu____27481,uu____27482,g) -> g) + match uu____27467 with | (uu____27474,uu____27475,g) -> g) in - let uu____27484 = type_of_well_typed_term env2 t in - match uu____27484 with + let uu____27477 = type_of_well_typed_term env2 t in + match uu____27477 with | FStar_Pervasives_Native.None -> slow_check () | FStar_Pervasives_Native.Some k' -> - ((let uu____27489 = + ((let uu____27482 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env2) (FStar_Options.Other "FastImplicits") in - if uu____27489 + if uu____27482 then - let uu____27494 = + let uu____27487 = FStar_Range.string_of_range t.FStar_Syntax_Syntax.pos in - let uu____27496 = FStar_Syntax_Print.term_to_string t in - let uu____27498 = FStar_Syntax_Print.term_to_string k' in - let uu____27500 = FStar_Syntax_Print.term_to_string k in + let uu____27489 = FStar_Syntax_Print.term_to_string t in + let uu____27491 = FStar_Syntax_Print.term_to_string k' in + let uu____27493 = FStar_Syntax_Print.term_to_string k in FStar_Util.print4 "(%s) Fast check %s : %s <:? %s\n" - uu____27494 uu____27496 uu____27498 uu____27500 + uu____27487 uu____27489 uu____27491 uu____27493 else ()); (let g = FStar_TypeChecker_Rel.subtype_nosmt env2 k' k in - (let uu____27509 = + (let uu____27502 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env2) (FStar_Options.Other "FastImplicits") in - if uu____27509 + if uu____27502 then - let uu____27514 = + let uu____27507 = FStar_Range.string_of_range t.FStar_Syntax_Syntax.pos in - let uu____27516 = FStar_Syntax_Print.term_to_string t in - let uu____27518 = FStar_Syntax_Print.term_to_string k' in - let uu____27520 = FStar_Syntax_Print.term_to_string k in + let uu____27509 = FStar_Syntax_Print.term_to_string t in + let uu____27511 = FStar_Syntax_Print.term_to_string k' in + let uu____27513 = FStar_Syntax_Print.term_to_string k in FStar_Util.print5 "(%s) Fast check %s: %s : %s <: %s\n" - uu____27514 + uu____27507 (if FStar_Option.isSome g then "succeeded with guard" - else "failed") uu____27516 uu____27518 uu____27520 + else "failed") uu____27509 uu____27511 uu____27513 else ()); (match g with | FStar_Pervasives_Native.None -> slow_check () @@ -10467,108 +10436,108 @@ let (check_type_of_well_typed_term : fun k -> let env1 = FStar_TypeChecker_Env.set_expected_typ env k in let env2 = - let uu___409_27557 = env1 in + let uu___406_27550 = env1 in { FStar_TypeChecker_Env.solver = - (uu___409_27557.FStar_TypeChecker_Env.solver); + (uu___406_27550.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___409_27557.FStar_TypeChecker_Env.range); + (uu___406_27550.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___409_27557.FStar_TypeChecker_Env.curmodule); + (uu___406_27550.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___409_27557.FStar_TypeChecker_Env.gamma); + (uu___406_27550.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___409_27557.FStar_TypeChecker_Env.gamma_sig); + (uu___406_27550.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___409_27557.FStar_TypeChecker_Env.gamma_cache); + (uu___406_27550.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___409_27557.FStar_TypeChecker_Env.modules); + (uu___406_27550.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___409_27557.FStar_TypeChecker_Env.expected_typ); + (uu___406_27550.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___409_27557.FStar_TypeChecker_Env.sigtab); + (uu___406_27550.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___409_27557.FStar_TypeChecker_Env.attrtab); + (uu___406_27550.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___409_27557.FStar_TypeChecker_Env.is_pattern); + (uu___406_27550.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___409_27557.FStar_TypeChecker_Env.instantiate_imp); + (uu___406_27550.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___409_27557.FStar_TypeChecker_Env.effects); + (uu___406_27550.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___409_27557.FStar_TypeChecker_Env.generalize); + (uu___406_27550.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___409_27557.FStar_TypeChecker_Env.letrecs); + (uu___406_27550.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___409_27557.FStar_TypeChecker_Env.top_level); + (uu___406_27550.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___409_27557.FStar_TypeChecker_Env.check_uvars); + (uu___406_27550.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___409_27557.FStar_TypeChecker_Env.use_eq); + (uu___406_27550.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___409_27557.FStar_TypeChecker_Env.is_iface); + (uu___406_27550.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___409_27557.FStar_TypeChecker_Env.admit); + (uu___406_27550.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___409_27557.FStar_TypeChecker_Env.lax); + (uu___406_27550.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___409_27557.FStar_TypeChecker_Env.lax_universes); + (uu___406_27550.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___409_27557.FStar_TypeChecker_Env.phase1); + (uu___406_27550.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___409_27557.FStar_TypeChecker_Env.failhard); + (uu___406_27550.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___409_27557.FStar_TypeChecker_Env.nosynth); + (uu___406_27550.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___409_27557.FStar_TypeChecker_Env.uvar_subtyping); + (uu___406_27550.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___409_27557.FStar_TypeChecker_Env.tc_term); + (uu___406_27550.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___409_27557.FStar_TypeChecker_Env.type_of); + (uu___406_27550.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___409_27557.FStar_TypeChecker_Env.universe_of); + (uu___406_27550.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___409_27557.FStar_TypeChecker_Env.check_type_of); + (uu___406_27550.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = true; FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___409_27557.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___406_27550.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___409_27557.FStar_TypeChecker_Env.normalized_eff_names); + (uu___406_27550.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___409_27557.FStar_TypeChecker_Env.fv_delta_depths); + (uu___406_27550.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___409_27557.FStar_TypeChecker_Env.proof_ns); + (uu___406_27550.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___409_27557.FStar_TypeChecker_Env.synth_hook); + (uu___406_27550.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___409_27557.FStar_TypeChecker_Env.splice); + (uu___406_27550.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___409_27557.FStar_TypeChecker_Env.postprocess); + (uu___406_27550.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___409_27557.FStar_TypeChecker_Env.is_native_tactic); + (uu___406_27550.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___409_27557.FStar_TypeChecker_Env.identifier_info); + (uu___406_27550.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___409_27557.FStar_TypeChecker_Env.tc_hooks); + (uu___406_27550.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___409_27557.FStar_TypeChecker_Env.dsenv); + (uu___406_27550.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___409_27557.FStar_TypeChecker_Env.nbe) + (uu___406_27550.FStar_TypeChecker_Env.nbe) } in - let slow_check uu____27564 = + let slow_check uu____27557 = if must_total then - let uu____27566 = env2.FStar_TypeChecker_Env.type_of env2 t in - match uu____27566 with | (uu____27573,uu____27574,g) -> g + let uu____27559 = env2.FStar_TypeChecker_Env.type_of env2 t in + match uu____27559 with | (uu____27566,uu____27567,g) -> g else - (let uu____27578 = env2.FStar_TypeChecker_Env.tc_term env2 t + (let uu____27571 = env2.FStar_TypeChecker_Env.tc_term env2 t in - match uu____27578 with | (uu____27585,uu____27586,g) -> g) + match uu____27571 with | (uu____27578,uu____27579,g) -> g) in - let uu____27588 = - let uu____27590 = FStar_Options.__temp_fast_implicits () in - FStar_All.pipe_left Prims.op_Negation uu____27590 in - if uu____27588 + let uu____27581 = + let uu____27583 = FStar_Options.__temp_fast_implicits () in + FStar_All.pipe_left Prims.op_Negation uu____27583 in + if uu____27581 then slow_check () else check_type_of_well_typed_term' must_total env2 t k \ No newline at end of file diff --git a/src/ocaml-output/FStar_TypeChecker_Util.ml b/src/ocaml-output/FStar_TypeChecker_Util.ml index 7b27690ae33..6ac522a8f3b 100644 --- a/src/ocaml-output/FStar_TypeChecker_Util.ml +++ b/src/ocaml-output/FStar_TypeChecker_Util.ml @@ -25,7 +25,7 @@ let (new_implicit_var : fun env -> fun k -> FStar_TypeChecker_Env.new_implicit_var_aux reason r env k - FStar_Syntax_Syntax.Strict + FStar_Syntax_Syntax.Strict FStar_Pervasives_Native.None let (close_guard_implicits : FStar_TypeChecker_Env.env -> @@ -35,70 +35,70 @@ let (close_guard_implicits : fun env -> fun xs -> fun g -> - let uu____81 = - let uu____83 = FStar_Options.eager_subtyping () in - FStar_All.pipe_left Prims.op_Negation uu____83 in - if uu____81 + let uu____85 = + let uu____87 = FStar_Options.eager_subtyping () in + FStar_All.pipe_left Prims.op_Negation uu____87 in + if uu____85 then g else - (let uu____90 = + (let uu____94 = FStar_All.pipe_right g.FStar_TypeChecker_Env.deferred (FStar_List.partition - (fun uu____142 -> - match uu____142 with - | (uu____149,p) -> + (fun uu____146 -> + match uu____146 with + | (uu____153,p) -> FStar_TypeChecker_Rel.flex_prob_closing env xs p)) in - match uu____90 with + match uu____94 with | (solve_now,defer) -> - ((let uu____184 = + ((let uu____188 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Rel") in - if uu____184 + if uu____188 then (FStar_Util.print_string "SOLVE BEFORE CLOSING:\n"; FStar_List.iter - (fun uu____201 -> - match uu____201 with + (fun uu____205 -> + match uu____205 with | (s,p) -> - let uu____211 = + let uu____215 = FStar_TypeChecker_Rel.prob_to_string env p in - FStar_Util.print2 "%s: %s\n" s uu____211) + FStar_Util.print2 "%s: %s\n" s uu____215) solve_now; FStar_Util.print_string " ...DEFERRED THE REST:\n"; FStar_List.iter - (fun uu____226 -> - match uu____226 with + (fun uu____230 -> + match uu____230 with | (s,p) -> - let uu____236 = + let uu____240 = FStar_TypeChecker_Rel.prob_to_string env p in - FStar_Util.print2 "%s: %s\n" s uu____236) defer; + FStar_Util.print2 "%s: %s\n" s uu____240) defer; FStar_Util.print_string "END\n") else ()); (let g1 = FStar_TypeChecker_Rel.solve_deferred_constraints env - (let uu___358_244 = g in + (let uu___357_248 = g in { FStar_TypeChecker_Env.guard_f = - (uu___358_244.FStar_TypeChecker_Env.guard_f); + (uu___357_248.FStar_TypeChecker_Env.guard_f); FStar_TypeChecker_Env.deferred = solve_now; FStar_TypeChecker_Env.univ_ineqs = - (uu___358_244.FStar_TypeChecker_Env.univ_ineqs); + (uu___357_248.FStar_TypeChecker_Env.univ_ineqs); FStar_TypeChecker_Env.implicits = - (uu___358_244.FStar_TypeChecker_Env.implicits) + (uu___357_248.FStar_TypeChecker_Env.implicits) }) in let g2 = - let uu___359_246 = g1 in + let uu___358_250 = g1 in { FStar_TypeChecker_Env.guard_f = - (uu___359_246.FStar_TypeChecker_Env.guard_f); + (uu___358_250.FStar_TypeChecker_Env.guard_f); FStar_TypeChecker_Env.deferred = defer; FStar_TypeChecker_Env.univ_ineqs = - (uu___359_246.FStar_TypeChecker_Env.univ_ineqs); + (uu___358_250.FStar_TypeChecker_Env.univ_ineqs); FStar_TypeChecker_Env.implicits = - (uu___359_246.FStar_TypeChecker_Env.implicits) + (uu___358_250.FStar_TypeChecker_Env.implicits) } in g2))) @@ -106,32 +106,32 @@ let (check_uvars : FStar_Range.range -> FStar_Syntax_Syntax.typ -> unit) = fun r -> fun t -> let uvs = FStar_Syntax_Free.uvars t in - let uu____261 = - let uu____263 = FStar_Util.set_is_empty uvs in - Prims.op_Negation uu____263 in - if uu____261 + let uu____265 = + let uu____267 = FStar_Util.set_is_empty uvs in + Prims.op_Negation uu____267 in + if uu____265 then let us = - let uu____268 = - let uu____272 = FStar_Util.set_elements uvs in + let uu____272 = + let uu____276 = FStar_Util.set_elements uvs in FStar_List.map (fun u -> FStar_Syntax_Print.uvar_to_string - u.FStar_Syntax_Syntax.ctx_uvar_head) uu____272 + u.FStar_Syntax_Syntax.ctx_uvar_head) uu____276 in - FStar_All.pipe_right uu____268 (FStar_String.concat ", ") in + FStar_All.pipe_right uu____272 (FStar_String.concat ", ") in (FStar_Options.push (); FStar_Options.set_option "hide_uvar_nums" (FStar_Options.Bool false); FStar_Options.set_option "print_implicits" (FStar_Options.Bool true); - (let uu____291 = - let uu____297 = - let uu____299 = FStar_Syntax_Print.term_to_string t in + (let uu____295 = + let uu____301 = + let uu____303 = FStar_Syntax_Print.term_to_string t in FStar_Util.format2 "Unconstrained unification variables %s in type signature %s; please add an annotation" - us uu____299 + us uu____303 in - (FStar_Errors.Error_UncontrainedUnificationVar, uu____297) in - FStar_Errors.log_issue r uu____291); + (FStar_Errors.Error_UncontrainedUnificationVar, uu____301) in + FStar_Errors.log_issue r uu____295); FStar_Options.pop ()) else () @@ -142,22 +142,22 @@ let (extract_let_rec_annotation : FStar_Pervasives_Native.tuple3) = fun env -> - fun uu____322 -> - match uu____322 with + fun uu____326 -> + match uu____326 with | { FStar_Syntax_Syntax.lbname = lbname; FStar_Syntax_Syntax.lbunivs = univ_vars1; FStar_Syntax_Syntax.lbtyp = t; - FStar_Syntax_Syntax.lbeff = uu____333; + FStar_Syntax_Syntax.lbeff = uu____337; FStar_Syntax_Syntax.lbdef = e; - FStar_Syntax_Syntax.lbattrs = uu____335; - FStar_Syntax_Syntax.lbpos = uu____336;_} -> + FStar_Syntax_Syntax.lbattrs = uu____339; + FStar_Syntax_Syntax.lbpos = uu____340;_} -> let rng = FStar_Syntax_Syntax.range_of_lbname lbname in let t1 = FStar_Syntax_Subst.compress t in (match t1.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_unknown -> - let uu____371 = FStar_Syntax_Subst.open_univ_vars univ_vars1 e + let uu____375 = FStar_Syntax_Subst.open_univ_vars univ_vars1 e in - (match uu____371 with + (match uu____375 with | (univ_vars2,e1) -> let env1 = FStar_TypeChecker_Env.push_univ_vars env univ_vars2 in @@ -165,16 +165,16 @@ let (extract_let_rec_annotation : let rec aux e2 = let e3 = FStar_Syntax_Subst.compress e2 in match e3.FStar_Syntax_Syntax.n with - | FStar_Syntax_Syntax.Tm_meta (e4,uu____409) -> aux e4 - | FStar_Syntax_Syntax.Tm_ascribed (e4,t2,uu____416) -> + | FStar_Syntax_Syntax.Tm_meta (e4,uu____413) -> aux e4 + | FStar_Syntax_Syntax.Tm_ascribed (e4,t2,uu____420) -> FStar_Pervasives_Native.fst t2 - | FStar_Syntax_Syntax.Tm_abs (bs,body,uu____471) -> + | FStar_Syntax_Syntax.Tm_abs (bs,body,uu____475) -> let res = aux body in let c = match res with | FStar_Util.Inl t2 -> - let uu____507 = FStar_Options.ml_ish () in - if uu____507 + let uu____511 = FStar_Options.ml_ish () in + if uu____511 then FStar_Syntax_Util.ml_comp t2 r else FStar_Syntax_Syntax.mk_Total t2 | FStar_Util.Inr c -> c in @@ -184,49 +184,49 @@ let (extract_let_rec_annotation : FStar_Pervasives_Native.None c.FStar_Syntax_Syntax.pos in - ((let uu____529 = + ((let uu____533 = FStar_TypeChecker_Env.debug env1 FStar_Options.High in - if uu____529 + if uu____533 then - let uu____532 = FStar_Range.string_of_range r + let uu____536 = FStar_Range.string_of_range r in - let uu____534 = + let uu____538 = FStar_Syntax_Print.term_to_string t2 in FStar_Util.print2 "(%s) Using type %s\n" - uu____532 uu____534 + uu____536 uu____538 else ()); FStar_Util.Inl t2) - | uu____539 -> FStar_Util.Inl FStar_Syntax_Syntax.tun + | uu____543 -> FStar_Util.Inl FStar_Syntax_Syntax.tun in let t2 = - let uu____541 = aux e1 in - match uu____541 with + let uu____545 = aux e1 in + match uu____545 with | FStar_Util.Inr c -> - let uu____547 = + let uu____551 = FStar_Syntax_Util.is_tot_or_gtot_comp c in - if uu____547 + if uu____551 then FStar_Syntax_Util.comp_result c else - (let uu____552 = - let uu____558 = - let uu____560 = + (let uu____556 = + let uu____562 = + let uu____564 = FStar_Syntax_Print.comp_to_string c in FStar_Util.format1 "Expected a 'let rec' to be annotated with a value type; got a computation type %s" - uu____560 + uu____564 in (FStar_Errors.Fatal_UnexpectedComputationTypeForLetRec, - uu____558) + uu____562) in - FStar_Errors.raise_error uu____552 rng) + FStar_Errors.raise_error uu____556 rng) | FStar_Util.Inl t2 -> t2 in (univ_vars2, t2, true)) - | uu____569 -> - let uu____570 = + | uu____573 -> + let uu____574 = FStar_Syntax_Subst.open_univ_vars univ_vars1 t1 in - (match uu____570 with + (match uu____574 with | (univ_vars2,t2) -> (univ_vars2, t2, false))) let rec (decorated_pattern_as_term : @@ -239,43 +239,43 @@ let rec (decorated_pattern_as_term : FStar_Syntax_Syntax.mk f FStar_Pervasives_Native.None pat.FStar_Syntax_Syntax.p in - let pat_as_arg uu____634 = - match uu____634 with + let pat_as_arg uu____638 = + match uu____638 with | (p,i) -> - let uu____654 = decorated_pattern_as_term p in - (match uu____654 with + let uu____658 = decorated_pattern_as_term p in + (match uu____658 with | (vars,te) -> - let uu____677 = - let uu____682 = FStar_Syntax_Syntax.as_implicit i in - (te, uu____682) in - (vars, uu____677)) + let uu____681 = + let uu____686 = FStar_Syntax_Syntax.as_implicit i in + (te, uu____686) in + (vars, uu____681)) in match pat.FStar_Syntax_Syntax.v with | FStar_Syntax_Syntax.Pat_constant c -> - let uu____696 = mk1 (FStar_Syntax_Syntax.Tm_constant c) in - ([], uu____696) + let uu____700 = mk1 (FStar_Syntax_Syntax.Tm_constant c) in + ([], uu____700) | FStar_Syntax_Syntax.Pat_wild x -> - let uu____700 = mk1 (FStar_Syntax_Syntax.Tm_name x) in - ([x], uu____700) - | FStar_Syntax_Syntax.Pat_var x -> let uu____704 = mk1 (FStar_Syntax_Syntax.Tm_name x) in ([x], uu____704) + | FStar_Syntax_Syntax.Pat_var x -> + let uu____708 = mk1 (FStar_Syntax_Syntax.Tm_name x) in + ([x], uu____708) | FStar_Syntax_Syntax.Pat_cons (fv,pats) -> - let uu____727 = - let uu____746 = + let uu____731 = + let uu____750 = FStar_All.pipe_right pats (FStar_List.map pat_as_arg) in - FStar_All.pipe_right uu____746 FStar_List.unzip in - (match uu____727 with + FStar_All.pipe_right uu____750 FStar_List.unzip in + (match uu____731 with | (vars,args) -> let vars1 = FStar_List.flatten vars in - let uu____884 = - let uu____885 = - let uu____886 = - let uu____903 = FStar_Syntax_Syntax.fv_to_tm fv in - (uu____903, args) in - FStar_Syntax_Syntax.Tm_app uu____886 in - mk1 uu____885 in - (vars1, uu____884)) + let uu____888 = + let uu____889 = + let uu____890 = + let uu____907 = FStar_Syntax_Syntax.fv_to_tm fv in + (uu____907, args) in + FStar_Syntax_Syntax.Tm_app uu____890 in + mk1 uu____889 in + (vars1, uu____888)) | FStar_Syntax_Syntax.Pat_dot_term (x,e) -> ([], e) let (comp_univ_opt : @@ -284,21 +284,21 @@ let (comp_univ_opt : = fun c -> match c.FStar_Syntax_Syntax.n with - | FStar_Syntax_Syntax.Total (uu____942,uopt) -> uopt - | FStar_Syntax_Syntax.GTotal (uu____952,uopt) -> uopt + | FStar_Syntax_Syntax.Total (uu____946,uopt) -> uopt + | FStar_Syntax_Syntax.GTotal (uu____956,uopt) -> uopt | FStar_Syntax_Syntax.Comp c1 -> (match c1.FStar_Syntax_Syntax.comp_univs with | [] -> FStar_Pervasives_Native.None - | hd1::uu____966 -> FStar_Pervasives_Native.Some hd1) + | hd1::uu____970 -> FStar_Pervasives_Native.Some hd1) let (lcomp_univ_opt : FStar_Syntax_Syntax.lcomp -> FStar_Syntax_Syntax.universe FStar_Pervasives_Native.option) = fun lc -> - let uu____977 = FStar_All.pipe_right lc FStar_Syntax_Syntax.lcomp_comp + let uu____981 = FStar_All.pipe_right lc FStar_Syntax_Syntax.lcomp_comp in - FStar_All.pipe_right uu____977 comp_univ_opt + FStar_All.pipe_right uu____981 comp_univ_opt let (destruct_comp : FStar_Syntax_Syntax.comp_typ -> @@ -308,26 +308,26 @@ let (destruct_comp : fun c -> let wp = match c.FStar_Syntax_Syntax.effect_args with - | (wp,uu____1006)::[] -> wp - | uu____1031 -> - let uu____1042 = - let uu____1044 = - let uu____1046 = + | (wp,uu____1010)::[] -> wp + | uu____1035 -> + let uu____1046 = + let uu____1048 = + let uu____1050 = FStar_List.map - (fun uu____1060 -> - match uu____1060 with - | (x,uu____1069) -> FStar_Syntax_Print.term_to_string x) + (fun uu____1064 -> + match uu____1064 with + | (x,uu____1073) -> FStar_Syntax_Print.term_to_string x) c.FStar_Syntax_Syntax.effect_args in - FStar_All.pipe_right uu____1046 (FStar_String.concat ", ") in + FStar_All.pipe_right uu____1050 (FStar_String.concat ", ") in FStar_Util.format2 "Impossible: Got a computation %s with effect args [%s]" - (c.FStar_Syntax_Syntax.effect_name).FStar_Ident.str uu____1044 + (c.FStar_Syntax_Syntax.effect_name).FStar_Ident.str uu____1048 in - failwith uu____1042 + failwith uu____1046 in - let uu____1080 = FStar_List.hd c.FStar_Syntax_Syntax.comp_univs in - (uu____1080, (c.FStar_Syntax_Syntax.result_typ), wp) + let uu____1084 = FStar_List.hd c.FStar_Syntax_Syntax.comp_univs in + (uu____1084, (c.FStar_Syntax_Syntax.result_typ), wp) let (lift_comp : FStar_Syntax_Syntax.comp_typ -> @@ -337,23 +337,23 @@ let (lift_comp : fun c -> fun m -> fun lift -> - let uu____1097 = destruct_comp c in - match uu____1097 with - | (u,uu____1105,wp) -> - let uu____1107 = - let uu____1118 = - let uu____1127 = + let uu____1101 = destruct_comp c in + match uu____1101 with + | (u,uu____1109,wp) -> + let uu____1111 = + let uu____1122 = + let uu____1131 = lift.FStar_TypeChecker_Env.mlift_wp u c.FStar_Syntax_Syntax.result_typ wp in - FStar_Syntax_Syntax.as_arg uu____1127 in - [uu____1118] in + FStar_Syntax_Syntax.as_arg uu____1131 in + [uu____1122] in { FStar_Syntax_Syntax.comp_univs = [u]; FStar_Syntax_Syntax.effect_name = m; FStar_Syntax_Syntax.result_typ = (c.FStar_Syntax_Syntax.result_typ); - FStar_Syntax_Syntax.effect_args = uu____1107; + FStar_Syntax_Syntax.effect_args = uu____1111; FStar_Syntax_Syntax.flags = [] } @@ -364,11 +364,11 @@ let (join_effects : fun env -> fun l1 -> fun l2 -> - let uu____1160 = - let uu____1167 = FStar_TypeChecker_Env.norm_eff_name env l1 in - let uu____1168 = FStar_TypeChecker_Env.norm_eff_name env l2 in - FStar_TypeChecker_Env.join env uu____1167 uu____1168 in - match uu____1160 with | (m,uu____1170,uu____1171) -> m + let uu____1164 = + let uu____1171 = FStar_TypeChecker_Env.norm_eff_name env l1 in + let uu____1172 = FStar_TypeChecker_Env.norm_eff_name env l2 in + FStar_TypeChecker_Env.join env uu____1171 uu____1172 in + match uu____1164 with | (m,uu____1174,uu____1175) -> m let (join_lcomp : FStar_TypeChecker_Env.env -> @@ -378,11 +378,11 @@ let (join_lcomp : fun env -> fun c1 -> fun c2 -> - let uu____1188 = + let uu____1192 = (FStar_Syntax_Util.is_total_lcomp c1) && (FStar_Syntax_Util.is_total_lcomp c2) in - if uu____1188 + if uu____1192 then FStar_Parser_Const.effect_Tot_lid else join_effects env c1.FStar_Syntax_Syntax.eff_name @@ -405,24 +405,24 @@ let (lift_and_destruct : fun c2 -> let c11 = FStar_TypeChecker_Env.unfold_effect_abbrev env c1 in let c21 = FStar_TypeChecker_Env.unfold_effect_abbrev env c2 in - let uu____1235 = + let uu____1239 = FStar_TypeChecker_Env.join env c11.FStar_Syntax_Syntax.effect_name c21.FStar_Syntax_Syntax.effect_name in - match uu____1235 with + match uu____1239 with | (m,lift1,lift2) -> let m1 = lift_comp c11 m lift1 in let m2 = lift_comp c21 m lift2 in let md = FStar_TypeChecker_Env.get_effect_decl env m in - let uu____1272 = + let uu____1276 = FStar_TypeChecker_Env.wp_signature env md.FStar_Syntax_Syntax.mname in - (match uu____1272 with + (match uu____1276 with | (a,kwp) -> - let uu____1303 = destruct_comp m1 in - let uu____1310 = destruct_comp m2 in - ((md, a, kwp), uu____1303, uu____1310)) + let uu____1307 = destruct_comp m1 in + let uu____1314 = destruct_comp m2 in + ((md, a, kwp), uu____1307, uu____1314)) let (is_pure_effect : FStar_TypeChecker_Env.env -> FStar_Ident.lident -> Prims.bool) = @@ -451,18 +451,18 @@ let (mk_comp_l : fun result -> fun wp -> fun flags1 -> - let uu____1395 = - let uu____1396 = - let uu____1407 = FStar_Syntax_Syntax.as_arg wp in - [uu____1407] in + let uu____1399 = + let uu____1400 = + let uu____1411 = FStar_Syntax_Syntax.as_arg wp in + [uu____1411] in { FStar_Syntax_Syntax.comp_univs = [u_result]; FStar_Syntax_Syntax.effect_name = mname; FStar_Syntax_Syntax.result_typ = result; - FStar_Syntax_Syntax.effect_args = uu____1396; + FStar_Syntax_Syntax.effect_args = uu____1400; FStar_Syntax_Syntax.flags = flags1 } in - FStar_Syntax_Syntax.mk_Comp uu____1395 + FStar_Syntax_Syntax.mk_Comp uu____1399 let (mk_comp : FStar_Syntax_Syntax.eff_decl -> @@ -481,10 +481,10 @@ let (lax_mk_tot_or_comp_l : fun u_result -> fun result -> fun flags1 -> - let uu____1491 = + let uu____1495 = FStar_Ident.lid_equals mname FStar_Parser_Const.effect_Tot_lid in - if uu____1491 + if uu____1495 then FStar_Syntax_Syntax.mk_Total' result (FStar_Pervasives_Native.Some u_result) @@ -496,22 +496,22 @@ let (subst_lcomp : = fun subst1 -> fun lc -> - let uu____1507 = + let uu____1511 = FStar_Syntax_Subst.subst subst1 lc.FStar_Syntax_Syntax.res_typ in - FStar_Syntax_Syntax.mk_lcomp lc.FStar_Syntax_Syntax.eff_name uu____1507 + FStar_Syntax_Syntax.mk_lcomp lc.FStar_Syntax_Syntax.eff_name uu____1511 lc.FStar_Syntax_Syntax.cflags - (fun uu____1510 -> - let uu____1511 = FStar_Syntax_Syntax.lcomp_comp lc in - FStar_Syntax_Subst.subst_comp subst1 uu____1511) + (fun uu____1514 -> + let uu____1515 = FStar_Syntax_Syntax.lcomp_comp lc in + FStar_Syntax_Subst.subst_comp subst1 uu____1515) let (is_function : FStar_Syntax_Syntax.term -> Prims.bool) = fun t -> - let uu____1519 = - let uu____1520 = FStar_Syntax_Subst.compress t in - uu____1520.FStar_Syntax_Syntax.n in - match uu____1519 with - | FStar_Syntax_Syntax.Tm_arrow uu____1524 -> true - | uu____1540 -> false + let uu____1523 = + let uu____1524 = FStar_Syntax_Subst.compress t in + uu____1524.FStar_Syntax_Syntax.n in + match uu____1523 with + | FStar_Syntax_Syntax.Tm_arrow uu____1528 -> true + | uu____1544 -> false let (label : Prims.string -> @@ -537,12 +537,12 @@ let (label_opt : match reason with | FStar_Pervasives_Native.None -> f | FStar_Pervasives_Native.Some reason1 -> - let uu____1610 = - let uu____1612 = FStar_TypeChecker_Env.should_verify env in - FStar_All.pipe_left Prims.op_Negation uu____1612 in - if uu____1610 + let uu____1614 = + let uu____1616 = FStar_TypeChecker_Env.should_verify env in + FStar_All.pipe_left Prims.op_Negation uu____1616 in + if uu____1614 then f - else (let uu____1619 = reason1 () in label uu____1619 r f) + else (let uu____1623 = reason1 () in label uu____1623 r f) let (label_guard : FStar_Range.range -> @@ -555,18 +555,18 @@ let (label_guard : match g.FStar_TypeChecker_Env.guard_f with | FStar_TypeChecker_Common.Trivial -> g | FStar_TypeChecker_Common.NonTrivial f -> - let uu___360_1640 = g in - let uu____1641 = - let uu____1642 = label reason r f in - FStar_TypeChecker_Common.NonTrivial uu____1642 in + let uu___359_1644 = g in + let uu____1645 = + let uu____1646 = label reason r f in + FStar_TypeChecker_Common.NonTrivial uu____1646 in { - FStar_TypeChecker_Env.guard_f = uu____1641; + FStar_TypeChecker_Env.guard_f = uu____1645; FStar_TypeChecker_Env.deferred = - (uu___360_1640.FStar_TypeChecker_Env.deferred); + (uu___359_1644.FStar_TypeChecker_Env.deferred); FStar_TypeChecker_Env.univ_ineqs = - (uu___360_1640.FStar_TypeChecker_Env.univ_ineqs); + (uu___359_1644.FStar_TypeChecker_Env.univ_ineqs); FStar_TypeChecker_Env.implicits = - (uu___360_1640.FStar_TypeChecker_Env.implicits) + (uu___359_1644.FStar_TypeChecker_Env.implicits) } let (close_comp : @@ -577,13 +577,13 @@ let (close_comp : fun env -> fun bvs -> fun c -> - let uu____1663 = FStar_Syntax_Util.is_ml_comp c in - if uu____1663 + let uu____1667 = FStar_Syntax_Util.is_ml_comp c in + if uu____1667 then c else - (let uu____1668 = + (let uu____1672 = env.FStar_TypeChecker_Env.lax && (FStar_Options.ml_ish ()) in - if uu____1668 + if uu____1672 then c else (let close_wp u_res md res_t bvs1 wp0 = @@ -591,16 +591,16 @@ let (close_comp : (fun x -> fun wp -> let bs = - let uu____1732 = FStar_Syntax_Syntax.mk_binder x in - [uu____1732] in + let uu____1736 = FStar_Syntax_Syntax.mk_binder x in + [uu____1736] in let us = - let uu____1754 = - let uu____1757 = + let uu____1758 = + let uu____1761 = env.FStar_TypeChecker_Env.universe_of env x.FStar_Syntax_Syntax.sort in - [uu____1757] in - u_res :: uu____1754 in + [uu____1761] in + u_res :: uu____1758 in let wp1 = FStar_Syntax_Util.abs bs wp (FStar_Pervasives_Native.Some @@ -609,33 +609,33 @@ let (close_comp : FStar_Pervasives_Native.None [FStar_Syntax_Syntax.TOTAL])) in - let uu____1763 = - let uu____1768 = + let uu____1767 = + let uu____1772 = FStar_TypeChecker_Env.inst_effect_fun_with us env md md.FStar_Syntax_Syntax.close_wp in - let uu____1769 = - let uu____1770 = FStar_Syntax_Syntax.as_arg res_t + let uu____1773 = + let uu____1774 = FStar_Syntax_Syntax.as_arg res_t in - let uu____1779 = - let uu____1790 = + let uu____1783 = + let uu____1794 = FStar_Syntax_Syntax.as_arg x.FStar_Syntax_Syntax.sort in - let uu____1799 = - let uu____1810 = + let uu____1803 = + let uu____1814 = FStar_Syntax_Syntax.as_arg wp1 in - [uu____1810] in - uu____1790 :: uu____1799 in - uu____1770 :: uu____1779 in - FStar_Syntax_Syntax.mk_Tm_app uu____1768 uu____1769 + [uu____1814] in + uu____1794 :: uu____1803 in + uu____1774 :: uu____1783 in + FStar_Syntax_Syntax.mk_Tm_app uu____1772 uu____1773 in - uu____1763 FStar_Pervasives_Native.None + uu____1767 FStar_Pervasives_Native.None wp0.FStar_Syntax_Syntax.pos) bvs1 wp0 in let c1 = FStar_TypeChecker_Env.unfold_effect_abbrev env c in - let uu____1854 = destruct_comp c1 in - match uu____1854 with + let uu____1858 = destruct_comp c1 in + match uu____1858 with | (u_res_t,res_t,wp) -> let md = FStar_TypeChecker_Env.get_effect_decl env @@ -655,18 +655,18 @@ let (close_lcomp : fun lc -> FStar_Syntax_Syntax.mk_lcomp lc.FStar_Syntax_Syntax.eff_name lc.FStar_Syntax_Syntax.res_typ lc.FStar_Syntax_Syntax.cflags - (fun uu____1890 -> - let uu____1891 = FStar_Syntax_Syntax.lcomp_comp lc in - close_comp env bvs uu____1891) + (fun uu____1894 -> + let uu____1895 = FStar_Syntax_Syntax.lcomp_comp lc in + close_comp env bvs uu____1895) let (should_not_inline_lc : FStar_Syntax_Syntax.lcomp -> Prims.bool) = fun lc -> FStar_All.pipe_right lc.FStar_Syntax_Syntax.cflags (FStar_Util.for_some - (fun uu___340_1903 -> - match uu___340_1903 with + (fun uu___339_1907 -> + match uu___339_1907 with | FStar_Syntax_Syntax.SHOULD_NOT_INLINE -> true - | uu____1906 -> false)) + | uu____1910 -> false)) let (should_return : FStar_TypeChecker_Env.env -> @@ -680,30 +680,30 @@ let (should_return : | FStar_Pervasives_Native.None -> false | FStar_Pervasives_Native.Some e -> (((FStar_Syntax_Util.is_pure_or_ghost_lcomp lc) && - (let uu____1933 = + (let uu____1937 = FStar_Syntax_Util.is_unit lc.FStar_Syntax_Syntax.res_typ in - Prims.op_Negation uu____1933)) + Prims.op_Negation uu____1937)) && - (let uu____1941 = FStar_Syntax_Util.head_and_args' e in - match uu____1941 with - | (head1,uu____1958) -> - let uu____1979 = - let uu____1980 = FStar_Syntax_Util.un_uinst head1 in - uu____1980.FStar_Syntax_Syntax.n in - (match uu____1979 with + (let uu____1945 = FStar_Syntax_Util.head_and_args' e in + match uu____1945 with + | (head1,uu____1962) -> + let uu____1983 = + let uu____1984 = FStar_Syntax_Util.un_uinst head1 in + uu____1984.FStar_Syntax_Syntax.n in + (match uu____1983 with | FStar_Syntax_Syntax.Tm_fvar fv -> - let uu____1985 = - let uu____1987 = FStar_Syntax_Syntax.lid_of_fv fv + let uu____1989 = + let uu____1991 = FStar_Syntax_Syntax.lid_of_fv fv in FStar_TypeChecker_Env.is_irreducible env - uu____1987 + uu____1991 in - Prims.op_Negation uu____1985 - | uu____1988 -> true))) + Prims.op_Negation uu____1989 + | uu____1992 -> true))) && - (let uu____1991 = should_not_inline_lc lc in - Prims.op_Negation uu____1991) + (let uu____1995 = should_not_inline_lc lc in + Prims.op_Negation uu____1995) let (return_value : FStar_TypeChecker_Env.env -> @@ -716,17 +716,17 @@ let (return_value : fun t -> fun v1 -> let c = - let uu____2019 = - let uu____2021 = + let uu____2023 = + let uu____2025 = FStar_TypeChecker_Env.lid_exists env FStar_Parser_Const.effect_GTot_lid in - FStar_All.pipe_left Prims.op_Negation uu____2021 in - if uu____2019 + FStar_All.pipe_left Prims.op_Negation uu____2025 in + if uu____2023 then FStar_Syntax_Syntax.mk_Total t else - (let uu____2028 = FStar_Syntax_Util.is_unit t in - if uu____2028 + (let uu____2032 = FStar_Syntax_Util.is_unit t in + if uu____2032 then FStar_Syntax_Syntax.mk_Total' t (FStar_Pervasives_Native.Some FStar_Syntax_Syntax.U_zero) @@ -741,62 +741,62 @@ let (return_value : env.FStar_TypeChecker_Env.universe_of env t | FStar_Pervasives_Native.Some u_t -> u_t in let wp = - let uu____2037 = + let uu____2041 = env.FStar_TypeChecker_Env.lax && (FStar_Options.ml_ish ()) in - if uu____2037 + if uu____2041 then FStar_Syntax_Syntax.tun else - (let uu____2042 = + (let uu____2046 = FStar_TypeChecker_Env.wp_signature env FStar_Parser_Const.effect_PURE_lid in - match uu____2042 with + match uu____2046 with | (a,kwp) -> let k = FStar_Syntax_Subst.subst [FStar_Syntax_Syntax.NT (a, t)] kwp in - let uu____2052 = - let uu____2053 = - let uu____2058 = + let uu____2056 = + let uu____2057 = + let uu____2062 = FStar_TypeChecker_Env.inst_effect_fun_with [u_t] env m m.FStar_Syntax_Syntax.ret_wp in - let uu____2059 = - let uu____2060 = + let uu____2063 = + let uu____2064 = FStar_Syntax_Syntax.as_arg t in - let uu____2069 = - let uu____2080 = + let uu____2073 = + let uu____2084 = FStar_Syntax_Syntax.as_arg v1 in - [uu____2080] in - uu____2060 :: uu____2069 in - FStar_Syntax_Syntax.mk_Tm_app uu____2058 - uu____2059 + [uu____2084] in + uu____2064 :: uu____2073 in + FStar_Syntax_Syntax.mk_Tm_app uu____2062 + uu____2063 in - uu____2053 FStar_Pervasives_Native.None + uu____2057 FStar_Pervasives_Native.None v1.FStar_Syntax_Syntax.pos in FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.Beta; - FStar_TypeChecker_Env.NoFullNorm] env uu____2052) + FStar_TypeChecker_Env.NoFullNorm] env uu____2056) in mk_comp m u_t t wp [FStar_Syntax_Syntax.RETURN])) in - (let uu____2116 = + (let uu____2120 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Return") in - if uu____2116 + if uu____2120 then - let uu____2121 = - FStar_Range.string_of_range v1.FStar_Syntax_Syntax.pos in - let uu____2123 = FStar_Syntax_Print.term_to_string v1 in let uu____2125 = + FStar_Range.string_of_range v1.FStar_Syntax_Syntax.pos in + let uu____2127 = FStar_Syntax_Print.term_to_string v1 in + let uu____2129 = FStar_TypeChecker_Normalize.comp_to_string env c in FStar_Util.print3 "(%s) returning %s at comp type %s\n" - uu____2121 uu____2123 uu____2125 + uu____2125 uu____2127 uu____2129 else ()); c @@ -805,21 +805,21 @@ let (weaken_flags : FStar_Syntax_Syntax.cflag Prims.list) = fun flags1 -> - let uu____2142 = + let uu____2146 = FStar_All.pipe_right flags1 (FStar_Util.for_some - (fun uu___341_2148 -> - match uu___341_2148 with + (fun uu___340_2152 -> + match uu___340_2152 with | FStar_Syntax_Syntax.SHOULD_NOT_INLINE -> true - | uu____2151 -> false)) + | uu____2155 -> false)) in - if uu____2142 + if uu____2146 then [FStar_Syntax_Syntax.SHOULD_NOT_INLINE] else FStar_All.pipe_right flags1 (FStar_List.collect - (fun uu___342_2163 -> - match uu___342_2163 with + (fun uu___341_2167 -> + match uu___341_2167 with | FStar_Syntax_Syntax.TOTAL -> [FStar_Syntax_Syntax.TRIVIAL_POSTCONDITION] | FStar_Syntax_Syntax.RETURN -> @@ -835,40 +835,40 @@ let (weaken_comp : fun env -> fun c -> fun formula -> - let uu____2183 = FStar_Syntax_Util.is_ml_comp c in - if uu____2183 + let uu____2187 = FStar_Syntax_Util.is_ml_comp c in + if uu____2187 then c else (let c1 = FStar_TypeChecker_Env.unfold_effect_abbrev env c in - let uu____2189 = destruct_comp c1 in - match uu____2189 with + let uu____2193 = destruct_comp c1 in + match uu____2193 with | (u_res_t,res_t,wp) -> let md = FStar_TypeChecker_Env.get_effect_decl env c1.FStar_Syntax_Syntax.effect_name in let wp1 = - let uu____2203 = - let uu____2208 = + let uu____2207 = + let uu____2212 = FStar_TypeChecker_Env.inst_effect_fun_with [u_res_t] env md md.FStar_Syntax_Syntax.assume_p in - let uu____2209 = - let uu____2210 = FStar_Syntax_Syntax.as_arg res_t in - let uu____2219 = - let uu____2230 = FStar_Syntax_Syntax.as_arg formula + let uu____2213 = + let uu____2214 = FStar_Syntax_Syntax.as_arg res_t in + let uu____2223 = + let uu____2234 = FStar_Syntax_Syntax.as_arg formula in - let uu____2239 = - let uu____2250 = FStar_Syntax_Syntax.as_arg wp in - [uu____2250] in - uu____2230 :: uu____2239 in - uu____2210 :: uu____2219 in - FStar_Syntax_Syntax.mk_Tm_app uu____2208 uu____2209 in - uu____2203 FStar_Pervasives_Native.None + let uu____2243 = + let uu____2254 = FStar_Syntax_Syntax.as_arg wp in + [uu____2254] in + uu____2234 :: uu____2243 in + uu____2214 :: uu____2223 in + FStar_Syntax_Syntax.mk_Tm_app uu____2212 uu____2213 in + uu____2207 FStar_Pervasives_Native.None wp.FStar_Syntax_Syntax.pos in - let uu____2293 = weaken_flags c1.FStar_Syntax_Syntax.flags in - mk_comp md u_res_t res_t wp1 uu____2293) + let uu____2297 = weaken_flags c1.FStar_Syntax_Syntax.flags in + mk_comp md u_res_t res_t wp1 uu____2297) let (weaken_precondition : FStar_TypeChecker_Env.env -> @@ -878,20 +878,20 @@ let (weaken_precondition : fun env -> fun lc -> fun f -> - let weaken uu____2317 = + let weaken uu____2321 = let c = FStar_Syntax_Syntax.lcomp_comp lc in - let uu____2319 = + let uu____2323 = env.FStar_TypeChecker_Env.lax && (FStar_Options.ml_ish ()) in - if uu____2319 + if uu____2323 then c else (match f with | FStar_TypeChecker_Common.Trivial -> c | FStar_TypeChecker_Common.NonTrivial f1 -> weaken_comp env c f1) in - let uu____2325 = weaken_flags lc.FStar_Syntax_Syntax.cflags in + let uu____2329 = weaken_flags lc.FStar_Syntax_Syntax.cflags in FStar_Syntax_Syntax.mk_lcomp lc.FStar_Syntax_Syntax.eff_name - lc.FStar_Syntax_Syntax.res_typ uu____2325 weaken + lc.FStar_Syntax_Syntax.res_typ uu____2329 weaken let (strengthen_comp : FStar_TypeChecker_Env.env -> @@ -909,40 +909,40 @@ let (strengthen_comp : then c else (let c1 = FStar_TypeChecker_Env.unfold_effect_abbrev env c in - let uu____2373 = destruct_comp c1 in - match uu____2373 with + let uu____2377 = destruct_comp c1 in + match uu____2377 with | (u_res_t,res_t,wp) -> let md = FStar_TypeChecker_Env.get_effect_decl env c1.FStar_Syntax_Syntax.effect_name in let wp1 = - let uu____2387 = - let uu____2392 = + let uu____2391 = + let uu____2396 = FStar_TypeChecker_Env.inst_effect_fun_with [u_res_t] env md md.FStar_Syntax_Syntax.assert_p in - let uu____2393 = - let uu____2394 = FStar_Syntax_Syntax.as_arg res_t + let uu____2397 = + let uu____2398 = FStar_Syntax_Syntax.as_arg res_t in - let uu____2403 = - let uu____2414 = - let uu____2423 = - let uu____2424 = + let uu____2407 = + let uu____2418 = + let uu____2427 = + let uu____2428 = FStar_TypeChecker_Env.get_range env in - label_opt env reason uu____2424 f in + label_opt env reason uu____2428 f in FStar_All.pipe_left FStar_Syntax_Syntax.as_arg - uu____2423 + uu____2427 in - let uu____2433 = - let uu____2444 = FStar_Syntax_Syntax.as_arg wp + let uu____2437 = + let uu____2448 = FStar_Syntax_Syntax.as_arg wp in - [uu____2444] in - uu____2414 :: uu____2433 in - uu____2394 :: uu____2403 in - FStar_Syntax_Syntax.mk_Tm_app uu____2392 uu____2393 + [uu____2448] in + uu____2418 :: uu____2437 in + uu____2398 :: uu____2407 in + FStar_Syntax_Syntax.mk_Tm_app uu____2396 uu____2397 in - uu____2387 FStar_Pervasives_Native.None + uu____2391 FStar_Pervasives_Native.None wp.FStar_Syntax_Syntax.pos in mk_comp md u_res_t res_t wp1 flags1) @@ -961,25 +961,25 @@ let (strengthen_precondition : fun e_for_debugging_only -> fun lc -> fun g0 -> - let uu____2532 = + let uu____2536 = FStar_TypeChecker_Env.is_trivial_guard_formula g0 in - if uu____2532 + if uu____2536 then (lc, g0) else (let flags1 = - let uu____2544 = - let uu____2552 = FStar_Syntax_Util.is_tot_or_gtot_lcomp lc + let uu____2548 = + let uu____2556 = FStar_Syntax_Util.is_tot_or_gtot_lcomp lc in - if uu____2552 + if uu____2556 then (true, [FStar_Syntax_Syntax.TRIVIAL_POSTCONDITION]) else (false, []) in - match uu____2544 with + match uu____2548 with | (maybe_trivial_post,flags1) -> - let uu____2582 = + let uu____2586 = FStar_All.pipe_right lc.FStar_Syntax_Syntax.cflags (FStar_List.collect - (fun uu___343_2590 -> - match uu___343_2590 with + (fun uu___342_2594 -> + match uu___342_2594 with | FStar_Syntax_Syntax.RETURN -> [FStar_Syntax_Syntax.PARTIAL_RETURN] | FStar_Syntax_Syntax.PARTIAL_RETURN -> @@ -993,60 +993,60 @@ let (strengthen_precondition : [FStar_Syntax_Syntax.TRIVIAL_POSTCONDITION] | FStar_Syntax_Syntax.SHOULD_NOT_INLINE -> [FStar_Syntax_Syntax.SHOULD_NOT_INLINE] - | uu____2593 -> [])) + | uu____2597 -> [])) in - FStar_List.append flags1 uu____2582 + FStar_List.append flags1 uu____2586 in - let strengthen uu____2599 = + let strengthen uu____2603 = let c = FStar_Syntax_Syntax.lcomp_comp lc in if env.FStar_TypeChecker_Env.lax then c else (let g01 = FStar_TypeChecker_Rel.simplify_guard env g0 in - let uu____2605 = FStar_TypeChecker_Env.guard_form g01 in - match uu____2605 with + let uu____2609 = FStar_TypeChecker_Env.guard_form g01 in + match uu____2609 with | FStar_TypeChecker_Common.Trivial -> c | FStar_TypeChecker_Common.NonTrivial f -> - ((let uu____2608 = + ((let uu____2612 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) FStar_Options.Extreme in - if uu____2608 + if uu____2612 then - let uu____2612 = + let uu____2616 = FStar_TypeChecker_Normalize.term_to_string env e_for_debugging_only in - let uu____2614 = + let uu____2618 = FStar_TypeChecker_Normalize.term_to_string env f in FStar_Util.print2 "-------------Strengthening pre-condition of term %s with guard %s\n" - uu____2612 uu____2614 + uu____2616 uu____2618 else ()); strengthen_comp env reason c f flags1)) in - let uu____2619 = - let uu____2620 = + let uu____2623 = + let uu____2624 = FStar_TypeChecker_Env.norm_eff_name env lc.FStar_Syntax_Syntax.eff_name in - FStar_Syntax_Syntax.mk_lcomp uu____2620 + FStar_Syntax_Syntax.mk_lcomp uu____2624 lc.FStar_Syntax_Syntax.res_typ flags1 strengthen in - (uu____2619, - (let uu___361_2622 = g0 in + (uu____2623, + (let uu___360_2626 = g0 in { FStar_TypeChecker_Env.guard_f = FStar_TypeChecker_Common.Trivial; FStar_TypeChecker_Env.deferred = - (uu___361_2622.FStar_TypeChecker_Env.deferred); + (uu___360_2626.FStar_TypeChecker_Env.deferred); FStar_TypeChecker_Env.univ_ineqs = - (uu___361_2622.FStar_TypeChecker_Env.univ_ineqs); + (uu___360_2626.FStar_TypeChecker_Env.univ_ineqs); FStar_TypeChecker_Env.implicits = - (uu___361_2622.FStar_TypeChecker_Env.implicits) + (uu___360_2626.FStar_TypeChecker_Env.implicits) }))) let (lcomp_has_trivial_postcondition : @@ -1054,11 +1054,11 @@ let (lcomp_has_trivial_postcondition : fun lc -> (FStar_Syntax_Util.is_tot_or_gtot_lcomp lc) || (FStar_Util.for_some - (fun uu___344_2631 -> - match uu___344_2631 with + (fun uu___343_2635 -> + match uu___343_2635 with | FStar_Syntax_Syntax.SOMETRIVIAL -> true | FStar_Syntax_Syntax.TRIVIAL_POSTCONDITION -> true - | uu____2635 -> false) lc.FStar_Syntax_Syntax.cflags) + | uu____2639 -> false) lc.FStar_Syntax_Syntax.cflags) let (maybe_add_with_type : FStar_TypeChecker_Env.env -> @@ -1071,22 +1071,22 @@ let (maybe_add_with_type : fun uopt -> fun lc -> fun e -> - let uu____2664 = + let uu____2668 = (FStar_Syntax_Util.is_lcomp_partial_return lc) || env.FStar_TypeChecker_Env.lax in - if uu____2664 + if uu____2668 then e else - (let uu____2671 = + (let uu____2675 = (lcomp_has_trivial_postcondition lc) && - (let uu____2674 = + (let uu____2678 = FStar_TypeChecker_Env.try_lookup_lid env FStar_Parser_Const.with_type_lid in - FStar_Option.isSome uu____2674) + FStar_Option.isSome uu____2678) in - if uu____2671 + if uu____2675 then let u = match uopt with @@ -1110,67 +1110,67 @@ let (bind : fun env -> fun e1opt -> fun lc1 -> - fun uu____2727 -> - match uu____2727 with + fun uu____2731 -> + match uu____2731 with | (b,lc2) -> let debug1 f = - let uu____2747 = + let uu____2751 = (FStar_TypeChecker_Env.debug env FStar_Options.Extreme) || (FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "bind")) in - if uu____2747 then f () else () in + if uu____2751 then f () else () in let lc11 = FStar_TypeChecker_Normalize.ghost_to_pure_lcomp env lc1 in let lc21 = FStar_TypeChecker_Normalize.ghost_to_pure_lcomp env lc2 in let joined_eff = join_lcomp env lc11 lc21 in let bind_flags = - let uu____2760 = + let uu____2764 = (should_not_inline_lc lc11) || (should_not_inline_lc lc21) in - if uu____2760 + if uu____2764 then [FStar_Syntax_Syntax.SHOULD_NOT_INLINE] else (let flags1 = - let uu____2770 = FStar_Syntax_Util.is_total_lcomp lc11 + let uu____2774 = FStar_Syntax_Util.is_total_lcomp lc11 in - if uu____2770 + if uu____2774 then - let uu____2775 = + let uu____2779 = FStar_Syntax_Util.is_total_lcomp lc21 in - (if uu____2775 + (if uu____2779 then [FStar_Syntax_Syntax.TOTAL] else - (let uu____2782 = + (let uu____2786 = FStar_Syntax_Util.is_tot_or_gtot_lcomp lc21 in - if uu____2782 + if uu____2786 then [FStar_Syntax_Syntax.SOMETRIVIAL] else [])) else - (let uu____2791 = + (let uu____2795 = (FStar_Syntax_Util.is_tot_or_gtot_lcomp lc11) && (FStar_Syntax_Util.is_tot_or_gtot_lcomp lc21) in - if uu____2791 + if uu____2795 then [FStar_Syntax_Syntax.SOMETRIVIAL] else []) in - let uu____2798 = lcomp_has_trivial_postcondition lc21 + let uu____2802 = lcomp_has_trivial_postcondition lc21 in - if uu____2798 + if uu____2802 then FStar_Syntax_Syntax.TRIVIAL_POSTCONDITION :: flags1 else flags1) in - let bind_it uu____2810 = - let uu____2811 = + let bind_it uu____2814 = + let uu____2815 = env.FStar_TypeChecker_Env.lax && (FStar_Options.ml_ish ()) in - if uu____2811 + if uu____2815 then let u_t = env.FStar_TypeChecker_Env.universe_of env @@ -1182,42 +1182,42 @@ let (bind : (let c1 = FStar_Syntax_Syntax.lcomp_comp lc11 in let c2 = FStar_Syntax_Syntax.lcomp_comp lc21 in debug1 - (fun uu____2828 -> - let uu____2829 = + (fun uu____2832 -> + let uu____2833 = FStar_Syntax_Print.comp_to_string c1 in - let uu____2831 = + let uu____2835 = match b with | FStar_Pervasives_Native.None -> "none" | FStar_Pervasives_Native.Some x -> FStar_Syntax_Print.bv_to_string x in - let uu____2836 = + let uu____2840 = FStar_Syntax_Print.comp_to_string c2 in FStar_Util.print3 "(1) bind: \n\tc1=%s\n\tx=%s\n\tc2=%s\n(1. end bind)\n" - uu____2829 uu____2831 uu____2836); - (let aux uu____2854 = - let uu____2855 = FStar_Syntax_Util.is_trivial_wp c1 + uu____2833 uu____2835 uu____2840); + (let aux uu____2858 = + let uu____2859 = FStar_Syntax_Util.is_trivial_wp c1 in - if uu____2855 + if uu____2859 then match b with | FStar_Pervasives_Native.None -> FStar_Util.Inl (c2, "trivial no binder") - | FStar_Pervasives_Native.Some uu____2886 -> - let uu____2887 = + | FStar_Pervasives_Native.Some uu____2890 -> + let uu____2891 = FStar_Syntax_Util.is_ml_comp c2 in - (if uu____2887 + (if uu____2891 then FStar_Util.Inl (c2, "trivial ml") else FStar_Util.Inr "c1 trivial; but c2 is not ML") else - (let uu____2919 = + (let uu____2923 = (FStar_Syntax_Util.is_ml_comp c1) && (FStar_Syntax_Util.is_ml_comp c2) in - if uu____2919 + if uu____2923 then FStar_Util.Inl (c2, "both ml") else FStar_Util.Inr @@ -1227,15 +1227,15 @@ let (bind : match (e1opt1, b) with | (FStar_Pervasives_Native.Some e,FStar_Pervasives_Native.Some x) -> - let uu____3008 = - let uu____3014 = + let uu____3012 = + let uu____3018 = FStar_Syntax_Subst.subst_comp [FStar_Syntax_Syntax.NT (x, e)] c2 in - (uu____3014, reason) in - FStar_Util.Inl uu____3008 - | uu____3024 -> aux () in - let try_simplify uu____3050 = + (uu____3018, reason) in + FStar_Util.Inl uu____3012 + | uu____3028 -> aux () in + let try_simplify uu____3054 = let maybe_close t x c = let t1 = FStar_TypeChecker_Normalize.normalize_refinement @@ -1243,136 +1243,136 @@ let (bind : in match t1.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_refine - ({ FStar_Syntax_Syntax.ppname = uu____3068; - FStar_Syntax_Syntax.index = uu____3069; + ({ FStar_Syntax_Syntax.ppname = uu____3072; + FStar_Syntax_Syntax.index = uu____3073; FStar_Syntax_Syntax.sort = { FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_fvar fv; - FStar_Syntax_Syntax.pos = uu____3071; - FStar_Syntax_Syntax.vars = uu____3072;_};_},uu____3073) + FStar_Syntax_Syntax.pos = uu____3075; + FStar_Syntax_Syntax.vars = uu____3076;_};_},uu____3077) when FStar_Syntax_Syntax.fv_eq_lid fv FStar_Parser_Const.unit_lid -> close_comp env [x] c - | uu____3081 -> c in - let uu____3082 = - let uu____3084 = + | uu____3085 -> c in + let uu____3086 = + let uu____3088 = FStar_TypeChecker_Env.try_lookup_effect_lid env FStar_Parser_Const.effect_GTot_lid in - FStar_Option.isNone uu____3084 in - if uu____3082 + FStar_Option.isNone uu____3088 in + if uu____3086 then - let uu____3098 = + let uu____3102 = (FStar_Syntax_Util.is_tot_or_gtot_comp c1) && (FStar_Syntax_Util.is_tot_or_gtot_comp c2) in - (if uu____3098 + (if uu____3102 then FStar_Util.Inl (c2, "Early in prims; we don't have bind yet") else - (let uu____3121 = + (let uu____3125 = FStar_TypeChecker_Env.get_range env in FStar_Errors.raise_error (FStar_Errors.Fatal_NonTrivialPreConditionInPrims, "Non-trivial pre-conditions very early in prims, even before we have defined the PURE monad") - uu____3121)) + uu____3125)) else - (let uu____3136 = + (let uu____3140 = (FStar_Syntax_Util.is_total_comp c1) && (FStar_Syntax_Util.is_total_comp c2) in - if uu____3136 + if uu____3140 then subst_c2 e1opt "both total" else - (let uu____3152 = + (let uu____3156 = (FStar_Syntax_Util.is_tot_or_gtot_comp c1) && (FStar_Syntax_Util.is_tot_or_gtot_comp c2) in - if uu____3152 + if uu____3156 then - let uu____3165 = - let uu____3171 = + let uu____3169 = + let uu____3175 = FStar_Syntax_Syntax.mk_GTotal (FStar_Syntax_Util.comp_result c2) in - (uu____3171, "both gtot") in - FStar_Util.Inl uu____3165 + (uu____3175, "both gtot") in + FStar_Util.Inl uu____3169 else (match (e1opt, b) with | (FStar_Pervasives_Native.Some e,FStar_Pervasives_Native.Some x) -> - let uu____3202 = + let uu____3206 = (FStar_Syntax_Util.is_total_comp c1) && - (let uu____3205 = + (let uu____3209 = FStar_Syntax_Syntax.is_null_bv x in - Prims.op_Negation uu____3205) + Prims.op_Negation uu____3209) in - if uu____3202 + if uu____3206 then let c21 = FStar_Syntax_Subst.subst_comp [FStar_Syntax_Syntax.NT (x, e)] c2 in let x1 = - let uu___362_3222 = x in + let uu___361_3226 = x in { FStar_Syntax_Syntax.ppname = - (uu___362_3222.FStar_Syntax_Syntax.ppname); + (uu___361_3226.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___362_3222.FStar_Syntax_Syntax.index); + (uu___361_3226.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = (FStar_Syntax_Util.comp_result c1) } in - let uu____3223 = - let uu____3229 = + let uu____3227 = + let uu____3233 = maybe_close x1.FStar_Syntax_Syntax.sort x1 c21 in - (uu____3229, "c1 Tot") in - FStar_Util.Inl uu____3223 + (uu____3233, "c1 Tot") in + FStar_Util.Inl uu____3227 else aux () - | uu____3240 -> aux ()))) + | uu____3244 -> aux ()))) in - let uu____3249 = try_simplify () in - match uu____3249 with + let uu____3253 = try_simplify () in + match uu____3253 with | FStar_Util.Inl (c,reason) -> (debug1 - (fun uu____3275 -> - let uu____3276 = + (fun uu____3279 -> + let uu____3280 = FStar_Syntax_Print.comp_to_string c in FStar_Util.print2 "(2) bind: Simplified (because %s) to\n\t%s\n" - reason uu____3276); + reason uu____3280); c) | FStar_Util.Inr reason -> (debug1 - (fun uu____3290 -> + (fun uu____3294 -> FStar_Util.print1 "(2) bind: Not simplified because %s\n" reason); (let mk_bind c11 b1 c21 = - let uu____3312 = lift_and_destruct env c11 c21 + let uu____3316 = lift_and_destruct env c11 c21 in - match uu____3312 with + match uu____3316 with | ((md,a,kwp),(u_t1,t1,wp1),(u_t2,t2,wp2)) -> let bs = match b1 with | FStar_Pervasives_Native.None -> - let uu____3365 = + let uu____3369 = FStar_Syntax_Syntax.null_binder t1 in - [uu____3365] + [uu____3369] | FStar_Pervasives_Native.Some x -> - let uu____3385 = + let uu____3389 = FStar_Syntax_Syntax.mk_binder x in - [uu____3385] + [uu____3389] in let mk_lam wp = FStar_Syntax_Util.abs bs wp @@ -1389,40 +1389,40 @@ let (bind : FStar_Pervasives_Native.None r1 in let wp_args = - let uu____3432 = + let uu____3436 = FStar_Syntax_Syntax.as_arg r11 in - let uu____3441 = - let uu____3452 = + let uu____3445 = + let uu____3456 = FStar_Syntax_Syntax.as_arg t1 in - let uu____3461 = - let uu____3472 = + let uu____3465 = + let uu____3476 = FStar_Syntax_Syntax.as_arg t2 in - let uu____3481 = - let uu____3492 = + let uu____3485 = + let uu____3496 = FStar_Syntax_Syntax.as_arg wp1 in - let uu____3501 = - let uu____3512 = - let uu____3521 = mk_lam wp2 in + let uu____3505 = + let uu____3516 = + let uu____3525 = mk_lam wp2 in FStar_Syntax_Syntax.as_arg - uu____3521 + uu____3525 in - [uu____3512] in - uu____3492 :: uu____3501 in - uu____3472 :: uu____3481 in - uu____3452 :: uu____3461 in - uu____3432 :: uu____3441 in + [uu____3516] in + uu____3496 :: uu____3505 in + uu____3476 :: uu____3485 in + uu____3456 :: uu____3465 in + uu____3436 :: uu____3445 in let wp = - let uu____3573 = - let uu____3578 = + let uu____3577 = + let uu____3582 = FStar_TypeChecker_Env.inst_effect_fun_with [u_t1; u_t2] env md md.FStar_Syntax_Syntax.bind_wp in FStar_Syntax_Syntax.mk_Tm_app - uu____3578 wp_args + uu____3582 wp_args in - uu____3573 FStar_Pervasives_Native.None + uu____3577 FStar_Pervasives_Native.None t2.FStar_Syntax_Syntax.pos in mk_comp md u_t2 t2 wp bind_flags @@ -1436,20 +1436,20 @@ let (bind : FStar_TypeChecker_Env.unfold_effect_abbrev env c21 in - let uu____3603 = + let uu____3607 = FStar_TypeChecker_Env.join env c12.FStar_Syntax_Syntax.effect_name c22.FStar_Syntax_Syntax.effect_name in - match uu____3603 with - | (m,uu____3611,lift2) -> + match uu____3607 with + | (m,uu____3615,lift2) -> let c23 = - let uu____3614 = lift_comp c22 m lift2 + let uu____3618 = lift_comp c22 m lift2 in - FStar_Syntax_Syntax.mk_Comp uu____3614 + FStar_Syntax_Syntax.mk_Comp uu____3618 in - let uu____3615 = destruct_comp c12 in - (match uu____3615 with + let uu____3619 = destruct_comp c12 in + (match uu____3619 with | (u1,t1,wp1) -> let md_pure_or_ghost = FStar_TypeChecker_Env.get_effect_decl @@ -1457,27 +1457,27 @@ let (bind : c12.FStar_Syntax_Syntax.effect_name in let vc1 = - let uu____3629 = - let uu____3634 = + let uu____3633 = + let uu____3638 = FStar_TypeChecker_Env.inst_effect_fun_with [u1] env md_pure_or_ghost md_pure_or_ghost.FStar_Syntax_Syntax.trivial in - let uu____3635 = - let uu____3636 = + let uu____3639 = + let uu____3640 = FStar_Syntax_Syntax.as_arg t1 in - let uu____3645 = - let uu____3656 = + let uu____3649 = + let uu____3660 = FStar_Syntax_Syntax.as_arg wp1 in - [uu____3656] in - uu____3636 :: uu____3645 in + [uu____3660] in + uu____3640 :: uu____3649 in FStar_Syntax_Syntax.mk_Tm_app - uu____3634 uu____3635 + uu____3638 uu____3639 in - uu____3629 + uu____3633 FStar_Pervasives_Native.None r1 in strengthen_comp env @@ -1488,35 +1488,35 @@ let (bind : FStar_TypeChecker_Env.unfold_effect_abbrev env c1 in - let uu____3696 = destruct_comp c1_typ in - match uu____3696 with - | (u_res_t1,res_t1,uu____3705) -> - let uu____3706 = + let uu____3700 = destruct_comp c1_typ in + match uu____3700 with + | (u_res_t1,res_t1,uu____3709) -> + let uu____3710 = (FStar_Option.isSome b) && (should_return env e1opt lc11) in - if uu____3706 + if uu____3710 then let e1 = FStar_Option.get e1opt in let x = FStar_Option.get b in - let uu____3711 = + let uu____3715 = FStar_Syntax_Util.is_partial_return c1 in - (if uu____3711 + (if uu____3715 then (debug1 - (fun uu____3721 -> - let uu____3722 = + (fun uu____3725 -> + let uu____3726 = FStar_TypeChecker_Normalize.term_to_string env e1 in - let uu____3724 = + let uu____3728 = FStar_Syntax_Print.bv_to_string x in FStar_Util.print2 "(3) bind (case a): Substituting %s for %s" - uu____3722 uu____3724); + uu____3726 uu____3728); (let c21 = FStar_Syntax_Subst.subst_comp [FStar_Syntax_Syntax.NT (x, e1)] @@ -1524,45 +1524,45 @@ let (bind : in mk_bind c1 b c21)) else - (let uu____3732 = + (let uu____3736 = ((FStar_Options.vcgen_optimize_bind_as_seq ()) && (lcomp_has_trivial_postcondition lc11)) && - (let uu____3735 = + (let uu____3739 = FStar_TypeChecker_Env.try_lookup_lid env FStar_Parser_Const.with_type_lid in - FStar_Option.isSome uu____3735) + FStar_Option.isSome uu____3739) in - if uu____3732 + if uu____3736 then let e1' = - let uu____3756 = + let uu____3760 = FStar_Options.vcgen_decorate_with_type () in - if uu____3756 + if uu____3760 then FStar_Syntax_Util.mk_with_type u_res_t1 res_t1 e1 else e1 in (debug1 - (fun uu____3768 -> - let uu____3769 = + (fun uu____3772 -> + let uu____3773 = FStar_TypeChecker_Normalize.term_to_string env e1' in - let uu____3771 = + let uu____3775 = FStar_Syntax_Print.bv_to_string x in FStar_Util.print2 "(3) bind (case b): Substituting %s for %s" - uu____3769 uu____3771); + uu____3773 uu____3775); (let c21 = FStar_Syntax_Subst.subst_comp [FStar_Syntax_Syntax.NT @@ -1571,30 +1571,30 @@ let (bind : mk_seq c1 b c21)) else (debug1 - (fun uu____3786 -> - let uu____3787 = + (fun uu____3790 -> + let uu____3791 = FStar_TypeChecker_Normalize.term_to_string env e1 in - let uu____3789 = + let uu____3793 = FStar_Syntax_Print.bv_to_string x in FStar_Util.print2 "(3) bind (case c): Adding equality %s = %s" - uu____3787 uu____3789); + uu____3791 uu____3793); (let c21 = FStar_Syntax_Subst.subst_comp [FStar_Syntax_Syntax.NT (x, e1)] c2 in let x_eq_e = - let uu____3796 = + let uu____3800 = FStar_Syntax_Syntax.bv_to_name x in FStar_Syntax_Util.mk_eq2 u_res_t1 - res_t1 e1 uu____3796 + res_t1 e1 uu____3800 in let c22 = weaken_comp env c21 x_eq_e in @@ -1616,7 +1616,7 @@ let (weaken_guard : f1,FStar_TypeChecker_Common.NonTrivial f2) -> let g = FStar_Syntax_Util.mk_imp f1 f2 in FStar_TypeChecker_Common.NonTrivial g - | uu____3814 -> g2 + | uu____3818 -> g2 let (maybe_assume_result_eq_pure_term : FStar_TypeChecker_Env.env -> @@ -1632,21 +1632,21 @@ let (maybe_assume_result_eq_pure_term : FStar_Parser_Const.effect_GTot_lid)) && (should_return env (FStar_Pervasives_Native.Some e) lc)) && - (let uu____3838 = FStar_Syntax_Util.is_lcomp_partial_return lc + (let uu____3842 = FStar_Syntax_Util.is_lcomp_partial_return lc in - Prims.op_Negation uu____3838) + Prims.op_Negation uu____3842) in let flags1 = if should_return1 then - let uu____3846 = FStar_Syntax_Util.is_total_lcomp lc in - (if uu____3846 + let uu____3850 = FStar_Syntax_Util.is_total_lcomp lc in + (if uu____3850 then FStar_Syntax_Syntax.RETURN :: (lc.FStar_Syntax_Syntax.cflags) else FStar_Syntax_Syntax.PARTIAL_RETURN :: (lc.FStar_Syntax_Syntax.cflags)) else lc.FStar_Syntax_Syntax.cflags in - let refine1 uu____3862 = + let refine1 uu____3866 = let c = FStar_Syntax_Syntax.lcomp_comp lc in let u_t = match comp_univ_opt c with @@ -1655,30 +1655,30 @@ let (maybe_assume_result_eq_pure_term : env.FStar_TypeChecker_Env.universe_of env (FStar_Syntax_Util.comp_result c) in - let uu____3866 = FStar_Syntax_Util.is_tot_or_gtot_comp c in - if uu____3866 + let uu____3870 = FStar_Syntax_Util.is_tot_or_gtot_comp c in + if uu____3870 then let retc = return_value env (FStar_Pervasives_Native.Some u_t) (FStar_Syntax_Util.comp_result c) e in - let uu____3872 = - let uu____3874 = FStar_Syntax_Util.is_pure_comp c in - Prims.op_Negation uu____3874 in - (if uu____3872 + let uu____3876 = + let uu____3878 = FStar_Syntax_Util.is_pure_comp c in + Prims.op_Negation uu____3878 in + (if uu____3876 then let retc1 = FStar_Syntax_Util.comp_to_comp_typ retc in let retc2 = - let uu___363_3881 = retc1 in + let uu___362_3885 = retc1 in { FStar_Syntax_Syntax.comp_univs = - (uu___363_3881.FStar_Syntax_Syntax.comp_univs); + (uu___362_3885.FStar_Syntax_Syntax.comp_univs); FStar_Syntax_Syntax.effect_name = FStar_Parser_Const.effect_GHOST_lid; FStar_Syntax_Syntax.result_typ = - (uu___363_3881.FStar_Syntax_Syntax.result_typ); + (uu___362_3885.FStar_Syntax_Syntax.result_typ); FStar_Syntax_Syntax.effect_args = - (uu___363_3881.FStar_Syntax_Syntax.effect_args); + (uu___362_3885.FStar_Syntax_Syntax.effect_args); FStar_Syntax_Syntax.flags = flags1 } in FStar_Syntax_Syntax.mk_Comp retc2 @@ -1693,29 +1693,29 @@ let (maybe_assume_result_eq_pure_term : in let xexp = FStar_Syntax_Syntax.bv_to_name x in let ret1 = - let uu____3894 = - let uu____3895 = + let uu____3898 = + let uu____3899 = return_value env (FStar_Pervasives_Native.Some u_t) t xexp in - FStar_Syntax_Util.comp_set_flags uu____3895 + FStar_Syntax_Util.comp_set_flags uu____3899 [FStar_Syntax_Syntax.PARTIAL_RETURN] in - FStar_All.pipe_left FStar_Syntax_Util.lcomp_of_comp uu____3894 + FStar_All.pipe_left FStar_Syntax_Util.lcomp_of_comp uu____3898 in let eq1 = FStar_Syntax_Util.mk_eq2 u_t t xexp e in let eq_ret = weaken_precondition env ret1 (FStar_TypeChecker_Common.NonTrivial eq1) in - let uu____3898 = - let uu____3899 = - let uu____3900 = FStar_Syntax_Util.lcomp_of_comp c2 in + let uu____3902 = + let uu____3903 = + let uu____3904 = FStar_Syntax_Util.lcomp_of_comp c2 in bind e.FStar_Syntax_Syntax.pos env - FStar_Pervasives_Native.None uu____3900 + FStar_Pervasives_Native.None uu____3904 ((FStar_Pervasives_Native.Some x), eq_ret) in - FStar_Syntax_Syntax.lcomp_comp uu____3899 in - FStar_Syntax_Util.comp_set_flags uu____3898 flags1) + FStar_Syntax_Syntax.lcomp_comp uu____3903 in + FStar_Syntax_Util.comp_set_flags uu____3902 flags1) in if Prims.op_Negation should_return1 then lc @@ -1736,8 +1736,8 @@ let (maybe_return_e2_and_bind : fun e1opt -> fun lc1 -> fun e2 -> - fun uu____3938 -> - match uu____3938 with + fun uu____3942 -> + match uu____3942 with | (x,lc2) -> let lc21 = let eff1 = @@ -1748,13 +1748,13 @@ let (maybe_return_e2_and_bind : FStar_TypeChecker_Env.norm_eff_name env lc2.FStar_Syntax_Syntax.eff_name in - let uu____3950 = - ((let uu____3954 = is_pure_or_ghost_effect env eff1 in - Prims.op_Negation uu____3954) || + let uu____3954 = + ((let uu____3958 = is_pure_or_ghost_effect env eff1 in + Prims.op_Negation uu____3958) || (should_not_inline_lc lc1)) && (is_pure_or_ghost_effect env eff2) in - if uu____3950 + if uu____3954 then maybe_assume_result_eq_pure_term env e2 lc2 else lc2 in bind r env e1opt lc1 (x, lc21) @@ -1764,10 +1764,10 @@ let (fvar_const : = fun env -> fun lid -> - let uu____3972 = - let uu____3973 = FStar_TypeChecker_Env.get_range env in - FStar_Ident.set_lid_range lid uu____3973 in - FStar_Syntax_Syntax.fvar uu____3972 FStar_Syntax_Syntax.delta_constant + let uu____3976 = + let uu____3977 = FStar_TypeChecker_Env.get_range env in + FStar_Ident.set_lid_range lid uu____3977 in + FStar_Syntax_Syntax.fvar uu____3976 FStar_Syntax_Syntax.delta_constant FStar_Pervasives_Native.None let (bind_cases : @@ -1785,106 +1785,106 @@ let (bind_cases : let eff = FStar_List.fold_left (fun eff -> - fun uu____4043 -> - match uu____4043 with - | (uu____4057,eff_label,uu____4059,uu____4060) -> + fun uu____4047 -> + match uu____4047 with + | (uu____4061,eff_label,uu____4063,uu____4064) -> join_effects env eff eff_label) FStar_Parser_Const.effect_PURE_lid lcases in - let uu____4073 = - let uu____4081 = + let uu____4077 = + let uu____4085 = FStar_All.pipe_right lcases (FStar_Util.for_some - (fun uu____4119 -> - match uu____4119 with - | (uu____4134,uu____4135,flags1,uu____4137) -> + (fun uu____4123 -> + match uu____4123 with + | (uu____4138,uu____4139,flags1,uu____4141) -> FStar_All.pipe_right flags1 (FStar_Util.for_some - (fun uu___345_4154 -> - match uu___345_4154 with + (fun uu___344_4158 -> + match uu___344_4158 with | FStar_Syntax_Syntax.SHOULD_NOT_INLINE -> true - | uu____4157 -> false)))) + | uu____4161 -> false)))) in - if uu____4081 + if uu____4085 then (true, [FStar_Syntax_Syntax.SHOULD_NOT_INLINE]) else (false, []) in - match uu____4073 with + match uu____4077 with | (should_not_inline_whole_match,bind_cases_flags) -> - let bind_cases uu____4190 = + let bind_cases uu____4194 = let u_res_t = env.FStar_TypeChecker_Env.universe_of env res_t in - let uu____4192 = + let uu____4196 = env.FStar_TypeChecker_Env.lax && (FStar_Options.ml_ish ()) in - if uu____4192 + if uu____4196 then lax_mk_tot_or_comp_l eff u_res_t res_t [] else (let ifthenelse md res_t1 g wp_t wp_e = - let uu____4233 = + let uu____4237 = FStar_Range.union_ranges wp_t.FStar_Syntax_Syntax.pos wp_e.FStar_Syntax_Syntax.pos in - let uu____4234 = - let uu____4239 = + let uu____4238 = + let uu____4243 = FStar_TypeChecker_Env.inst_effect_fun_with [u_res_t] env md md.FStar_Syntax_Syntax.if_then_else in - let uu____4240 = - let uu____4241 = FStar_Syntax_Syntax.as_arg res_t1 in - let uu____4250 = - let uu____4261 = FStar_Syntax_Syntax.as_arg g in - let uu____4270 = - let uu____4281 = FStar_Syntax_Syntax.as_arg wp_t + let uu____4244 = + let uu____4245 = FStar_Syntax_Syntax.as_arg res_t1 in + let uu____4254 = + let uu____4265 = FStar_Syntax_Syntax.as_arg g in + let uu____4274 = + let uu____4285 = FStar_Syntax_Syntax.as_arg wp_t in - let uu____4290 = - let uu____4301 = FStar_Syntax_Syntax.as_arg wp_e + let uu____4294 = + let uu____4305 = FStar_Syntax_Syntax.as_arg wp_e in - [uu____4301] in - uu____4281 :: uu____4290 in - uu____4261 :: uu____4270 in - uu____4241 :: uu____4250 in - FStar_Syntax_Syntax.mk_Tm_app uu____4239 uu____4240 in - uu____4234 FStar_Pervasives_Native.None uu____4233 in + [uu____4305] in + uu____4285 :: uu____4294 in + uu____4265 :: uu____4274 in + uu____4245 :: uu____4254 in + FStar_Syntax_Syntax.mk_Tm_app uu____4243 uu____4244 in + uu____4238 FStar_Pervasives_Native.None uu____4237 in let default_case = let post_k = - let uu____4356 = - let uu____4365 = FStar_Syntax_Syntax.null_binder res_t + let uu____4360 = + let uu____4369 = FStar_Syntax_Syntax.null_binder res_t in - [uu____4365] in - let uu____4384 = + [uu____4369] in + let uu____4388 = FStar_Syntax_Syntax.mk_Total FStar_Syntax_Util.ktype0 in - FStar_Syntax_Util.arrow uu____4356 uu____4384 in + FStar_Syntax_Util.arrow uu____4360 uu____4388 in let kwp = - let uu____4390 = - let uu____4399 = + let uu____4394 = + let uu____4403 = FStar_Syntax_Syntax.null_binder post_k in - [uu____4399] in - let uu____4418 = + [uu____4403] in + let uu____4422 = FStar_Syntax_Syntax.mk_Total FStar_Syntax_Util.ktype0 in - FStar_Syntax_Util.arrow uu____4390 uu____4418 in + FStar_Syntax_Util.arrow uu____4394 uu____4422 in let post = FStar_Syntax_Syntax.new_bv FStar_Pervasives_Native.None post_k in let wp = - let uu____4425 = - let uu____4426 = FStar_Syntax_Syntax.mk_binder post + let uu____4429 = + let uu____4430 = FStar_Syntax_Syntax.mk_binder post in - [uu____4426] in - let uu____4445 = - let uu____4448 = - let uu____4455 = FStar_TypeChecker_Env.get_range env + [uu____4430] in + let uu____4449 = + let uu____4452 = + let uu____4459 = FStar_TypeChecker_Env.get_range env in label FStar_TypeChecker_Err.exhaustiveness_check - uu____4455 + uu____4459 in - let uu____4456 = + let uu____4460 = fvar_const env FStar_Parser_Const.false_lid in - FStar_All.pipe_left uu____4448 uu____4456 in - FStar_Syntax_Util.abs uu____4425 uu____4445 + FStar_All.pipe_left uu____4452 uu____4460 in + FStar_Syntax_Util.abs uu____4429 uu____4449 (FStar_Pervasives_Native.Some (FStar_Syntax_Util.mk_residual_comp FStar_Parser_Const.effect_Tot_lid @@ -1897,66 +1897,66 @@ let (bind_cases : in mk_comp md u_res_t res_t wp [] in let maybe_return eff_label_then cthen = - let uu____4480 = + let uu____4484 = should_not_inline_whole_match || - (let uu____4483 = is_pure_or_ghost_effect env eff in - Prims.op_Negation uu____4483) + (let uu____4487 = is_pure_or_ghost_effect env eff in + Prims.op_Negation uu____4487) in - if uu____4480 then cthen true else cthen false in + if uu____4484 then cthen true else cthen false in let comp = FStar_List.fold_right - (fun uu____4522 -> + (fun uu____4526 -> fun celse -> - match uu____4522 with - | (g,eff_label,uu____4539,cthen) -> - let uu____4553 = - let uu____4578 = - let uu____4579 = + match uu____4526 with + | (g,eff_label,uu____4543,cthen) -> + let uu____4557 = + let uu____4582 = + let uu____4583 = maybe_return eff_label cthen in - FStar_Syntax_Syntax.lcomp_comp uu____4579 + FStar_Syntax_Syntax.lcomp_comp uu____4583 in - lift_and_destruct env uu____4578 celse in - (match uu____4553 with - | ((md,uu____4581,uu____4582),(uu____4583,uu____4584,wp_then), - (uu____4586,uu____4587,wp_else)) -> - let uu____4607 = + lift_and_destruct env uu____4582 celse in + (match uu____4557 with + | ((md,uu____4585,uu____4586),(uu____4587,uu____4588,wp_then), + (uu____4590,uu____4591,wp_else)) -> + let uu____4611 = ifthenelse md res_t g wp_then wp_else in - mk_comp md u_res_t res_t uu____4607 [])) + mk_comp md u_res_t res_t uu____4611 [])) lcases default_case in match lcases with | [] -> comp - | uu____4622::[] -> comp - | uu____4665 -> + | uu____4626::[] -> comp + | uu____4669 -> let comp1 = FStar_TypeChecker_Env.comp_to_comp_typ env comp in let md = FStar_TypeChecker_Env.get_effect_decl env comp1.FStar_Syntax_Syntax.effect_name in - let uu____4684 = destruct_comp comp1 in - (match uu____4684 with - | (uu____4691,uu____4692,wp) -> + let uu____4688 = destruct_comp comp1 in + (match uu____4688 with + | (uu____4695,uu____4696,wp) -> let wp1 = - let uu____4697 = - let uu____4702 = + let uu____4701 = + let uu____4706 = FStar_TypeChecker_Env.inst_effect_fun_with [u_res_t] env md md.FStar_Syntax_Syntax.ite_wp in - let uu____4703 = - let uu____4704 = + let uu____4707 = + let uu____4708 = FStar_Syntax_Syntax.as_arg res_t in - let uu____4713 = - let uu____4724 = + let uu____4717 = + let uu____4728 = FStar_Syntax_Syntax.as_arg wp in - [uu____4724] in - uu____4704 :: uu____4713 in - FStar_Syntax_Syntax.mk_Tm_app uu____4702 - uu____4703 + [uu____4728] in + uu____4708 :: uu____4717 in + FStar_Syntax_Syntax.mk_Tm_app uu____4706 + uu____4707 in - uu____4697 FStar_Pervasives_Native.None + uu____4701 FStar_Pervasives_Native.None wp.FStar_Syntax_Syntax.pos in mk_comp md u_res_t res_t wp1 bind_cases_flags)) @@ -1976,24 +1976,24 @@ let (check_comp : fun e -> fun c -> fun c' -> - let uu____4792 = FStar_TypeChecker_Rel.sub_comp env c c' in - match uu____4792 with + let uu____4796 = FStar_TypeChecker_Rel.sub_comp env c c' in + match uu____4796 with | FStar_Pervasives_Native.None -> if env.FStar_TypeChecker_Env.use_eq then - let uu____4808 = + let uu____4812 = FStar_TypeChecker_Err.computed_computation_type_does_not_match_annotation_eq env e c c' in - let uu____4814 = FStar_TypeChecker_Env.get_range env in - FStar_Errors.raise_error uu____4808 uu____4814 + let uu____4818 = FStar_TypeChecker_Env.get_range env in + FStar_Errors.raise_error uu____4812 uu____4818 else - (let uu____4823 = + (let uu____4827 = FStar_TypeChecker_Err.computed_computation_type_does_not_match_annotation env e c c' in - let uu____4829 = FStar_TypeChecker_Env.get_range env in - FStar_Errors.raise_error uu____4823 uu____4829) + let uu____4833 = FStar_TypeChecker_Env.get_range env in + FStar_Errors.raise_error uu____4827 uu____4833) | FStar_Pervasives_Native.Some g -> (e, c', g) let (universe_of_comp : @@ -2005,40 +2005,40 @@ let (universe_of_comp : fun u_res -> fun c -> let c_lid = - let uu____4854 = + let uu____4858 = FStar_All.pipe_right c FStar_Syntax_Util.comp_effect_name in - FStar_All.pipe_right uu____4854 + FStar_All.pipe_right uu____4858 (FStar_TypeChecker_Env.norm_eff_name env) in - let uu____4857 = FStar_Syntax_Util.is_pure_or_ghost_effect c_lid in - if uu____4857 + let uu____4861 = FStar_Syntax_Util.is_pure_or_ghost_effect c_lid in + if uu____4861 then u_res else (let is_total = - let uu____4864 = + let uu____4868 = FStar_TypeChecker_Env.lookup_effect_quals env c_lid in - FStar_All.pipe_right uu____4864 + FStar_All.pipe_right uu____4868 (FStar_List.existsb (fun q -> q = FStar_Syntax_Syntax.TotalEffect)) in if Prims.op_Negation is_total then FStar_Syntax_Syntax.U_zero else - (let uu____4875 = FStar_TypeChecker_Env.effect_repr env c u_res + (let uu____4879 = FStar_TypeChecker_Env.effect_repr env c u_res in - match uu____4875 with + match uu____4879 with | FStar_Pervasives_Native.None -> - let uu____4878 = - let uu____4884 = - let uu____4886 = FStar_Syntax_Print.lid_to_string c_lid + let uu____4882 = + let uu____4888 = + let uu____4890 = FStar_Syntax_Print.lid_to_string c_lid in FStar_Util.format1 "Effect %s is marked total but does not have a repr" - uu____4886 + uu____4890 in - (FStar_Errors.Fatal_EffectCannotBeReified, uu____4884) + (FStar_Errors.Fatal_EffectCannotBeReified, uu____4888) in - FStar_Errors.raise_error uu____4878 + FStar_Errors.raise_error uu____4882 c.FStar_Syntax_Syntax.pos | FStar_Pervasives_Native.Some tm -> env.FStar_TypeChecker_Env.universe_of env tm)) @@ -2060,61 +2060,61 @@ let (maybe_coerce_bool_to_type : else (let is_type1 t1 = let t2 = FStar_TypeChecker_Normalize.unfold_whnf env t1 in - let uu____4931 = - let uu____4932 = FStar_Syntax_Subst.compress t2 in - uu____4932.FStar_Syntax_Syntax.n in - match uu____4931 with - | FStar_Syntax_Syntax.Tm_type uu____4936 -> true - | uu____4938 -> false in - let uu____4940 = - let uu____4941 = + let uu____4935 = + let uu____4936 = FStar_Syntax_Subst.compress t2 in + uu____4936.FStar_Syntax_Syntax.n in + match uu____4935 with + | FStar_Syntax_Syntax.Tm_type uu____4940 -> true + | uu____4942 -> false in + let uu____4944 = + let uu____4945 = FStar_Syntax_Util.unrefine lc.FStar_Syntax_Syntax.res_typ in - uu____4941.FStar_Syntax_Syntax.n in - match uu____4940 with + uu____4945.FStar_Syntax_Syntax.n in + match uu____4944 with | FStar_Syntax_Syntax.Tm_fvar fv when (FStar_Syntax_Syntax.fv_eq_lid fv FStar_Parser_Const.bool_lid) && (is_type1 t) -> - let uu____4949 = + let uu____4953 = FStar_TypeChecker_Env.lookup_lid env FStar_Parser_Const.b2t_lid in let b2t1 = - let uu____4959 = + let uu____4963 = FStar_Ident.set_lid_range FStar_Parser_Const.b2t_lid e.FStar_Syntax_Syntax.pos in - FStar_Syntax_Syntax.fvar uu____4959 + FStar_Syntax_Syntax.fvar uu____4963 (FStar_Syntax_Syntax.Delta_constant_at_level (Prims.parse_int "1")) FStar_Pervasives_Native.None in let lc1 = - let uu____4962 = - let uu____4963 = - let uu____4964 = + let uu____4966 = + let uu____4967 = + let uu____4968 = FStar_Syntax_Syntax.mk_Total FStar_Syntax_Util.ktype0 in FStar_All.pipe_left FStar_Syntax_Util.lcomp_of_comp - uu____4964 + uu____4968 in - (FStar_Pervasives_Native.None, uu____4963) in + (FStar_Pervasives_Native.None, uu____4967) in bind e.FStar_Syntax_Syntax.pos env - (FStar_Pervasives_Native.Some e) lc uu____4962 + (FStar_Pervasives_Native.Some e) lc uu____4966 in let e1 = - let uu____4970 = - let uu____4975 = - let uu____4976 = FStar_Syntax_Syntax.as_arg e in - [uu____4976] in - FStar_Syntax_Syntax.mk_Tm_app b2t1 uu____4975 in - uu____4970 FStar_Pervasives_Native.None + let uu____4974 = + let uu____4979 = + let uu____4980 = FStar_Syntax_Syntax.as_arg e in + [uu____4980] in + FStar_Syntax_Syntax.mk_Tm_app b2t1 uu____4979 in + uu____4974 FStar_Pervasives_Native.None e.FStar_Syntax_Syntax.pos in (e1, lc1) - | uu____5003 -> (e, lc)) + | uu____5007 -> (e, lc)) let (weaken_result_typ : FStar_TypeChecker_Env.env -> @@ -2128,111 +2128,111 @@ let (weaken_result_typ : fun e -> fun lc -> fun t -> - (let uu____5038 = + (let uu____5042 = FStar_TypeChecker_Env.debug env FStar_Options.High in - if uu____5038 + if uu____5042 then - let uu____5041 = FStar_Syntax_Print.term_to_string e in - let uu____5043 = FStar_Syntax_Print.lcomp_to_string lc in - let uu____5045 = FStar_Syntax_Print.term_to_string t in + let uu____5045 = FStar_Syntax_Print.term_to_string e in + let uu____5047 = FStar_Syntax_Print.lcomp_to_string lc in + let uu____5049 = FStar_Syntax_Print.term_to_string t in FStar_Util.print3 "weaken_result_typ e=(%s) lc=(%s) t=(%s)\n" - uu____5041 uu____5043 uu____5045 + uu____5045 uu____5047 uu____5049 else ()); (let use_eq = env.FStar_TypeChecker_Env.use_eq || - (let uu____5055 = + (let uu____5059 = FStar_TypeChecker_Env.effect_decl_opt env lc.FStar_Syntax_Syntax.eff_name in - match uu____5055 with + match uu____5059 with | FStar_Pervasives_Native.Some (ed,qualifiers) -> FStar_All.pipe_right qualifiers (FStar_List.contains FStar_Syntax_Syntax.Reifiable) - | uu____5080 -> false) + | uu____5084 -> false) in let gopt = if use_eq then - let uu____5106 = + let uu____5110 = FStar_TypeChecker_Rel.try_teq true env lc.FStar_Syntax_Syntax.res_typ t in - (uu____5106, false) + (uu____5110, false) else - (let uu____5116 = + (let uu____5120 = FStar_TypeChecker_Rel.get_subtyping_predicate env lc.FStar_Syntax_Syntax.res_typ t in - (uu____5116, true)) + (uu____5120, true)) in match gopt with - | (FStar_Pervasives_Native.None ,uu____5129) -> + | (FStar_Pervasives_Native.None ,uu____5133) -> if env.FStar_TypeChecker_Env.failhard then - let uu____5141 = + let uu____5145 = FStar_TypeChecker_Err.basic_type_error env (FStar_Pervasives_Native.Some e) t lc.FStar_Syntax_Syntax.res_typ in - FStar_Errors.raise_error uu____5141 + FStar_Errors.raise_error uu____5145 e.FStar_Syntax_Syntax.pos else (FStar_TypeChecker_Rel.subtype_fail env e lc.FStar_Syntax_Syntax.res_typ t; (e, - ((let uu___364_5157 = lc in + ((let uu___363_5161 = lc in { FStar_Syntax_Syntax.eff_name = - (uu___364_5157.FStar_Syntax_Syntax.eff_name); + (uu___363_5161.FStar_Syntax_Syntax.eff_name); FStar_Syntax_Syntax.res_typ = t; FStar_Syntax_Syntax.cflags = - (uu___364_5157.FStar_Syntax_Syntax.cflags); + (uu___363_5161.FStar_Syntax_Syntax.cflags); FStar_Syntax_Syntax.comp_thunk = - (uu___364_5157.FStar_Syntax_Syntax.comp_thunk) + (uu___363_5161.FStar_Syntax_Syntax.comp_thunk) })), FStar_TypeChecker_Env.trivial_guard)) | (FStar_Pervasives_Native.Some g,apply_guard1) -> - let uu____5164 = FStar_TypeChecker_Env.guard_form g in - (match uu____5164 with + let uu____5168 = FStar_TypeChecker_Env.guard_form g in + (match uu____5168 with | FStar_TypeChecker_Common.Trivial -> - let strengthen_trivial uu____5176 = + let strengthen_trivial uu____5180 = let c = FStar_Syntax_Syntax.lcomp_comp lc in let res_t = FStar_Syntax_Util.comp_result c in - let uu____5181 = - (let uu____5185 = - let uu____5186 = + let uu____5185 = + (let uu____5189 = + let uu____5190 = FStar_All.pipe_right c FStar_Syntax_Util.comp_effect_name in - FStar_All.pipe_right uu____5186 + FStar_All.pipe_right uu____5190 (FStar_TypeChecker_Env.norm_eff_name env) in - FStar_All.pipe_right uu____5185 + FStar_All.pipe_right uu____5189 FStar_Syntax_Util.is_pure_or_ghost_effect) || - (let uu____5191 = FStar_Syntax_Util.eq_tm t res_t + (let uu____5195 = FStar_Syntax_Util.eq_tm t res_t in - uu____5191 = FStar_Syntax_Util.Equal) + uu____5195 = FStar_Syntax_Util.Equal) in - if uu____5181 + if uu____5185 then - ((let uu____5194 = + ((let uu____5198 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) FStar_Options.Extreme in - if uu____5194 + if uu____5198 then - let uu____5198 = + let uu____5202 = FStar_Syntax_Print.lid_to_string (FStar_Syntax_Util.comp_effect_name c) in - let uu____5200 = + let uu____5204 = FStar_Syntax_Print.term_to_string res_t in - let uu____5202 = + let uu____5206 = FStar_Syntax_Print.term_to_string t in FStar_Util.print3 "weaken_result_type::strengthen_trivial: Not inserting the return since either the comp c:%s is pure/ghost or res_t:%s is same as t:%s\n" - uu____5198 uu____5200 uu____5202 + uu____5202 uu____5204 uu____5206 else ()); FStar_Syntax_Util.set_result_typ c t) else @@ -2242,45 +2242,45 @@ let (weaken_result_typ : (res_t.FStar_Syntax_Syntax.pos)) res_t in let cret = - let uu____5211 = FStar_Syntax_Syntax.bv_to_name x + let uu____5215 = FStar_Syntax_Syntax.bv_to_name x in return_value env (comp_univ_opt c) res_t - uu____5211 + uu____5215 in let lc1 = - let uu____5213 = FStar_Syntax_Util.lcomp_of_comp c + let uu____5217 = FStar_Syntax_Util.lcomp_of_comp c in - let uu____5214 = - let uu____5215 = + let uu____5218 = + let uu____5219 = FStar_Syntax_Util.lcomp_of_comp cret in - ((FStar_Pervasives_Native.Some x), uu____5215) + ((FStar_Pervasives_Native.Some x), uu____5219) in bind e.FStar_Syntax_Syntax.pos env - (FStar_Pervasives_Native.Some e) uu____5213 - uu____5214 + (FStar_Pervasives_Native.Some e) uu____5217 + uu____5218 in - (let uu____5219 = + (let uu____5223 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) FStar_Options.Extreme in - if uu____5219 + if uu____5223 then - let uu____5223 = + let uu____5227 = FStar_Syntax_Print.term_to_string e in - let uu____5225 = + let uu____5229 = FStar_Syntax_Print.comp_to_string c in - let uu____5227 = + let uu____5231 = FStar_Syntax_Print.term_to_string t in - let uu____5229 = + let uu____5233 = FStar_Syntax_Print.lcomp_to_string lc1 in FStar_Util.print4 "weaken_result_type::strengthen_trivial: Inserting a return for e: %s, c: %s, t: %s, and then post return lc: %s\n" - uu____5223 uu____5225 uu____5227 uu____5229 + uu____5227 uu____5229 uu____5231 uu____5233 else ()); - (let uu____5234 = FStar_Syntax_Syntax.lcomp_comp lc1 + (let uu____5238 = FStar_Syntax_Syntax.lcomp_comp lc1 in - FStar_Syntax_Util.set_result_typ uu____5234 t)) + FStar_Syntax_Util.set_result_typ uu____5238 t)) in let lc1 = FStar_Syntax_Syntax.mk_lcomp @@ -2290,23 +2290,23 @@ let (weaken_result_typ : (e, lc1, g) | FStar_TypeChecker_Common.NonTrivial f -> let g1 = - let uu___365_5240 = g in + let uu___364_5244 = g in { FStar_TypeChecker_Env.guard_f = FStar_TypeChecker_Common.Trivial; FStar_TypeChecker_Env.deferred = - (uu___365_5240.FStar_TypeChecker_Env.deferred); + (uu___364_5244.FStar_TypeChecker_Env.deferred); FStar_TypeChecker_Env.univ_ineqs = - (uu___365_5240.FStar_TypeChecker_Env.univ_ineqs); + (uu___364_5244.FStar_TypeChecker_Env.univ_ineqs); FStar_TypeChecker_Env.implicits = - (uu___365_5240.FStar_TypeChecker_Env.implicits) + (uu___364_5244.FStar_TypeChecker_Env.implicits) } in - let strengthen uu____5246 = - let uu____5247 = + let strengthen uu____5250 = + let uu____5251 = env.FStar_TypeChecker_Env.lax && (FStar_Options.ml_ish ()) in - if uu____5247 + if uu____5251 then FStar_Syntax_Syntax.lcomp_comp lc else (let f1 = @@ -2316,64 +2316,64 @@ let (weaken_result_typ : FStar_TypeChecker_Env.Simplify; FStar_TypeChecker_Env.Primops] env f in - let uu____5253 = - let uu____5254 = FStar_Syntax_Subst.compress f1 + let uu____5257 = + let uu____5258 = FStar_Syntax_Subst.compress f1 in - uu____5254.FStar_Syntax_Syntax.n in - match uu____5253 with + uu____5258.FStar_Syntax_Syntax.n in + match uu____5257 with | FStar_Syntax_Syntax.Tm_abs - (uu____5257,{ + (uu____5261,{ FStar_Syntax_Syntax.n = FStar_Syntax_Syntax.Tm_fvar fv; FStar_Syntax_Syntax.pos = - uu____5259; + uu____5263; FStar_Syntax_Syntax.vars = - uu____5260;_},uu____5261) + uu____5264;_},uu____5265) when FStar_Syntax_Syntax.fv_eq_lid fv FStar_Parser_Const.true_lid -> let lc1 = - let uu___366_5287 = lc in + let uu___365_5291 = lc in { FStar_Syntax_Syntax.eff_name = - (uu___366_5287.FStar_Syntax_Syntax.eff_name); + (uu___365_5291.FStar_Syntax_Syntax.eff_name); FStar_Syntax_Syntax.res_typ = t; FStar_Syntax_Syntax.cflags = - (uu___366_5287.FStar_Syntax_Syntax.cflags); + (uu___365_5291.FStar_Syntax_Syntax.cflags); FStar_Syntax_Syntax.comp_thunk = - (uu___366_5287.FStar_Syntax_Syntax.comp_thunk) + (uu___365_5291.FStar_Syntax_Syntax.comp_thunk) } in FStar_Syntax_Syntax.lcomp_comp lc1 - | uu____5288 -> + | uu____5292 -> let c = FStar_Syntax_Syntax.lcomp_comp lc in - ((let uu____5291 = + ((let uu____5295 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) FStar_Options.Extreme in - if uu____5291 + if uu____5295 then - let uu____5295 = + let uu____5299 = FStar_TypeChecker_Normalize.term_to_string env lc.FStar_Syntax_Syntax.res_typ in - let uu____5297 = + let uu____5301 = FStar_TypeChecker_Normalize.term_to_string env t in - let uu____5299 = + let uu____5303 = FStar_TypeChecker_Normalize.comp_to_string env c in - let uu____5301 = + let uu____5305 = FStar_TypeChecker_Normalize.term_to_string env f1 in FStar_Util.print4 "Weakened from %s to %s\nStrengthening %s with guard %s\n" - uu____5295 uu____5297 uu____5299 - uu____5301 + uu____5299 uu____5301 uu____5303 + uu____5305 else ()); (let u_t_opt = comp_univ_opt c in let x = @@ -2387,111 +2387,111 @@ let (weaken_result_typ : let guard = if apply_guard1 then - let uu____5314 = - let uu____5319 = - let uu____5320 = + let uu____5318 = + let uu____5323 = + let uu____5324 = FStar_Syntax_Syntax.as_arg xexp in - [uu____5320] in + [uu____5324] in FStar_Syntax_Syntax.mk_Tm_app f1 - uu____5319 + uu____5323 in - uu____5314 FStar_Pervasives_Native.None + uu____5318 FStar_Pervasives_Native.None f1.FStar_Syntax_Syntax.pos else f1 in - let uu____5349 = - let uu____5354 = + let uu____5353 = + let uu____5358 = FStar_All.pipe_left (fun _0_1 -> FStar_Pervasives_Native.Some _0_1) (FStar_TypeChecker_Err.subtyping_failed env lc.FStar_Syntax_Syntax.res_typ t) in - let uu____5375 = + let uu____5379 = FStar_TypeChecker_Env.set_range env e.FStar_Syntax_Syntax.pos in - let uu____5376 = + let uu____5380 = FStar_Syntax_Util.lcomp_of_comp cret in - let uu____5377 = + let uu____5381 = FStar_All.pipe_left FStar_TypeChecker_Env.guard_of_guard_formula (FStar_TypeChecker_Common.NonTrivial guard) in - strengthen_precondition uu____5354 - uu____5375 e uu____5376 uu____5377 + strengthen_precondition uu____5358 + uu____5379 e uu____5380 uu____5381 in - match uu____5349 with + match uu____5353 with | (eq_ret,_trivial_so_ok_to_discard) -> let x1 = - let uu___367_5381 = x in + let uu___366_5385 = x in { FStar_Syntax_Syntax.ppname = - (uu___367_5381.FStar_Syntax_Syntax.ppname); + (uu___366_5385.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___367_5381.FStar_Syntax_Syntax.index); + (uu___366_5385.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = (lc.FStar_Syntax_Syntax.res_typ) } in let c1 = - let uu____5383 = + let uu____5387 = FStar_Syntax_Util.lcomp_of_comp c in bind e.FStar_Syntax_Syntax.pos env (FStar_Pervasives_Native.Some e) - uu____5383 + uu____5387 ((FStar_Pervasives_Native.Some x1), eq_ret) in let c2 = FStar_Syntax_Syntax.lcomp_comp c1 in - ((let uu____5388 = + ((let uu____5392 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) FStar_Options.Extreme in - if uu____5388 + if uu____5392 then - let uu____5392 = + let uu____5396 = FStar_TypeChecker_Normalize.comp_to_string env c2 in FStar_Util.print1 - "Strengthened to %s\n" uu____5392 + "Strengthened to %s\n" uu____5396 else ()); c2)))) in let flags1 = FStar_All.pipe_right lc.FStar_Syntax_Syntax.cflags (FStar_List.collect - (fun uu___346_5405 -> - match uu___346_5405 with + (fun uu___345_5409 -> + match uu___345_5409 with | FStar_Syntax_Syntax.RETURN -> [FStar_Syntax_Syntax.PARTIAL_RETURN] | FStar_Syntax_Syntax.PARTIAL_RETURN -> [FStar_Syntax_Syntax.PARTIAL_RETURN] | FStar_Syntax_Syntax.CPS -> [FStar_Syntax_Syntax.CPS] - | uu____5408 -> [])) + | uu____5412 -> [])) in let lc1 = - let uu____5410 = + let uu____5414 = FStar_TypeChecker_Env.norm_eff_name env lc.FStar_Syntax_Syntax.eff_name in - FStar_Syntax_Syntax.mk_lcomp uu____5410 t flags1 + FStar_Syntax_Syntax.mk_lcomp uu____5414 t flags1 strengthen in let g2 = - let uu___368_5412 = g1 in + let uu___367_5416 = g1 in { FStar_TypeChecker_Env.guard_f = FStar_TypeChecker_Common.Trivial; FStar_TypeChecker_Env.deferred = - (uu___368_5412.FStar_TypeChecker_Env.deferred); + (uu___367_5416.FStar_TypeChecker_Env.deferred); FStar_TypeChecker_Env.univ_ineqs = - (uu___368_5412.FStar_TypeChecker_Env.univ_ineqs); + (uu___367_5416.FStar_TypeChecker_Env.univ_ineqs); FStar_TypeChecker_Env.implicits = - (uu___368_5412.FStar_TypeChecker_Env.implicits) + (uu___367_5416.FStar_TypeChecker_Env.implicits) } in (e, lc1, g2))) @@ -2506,168 +2506,168 @@ let (pure_or_ghost_pre_and_post : let mk_post_type res_t ens = let x = FStar_Syntax_Syntax.new_bv FStar_Pervasives_Native.None res_t in - let uu____5448 = - let uu____5451 = - let uu____5456 = - let uu____5457 = - let uu____5466 = FStar_Syntax_Syntax.bv_to_name x in - FStar_Syntax_Syntax.as_arg uu____5466 in - [uu____5457] in - FStar_Syntax_Syntax.mk_Tm_app ens uu____5456 in - uu____5451 FStar_Pervasives_Native.None + let uu____5452 = + let uu____5455 = + let uu____5460 = + let uu____5461 = + let uu____5470 = FStar_Syntax_Syntax.bv_to_name x in + FStar_Syntax_Syntax.as_arg uu____5470 in + [uu____5461] in + FStar_Syntax_Syntax.mk_Tm_app ens uu____5460 in + uu____5455 FStar_Pervasives_Native.None res_t.FStar_Syntax_Syntax.pos in - FStar_Syntax_Util.refine x uu____5448 in + FStar_Syntax_Util.refine x uu____5452 in let norm1 t = FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.Beta; FStar_TypeChecker_Env.Eager_unfolding; FStar_TypeChecker_Env.EraseUniverses] env t in - let uu____5491 = FStar_Syntax_Util.is_tot_or_gtot_comp comp in - if uu____5491 + let uu____5495 = FStar_Syntax_Util.is_tot_or_gtot_comp comp in + if uu____5495 then (FStar_Pervasives_Native.None, (FStar_Syntax_Util.comp_result comp)) else (match comp.FStar_Syntax_Syntax.n with - | FStar_Syntax_Syntax.GTotal uu____5510 -> failwith "Impossible" - | FStar_Syntax_Syntax.Total uu____5526 -> failwith "Impossible" + | FStar_Syntax_Syntax.GTotal uu____5514 -> failwith "Impossible" + | FStar_Syntax_Syntax.Total uu____5530 -> failwith "Impossible" | FStar_Syntax_Syntax.Comp ct -> - let uu____5543 = + let uu____5547 = (FStar_Ident.lid_equals ct.FStar_Syntax_Syntax.effect_name FStar_Parser_Const.effect_Pure_lid) || (FStar_Ident.lid_equals ct.FStar_Syntax_Syntax.effect_name FStar_Parser_Const.effect_Ghost_lid) in - if uu____5543 + if uu____5547 then (match ct.FStar_Syntax_Syntax.effect_args with - | (req,uu____5559)::(ens,uu____5561)::uu____5562 -> - let uu____5605 = - let uu____5608 = norm1 req in - FStar_Pervasives_Native.Some uu____5608 in + | (req,uu____5563)::(ens,uu____5565)::uu____5566 -> let uu____5609 = - let uu____5610 = + let uu____5612 = norm1 req in + FStar_Pervasives_Native.Some uu____5612 in + let uu____5613 = + let uu____5614 = mk_post_type ct.FStar_Syntax_Syntax.result_typ ens in - FStar_All.pipe_left norm1 uu____5610 in - (uu____5605, uu____5609) - | uu____5613 -> - let uu____5624 = - let uu____5630 = - let uu____5632 = + FStar_All.pipe_left norm1 uu____5614 in + (uu____5609, uu____5613) + | uu____5617 -> + let uu____5628 = + let uu____5634 = + let uu____5636 = FStar_Syntax_Print.comp_to_string comp in FStar_Util.format1 "Effect constructor is not fully applied; got %s" - uu____5632 + uu____5636 in (FStar_Errors.Fatal_EffectConstructorNotFullyApplied, - uu____5630) + uu____5634) in - FStar_Errors.raise_error uu____5624 + FStar_Errors.raise_error uu____5628 comp.FStar_Syntax_Syntax.pos) else (let ct1 = FStar_TypeChecker_Env.unfold_effect_abbrev env comp in match ct1.FStar_Syntax_Syntax.effect_args with - | (wp,uu____5652)::uu____5653 -> - let uu____5680 = - let uu____5685 = + | (wp,uu____5656)::uu____5657 -> + let uu____5684 = + let uu____5689 = FStar_TypeChecker_Env.lookup_lid env FStar_Parser_Const.as_requires in FStar_All.pipe_left FStar_Pervasives_Native.fst - uu____5685 + uu____5689 in - (match uu____5680 with - | (us_r,uu____5717) -> - let uu____5718 = - let uu____5723 = + (match uu____5684 with + | (us_r,uu____5721) -> + let uu____5722 = + let uu____5727 = FStar_TypeChecker_Env.lookup_lid env FStar_Parser_Const.as_ensures in FStar_All.pipe_left FStar_Pervasives_Native.fst - uu____5723 + uu____5727 in - (match uu____5718 with - | (us_e,uu____5755) -> + (match uu____5722 with + | (us_e,uu____5759) -> let r = (ct1.FStar_Syntax_Syntax.result_typ).FStar_Syntax_Syntax.pos in let as_req = - let uu____5758 = - let uu____5759 = + let uu____5762 = + let uu____5763 = FStar_Ident.set_lid_range FStar_Parser_Const.as_requires r in - FStar_Syntax_Syntax.fvar uu____5759 + FStar_Syntax_Syntax.fvar uu____5763 FStar_Syntax_Syntax.delta_equational FStar_Pervasives_Native.None in - FStar_Syntax_Syntax.mk_Tm_uinst uu____5758 + FStar_Syntax_Syntax.mk_Tm_uinst uu____5762 us_r in let as_ens = - let uu____5761 = - let uu____5762 = + let uu____5765 = + let uu____5766 = FStar_Ident.set_lid_range FStar_Parser_Const.as_ensures r in - FStar_Syntax_Syntax.fvar uu____5762 + FStar_Syntax_Syntax.fvar uu____5766 FStar_Syntax_Syntax.delta_equational FStar_Pervasives_Native.None in - FStar_Syntax_Syntax.mk_Tm_uinst uu____5761 + FStar_Syntax_Syntax.mk_Tm_uinst uu____5765 us_e in let req = - let uu____5766 = - let uu____5771 = - let uu____5772 = - let uu____5783 = + let uu____5770 = + let uu____5775 = + let uu____5776 = + let uu____5787 = FStar_Syntax_Syntax.as_arg wp in - [uu____5783] in + [uu____5787] in ((ct1.FStar_Syntax_Syntax.result_typ), (FStar_Pervasives_Native.Some FStar_Syntax_Syntax.imp_tag)) - :: uu____5772 + :: uu____5776 in FStar_Syntax_Syntax.mk_Tm_app as_req - uu____5771 + uu____5775 in - uu____5766 FStar_Pervasives_Native.None + uu____5770 FStar_Pervasives_Native.None (ct1.FStar_Syntax_Syntax.result_typ).FStar_Syntax_Syntax.pos in let ens = - let uu____5825 = - let uu____5830 = - let uu____5831 = - let uu____5842 = + let uu____5829 = + let uu____5834 = + let uu____5835 = + let uu____5846 = FStar_Syntax_Syntax.as_arg wp in - [uu____5842] in + [uu____5846] in ((ct1.FStar_Syntax_Syntax.result_typ), (FStar_Pervasives_Native.Some FStar_Syntax_Syntax.imp_tag)) - :: uu____5831 + :: uu____5835 in FStar_Syntax_Syntax.mk_Tm_app as_ens - uu____5830 + uu____5834 in - uu____5825 FStar_Pervasives_Native.None + uu____5829 FStar_Pervasives_Native.None (ct1.FStar_Syntax_Syntax.result_typ).FStar_Syntax_Syntax.pos in - let uu____5881 = - let uu____5884 = norm1 req in - FStar_Pervasives_Native.Some uu____5884 in let uu____5885 = - let uu____5886 = + let uu____5888 = norm1 req in + FStar_Pervasives_Native.Some uu____5888 in + let uu____5889 = + let uu____5890 = mk_post_type ct1.FStar_Syntax_Syntax.result_typ ens in - norm1 uu____5886 in - (uu____5881, uu____5885))) - | uu____5889 -> failwith "Impossible")) + norm1 uu____5890 in + (uu____5885, uu____5889))) + | uu____5893 -> failwith "Impossible")) let (reify_body : FStar_TypeChecker_Env.env -> @@ -2684,15 +2684,15 @@ let (reify_body : FStar_TypeChecker_Env.EraseUniverses; FStar_TypeChecker_Env.AllowUnboundUniverses] env tm in - (let uu____5923 = + (let uu____5927 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "SMTEncodingReify") in - if uu____5923 + if uu____5927 then - let uu____5928 = FStar_Syntax_Print.term_to_string tm in - let uu____5930 = FStar_Syntax_Print.term_to_string tm' in - FStar_Util.print2 "Reified body %s \nto %s\n" uu____5928 uu____5930 + let uu____5932 = FStar_Syntax_Print.term_to_string tm in + let uu____5934 = FStar_Syntax_Print.term_to_string tm' in + FStar_Util.print2 "Reified body %s \nto %s\n" uu____5932 uu____5934 else ()); tm' @@ -2716,47 +2716,47 @@ let (reify_body_with_arg : FStar_TypeChecker_Env.EraseUniverses; FStar_TypeChecker_Env.AllowUnboundUniverses] env tm in - (let uu____5984 = + (let uu____5988 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "SMTEncodingReify") in - if uu____5984 + if uu____5988 then - let uu____5989 = FStar_Syntax_Print.term_to_string tm in - let uu____5991 = FStar_Syntax_Print.term_to_string tm' in - FStar_Util.print2 "Reified body %s \nto %s\n" uu____5989 - uu____5991 + let uu____5993 = FStar_Syntax_Print.term_to_string tm in + let uu____5995 = FStar_Syntax_Print.term_to_string tm' in + FStar_Util.print2 "Reified body %s \nto %s\n" uu____5993 + uu____5995 else ()); tm' let (remove_reify : FStar_Syntax_Syntax.term -> FStar_Syntax_Syntax.term) = fun t -> - let uu____6002 = - let uu____6004 = - let uu____6005 = FStar_Syntax_Subst.compress t in - uu____6005.FStar_Syntax_Syntax.n in - match uu____6004 with - | FStar_Syntax_Syntax.Tm_app uu____6009 -> false - | uu____6027 -> true in - if uu____6002 + let uu____6006 = + let uu____6008 = + let uu____6009 = FStar_Syntax_Subst.compress t in + uu____6009.FStar_Syntax_Syntax.n in + match uu____6008 with + | FStar_Syntax_Syntax.Tm_app uu____6013 -> false + | uu____6031 -> true in + if uu____6006 then t else - (let uu____6032 = FStar_Syntax_Util.head_and_args t in - match uu____6032 with + (let uu____6036 = FStar_Syntax_Util.head_and_args t in + match uu____6036 with | (head1,args) -> - let uu____6075 = - let uu____6077 = - let uu____6078 = FStar_Syntax_Subst.compress head1 in - uu____6078.FStar_Syntax_Syntax.n in - match uu____6077 with + let uu____6079 = + let uu____6081 = + let uu____6082 = FStar_Syntax_Subst.compress head1 in + uu____6082.FStar_Syntax_Syntax.n in + match uu____6081 with | FStar_Syntax_Syntax.Tm_constant (FStar_Const.Const_reify ) -> true - | uu____6083 -> false in - if uu____6075 + | uu____6087 -> false in + if uu____6079 then (match args with | x::[] -> FStar_Pervasives_Native.fst x - | uu____6115 -> + | uu____6119 -> failwith "Impossible : Reify applied to multiple arguments after normalization.") else t) @@ -2775,42 +2775,42 @@ let (maybe_instantiate : if Prims.op_Negation env.FStar_TypeChecker_Env.instantiate_imp then (e, torig, FStar_TypeChecker_Env.trivial_guard) else - ((let uu____6162 = + ((let uu____6166 = FStar_TypeChecker_Env.debug env FStar_Options.High in - if uu____6162 + if uu____6166 then - let uu____6165 = FStar_Syntax_Print.term_to_string e in - let uu____6167 = FStar_Syntax_Print.term_to_string t in - let uu____6169 = - let uu____6171 = FStar_TypeChecker_Env.expected_typ env in + let uu____6169 = FStar_Syntax_Print.term_to_string e in + let uu____6171 = FStar_Syntax_Print.term_to_string t in + let uu____6173 = + let uu____6175 = FStar_TypeChecker_Env.expected_typ env in FStar_Common.string_of_option - FStar_Syntax_Print.term_to_string uu____6171 + FStar_Syntax_Print.term_to_string uu____6175 in FStar_Util.print3 "maybe_instantiate: starting check for (%s) of type (%s), expected type is %s\n" - uu____6165 uu____6167 uu____6169 + uu____6169 uu____6171 uu____6173 else ()); (let number_of_implicits t1 = let t2 = FStar_TypeChecker_Normalize.unfold_whnf env t1 in - let uu____6184 = FStar_Syntax_Util.arrow_formals t2 in - match uu____6184 with - | (formals,uu____6200) -> + let uu____6188 = FStar_Syntax_Util.arrow_formals t2 in + match uu____6188 with + | (formals,uu____6204) -> let n_implicits = - let uu____6222 = + let uu____6226 = FStar_All.pipe_right formals (FStar_Util.prefix_until - (fun uu____6300 -> - match uu____6300 with - | (uu____6308,imp) -> + (fun uu____6304 -> + match uu____6304 with + | (uu____6312,imp) -> (FStar_Option.isNone imp) || - (let uu____6315 = + (let uu____6319 = FStar_Syntax_Util.eq_aqual imp (FStar_Pervasives_Native.Some FStar_Syntax_Syntax.Equality) in - uu____6315 = FStar_Syntax_Util.Equal))) + uu____6319 = FStar_Syntax_Util.Equal))) in - match uu____6222 with + match uu____6226 with | FStar_Pervasives_Native.None -> FStar_List.length formals | FStar_Pervasives_Native.Some @@ -2820,36 +2820,36 @@ let (maybe_instantiate : n_implicits in let inst_n_binders t1 = - let uu____6442 = FStar_TypeChecker_Env.expected_typ env in - match uu____6442 with + let uu____6446 = FStar_TypeChecker_Env.expected_typ env in + match uu____6446 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some expected_t -> let n_expected = number_of_implicits expected_t in let n_available = number_of_implicits t1 in if n_available < n_expected then - let uu____6470 = - let uu____6476 = - let uu____6478 = FStar_Util.string_of_int n_expected + let uu____6474 = + let uu____6480 = + let uu____6482 = FStar_Util.string_of_int n_expected in - let uu____6486 = FStar_Syntax_Print.term_to_string e + let uu____6490 = FStar_Syntax_Print.term_to_string e in - let uu____6488 = FStar_Util.string_of_int n_available + let uu____6492 = FStar_Util.string_of_int n_available in FStar_Util.format3 "Expected a term with %s implicit arguments, but %s has only %s" - uu____6478 uu____6486 uu____6488 + uu____6482 uu____6490 uu____6492 in (FStar_Errors.Fatal_MissingImplicitArguments, - uu____6476) + uu____6480) in - let uu____6498 = FStar_TypeChecker_Env.get_range env in - FStar_Errors.raise_error uu____6470 uu____6498 + let uu____6502 = FStar_TypeChecker_Env.get_range env in + FStar_Errors.raise_error uu____6474 uu____6502 else FStar_Pervasives_Native.Some (n_available - n_expected) in - let decr_inst uu___347_6526 = - match uu___347_6526 with + let decr_inst uu___346_6530 = + match uu___346_6530 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some i -> FStar_Pervasives_Native.Some (i - (Prims.parse_int "1")) @@ -2857,155 +2857,126 @@ let (maybe_instantiate : let t1 = FStar_TypeChecker_Normalize.unfold_whnf env t in match t1.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_arrow (bs,c) -> - let uu____6569 = FStar_Syntax_Subst.open_comp bs c in - (match uu____6569 with + let uu____6573 = FStar_Syntax_Subst.open_comp bs c in + (match uu____6573 with | (bs1,c1) -> let rec aux subst1 inst_n bs2 = match (inst_n, bs2) with - | (FStar_Pervasives_Native.Some _0_2,uu____6687) when + | (FStar_Pervasives_Native.Some _0_2,uu____6691) when _0_2 = (Prims.parse_int "0") -> ([], bs2, subst1, FStar_TypeChecker_Env.trivial_guard) - | (uu____6732,(x,FStar_Pervasives_Native.Some + | (uu____6736,(x,FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Implicit - uu____6734))::rest) + uu____6738))::rest) -> let t2 = FStar_Syntax_Subst.subst subst1 x.FStar_Syntax_Syntax.sort in - let uu____6768 = + let uu____6772 = new_implicit_var "Instantiation of implicit argument" e.FStar_Syntax_Syntax.pos env t2 in - (match uu____6768 with - | (v1,uu____6809,g) -> - ((let uu____6824 = + (match uu____6772 with + | (v1,uu____6813,g) -> + ((let uu____6828 = FStar_TypeChecker_Env.debug env FStar_Options.High in - if uu____6824 + if uu____6828 then - let uu____6827 = + let uu____6831 = FStar_Syntax_Print.term_to_string v1 in FStar_Util.print1 "maybe_instantiate: Instantiating implicit with %s\n" - uu____6827 + uu____6831 else ()); (let subst2 = (FStar_Syntax_Syntax.NT (x, v1)) :: subst1 in - let uu____6837 = + let uu____6841 = aux subst2 (decr_inst inst_n) rest in - match uu____6837 with + match uu____6841 with | (args,bs3,subst3,g') -> - let uu____6930 = + let uu____6934 = FStar_TypeChecker_Env.conj_guard g g' in (((v1, (FStar_Pervasives_Native.Some FStar_Syntax_Syntax.imp_tag)) :: - args), bs3, subst3, uu____6930)))) - | (uu____6957,(x,FStar_Pervasives_Native.Some + args), bs3, subst3, uu____6934)))) + | (uu____6961,(x,FStar_Pervasives_Native.Some (FStar_Syntax_Syntax.Meta tau))::rest) -> let t2 = FStar_Syntax_Subst.subst subst1 x.FStar_Syntax_Syntax.sort in - let uu____6994 = - new_implicit_var + let uu____6998 = + let uu____7011 = + let uu____7018 = + let uu____7023 = FStar_Dyn.mkdyn env in + (uu____7023, tau) in + FStar_Pervasives_Native.Some uu____7018 in + FStar_TypeChecker_Env.new_implicit_var_aux "Instantiation of meta argument" e.FStar_Syntax_Syntax.pos env t2 + FStar_Syntax_Syntax.Strict uu____7011 in - (match uu____6994 with - | (v1,uu____7035,g) -> - ((let uu____7050 = + (match uu____6998 with + | (v1,uu____7056,g) -> + ((let uu____7071 = FStar_TypeChecker_Env.debug env FStar_Options.High in - if uu____7050 + if uu____7071 then - let uu____7053 = + let uu____7074 = FStar_Syntax_Print.term_to_string v1 in FStar_Util.print1 "maybe_instantiate: Instantiating meta argument with %s\n" - uu____7053 + uu____7074 else ()); - (let mark_meta_implicits tau1 g1 = - let uu___369_7069 = g1 in - let uu____7070 = - FStar_List.map - (fun imp -> - let uu___370_7076 = imp in - { - FStar_TypeChecker_Env.imp_reason - = - (uu___370_7076.FStar_TypeChecker_Env.imp_reason); - FStar_TypeChecker_Env.imp_uvar = - (uu___370_7076.FStar_TypeChecker_Env.imp_uvar); - FStar_TypeChecker_Env.imp_tm = - (uu___370_7076.FStar_TypeChecker_Env.imp_tm); - FStar_TypeChecker_Env.imp_range - = - (uu___370_7076.FStar_TypeChecker_Env.imp_range); - FStar_TypeChecker_Env.imp_meta = - (FStar_Pervasives_Native.Some - (env, tau1)) - }) - g1.FStar_TypeChecker_Env.implicits - in - { - FStar_TypeChecker_Env.guard_f = - (uu___369_7069.FStar_TypeChecker_Env.guard_f); - FStar_TypeChecker_Env.deferred = - (uu___369_7069.FStar_TypeChecker_Env.deferred); - FStar_TypeChecker_Env.univ_ineqs = - (uu___369_7069.FStar_TypeChecker_Env.univ_ineqs); - FStar_TypeChecker_Env.implicits = - uu____7070 - } in - let g1 = mark_meta_implicits tau g in - let subst2 = + (let subst2 = (FStar_Syntax_Syntax.NT (x, v1)) :: subst1 in - let uu____7087 = + let uu____7084 = aux subst2 (decr_inst inst_n) rest in - match uu____7087 with + match uu____7084 with | (args,bs3,subst3,g') -> - let uu____7180 = - FStar_TypeChecker_Env.conj_guard g1 - g' + let uu____7177 = + FStar_TypeChecker_Env.conj_guard g g' in (((v1, (FStar_Pervasives_Native.Some FStar_Syntax_Syntax.imp_tag)) :: - args), bs3, subst3, uu____7180)))) - | (uu____7207,bs3) -> + args), bs3, subst3, uu____7177)))) + | (uu____7204,bs3) -> ([], bs3, subst1, FStar_TypeChecker_Env.trivial_guard) in - let uu____7255 = - let uu____7282 = inst_n_binders t1 in - aux [] uu____7282 bs1 in - (match uu____7255 with + let uu____7252 = + let uu____7279 = inst_n_binders t1 in + aux [] uu____7279 bs1 in + (match uu____7252 with | (args,bs2,subst1,guard) -> (match (args, bs2) with - | ([],uu____7354) -> (e, torig, guard) - | (uu____7385,[]) when - let uu____7416 = + | ([],uu____7351) -> (e, torig, guard) + | (uu____7382,[]) when + let uu____7413 = FStar_Syntax_Util.is_total_comp c1 in - Prims.op_Negation uu____7416 -> + Prims.op_Negation uu____7413 -> (e, torig, FStar_TypeChecker_Env.trivial_guard) - | uu____7418 -> + | uu____7415 -> let t2 = match bs2 with | [] -> FStar_Syntax_Util.comp_result c1 - | uu____7446 -> + | uu____7443 -> FStar_Syntax_Util.arrow bs2 c1 in let t3 = FStar_Syntax_Subst.subst subst1 t2 @@ -3016,20 +2987,20 @@ let (maybe_instantiate : e.FStar_Syntax_Syntax.pos in (e1, t3, guard)))) - | uu____7459 -> (e, torig, FStar_TypeChecker_Env.trivial_guard))) + | uu____7456 -> (e, torig, FStar_TypeChecker_Env.trivial_guard))) let (string_of_univs : FStar_Syntax_Syntax.universe_uvar FStar_Util.set -> Prims.string) = fun univs1 -> - let uu____7471 = - let uu____7475 = FStar_Util.set_elements univs1 in - FStar_All.pipe_right uu____7475 + let uu____7468 = + let uu____7472 = FStar_Util.set_elements univs1 in + FStar_All.pipe_right uu____7472 (FStar_List.map (fun u -> - let uu____7487 = FStar_Syntax_Unionfind.univ_uvar_id u in - FStar_All.pipe_right uu____7487 FStar_Util.string_of_int)) + let uu____7484 = FStar_Syntax_Unionfind.univ_uvar_id u in + FStar_All.pipe_right uu____7484 FStar_Util.string_of_int)) in - FStar_All.pipe_right uu____7471 (FStar_String.concat ", ") + FStar_All.pipe_right uu____7468 (FStar_String.concat ", ") let (gen_univs : FStar_TypeChecker_Env.env -> @@ -3038,56 +3009,56 @@ let (gen_univs : = fun env -> fun x -> - let uu____7515 = FStar_Util.set_is_empty x in - if uu____7515 + let uu____7512 = FStar_Util.set_is_empty x in + if uu____7512 then [] else (let s = - let uu____7533 = - let uu____7536 = FStar_TypeChecker_Env.univ_vars env in - FStar_Util.set_difference x uu____7536 in - FStar_All.pipe_right uu____7533 FStar_Util.set_elements in - (let uu____7552 = + let uu____7530 = + let uu____7533 = FStar_TypeChecker_Env.univ_vars env in + FStar_Util.set_difference x uu____7533 in + FStar_All.pipe_right uu____7530 FStar_Util.set_elements in + (let uu____7549 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Gen") in - if uu____7552 + if uu____7549 then - let uu____7557 = - let uu____7559 = FStar_TypeChecker_Env.univ_vars env in - string_of_univs uu____7559 in - FStar_Util.print1 "univ_vars in env: %s\n" uu____7557 + let uu____7554 = + let uu____7556 = FStar_TypeChecker_Env.univ_vars env in + string_of_univs uu____7556 in + FStar_Util.print1 "univ_vars in env: %s\n" uu____7554 else ()); (let r = - let uu____7568 = FStar_TypeChecker_Env.get_range env in - FStar_Pervasives_Native.Some uu____7568 in + let uu____7565 = FStar_TypeChecker_Env.get_range env in + FStar_Pervasives_Native.Some uu____7565 in let u_names = FStar_All.pipe_right s (FStar_List.map (fun u -> let u_name = FStar_Syntax_Syntax.new_univ_name r in - (let uu____7607 = + (let uu____7604 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Gen") in - if uu____7607 + if uu____7604 then - let uu____7612 = - let uu____7614 = + let uu____7609 = + let uu____7611 = FStar_Syntax_Unionfind.univ_uvar_id u in FStar_All.pipe_left FStar_Util.string_of_int - uu____7614 + uu____7611 in - let uu____7618 = + let uu____7615 = FStar_Syntax_Print.univ_to_string (FStar_Syntax_Syntax.U_unif u) in - let uu____7620 = + let uu____7617 = FStar_Syntax_Print.univ_to_string (FStar_Syntax_Syntax.U_name u_name) in FStar_Util.print3 "Setting ?%s (%s) to %s\n" - uu____7612 uu____7618 uu____7620 + uu____7609 uu____7615 uu____7617 else ()); FStar_Syntax_Unionfind.univ_change u (FStar_Syntax_Syntax.U_name u_name); @@ -3104,9 +3075,9 @@ let (gather_free_univnames : let ctx_univnames = FStar_TypeChecker_Env.univnames env in let tm_univnames = FStar_Syntax_Free.univnames t in let univnames1 = - let uu____7650 = FStar_Util.set_difference tm_univnames ctx_univnames + let uu____7647 = FStar_Util.set_difference tm_univnames ctx_univnames in - FStar_All.pipe_right uu____7650 FStar_Util.set_elements in + FStar_All.pipe_right uu____7647 FStar_Util.set_elements in univnames1 let (check_universe_generalization : @@ -3118,19 +3089,19 @@ let (check_universe_generalization : fun generalized_univ_names -> fun t -> match (explicit_univ_names, generalized_univ_names) with - | ([],uu____7689) -> generalized_univ_names - | (uu____7696,[]) -> explicit_univ_names - | uu____7703 -> - let uu____7712 = - let uu____7718 = - let uu____7720 = FStar_Syntax_Print.term_to_string t in + | ([],uu____7686) -> generalized_univ_names + | (uu____7693,[]) -> explicit_univ_names + | uu____7700 -> + let uu____7709 = + let uu____7715 = + let uu____7717 = FStar_Syntax_Print.term_to_string t in Prims.strcat "Generalized universe in a term containing explicit universe annotation : " - uu____7720 + uu____7717 in - (FStar_Errors.Fatal_UnexpectedGeneralizedUniverse, uu____7718) + (FStar_Errors.Fatal_UnexpectedGeneralizedUniverse, uu____7715) in - FStar_Errors.raise_error uu____7712 t.FStar_Syntax_Syntax.pos + FStar_Errors.raise_error uu____7709 t.FStar_Syntax_Syntax.pos let (generalize_universes : FStar_TypeChecker_Env.env -> @@ -3145,40 +3116,40 @@ let (generalize_universes : FStar_TypeChecker_Env.DoNotUnfoldPureLets] env t0 in let univnames1 = gather_free_univnames env t in - (let uu____7742 = + (let uu____7739 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Gen") in - if uu____7742 + if uu____7739 then - let uu____7747 = FStar_Syntax_Print.term_to_string t in - let uu____7749 = FStar_Syntax_Print.univ_names_to_string univnames1 + let uu____7744 = FStar_Syntax_Print.term_to_string t in + let uu____7746 = FStar_Syntax_Print.univ_names_to_string univnames1 in FStar_Util.print2 "generalizing universes in the term (post norm): %s with univnames: %s\n" - uu____7747 uu____7749 + uu____7744 uu____7746 else ()); (let univs1 = FStar_Syntax_Free.univs t in - (let uu____7758 = + (let uu____7755 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Gen") in - if uu____7758 + if uu____7755 then - let uu____7763 = string_of_univs univs1 in - FStar_Util.print1 "univs to gen : %s\n" uu____7763 + let uu____7760 = string_of_univs univs1 in + FStar_Util.print1 "univs to gen : %s\n" uu____7760 else ()); (let gen1 = gen_univs env univs1 in - (let uu____7772 = + (let uu____7769 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Gen") in - if uu____7772 + if uu____7769 then - let uu____7777 = FStar_Syntax_Print.term_to_string t in - let uu____7779 = FStar_Syntax_Print.univ_names_to_string gen1 in + let uu____7774 = FStar_Syntax_Print.term_to_string t in + let uu____7776 = FStar_Syntax_Print.univ_names_to_string gen1 in FStar_Util.print2 "After generalization, t: %s and univs: %s\n" - uu____7777 uu____7779 + uu____7774 uu____7776 else ()); (let univs2 = check_universe_generalization univnames1 gen1 t0 in let t1 = FStar_TypeChecker_Normalize.reduce_uvar_solutions env t in @@ -3199,26 +3170,26 @@ let (gen : fun env -> fun is_rec -> fun lecs -> - let uu____7863 = - let uu____7865 = + let uu____7860 = + let uu____7862 = FStar_Util.for_all - (fun uu____7879 -> - match uu____7879 with - | (uu____7889,uu____7890,c) -> + (fun uu____7876 -> + match uu____7876 with + | (uu____7886,uu____7887,c) -> FStar_Syntax_Util.is_pure_or_ghost_comp c) lecs in - FStar_All.pipe_left Prims.op_Negation uu____7865 in - if uu____7863 + FStar_All.pipe_left Prims.op_Negation uu____7862 in + if uu____7860 then FStar_Pervasives_Native.None else (let norm1 c = - (let uu____7942 = + (let uu____7939 = FStar_TypeChecker_Env.debug env FStar_Options.Medium in - if uu____7942 + if uu____7939 then - let uu____7945 = FStar_Syntax_Print.comp_to_string c in + let uu____7942 = FStar_Syntax_Print.comp_to_string c in FStar_Util.print1 "Normalizing before generalizing:\n\t %s\n" - uu____7945 + uu____7942 else ()); (let c1 = FStar_TypeChecker_Normalize.normalize_comp @@ -3227,157 +3198,157 @@ let (gen : FStar_TypeChecker_Env.NoFullNorm; FStar_TypeChecker_Env.DoNotUnfoldPureLets] env c in - (let uu____7952 = + (let uu____7949 = FStar_TypeChecker_Env.debug env FStar_Options.Medium in - if uu____7952 + if uu____7949 then - let uu____7955 = FStar_Syntax_Print.comp_to_string c1 in - FStar_Util.print1 "Normalized to:\n\t %s\n" uu____7955 + let uu____7952 = FStar_Syntax_Print.comp_to_string c1 in + FStar_Util.print1 "Normalized to:\n\t %s\n" uu____7952 else ()); c1) in let env_uvars = FStar_TypeChecker_Env.uvars_in_env env in let gen_uvars uvs = - let uu____7973 = FStar_Util.set_difference uvs env_uvars in - FStar_All.pipe_right uu____7973 FStar_Util.set_elements in - let univs_and_uvars_of_lec uu____8007 = - match uu____8007 with + let uu____7970 = FStar_Util.set_difference uvs env_uvars in + FStar_All.pipe_right uu____7970 FStar_Util.set_elements in + let univs_and_uvars_of_lec uu____8004 = + match uu____8004 with | (lbname,e,c) -> let c1 = norm1 c in let t = FStar_Syntax_Util.comp_result c1 in let univs1 = FStar_Syntax_Free.univs t in let uvt = FStar_Syntax_Free.uvars t in - ((let uu____8044 = + ((let uu____8041 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Gen") in - if uu____8044 + if uu____8041 then - let uu____8049 = - let uu____8051 = - let uu____8055 = FStar_Util.set_elements univs1 in - FStar_All.pipe_right uu____8055 + let uu____8046 = + let uu____8048 = + let uu____8052 = FStar_Util.set_elements univs1 in + FStar_All.pipe_right uu____8052 (FStar_List.map (fun u -> FStar_Syntax_Print.univ_to_string (FStar_Syntax_Syntax.U_unif u))) in - FStar_All.pipe_right uu____8051 + FStar_All.pipe_right uu____8048 (FStar_String.concat ", ") in - let uu____8103 = - let uu____8105 = - let uu____8109 = FStar_Util.set_elements uvt in - FStar_All.pipe_right uu____8109 + let uu____8100 = + let uu____8102 = + let uu____8106 = FStar_Util.set_elements uvt in + FStar_All.pipe_right uu____8106 (FStar_List.map (fun u -> - let uu____8122 = + let uu____8119 = FStar_Syntax_Print.uvar_to_string u.FStar_Syntax_Syntax.ctx_uvar_head in - let uu____8124 = + let uu____8121 = FStar_Syntax_Print.term_to_string u.FStar_Syntax_Syntax.ctx_uvar_typ in - FStar_Util.format2 "(%s : %s)" uu____8122 - uu____8124)) + FStar_Util.format2 "(%s : %s)" uu____8119 + uu____8121)) in - FStar_All.pipe_right uu____8105 + FStar_All.pipe_right uu____8102 (FStar_String.concat ", ") in FStar_Util.print2 - "^^^^\n\tFree univs = %s\n\tFree uvt=%s\n" uu____8049 - uu____8103 + "^^^^\n\tFree univs = %s\n\tFree uvt=%s\n" uu____8046 + uu____8100 else ()); (let univs2 = - let uu____8138 = FStar_Util.set_elements uvt in + let uu____8135 = FStar_Util.set_elements uvt in FStar_List.fold_left (fun univs2 -> fun uv -> - let uu____8150 = + let uu____8147 = FStar_Syntax_Free.univs uv.FStar_Syntax_Syntax.ctx_uvar_typ in - FStar_Util.set_union univs2 uu____8150) univs1 - uu____8138 + FStar_Util.set_union univs2 uu____8147) univs1 + uu____8135 in let uvs = gen_uvars uvt in - (let uu____8157 = + (let uu____8154 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Gen") in - if uu____8157 + if uu____8154 then - let uu____8162 = - let uu____8164 = - let uu____8168 = FStar_Util.set_elements univs2 in - FStar_All.pipe_right uu____8168 + let uu____8159 = + let uu____8161 = + let uu____8165 = FStar_Util.set_elements univs2 in + FStar_All.pipe_right uu____8165 (FStar_List.map (fun u -> FStar_Syntax_Print.univ_to_string (FStar_Syntax_Syntax.U_unif u))) in - FStar_All.pipe_right uu____8164 + FStar_All.pipe_right uu____8161 (FStar_String.concat ", ") in - let uu____8216 = - let uu____8218 = + let uu____8213 = + let uu____8215 = FStar_All.pipe_right uvs (FStar_List.map (fun u -> - let uu____8232 = + let uu____8229 = FStar_Syntax_Print.uvar_to_string u.FStar_Syntax_Syntax.ctx_uvar_head in - let uu____8234 = + let uu____8231 = FStar_TypeChecker_Normalize.term_to_string env u.FStar_Syntax_Syntax.ctx_uvar_typ in - FStar_Util.format2 "(%s : %s)" uu____8232 - uu____8234)) + FStar_Util.format2 "(%s : %s)" uu____8229 + uu____8231)) in - FStar_All.pipe_right uu____8218 + FStar_All.pipe_right uu____8215 (FStar_String.concat ", ") in FStar_Util.print2 - "^^^^\n\tFree univs = %s\n\tgen_uvars =%s" uu____8162 - uu____8216 + "^^^^\n\tFree univs = %s\n\tgen_uvars =%s" uu____8159 + uu____8213 else ()); (univs2, uvs, (lbname, e, c1)))) in - let uu____8255 = - let uu____8272 = FStar_List.hd lecs in - univs_and_uvars_of_lec uu____8272 in - match uu____8255 with + let uu____8252 = + let uu____8269 = FStar_List.hd lecs in + univs_and_uvars_of_lec uu____8269 in + match uu____8252 with | (univs1,uvs,lec_hd) -> let force_univs_eq lec2 u1 u2 = - let uu____8362 = + let uu____8359 = (FStar_Util.set_is_subset_of u1 u2) && (FStar_Util.set_is_subset_of u2 u1) in - if uu____8362 + if uu____8359 then () else - (let uu____8367 = lec_hd in - match uu____8367 with - | (lb1,uu____8375,uu____8376) -> - let uu____8377 = lec2 in - (match uu____8377 with - | (lb2,uu____8385,uu____8386) -> + (let uu____8364 = lec_hd in + match uu____8364 with + | (lb1,uu____8372,uu____8373) -> + let uu____8374 = lec2 in + (match uu____8374 with + | (lb2,uu____8382,uu____8383) -> let msg = - let uu____8389 = + let uu____8386 = FStar_Syntax_Print.lbname_to_string lb1 in - let uu____8391 = + let uu____8388 = FStar_Syntax_Print.lbname_to_string lb2 in FStar_Util.format2 "Generalizing the types of these mutually recursive definitions requires an incompatible set of universes for %s and %s" - uu____8389 uu____8391 + uu____8386 uu____8388 in - let uu____8394 = + let uu____8391 = FStar_TypeChecker_Env.get_range env in FStar_Errors.raise_error (FStar_Errors.Fatal_IncompatibleSetOfUniverse, - msg) uu____8394)) + msg) uu____8391)) in let force_uvars_eq lec2 u1 u2 = let uvars_subseteq u11 u21 = @@ -3391,85 +3362,85 @@ let (gen : u.FStar_Syntax_Syntax.ctx_uvar_head u'.FStar_Syntax_Syntax.ctx_uvar_head)))) in - let uu____8462 = + let uu____8459 = (uvars_subseteq u1 u2) && (uvars_subseteq u2 u1) in - if uu____8462 + if uu____8459 then () else - (let uu____8467 = lec_hd in - match uu____8467 with - | (lb1,uu____8475,uu____8476) -> - let uu____8477 = lec2 in - (match uu____8477 with - | (lb2,uu____8485,uu____8486) -> + (let uu____8464 = lec_hd in + match uu____8464 with + | (lb1,uu____8472,uu____8473) -> + let uu____8474 = lec2 in + (match uu____8474 with + | (lb2,uu____8482,uu____8483) -> let msg = - let uu____8489 = + let uu____8486 = FStar_Syntax_Print.lbname_to_string lb1 in - let uu____8491 = + let uu____8488 = FStar_Syntax_Print.lbname_to_string lb2 in FStar_Util.format2 "Generalizing the types of these mutually recursive definitions requires an incompatible number of types for %s and %s" - uu____8489 uu____8491 + uu____8486 uu____8488 in - let uu____8494 = + let uu____8491 = FStar_TypeChecker_Env.get_range env in FStar_Errors.raise_error (FStar_Errors.Fatal_IncompatibleNumberOfTypes, - msg) uu____8494)) + msg) uu____8491)) in let lecs1 = - let uu____8505 = FStar_List.tl lecs in + let uu____8502 = FStar_List.tl lecs in FStar_List.fold_right (fun this_lec -> fun lecs1 -> - let uu____8558 = univs_and_uvars_of_lec this_lec in - match uu____8558 with + let uu____8555 = univs_and_uvars_of_lec this_lec in + match uu____8555 with | (this_univs,this_uvs,this_lec1) -> (force_univs_eq this_lec1 univs1 this_univs; force_uvars_eq this_lec1 uvs this_uvs; this_lec1 :: - lecs1)) uu____8505 [] + lecs1)) uu____8502 [] in let lecs2 = lec_hd :: lecs1 in let gen_types uvs1 = let fail1 k = - let uu____8659 = lec_hd in - match uu____8659 with + let uu____8660 = lec_hd in + match uu____8660 with | (lbname,e,c) -> - let uu____8669 = - let uu____8675 = - let uu____8677 = + let uu____8670 = + let uu____8676 = + let uu____8678 = FStar_Syntax_Print.term_to_string k in - let uu____8679 = + let uu____8680 = FStar_Syntax_Print.lbname_to_string lbname in - let uu____8681 = + let uu____8682 = FStar_Syntax_Print.term_to_string (FStar_Syntax_Util.comp_result c) in FStar_Util.format3 "Failed to resolve implicit argument of type '%s' in the type of %s (%s)" - uu____8677 uu____8679 uu____8681 + uu____8678 uu____8680 uu____8682 in (FStar_Errors.Fatal_FailToResolveImplicitArgument, - uu____8675) + uu____8676) in - let uu____8685 = FStar_TypeChecker_Env.get_range env + let uu____8686 = FStar_TypeChecker_Env.get_range env in - FStar_Errors.raise_error uu____8669 uu____8685 + FStar_Errors.raise_error uu____8670 uu____8686 in FStar_All.pipe_right uvs1 (FStar_List.map (fun u -> - let uu____8706 = + let uu____8705 = FStar_Syntax_Unionfind.find u.FStar_Syntax_Syntax.ctx_uvar_head in - match uu____8706 with - | FStar_Pervasives_Native.Some uu____8715 -> + match uu____8705 with + | FStar_Pervasives_Native.Some uu____8714 -> failwith "Unexpected instantiation of mutually recursive uvar" - | uu____8723 -> + | uu____8722 -> let k = FStar_TypeChecker_Normalize.normalize [FStar_TypeChecker_Env.Beta; @@ -3477,52 +3448,52 @@ let (gen : FStar_TypeChecker_Env.Zeta] env u.FStar_Syntax_Syntax.ctx_uvar_typ in - let uu____8727 = + let uu____8726 = FStar_Syntax_Util.arrow_formals k in - (match uu____8727 with + (match uu____8726 with | (bs,kres) -> - ((let uu____8771 = - let uu____8772 = - let uu____8775 = + ((let uu____8770 = + let uu____8771 = + let uu____8774 = FStar_TypeChecker_Normalize.unfold_whnf env kres in - FStar_Syntax_Util.unrefine uu____8775 + FStar_Syntax_Util.unrefine uu____8774 in - uu____8772.FStar_Syntax_Syntax.n in - match uu____8771 with - | FStar_Syntax_Syntax.Tm_type uu____8776 + uu____8771.FStar_Syntax_Syntax.n in + match uu____8770 with + | FStar_Syntax_Syntax.Tm_type uu____8775 -> let free = FStar_Syntax_Free.names kres in - let uu____8780 = - let uu____8782 = + let uu____8779 = + let uu____8781 = FStar_Util.set_is_empty free in - Prims.op_Negation uu____8782 in - if uu____8780 then fail1 kres else () - | uu____8787 -> fail1 kres); + Prims.op_Negation uu____8781 in + if uu____8779 then fail1 kres else () + | uu____8786 -> fail1 kres); (let a = - let uu____8789 = - let uu____8792 = + let uu____8788 = + let uu____8791 = FStar_TypeChecker_Env.get_range env in FStar_All.pipe_left (fun _0_3 -> FStar_Pervasives_Native.Some - _0_3) uu____8792 + _0_3) uu____8791 in - FStar_Syntax_Syntax.new_bv uu____8789 + FStar_Syntax_Syntax.new_bv uu____8788 kres in let t = match bs with | [] -> FStar_Syntax_Syntax.bv_to_name a - | uu____8802 -> - let uu____8811 = + | uu____8801 -> + let uu____8810 = FStar_Syntax_Syntax.bv_to_name a in - FStar_Syntax_Util.abs bs uu____8811 + FStar_Syntax_Util.abs bs uu____8810 (FStar_Pervasives_Native.Some (FStar_Syntax_Util.residual_tot kres)) @@ -3538,15 +3509,15 @@ let (gen : let ecs = FStar_All.pipe_right lecs2 (FStar_List.map - (fun uu____8918 -> - match uu____8918 with + (fun uu____8913 -> + match uu____8913 with | (lbname,e,c) -> - let uu____8966 = + let uu____8959 = match (gen_tvars, gen_univs1) with | ([],[]) -> (e, c, []) - | uu____9041 -> - let uu____9056 = (e, c) in - (match uu____9056 with + | uu____9020 -> + let uu____9033 = (e, c) in + (match uu____9033 with | (e0,c0) -> let c1 = FStar_TypeChecker_Normalize.normalize_comp @@ -3567,26 +3538,26 @@ let (gen : then let tvar_args = FStar_List.map - (fun uu____9100 -> - match uu____9100 with - | (x,uu____9108) -> - let uu____9113 = + (fun uu____9073 -> + match uu____9073 with + | (x,uu____9079) -> + let uu____9080 = FStar_Syntax_Syntax.bv_to_name x in FStar_Syntax_Syntax.iarg - uu____9113) + uu____9080) gen_tvars in let instantiate_lbname_with_app tm fv = - let uu____9131 = - let uu____9133 = + let uu____9098 = + let uu____9100 = FStar_Util.right lbname in FStar_Syntax_Syntax.fv_eq fv - uu____9133 + uu____9100 in - if uu____9131 + if uu____9098 then FStar_Syntax_Syntax.mk_Tm_app tm tvar_args @@ -3597,27 +3568,27 @@ let (gen : instantiate_lbname_with_app e1 else e1 in let t = - let uu____9142 = - let uu____9143 = + let uu____9109 = + let uu____9110 = FStar_Syntax_Subst.compress (FStar_Syntax_Util.comp_result c1) in - uu____9143.FStar_Syntax_Syntax.n + uu____9110.FStar_Syntax_Syntax.n in - match uu____9142 with + match uu____9109 with | FStar_Syntax_Syntax.Tm_arrow (bs,cod) -> - let uu____9168 = + let uu____9135 = FStar_Syntax_Subst.open_comp bs cod in - (match uu____9168 with + (match uu____9135 with | (bs1,cod1) -> FStar_Syntax_Util.arrow (FStar_List.append gen_tvars bs1) cod1) - | uu____9181 -> + | uu____9146 -> FStar_Syntax_Util.arrow gen_tvars c1 in @@ -3627,11 +3598,11 @@ let (gen : (FStar_Syntax_Util.residual_comp_of_comp c1)) in - let uu____9185 = + let uu____9150 = FStar_Syntax_Syntax.mk_Total t in - (e', uu____9185, gen_tvars)) + (e', uu____9150, gen_tvars)) in - (match uu____8966 with + (match uu____8959 with | (e1,c1,gvs) -> (lbname, gen_univs1, e1, c1, gvs)))) in @@ -3649,78 +3620,78 @@ let (generalize : fun env -> fun is_rec -> fun lecs -> - (let uu____9342 = FStar_TypeChecker_Env.debug env FStar_Options.Low + (let uu____9297 = FStar_TypeChecker_Env.debug env FStar_Options.Low in - if uu____9342 + if uu____9297 then - let uu____9345 = - let uu____9347 = + let uu____9300 = + let uu____9302 = FStar_List.map - (fun uu____9362 -> - match uu____9362 with - | (lb,uu____9371,uu____9372) -> + (fun uu____9317 -> + match uu____9317 with + | (lb,uu____9326,uu____9327) -> FStar_Syntax_Print.lbname_to_string lb) lecs in - FStar_All.pipe_right uu____9347 (FStar_String.concat ", ") in - FStar_Util.print1 "Generalizing: %s\n" uu____9345 + FStar_All.pipe_right uu____9302 (FStar_String.concat ", ") in + FStar_Util.print1 "Generalizing: %s\n" uu____9300 else ()); (let univnames_lecs = FStar_List.map - (fun uu____9398 -> - match uu____9398 with + (fun uu____9353 -> + match uu____9353 with | (l,t,c) -> gather_free_univnames env t) lecs in let generalized_lecs = - let uu____9427 = gen env is_rec lecs in - match uu____9427 with + let uu____9382 = gen env is_rec lecs in + match uu____9382 with | FStar_Pervasives_Native.None -> FStar_All.pipe_right lecs (FStar_List.map - (fun uu____9526 -> - match uu____9526 with | (l,t,c) -> (l, [], t, c, []))) + (fun uu____9481 -> + match uu____9481 with | (l,t,c) -> (l, [], t, c, []))) | FStar_Pervasives_Native.Some luecs -> - ((let uu____9588 = + ((let uu____9543 = FStar_TypeChecker_Env.debug env FStar_Options.Medium in - if uu____9588 + if uu____9543 then FStar_All.pipe_right luecs (FStar_List.iter - (fun uu____9636 -> - match uu____9636 with + (fun uu____9591 -> + match uu____9591 with | (l,us,e,c,gvs) -> - let uu____9670 = + let uu____9625 = FStar_Range.string_of_range e.FStar_Syntax_Syntax.pos in - let uu____9672 = + let uu____9627 = FStar_Syntax_Print.lbname_to_string l in - let uu____9674 = + let uu____9629 = FStar_Syntax_Print.term_to_string (FStar_Syntax_Util.comp_result c) in - let uu____9676 = + let uu____9631 = FStar_Syntax_Print.term_to_string e in - let uu____9678 = + let uu____9633 = FStar_Syntax_Print.binders_to_string ", " gvs in FStar_Util.print5 "(%s) Generalized %s at type %s\n%s\nVars = (%s)\n" - uu____9670 uu____9672 uu____9674 uu____9676 - uu____9678)) + uu____9625 uu____9627 uu____9629 uu____9631 + uu____9633)) else ()); luecs) in FStar_List.map2 (fun univnames1 -> - fun uu____9723 -> - match uu____9723 with + fun uu____9678 -> + match uu____9678 with | (l,generalized_univs,t,c,gvs) -> - let uu____9767 = + let uu____9722 = check_universe_generalization univnames1 generalized_univs t in - (l, uu____9767, t, c, gvs)) univnames_lecs + (l, uu____9722, t, c, gvs)) univnames_lecs generalized_lecs) let (check_and_ascribe : @@ -3741,156 +3712,156 @@ let (check_and_ascribe : if env2.FStar_TypeChecker_Env.use_eq then FStar_TypeChecker_Rel.try_teq true env2 t11 t21 else - (let uu____9828 = + (let uu____9783 = FStar_TypeChecker_Rel.get_subtyping_predicate env2 t11 t21 in - match uu____9828 with + match uu____9783 with | FStar_Pervasives_Native.None -> FStar_Pervasives_Native.None | FStar_Pervasives_Native.Some f -> - let uu____9834 = FStar_TypeChecker_Env.apply_guard f e in + let uu____9789 = FStar_TypeChecker_Env.apply_guard f e in FStar_All.pipe_left (fun _0_4 -> FStar_Pervasives_Native.Some _0_4) - uu____9834) + uu____9789) in let is_var e1 = - let uu____9844 = - let uu____9845 = FStar_Syntax_Subst.compress e1 in - uu____9845.FStar_Syntax_Syntax.n in - match uu____9844 with - | FStar_Syntax_Syntax.Tm_name uu____9849 -> true - | uu____9851 -> false in + let uu____9799 = + let uu____9800 = FStar_Syntax_Subst.compress e1 in + uu____9800.FStar_Syntax_Syntax.n in + match uu____9799 with + | FStar_Syntax_Syntax.Tm_name uu____9804 -> true + | uu____9806 -> false in let decorate e1 t = let e2 = FStar_Syntax_Subst.compress e1 in match e2.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_name x -> FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_name - (let uu___371_9872 = x in + (let uu___368_9827 = x in { FStar_Syntax_Syntax.ppname = - (uu___371_9872.FStar_Syntax_Syntax.ppname); + (uu___368_9827.FStar_Syntax_Syntax.ppname); FStar_Syntax_Syntax.index = - (uu___371_9872.FStar_Syntax_Syntax.index); + (uu___368_9827.FStar_Syntax_Syntax.index); FStar_Syntax_Syntax.sort = t2 })) FStar_Pervasives_Native.None e2.FStar_Syntax_Syntax.pos - | uu____9873 -> e2 in + | uu____9828 -> e2 in let env2 = - let uu___372_9875 = env1 in - let uu____9876 = + let uu___369_9830 = env1 in + let uu____9831 = env1.FStar_TypeChecker_Env.use_eq || (env1.FStar_TypeChecker_Env.is_pattern && (is_var e)) in { FStar_TypeChecker_Env.solver = - (uu___372_9875.FStar_TypeChecker_Env.solver); + (uu___369_9830.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___372_9875.FStar_TypeChecker_Env.range); + (uu___369_9830.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___372_9875.FStar_TypeChecker_Env.curmodule); + (uu___369_9830.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___372_9875.FStar_TypeChecker_Env.gamma); + (uu___369_9830.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___372_9875.FStar_TypeChecker_Env.gamma_sig); + (uu___369_9830.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___372_9875.FStar_TypeChecker_Env.gamma_cache); + (uu___369_9830.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___372_9875.FStar_TypeChecker_Env.modules); + (uu___369_9830.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___372_9875.FStar_TypeChecker_Env.expected_typ); + (uu___369_9830.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___372_9875.FStar_TypeChecker_Env.sigtab); + (uu___369_9830.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___372_9875.FStar_TypeChecker_Env.attrtab); + (uu___369_9830.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___372_9875.FStar_TypeChecker_Env.is_pattern); + (uu___369_9830.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___372_9875.FStar_TypeChecker_Env.instantiate_imp); + (uu___369_9830.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___372_9875.FStar_TypeChecker_Env.effects); + (uu___369_9830.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___372_9875.FStar_TypeChecker_Env.generalize); + (uu___369_9830.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___372_9875.FStar_TypeChecker_Env.letrecs); + (uu___369_9830.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___372_9875.FStar_TypeChecker_Env.top_level); + (uu___369_9830.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___372_9875.FStar_TypeChecker_Env.check_uvars); - FStar_TypeChecker_Env.use_eq = uu____9876; + (uu___369_9830.FStar_TypeChecker_Env.check_uvars); + FStar_TypeChecker_Env.use_eq = uu____9831; FStar_TypeChecker_Env.is_iface = - (uu___372_9875.FStar_TypeChecker_Env.is_iface); + (uu___369_9830.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___372_9875.FStar_TypeChecker_Env.admit); + (uu___369_9830.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___372_9875.FStar_TypeChecker_Env.lax); + (uu___369_9830.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___372_9875.FStar_TypeChecker_Env.lax_universes); + (uu___369_9830.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___372_9875.FStar_TypeChecker_Env.phase1); + (uu___369_9830.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___372_9875.FStar_TypeChecker_Env.failhard); + (uu___369_9830.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___372_9875.FStar_TypeChecker_Env.nosynth); + (uu___369_9830.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___372_9875.FStar_TypeChecker_Env.uvar_subtyping); + (uu___369_9830.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___372_9875.FStar_TypeChecker_Env.tc_term); + (uu___369_9830.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___372_9875.FStar_TypeChecker_Env.type_of); + (uu___369_9830.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___372_9875.FStar_TypeChecker_Env.universe_of); + (uu___369_9830.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___372_9875.FStar_TypeChecker_Env.check_type_of); + (uu___369_9830.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___372_9875.FStar_TypeChecker_Env.use_bv_sorts); + (uu___369_9830.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___372_9875.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___369_9830.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___372_9875.FStar_TypeChecker_Env.normalized_eff_names); + (uu___369_9830.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___372_9875.FStar_TypeChecker_Env.fv_delta_depths); + (uu___369_9830.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___372_9875.FStar_TypeChecker_Env.proof_ns); + (uu___369_9830.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___372_9875.FStar_TypeChecker_Env.synth_hook); + (uu___369_9830.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___372_9875.FStar_TypeChecker_Env.splice); + (uu___369_9830.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___372_9875.FStar_TypeChecker_Env.postprocess); + (uu___369_9830.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___372_9875.FStar_TypeChecker_Env.is_native_tactic); + (uu___369_9830.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___372_9875.FStar_TypeChecker_Env.identifier_info); + (uu___369_9830.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___372_9875.FStar_TypeChecker_Env.tc_hooks); + (uu___369_9830.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___372_9875.FStar_TypeChecker_Env.dsenv); + (uu___369_9830.FStar_TypeChecker_Env.dsenv); FStar_TypeChecker_Env.nbe = - (uu___372_9875.FStar_TypeChecker_Env.nbe) + (uu___369_9830.FStar_TypeChecker_Env.nbe) } in - let uu____9878 = check1 env2 t1 t2 in - match uu____9878 with + let uu____9833 = check1 env2 t1 t2 in + match uu____9833 with | FStar_Pervasives_Native.None -> - let uu____9885 = + let uu____9840 = FStar_TypeChecker_Err.expected_expression_of_type env2 t2 e t1 in - let uu____9891 = FStar_TypeChecker_Env.get_range env2 in - FStar_Errors.raise_error uu____9885 uu____9891 + let uu____9846 = FStar_TypeChecker_Env.get_range env2 in + FStar_Errors.raise_error uu____9840 uu____9846 | FStar_Pervasives_Native.Some g -> - ((let uu____9898 = + ((let uu____9853 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env2) (FStar_Options.Other "Rel") in - if uu____9898 + if uu____9853 then - let uu____9903 = + let uu____9858 = FStar_TypeChecker_Rel.guard_to_string env2 g in FStar_All.pipe_left - (FStar_Util.print1 "Applied guard is %s\n") uu____9903 + (FStar_Util.print1 "Applied guard is %s\n") uu____9858 else ()); - (let uu____9909 = decorate e t2 in (uu____9909, g))) + (let uu____9864 = decorate e t2 in (uu____9864, g))) let (check_top_level : FStar_TypeChecker_Env.env -> @@ -3901,23 +3872,23 @@ let (check_top_level : fun env -> fun g -> fun lc -> - (let uu____9937 = FStar_TypeChecker_Env.debug env FStar_Options.Low + (let uu____9892 = FStar_TypeChecker_Env.debug env FStar_Options.Low in - if uu____9937 + if uu____9892 then - let uu____9940 = FStar_Syntax_Print.lcomp_to_string lc in - FStar_Util.print1 "check_top_level, lc = %s\n" uu____9940 + let uu____9895 = FStar_Syntax_Print.lcomp_to_string lc in + FStar_Util.print1 "check_top_level, lc = %s\n" uu____9895 else ()); (let discharge g1 = FStar_TypeChecker_Rel.force_trivial_guard env g1; FStar_Syntax_Util.is_pure_lcomp lc in let g1 = FStar_TypeChecker_Rel.solve_deferred_constraints env g in - let uu____9954 = FStar_Syntax_Util.is_total_lcomp lc in - if uu____9954 + let uu____9909 = FStar_Syntax_Util.is_total_lcomp lc in + if uu____9909 then - let uu____9962 = discharge g1 in - let uu____9964 = FStar_Syntax_Syntax.lcomp_comp lc in - (uu____9962, uu____9964) + let uu____9917 = discharge g1 in + let uu____9919 = FStar_Syntax_Syntax.lcomp_comp lc in + (uu____9917, uu____9919) else (let c = FStar_Syntax_Syntax.lcomp_comp lc in let steps = @@ -3925,60 +3896,60 @@ let (check_top_level : FStar_TypeChecker_Env.NoFullNorm; FStar_TypeChecker_Env.DoNotUnfoldPureLets] in let c1 = - let uu____9973 = - let uu____9974 = - let uu____9975 = + let uu____9928 = + let uu____9929 = + let uu____9930 = FStar_TypeChecker_Env.unfold_effect_abbrev env c in - FStar_All.pipe_right uu____9975 FStar_Syntax_Syntax.mk_Comp + FStar_All.pipe_right uu____9930 FStar_Syntax_Syntax.mk_Comp in - FStar_All.pipe_right uu____9974 + FStar_All.pipe_right uu____9929 (FStar_TypeChecker_Normalize.normalize_comp steps env) in - FStar_All.pipe_right uu____9973 + FStar_All.pipe_right uu____9928 (FStar_TypeChecker_Env.comp_to_comp_typ env) in let md = FStar_TypeChecker_Env.get_effect_decl env c1.FStar_Syntax_Syntax.effect_name in - let uu____9977 = destruct_comp c1 in - match uu____9977 with + let uu____9932 = destruct_comp c1 in + match uu____9932 with | (u_t,t,wp) -> let vc = - let uu____9995 = FStar_TypeChecker_Env.get_range env in - let uu____9996 = - let uu____10001 = + let uu____9950 = FStar_TypeChecker_Env.get_range env in + let uu____9951 = + let uu____9956 = FStar_TypeChecker_Env.inst_effect_fun_with [u_t] env md md.FStar_Syntax_Syntax.trivial in - let uu____10002 = - let uu____10003 = FStar_Syntax_Syntax.as_arg t in - let uu____10012 = - let uu____10023 = FStar_Syntax_Syntax.as_arg wp in - [uu____10023] in - uu____10003 :: uu____10012 in - FStar_Syntax_Syntax.mk_Tm_app uu____10001 uu____10002 in - uu____9996 FStar_Pervasives_Native.None uu____9995 in - ((let uu____10059 = + let uu____9957 = + let uu____9958 = FStar_Syntax_Syntax.as_arg t in + let uu____9967 = + let uu____9978 = FStar_Syntax_Syntax.as_arg wp in + [uu____9978] in + uu____9958 :: uu____9967 in + FStar_Syntax_Syntax.mk_Tm_app uu____9956 uu____9957 in + uu____9951 FStar_Pervasives_Native.None uu____9950 in + ((let uu____10014 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Simplification") in - if uu____10059 + if uu____10014 then - let uu____10064 = FStar_Syntax_Print.term_to_string vc + let uu____10019 = FStar_Syntax_Print.term_to_string vc in - FStar_Util.print1 "top-level VC: %s\n" uu____10064 + FStar_Util.print1 "top-level VC: %s\n" uu____10019 else ()); (let g2 = - let uu____10070 = + let uu____10025 = FStar_All.pipe_left FStar_TypeChecker_Env.guard_of_guard_formula (FStar_TypeChecker_Common.NonTrivial vc) in - FStar_TypeChecker_Env.conj_guard g1 uu____10070 in - let uu____10071 = discharge g2 in - let uu____10073 = FStar_Syntax_Syntax.mk_Comp c1 in - (uu____10071, uu____10073))))) + FStar_TypeChecker_Env.conj_guard g1 uu____10025 in + let uu____10026 = discharge g2 in + let uu____10028 = FStar_Syntax_Syntax.mk_Comp c1 in + (uu____10026, uu____10028))))) let (short_circuit : FStar_Syntax_Syntax.term -> @@ -3986,21 +3957,21 @@ let (short_circuit : = fun head1 -> fun seen_args -> - let short_bin_op f uu___348_10107 = - match uu___348_10107 with + let short_bin_op f uu___347_10062 = + match uu___347_10062 with | [] -> FStar_TypeChecker_Common.Trivial - | (fst1,uu____10117)::[] -> f fst1 - | uu____10142 -> failwith "Unexpexted args to binary operator" in + | (fst1,uu____10072)::[] -> f fst1 + | uu____10097 -> failwith "Unexpexted args to binary operator" in let op_and_e e = - let uu____10154 = FStar_Syntax_Util.b2t e in - FStar_All.pipe_right uu____10154 + let uu____10109 = FStar_Syntax_Util.b2t e in + FStar_All.pipe_right uu____10109 (fun _0_5 -> FStar_TypeChecker_Common.NonTrivial _0_5) in let op_or_e e = - let uu____10165 = - let uu____10166 = FStar_Syntax_Util.b2t e in - FStar_Syntax_Util.mk_neg uu____10166 in - FStar_All.pipe_right uu____10165 + let uu____10120 = + let uu____10121 = FStar_Syntax_Util.b2t e in + FStar_Syntax_Util.mk_neg uu____10121 in + FStar_All.pipe_right uu____10120 (fun _0_6 -> FStar_TypeChecker_Common.NonTrivial _0_6) in let op_and_t t = @@ -4008,77 +3979,77 @@ let (short_circuit : (fun _0_7 -> FStar_TypeChecker_Common.NonTrivial _0_7) in let op_or_t t = - let uu____10185 = FStar_All.pipe_right t FStar_Syntax_Util.mk_neg in - FStar_All.pipe_right uu____10185 + let uu____10140 = FStar_All.pipe_right t FStar_Syntax_Util.mk_neg in + FStar_All.pipe_right uu____10140 (fun _0_8 -> FStar_TypeChecker_Common.NonTrivial _0_8) in let op_imp_t t = FStar_All.pipe_right t (fun _0_9 -> FStar_TypeChecker_Common.NonTrivial _0_9) in - let short_op_ite uu___349_10199 = - match uu___349_10199 with + let short_op_ite uu___348_10154 = + match uu___348_10154 with | [] -> FStar_TypeChecker_Common.Trivial - | (guard,uu____10209)::[] -> + | (guard,uu____10164)::[] -> FStar_TypeChecker_Common.NonTrivial guard - | _then::(guard,uu____10236)::[] -> - let uu____10277 = FStar_Syntax_Util.mk_neg guard in - FStar_All.pipe_right uu____10277 + | _then::(guard,uu____10191)::[] -> + let uu____10232 = FStar_Syntax_Util.mk_neg guard in + FStar_All.pipe_right uu____10232 (fun _0_10 -> FStar_TypeChecker_Common.NonTrivial _0_10) - | uu____10278 -> failwith "Unexpected args to ITE" in + | uu____10233 -> failwith "Unexpected args to ITE" in let table = - let uu____10290 = - let uu____10298 = short_bin_op op_and_e in - (FStar_Parser_Const.op_And, uu____10298) in - let uu____10306 = - let uu____10316 = - let uu____10324 = short_bin_op op_or_e in - (FStar_Parser_Const.op_Or, uu____10324) in - let uu____10332 = - let uu____10342 = - let uu____10350 = short_bin_op op_and_t in - (FStar_Parser_Const.and_lid, uu____10350) in - let uu____10358 = - let uu____10368 = - let uu____10376 = short_bin_op op_or_t in - (FStar_Parser_Const.or_lid, uu____10376) in - let uu____10384 = - let uu____10394 = - let uu____10402 = short_bin_op op_imp_t in - (FStar_Parser_Const.imp_lid, uu____10402) in - [uu____10394; (FStar_Parser_Const.ite_lid, short_op_ite)] in - uu____10368 :: uu____10384 in - uu____10342 :: uu____10358 in - uu____10316 :: uu____10332 in - uu____10290 :: uu____10306 in + let uu____10245 = + let uu____10253 = short_bin_op op_and_e in + (FStar_Parser_Const.op_And, uu____10253) in + let uu____10261 = + let uu____10271 = + let uu____10279 = short_bin_op op_or_e in + (FStar_Parser_Const.op_Or, uu____10279) in + let uu____10287 = + let uu____10297 = + let uu____10305 = short_bin_op op_and_t in + (FStar_Parser_Const.and_lid, uu____10305) in + let uu____10313 = + let uu____10323 = + let uu____10331 = short_bin_op op_or_t in + (FStar_Parser_Const.or_lid, uu____10331) in + let uu____10339 = + let uu____10349 = + let uu____10357 = short_bin_op op_imp_t in + (FStar_Parser_Const.imp_lid, uu____10357) in + [uu____10349; (FStar_Parser_Const.ite_lid, short_op_ite)] in + uu____10323 :: uu____10339 in + uu____10297 :: uu____10313 in + uu____10271 :: uu____10287 in + uu____10245 :: uu____10261 in match head1.FStar_Syntax_Syntax.n with | FStar_Syntax_Syntax.Tm_fvar fv -> let lid = (fv.FStar_Syntax_Syntax.fv_name).FStar_Syntax_Syntax.v in - let uu____10464 = + let uu____10419 = FStar_Util.find_map table - (fun uu____10479 -> - match uu____10479 with + (fun uu____10434 -> + match uu____10434 with | (x,mk1) -> - let uu____10496 = FStar_Ident.lid_equals x lid in - if uu____10496 + let uu____10451 = FStar_Ident.lid_equals x lid in + if uu____10451 then - let uu____10501 = mk1 seen_args in - FStar_Pervasives_Native.Some uu____10501 + let uu____10456 = mk1 seen_args in + FStar_Pervasives_Native.Some uu____10456 else FStar_Pervasives_Native.None) in - (match uu____10464 with + (match uu____10419 with | FStar_Pervasives_Native.None -> FStar_TypeChecker_Common.Trivial | FStar_Pervasives_Native.Some g -> g) - | uu____10505 -> FStar_TypeChecker_Common.Trivial + | uu____10460 -> FStar_TypeChecker_Common.Trivial let (short_circuit_head : FStar_Syntax_Syntax.term -> Prims.bool) = fun l -> - let uu____10513 = - let uu____10514 = FStar_Syntax_Util.un_uinst l in - uu____10514.FStar_Syntax_Syntax.n in - match uu____10513 with + let uu____10468 = + let uu____10469 = FStar_Syntax_Util.un_uinst l in + uu____10469.FStar_Syntax_Syntax.n in + match uu____10468 with | FStar_Syntax_Syntax.Tm_fvar fv -> FStar_Util.for_some (FStar_Syntax_Syntax.fv_eq_lid fv) [FStar_Parser_Const.op_And; @@ -4087,7 +4058,7 @@ let (short_circuit_head : FStar_Syntax_Syntax.term -> Prims.bool) = FStar_Parser_Const.or_lid; FStar_Parser_Const.imp_lid; FStar_Parser_Const.ite_lid] - | uu____10519 -> false + | uu____10474 -> false let (maybe_add_implicit_binders : FStar_TypeChecker_Env.env -> @@ -4097,65 +4068,65 @@ let (maybe_add_implicit_binders : fun bs -> let pos bs1 = match bs1 with - | (hd1,uu____10555)::uu____10556 -> + | (hd1,uu____10510)::uu____10511 -> FStar_Syntax_Syntax.range_of_bv hd1 - | uu____10575 -> FStar_TypeChecker_Env.get_range env in + | uu____10530 -> FStar_TypeChecker_Env.get_range env in match bs with - | (uu____10584,FStar_Pervasives_Native.Some - (FStar_Syntax_Syntax.Implicit uu____10585))::uu____10586 -> bs - | uu____10604 -> - let uu____10605 = FStar_TypeChecker_Env.expected_typ env in - (match uu____10605 with + | (uu____10539,FStar_Pervasives_Native.Some + (FStar_Syntax_Syntax.Implicit uu____10540))::uu____10541 -> bs + | uu____10559 -> + let uu____10560 = FStar_TypeChecker_Env.expected_typ env in + (match uu____10560 with | FStar_Pervasives_Native.None -> bs | FStar_Pervasives_Native.Some t -> - let uu____10609 = - let uu____10610 = FStar_Syntax_Subst.compress t in - uu____10610.FStar_Syntax_Syntax.n in - (match uu____10609 with - | FStar_Syntax_Syntax.Tm_arrow (bs',uu____10614) -> - let uu____10635 = + let uu____10564 = + let uu____10565 = FStar_Syntax_Subst.compress t in + uu____10565.FStar_Syntax_Syntax.n in + (match uu____10564 with + | FStar_Syntax_Syntax.Tm_arrow (bs',uu____10569) -> + let uu____10590 = FStar_Util.prefix_until - (fun uu___350_10675 -> - match uu___350_10675 with - | (uu____10683,FStar_Pervasives_Native.Some - (FStar_Syntax_Syntax.Implicit uu____10684)) -> + (fun uu___349_10630 -> + match uu___349_10630 with + | (uu____10638,FStar_Pervasives_Native.Some + (FStar_Syntax_Syntax.Implicit uu____10639)) -> false - | uu____10689 -> true) bs' + | uu____10644 -> true) bs' in - (match uu____10635 with + (match uu____10590 with | FStar_Pervasives_Native.None -> bs | FStar_Pervasives_Native.Some - ([],uu____10725,uu____10726) -> bs + ([],uu____10680,uu____10681) -> bs | FStar_Pervasives_Native.Some - (imps,uu____10798,uu____10799) -> - let uu____10872 = + (imps,uu____10753,uu____10754) -> + let uu____10827 = FStar_All.pipe_right imps (FStar_Util.for_all - (fun uu____10892 -> - match uu____10892 with - | (x,uu____10901) -> + (fun uu____10847 -> + match uu____10847 with + | (x,uu____10856) -> FStar_Util.starts_with (x.FStar_Syntax_Syntax.ppname).FStar_Ident.idText "'")) in - if uu____10872 + if uu____10827 then let r = pos bs in let imps1 = FStar_All.pipe_right imps (FStar_List.map - (fun uu____10950 -> - match uu____10950 with + (fun uu____10905 -> + match uu____10905 with | (x,i) -> - let uu____10969 = + let uu____10924 = FStar_Syntax_Syntax.set_range_of_bv x r in - (uu____10969, i))) + (uu____10924, i))) in FStar_List.append imps1 bs else bs) - | uu____10980 -> bs)) + | uu____10935 -> bs)) let (maybe_lift : FStar_TypeChecker_Env.env -> @@ -4171,7 +4142,7 @@ let (maybe_lift : fun t -> let m1 = FStar_TypeChecker_Env.norm_eff_name env c1 in let m2 = FStar_TypeChecker_Env.norm_eff_name env c2 in - let uu____11009 = + let uu____10964 = ((FStar_Ident.lid_equals m1 m2) || ((FStar_Syntax_Util.is_pure_effect c1) && (FStar_Syntax_Util.is_ghost_effect c2))) @@ -4179,7 +4150,7 @@ let (maybe_lift : ((FStar_Syntax_Util.is_pure_effect c2) && (FStar_Syntax_Util.is_ghost_effect c1)) in - if uu____11009 + if uu____10964 then e else FStar_Syntax_Syntax.mk @@ -4198,13 +4169,13 @@ let (maybe_monadic : fun c -> fun t -> let m = FStar_TypeChecker_Env.norm_eff_name env c in - let uu____11040 = + let uu____10995 = ((is_pure_or_ghost_effect env m) || (FStar_Ident.lid_equals m FStar_Parser_Const.effect_Tot_lid)) || (FStar_Ident.lid_equals m FStar_Parser_Const.effect_GTot_lid) in - if uu____11040 + if uu____10995 then e else FStar_Syntax_Syntax.mk @@ -4224,20 +4195,20 @@ let (mk_toplevel_definition : fun env -> fun lident -> fun def -> - (let uu____11083 = + (let uu____11038 = FStar_TypeChecker_Env.debug env (FStar_Options.Other "ED") in - if uu____11083 + if uu____11038 then - ((let uu____11088 = FStar_Ident.text_of_lid lident in - d uu____11088); - (let uu____11090 = FStar_Ident.text_of_lid lident in - let uu____11092 = FStar_Syntax_Print.term_to_string def in + ((let uu____11043 = FStar_Ident.text_of_lid lident in + d uu____11043); + (let uu____11045 = FStar_Ident.text_of_lid lident in + let uu____11047 = FStar_Syntax_Print.term_to_string def in FStar_Util.print2 "Registering top-level definition: %s\n%s\n" - uu____11090 uu____11092)) + uu____11045 uu____11047)) else ()); (let fv = - let uu____11098 = FStar_Syntax_Util.incr_delta_qualifier def in - FStar_Syntax_Syntax.lid_as_fv lident uu____11098 + let uu____11053 = FStar_Syntax_Util.incr_delta_qualifier def in + FStar_Syntax_Syntax.lid_as_fv lident uu____11053 FStar_Pervasives_Native.None in let lbname = FStar_Util.Inr fv in @@ -4251,65 +4222,65 @@ let (mk_toplevel_definition : FStar_Syntax_Syntax.mk_sigelt (FStar_Syntax_Syntax.Sig_let (lb, [lident])) in - let uu____11110 = + let uu____11065 = FStar_Syntax_Syntax.mk (FStar_Syntax_Syntax.Tm_fvar fv) FStar_Pervasives_Native.None FStar_Range.dummyRange in - ((let uu___373_11112 = sig_ctx in + ((let uu___370_11067 = sig_ctx in { FStar_Syntax_Syntax.sigel = - (uu___373_11112.FStar_Syntax_Syntax.sigel); + (uu___370_11067.FStar_Syntax_Syntax.sigel); FStar_Syntax_Syntax.sigrng = - (uu___373_11112.FStar_Syntax_Syntax.sigrng); + (uu___370_11067.FStar_Syntax_Syntax.sigrng); FStar_Syntax_Syntax.sigquals = [FStar_Syntax_Syntax.Unfold_for_unification_and_vcgen]; FStar_Syntax_Syntax.sigmeta = - (uu___373_11112.FStar_Syntax_Syntax.sigmeta); + (uu___370_11067.FStar_Syntax_Syntax.sigmeta); FStar_Syntax_Syntax.sigattrs = - (uu___373_11112.FStar_Syntax_Syntax.sigattrs) - }), uu____11110)) + (uu___370_11067.FStar_Syntax_Syntax.sigattrs) + }), uu____11065)) let (check_sigelt_quals : FStar_TypeChecker_Env.env -> FStar_Syntax_Syntax.sigelt -> unit) = fun env -> fun se -> - let visibility uu___351_11130 = - match uu___351_11130 with + let visibility uu___350_11085 = + match uu___350_11085 with | FStar_Syntax_Syntax.Private -> true - | uu____11133 -> false in - let reducibility uu___352_11141 = - match uu___352_11141 with + | uu____11088 -> false in + let reducibility uu___351_11096 = + match uu___351_11096 with | FStar_Syntax_Syntax.Abstract -> true | FStar_Syntax_Syntax.Irreducible -> true | FStar_Syntax_Syntax.Unfold_for_unification_and_vcgen -> true | FStar_Syntax_Syntax.Visible_default -> true | FStar_Syntax_Syntax.Inline_for_extraction -> true - | uu____11148 -> false in - let assumption uu___353_11156 = - match uu___353_11156 with + | uu____11103 -> false in + let assumption uu___352_11111 = + match uu___352_11111 with | FStar_Syntax_Syntax.Assumption -> true | FStar_Syntax_Syntax.New -> true - | uu____11160 -> false in - let reification uu___354_11168 = - match uu___354_11168 with + | uu____11115 -> false in + let reification uu___353_11123 = + match uu___353_11123 with | FStar_Syntax_Syntax.Reifiable -> true - | FStar_Syntax_Syntax.Reflectable uu____11171 -> true - | uu____11173 -> false in - let inferred uu___355_11181 = - match uu___355_11181 with - | FStar_Syntax_Syntax.Discriminator uu____11183 -> true - | FStar_Syntax_Syntax.Projector uu____11185 -> true - | FStar_Syntax_Syntax.RecordType uu____11191 -> true - | FStar_Syntax_Syntax.RecordConstructor uu____11201 -> true + | FStar_Syntax_Syntax.Reflectable uu____11126 -> true + | uu____11128 -> false in + let inferred uu___354_11136 = + match uu___354_11136 with + | FStar_Syntax_Syntax.Discriminator uu____11138 -> true + | FStar_Syntax_Syntax.Projector uu____11140 -> true + | FStar_Syntax_Syntax.RecordType uu____11146 -> true + | FStar_Syntax_Syntax.RecordConstructor uu____11156 -> true | FStar_Syntax_Syntax.ExceptionConstructor -> true | FStar_Syntax_Syntax.HasMaskedEffect -> true | FStar_Syntax_Syntax.Effect -> true - | uu____11214 -> false in - let has_eq uu___356_11222 = - match uu___356_11222 with + | uu____11169 -> false in + let has_eq uu___355_11177 = + match uu___355_11177 with | FStar_Syntax_Syntax.Noeq -> true | FStar_Syntax_Syntax.Unopteq -> true - | uu____11226 -> false in + | uu____11181 -> false in let quals_combo_ok quals q = match q with | FStar_Syntax_Syntax.Assumption -> @@ -4437,7 +4408,7 @@ let (check_sigelt_quals : ((((reification x) || (inferred x)) || (visibility x)) || (x = FStar_Syntax_Syntax.TotalEffect)) || (x = FStar_Syntax_Syntax.Visible_default))) - | FStar_Syntax_Syntax.Reflectable uu____11305 -> + | FStar_Syntax_Syntax.Reflectable uu____11260 -> FStar_All.pipe_right quals (FStar_List.for_all (fun x -> @@ -4445,73 +4416,73 @@ let (check_sigelt_quals : (x = FStar_Syntax_Syntax.TotalEffect)) || (x = FStar_Syntax_Syntax.Visible_default))) | FStar_Syntax_Syntax.Private -> true - | uu____11312 -> true in + | uu____11267 -> true in let quals = FStar_All.pipe_right (FStar_Syntax_Util.quals_of_sigelt se) (FStar_List.filter (fun x -> Prims.op_Negation (x = FStar_Syntax_Syntax.Logic))) in - let uu____11323 = - let uu____11325 = + let uu____11278 = + let uu____11280 = FStar_All.pipe_right quals (FStar_Util.for_some - (fun uu___357_11331 -> - match uu___357_11331 with + (fun uu___356_11286 -> + match uu___356_11286 with | FStar_Syntax_Syntax.OnlyName -> true - | uu____11334 -> false)) + | uu____11289 -> false)) in - FStar_All.pipe_right uu____11325 Prims.op_Negation in - if uu____11323 + FStar_All.pipe_right uu____11280 Prims.op_Negation in + if uu____11278 then let r = FStar_Syntax_Util.range_of_sigelt se in let no_dup_quals = FStar_Util.remove_dups (fun x -> fun y -> x = y) quals in let err' msg = - let uu____11355 = - let uu____11361 = - let uu____11363 = FStar_Syntax_Print.quals_to_string quals in + let uu____11310 = + let uu____11316 = + let uu____11318 = FStar_Syntax_Print.quals_to_string quals in FStar_Util.format2 "The qualifier list \"[%s]\" is not permissible for this element%s" - uu____11363 msg + uu____11318 msg in - (FStar_Errors.Fatal_QulifierListNotPermitted, uu____11361) in - FStar_Errors.raise_error uu____11355 r in + (FStar_Errors.Fatal_QulifierListNotPermitted, uu____11316) in + FStar_Errors.raise_error uu____11310 r in let err msg = err' (Prims.strcat ": " msg) in - let err'1 uu____11381 = err' "" in + let err'1 uu____11336 = err' "" in (if (FStar_List.length quals) <> (FStar_List.length no_dup_quals) then err "duplicate qualifiers" else (); - (let uu____11389 = - let uu____11391 = + (let uu____11344 = + let uu____11346 = FStar_All.pipe_right quals (FStar_List.for_all (quals_combo_ok quals)) in - Prims.op_Negation uu____11391 in - if uu____11389 then err "ill-formed combination" else ()); + Prims.op_Negation uu____11346 in + if uu____11344 then err "ill-formed combination" else ()); (match se.FStar_Syntax_Syntax.sigel with - | FStar_Syntax_Syntax.Sig_let ((is_rec,uu____11401),uu____11402) -> - ((let uu____11414 = + | FStar_Syntax_Syntax.Sig_let ((is_rec,uu____11356),uu____11357) -> + ((let uu____11369 = is_rec && (FStar_All.pipe_right quals (FStar_List.contains FStar_Syntax_Syntax.Unfold_for_unification_and_vcgen)) in - if uu____11414 + if uu____11369 then err "recursive definitions cannot be marked inline" else ()); - (let uu____11423 = + (let uu____11378 = FStar_All.pipe_right quals (FStar_Util.for_some (fun x -> (assumption x) || (has_eq x))) in - if uu____11423 + if uu____11378 then err "definitions cannot be assumed or marked with equality qualifiers" else ())) - | FStar_Syntax_Syntax.Sig_bundle uu____11434 -> - let uu____11443 = - let uu____11445 = + | FStar_Syntax_Syntax.Sig_bundle uu____11389 -> + let uu____11398 = + let uu____11400 = FStar_All.pipe_right quals (FStar_Util.for_all (fun x -> @@ -4523,26 +4494,26 @@ let (check_sigelt_quals : || (visibility x)) || (has_eq x))) in - Prims.op_Negation uu____11445 in - if uu____11443 then err'1 () else () - | FStar_Syntax_Syntax.Sig_declare_typ uu____11455 -> - let uu____11462 = + Prims.op_Negation uu____11400 in + if uu____11398 then err'1 () else () + | FStar_Syntax_Syntax.Sig_declare_typ uu____11410 -> + let uu____11417 = FStar_All.pipe_right quals (FStar_Util.for_some has_eq) in - if uu____11462 then err'1 () else () - | FStar_Syntax_Syntax.Sig_assume uu____11470 -> - let uu____11477 = - let uu____11479 = + if uu____11417 then err'1 () else () + | FStar_Syntax_Syntax.Sig_assume uu____11425 -> + let uu____11432 = + let uu____11434 = FStar_All.pipe_right quals (FStar_Util.for_all (fun x -> (visibility x) || (x = FStar_Syntax_Syntax.Assumption))) in - Prims.op_Negation uu____11479 in - if uu____11477 then err'1 () else () - | FStar_Syntax_Syntax.Sig_new_effect uu____11489 -> - let uu____11490 = - let uu____11492 = + Prims.op_Negation uu____11434 in + if uu____11432 then err'1 () else () + | FStar_Syntax_Syntax.Sig_new_effect uu____11444 -> + let uu____11445 = + let uu____11447 = FStar_All.pipe_right quals (FStar_Util.for_all (fun x -> @@ -4551,11 +4522,11 @@ let (check_sigelt_quals : || (visibility x)) || (reification x))) in - Prims.op_Negation uu____11492 in - if uu____11490 then err'1 () else () - | FStar_Syntax_Syntax.Sig_new_effect_for_free uu____11502 -> - let uu____11503 = - let uu____11505 = + Prims.op_Negation uu____11447 in + if uu____11445 then err'1 () else () + | FStar_Syntax_Syntax.Sig_new_effect_for_free uu____11457 -> + let uu____11458 = + let uu____11460 = FStar_All.pipe_right quals (FStar_Util.for_all (fun x -> @@ -4564,18 +4535,18 @@ let (check_sigelt_quals : || (visibility x)) || (reification x))) in - Prims.op_Negation uu____11505 in - if uu____11503 then err'1 () else () - | FStar_Syntax_Syntax.Sig_effect_abbrev uu____11515 -> - let uu____11528 = - let uu____11530 = + Prims.op_Negation uu____11460 in + if uu____11458 then err'1 () else () + | FStar_Syntax_Syntax.Sig_effect_abbrev uu____11470 -> + let uu____11483 = + let uu____11485 = FStar_All.pipe_right quals (FStar_Util.for_all (fun x -> (inferred x) || (visibility x))) in - Prims.op_Negation uu____11530 in - if uu____11528 then err'1 () else () - | uu____11540 -> ())) + Prims.op_Negation uu____11485 in + if uu____11483 then err'1 () else () + | uu____11495 -> ())) else () let (must_erase_for_extraction : @@ -4583,68 +4554,68 @@ let (must_erase_for_extraction : fun g -> fun t -> let has_erased_for_extraction_attr fv = - let uu____11563 = - let uu____11568 = + let uu____11518 = + let uu____11523 = FStar_All.pipe_right fv FStar_Syntax_Syntax.lid_of_fv in - FStar_All.pipe_right uu____11568 + FStar_All.pipe_right uu____11523 (FStar_TypeChecker_Env.lookup_attrs_of_lid g) in - FStar_All.pipe_right uu____11563 + FStar_All.pipe_right uu____11518 (fun l_opt -> (FStar_Util.is_some l_opt) && - (let uu____11587 = FStar_All.pipe_right l_opt FStar_Util.must + (let uu____11542 = FStar_All.pipe_right l_opt FStar_Util.must in - FStar_All.pipe_right uu____11587 + FStar_All.pipe_right uu____11542 (FStar_List.existsb (fun t1 -> - let uu____11605 = - let uu____11606 = FStar_Syntax_Subst.compress t1 + let uu____11560 = + let uu____11561 = FStar_Syntax_Subst.compress t1 in - uu____11606.FStar_Syntax_Syntax.n in - match uu____11605 with + uu____11561.FStar_Syntax_Syntax.n in + match uu____11560 with | FStar_Syntax_Syntax.Tm_fvar fv1 when FStar_Ident.lid_equals (fv1.FStar_Syntax_Syntax.fv_name).FStar_Syntax_Syntax.v FStar_Parser_Const.must_erase_for_extraction_attr -> true - | uu____11612 -> false)))) + | uu____11567 -> false)))) in let rec aux_whnf env t1 = - let uu____11638 = - let uu____11639 = FStar_Syntax_Subst.compress t1 in - uu____11639.FStar_Syntax_Syntax.n in - match uu____11638 with - | FStar_Syntax_Syntax.Tm_type uu____11643 -> true + let uu____11593 = + let uu____11594 = FStar_Syntax_Subst.compress t1 in + uu____11594.FStar_Syntax_Syntax.n in + match uu____11593 with + | FStar_Syntax_Syntax.Tm_type uu____11598 -> true | FStar_Syntax_Syntax.Tm_fvar fv -> (FStar_Syntax_Syntax.fv_eq_lid fv FStar_Parser_Const.unit_lid) || (has_erased_for_extraction_attr fv) - | FStar_Syntax_Syntax.Tm_arrow uu____11646 -> - let uu____11661 = FStar_Syntax_Util.arrow_formals_comp t1 in - (match uu____11661 with + | FStar_Syntax_Syntax.Tm_arrow uu____11601 -> + let uu____11616 = FStar_Syntax_Util.arrow_formals_comp t1 in + (match uu____11616 with | (bs,c) -> let env1 = FStar_TypeChecker_Env.push_binders env bs in - let uu____11694 = FStar_Syntax_Util.is_pure_comp c in - if uu____11694 + let uu____11649 = FStar_Syntax_Util.is_pure_comp c in + if uu____11649 then aux env1 (FStar_Syntax_Util.comp_result c) else FStar_Syntax_Util.is_pure_or_ghost_comp c) | FStar_Syntax_Syntax.Tm_refine - ({ FStar_Syntax_Syntax.ppname = uu____11700; - FStar_Syntax_Syntax.index = uu____11701; - FStar_Syntax_Syntax.sort = t2;_},uu____11703) + ({ FStar_Syntax_Syntax.ppname = uu____11655; + FStar_Syntax_Syntax.index = uu____11656; + FStar_Syntax_Syntax.sort = t2;_},uu____11658) -> aux env t2 - | FStar_Syntax_Syntax.Tm_ascribed (t2,uu____11712,uu____11713) -> + | FStar_Syntax_Syntax.Tm_ascribed (t2,uu____11667,uu____11668) -> aux env t2 - | FStar_Syntax_Syntax.Tm_app (head1,uu____11755::[]) -> - let uu____11794 = - let uu____11795 = FStar_Syntax_Util.un_uinst head1 in - uu____11795.FStar_Syntax_Syntax.n in - (match uu____11794 with + | FStar_Syntax_Syntax.Tm_app (head1,uu____11710::[]) -> + let uu____11749 = + let uu____11750 = FStar_Syntax_Util.un_uinst head1 in + uu____11750.FStar_Syntax_Syntax.n in + (match uu____11749 with | FStar_Syntax_Syntax.Tm_fvar fv -> (FStar_Syntax_Syntax.fv_eq_lid fv FStar_Parser_Const.erased_lid) || (has_erased_for_extraction_attr fv) - | uu____11800 -> false) - | uu____11802 -> false + | uu____11755 -> false) + | uu____11757 -> false and aux env t1 = let t2 = @@ -4660,15 +4631,15 @@ let (must_erase_for_extraction : FStar_TypeChecker_Env.Iota] env t1 in let res = aux_whnf env t2 in - (let uu____11812 = + (let uu____11767 = FStar_All.pipe_left (FStar_TypeChecker_Env.debug env) (FStar_Options.Other "Extraction") in - if uu____11812 + if uu____11767 then - let uu____11817 = FStar_Syntax_Print.term_to_string t2 in + let uu____11772 = FStar_Syntax_Print.term_to_string t2 in FStar_Util.print2 "must_erase=%s: %s\n" - (if res then "true" else "false") uu____11817 + (if res then "true" else "false") uu____11772 else ()); res in aux g t diff --git a/src/ocaml-output/FStar_Universal.ml b/src/ocaml-output/FStar_Universal.ml index f07fc9d4db9..f2edc98255d 100644 --- a/src/ocaml-output/FStar_Universal.ml +++ b/src/ocaml-output/FStar_Universal.ml @@ -60,93 +60,93 @@ let with_dsenv_of_tcenv : match uu____143 with | (a,dsenv1) -> (a, - (let uu___459_157 = tcenv in + (let uu___458_157 = tcenv in { FStar_TypeChecker_Env.solver = - (uu___459_157.FStar_TypeChecker_Env.solver); + (uu___458_157.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___459_157.FStar_TypeChecker_Env.range); + (uu___458_157.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___459_157.FStar_TypeChecker_Env.curmodule); + (uu___458_157.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___459_157.FStar_TypeChecker_Env.gamma); + (uu___458_157.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___459_157.FStar_TypeChecker_Env.gamma_sig); + (uu___458_157.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___459_157.FStar_TypeChecker_Env.gamma_cache); + (uu___458_157.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___459_157.FStar_TypeChecker_Env.modules); + (uu___458_157.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___459_157.FStar_TypeChecker_Env.expected_typ); + (uu___458_157.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___459_157.FStar_TypeChecker_Env.sigtab); + (uu___458_157.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___459_157.FStar_TypeChecker_Env.attrtab); + (uu___458_157.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___459_157.FStar_TypeChecker_Env.is_pattern); + (uu___458_157.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___459_157.FStar_TypeChecker_Env.instantiate_imp); + (uu___458_157.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___459_157.FStar_TypeChecker_Env.effects); + (uu___458_157.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___459_157.FStar_TypeChecker_Env.generalize); + (uu___458_157.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___459_157.FStar_TypeChecker_Env.letrecs); + (uu___458_157.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___459_157.FStar_TypeChecker_Env.top_level); + (uu___458_157.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___459_157.FStar_TypeChecker_Env.check_uvars); + (uu___458_157.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___459_157.FStar_TypeChecker_Env.use_eq); + (uu___458_157.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___459_157.FStar_TypeChecker_Env.is_iface); + (uu___458_157.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___459_157.FStar_TypeChecker_Env.admit); + (uu___458_157.FStar_TypeChecker_Env.admit); FStar_TypeChecker_Env.lax = - (uu___459_157.FStar_TypeChecker_Env.lax); + (uu___458_157.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___459_157.FStar_TypeChecker_Env.lax_universes); + (uu___458_157.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___459_157.FStar_TypeChecker_Env.phase1); + (uu___458_157.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___459_157.FStar_TypeChecker_Env.failhard); + (uu___458_157.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___459_157.FStar_TypeChecker_Env.nosynth); + (uu___458_157.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___459_157.FStar_TypeChecker_Env.uvar_subtyping); + (uu___458_157.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___459_157.FStar_TypeChecker_Env.tc_term); + (uu___458_157.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___459_157.FStar_TypeChecker_Env.type_of); + (uu___458_157.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___459_157.FStar_TypeChecker_Env.universe_of); + (uu___458_157.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___459_157.FStar_TypeChecker_Env.check_type_of); + (uu___458_157.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___459_157.FStar_TypeChecker_Env.use_bv_sorts); + (uu___458_157.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___459_157.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___458_157.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___459_157.FStar_TypeChecker_Env.normalized_eff_names); + (uu___458_157.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___459_157.FStar_TypeChecker_Env.fv_delta_depths); + (uu___458_157.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___459_157.FStar_TypeChecker_Env.proof_ns); + (uu___458_157.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___459_157.FStar_TypeChecker_Env.synth_hook); + (uu___458_157.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___459_157.FStar_TypeChecker_Env.splice); + (uu___458_157.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___459_157.FStar_TypeChecker_Env.postprocess); + (uu___458_157.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___459_157.FStar_TypeChecker_Env.is_native_tactic); + (uu___458_157.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___459_157.FStar_TypeChecker_Env.identifier_info); + (uu___458_157.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___459_157.FStar_TypeChecker_Env.tc_hooks); + (uu___458_157.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = dsenv1; FStar_TypeChecker_Env.nbe = - (uu___459_157.FStar_TypeChecker_Env.nbe) + (uu___458_157.FStar_TypeChecker_Env.nbe) })) let with_tcenv_of_env : @@ -162,17 +162,17 @@ let with_tcenv_of_env : match uu____193 with | (a,t') -> (a, - (let uu___460_205 = e in + (let uu___459_205 = e in { FStar_Extraction_ML_UEnv.env_tcenv = t'; FStar_Extraction_ML_UEnv.env_bindings = - (uu___460_205.FStar_Extraction_ML_UEnv.env_bindings); + (uu___459_205.FStar_Extraction_ML_UEnv.env_bindings); FStar_Extraction_ML_UEnv.tydefs = - (uu___460_205.FStar_Extraction_ML_UEnv.tydefs); + (uu___459_205.FStar_Extraction_ML_UEnv.tydefs); FStar_Extraction_ML_UEnv.type_names = - (uu___460_205.FStar_Extraction_ML_UEnv.type_names); + (uu___459_205.FStar_Extraction_ML_UEnv.type_names); FStar_Extraction_ML_UEnv.currentModule = - (uu___460_205.FStar_Extraction_ML_UEnv.currentModule) + (uu___459_205.FStar_Extraction_ML_UEnv.currentModule) })) let with_dsenv_of_env : @@ -188,17 +188,17 @@ let with_dsenv_of_env : match uu____238 with | (a,tcenv) -> (a, - (let uu___461_254 = e in + (let uu___460_254 = e in { FStar_Extraction_ML_UEnv.env_tcenv = tcenv; FStar_Extraction_ML_UEnv.env_bindings = - (uu___461_254.FStar_Extraction_ML_UEnv.env_bindings); + (uu___460_254.FStar_Extraction_ML_UEnv.env_bindings); FStar_Extraction_ML_UEnv.tydefs = - (uu___461_254.FStar_Extraction_ML_UEnv.tydefs); + (uu___460_254.FStar_Extraction_ML_UEnv.tydefs); FStar_Extraction_ML_UEnv.type_names = - (uu___461_254.FStar_Extraction_ML_UEnv.type_names); + (uu___460_254.FStar_Extraction_ML_UEnv.type_names); FStar_Extraction_ML_UEnv.currentModule = - (uu___461_254.FStar_Extraction_ML_UEnv.currentModule) + (uu___460_254.FStar_Extraction_ML_UEnv.currentModule) })) let (push_env : uenv -> uenv) = @@ -289,30 +289,30 @@ let (init_env : FStar_Parser_Dep.deps -> FStar_TypeChecker_Env.env) = if uu____510 then FStar_SMTEncoding_Solver.dummy else - (let uu___462_515 = FStar_SMTEncoding_Solver.solver in + (let uu___461_515 = FStar_SMTEncoding_Solver.solver in { FStar_TypeChecker_Env.init = - (uu___462_515.FStar_TypeChecker_Env.init); + (uu___461_515.FStar_TypeChecker_Env.init); FStar_TypeChecker_Env.push = - (uu___462_515.FStar_TypeChecker_Env.push); + (uu___461_515.FStar_TypeChecker_Env.push); FStar_TypeChecker_Env.pop = - (uu___462_515.FStar_TypeChecker_Env.pop); + (uu___461_515.FStar_TypeChecker_Env.pop); FStar_TypeChecker_Env.snapshot = - (uu___462_515.FStar_TypeChecker_Env.snapshot); + (uu___461_515.FStar_TypeChecker_Env.snapshot); FStar_TypeChecker_Env.rollback = - (uu___462_515.FStar_TypeChecker_Env.rollback); + (uu___461_515.FStar_TypeChecker_Env.rollback); FStar_TypeChecker_Env.encode_modul = - (uu___462_515.FStar_TypeChecker_Env.encode_modul); + (uu___461_515.FStar_TypeChecker_Env.encode_modul); FStar_TypeChecker_Env.encode_sig = - (uu___462_515.FStar_TypeChecker_Env.encode_sig); + (uu___461_515.FStar_TypeChecker_Env.encode_sig); FStar_TypeChecker_Env.preprocess = FStar_Tactics_Interpreter.preprocess; FStar_TypeChecker_Env.solve = - (uu___462_515.FStar_TypeChecker_Env.solve); + (uu___461_515.FStar_TypeChecker_Env.solve); FStar_TypeChecker_Env.finish = - (uu___462_515.FStar_TypeChecker_Env.finish); + (uu___461_515.FStar_TypeChecker_Env.finish); FStar_TypeChecker_Env.refresh = - (uu___462_515.FStar_TypeChecker_Env.refresh) + (uu___461_515.FStar_TypeChecker_Env.refresh) }) in let env = @@ -326,355 +326,355 @@ let (init_env : FStar_Parser_Dep.deps -> FStar_TypeChecker_Env.env) = FStar_Parser_Const.prims_lid uu____517 in let env1 = - let uu___463_536 = env in + let uu___462_536 = env in { FStar_TypeChecker_Env.solver = - (uu___463_536.FStar_TypeChecker_Env.solver); + (uu___462_536.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___463_536.FStar_TypeChecker_Env.range); + (uu___462_536.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___463_536.FStar_TypeChecker_Env.curmodule); + (uu___462_536.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___463_536.FStar_TypeChecker_Env.gamma); + (uu___462_536.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___463_536.FStar_TypeChecker_Env.gamma_sig); + (uu___462_536.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___463_536.FStar_TypeChecker_Env.gamma_cache); + (uu___462_536.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___463_536.FStar_TypeChecker_Env.modules); + (uu___462_536.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___463_536.FStar_TypeChecker_Env.expected_typ); + (uu___462_536.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___463_536.FStar_TypeChecker_Env.sigtab); + (uu___462_536.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___463_536.FStar_TypeChecker_Env.attrtab); + (uu___462_536.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___463_536.FStar_TypeChecker_Env.is_pattern); + (uu___462_536.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___463_536.FStar_TypeChecker_Env.instantiate_imp); + (uu___462_536.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___463_536.FStar_TypeChecker_Env.effects); + (uu___462_536.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___463_536.FStar_TypeChecker_Env.generalize); + (uu___462_536.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___463_536.FStar_TypeChecker_Env.letrecs); + (uu___462_536.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___463_536.FStar_TypeChecker_Env.top_level); + (uu___462_536.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___463_536.FStar_TypeChecker_Env.check_uvars); + (uu___462_536.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___463_536.FStar_TypeChecker_Env.use_eq); + (uu___462_536.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___463_536.FStar_TypeChecker_Env.is_iface); + (uu___462_536.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___463_536.FStar_TypeChecker_Env.admit); - FStar_TypeChecker_Env.lax = (uu___463_536.FStar_TypeChecker_Env.lax); + (uu___462_536.FStar_TypeChecker_Env.admit); + FStar_TypeChecker_Env.lax = (uu___462_536.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___463_536.FStar_TypeChecker_Env.lax_universes); + (uu___462_536.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___463_536.FStar_TypeChecker_Env.phase1); + (uu___462_536.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___463_536.FStar_TypeChecker_Env.failhard); + (uu___462_536.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___463_536.FStar_TypeChecker_Env.nosynth); + (uu___462_536.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___463_536.FStar_TypeChecker_Env.uvar_subtyping); + (uu___462_536.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___463_536.FStar_TypeChecker_Env.tc_term); + (uu___462_536.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___463_536.FStar_TypeChecker_Env.type_of); + (uu___462_536.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___463_536.FStar_TypeChecker_Env.universe_of); + (uu___462_536.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___463_536.FStar_TypeChecker_Env.check_type_of); + (uu___462_536.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___463_536.FStar_TypeChecker_Env.use_bv_sorts); + (uu___462_536.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___463_536.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___462_536.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___463_536.FStar_TypeChecker_Env.normalized_eff_names); + (uu___462_536.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___463_536.FStar_TypeChecker_Env.fv_delta_depths); + (uu___462_536.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___463_536.FStar_TypeChecker_Env.proof_ns); + (uu___462_536.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = FStar_Tactics_Interpreter.synthesize; FStar_TypeChecker_Env.splice = - (uu___463_536.FStar_TypeChecker_Env.splice); + (uu___462_536.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___463_536.FStar_TypeChecker_Env.postprocess); + (uu___462_536.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___463_536.FStar_TypeChecker_Env.is_native_tactic); + (uu___462_536.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___463_536.FStar_TypeChecker_Env.identifier_info); + (uu___462_536.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___463_536.FStar_TypeChecker_Env.tc_hooks); + (uu___462_536.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___463_536.FStar_TypeChecker_Env.dsenv); - FStar_TypeChecker_Env.nbe = (uu___463_536.FStar_TypeChecker_Env.nbe) + (uu___462_536.FStar_TypeChecker_Env.dsenv); + FStar_TypeChecker_Env.nbe = (uu___462_536.FStar_TypeChecker_Env.nbe) } in let env2 = - let uu___464_538 = env1 in + let uu___463_538 = env1 in { FStar_TypeChecker_Env.solver = - (uu___464_538.FStar_TypeChecker_Env.solver); + (uu___463_538.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___464_538.FStar_TypeChecker_Env.range); + (uu___463_538.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___464_538.FStar_TypeChecker_Env.curmodule); + (uu___463_538.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___464_538.FStar_TypeChecker_Env.gamma); + (uu___463_538.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___464_538.FStar_TypeChecker_Env.gamma_sig); + (uu___463_538.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___464_538.FStar_TypeChecker_Env.gamma_cache); + (uu___463_538.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___464_538.FStar_TypeChecker_Env.modules); + (uu___463_538.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___464_538.FStar_TypeChecker_Env.expected_typ); + (uu___463_538.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___464_538.FStar_TypeChecker_Env.sigtab); + (uu___463_538.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___464_538.FStar_TypeChecker_Env.attrtab); + (uu___463_538.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___464_538.FStar_TypeChecker_Env.is_pattern); + (uu___463_538.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___464_538.FStar_TypeChecker_Env.instantiate_imp); + (uu___463_538.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___464_538.FStar_TypeChecker_Env.effects); + (uu___463_538.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___464_538.FStar_TypeChecker_Env.generalize); + (uu___463_538.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___464_538.FStar_TypeChecker_Env.letrecs); + (uu___463_538.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___464_538.FStar_TypeChecker_Env.top_level); + (uu___463_538.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___464_538.FStar_TypeChecker_Env.check_uvars); + (uu___463_538.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___464_538.FStar_TypeChecker_Env.use_eq); + (uu___463_538.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___464_538.FStar_TypeChecker_Env.is_iface); + (uu___463_538.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___464_538.FStar_TypeChecker_Env.admit); - FStar_TypeChecker_Env.lax = (uu___464_538.FStar_TypeChecker_Env.lax); + (uu___463_538.FStar_TypeChecker_Env.admit); + FStar_TypeChecker_Env.lax = (uu___463_538.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___464_538.FStar_TypeChecker_Env.lax_universes); + (uu___463_538.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___464_538.FStar_TypeChecker_Env.phase1); + (uu___463_538.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___464_538.FStar_TypeChecker_Env.failhard); + (uu___463_538.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___464_538.FStar_TypeChecker_Env.nosynth); + (uu___463_538.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___464_538.FStar_TypeChecker_Env.uvar_subtyping); + (uu___463_538.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___464_538.FStar_TypeChecker_Env.tc_term); + (uu___463_538.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___464_538.FStar_TypeChecker_Env.type_of); + (uu___463_538.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___464_538.FStar_TypeChecker_Env.universe_of); + (uu___463_538.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___464_538.FStar_TypeChecker_Env.check_type_of); + (uu___463_538.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___464_538.FStar_TypeChecker_Env.use_bv_sorts); + (uu___463_538.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___464_538.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___463_538.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___464_538.FStar_TypeChecker_Env.normalized_eff_names); + (uu___463_538.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___464_538.FStar_TypeChecker_Env.fv_delta_depths); + (uu___463_538.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___464_538.FStar_TypeChecker_Env.proof_ns); + (uu___463_538.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___464_538.FStar_TypeChecker_Env.synth_hook); + (uu___463_538.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = FStar_Tactics_Interpreter.splice; FStar_TypeChecker_Env.postprocess = - (uu___464_538.FStar_TypeChecker_Env.postprocess); + (uu___463_538.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = - (uu___464_538.FStar_TypeChecker_Env.is_native_tactic); + (uu___463_538.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___464_538.FStar_TypeChecker_Env.identifier_info); + (uu___463_538.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___464_538.FStar_TypeChecker_Env.tc_hooks); + (uu___463_538.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___464_538.FStar_TypeChecker_Env.dsenv); - FStar_TypeChecker_Env.nbe = (uu___464_538.FStar_TypeChecker_Env.nbe) + (uu___463_538.FStar_TypeChecker_Env.dsenv); + FStar_TypeChecker_Env.nbe = (uu___463_538.FStar_TypeChecker_Env.nbe) } in let env3 = - let uu___465_540 = env2 in + let uu___464_540 = env2 in { FStar_TypeChecker_Env.solver = - (uu___465_540.FStar_TypeChecker_Env.solver); + (uu___464_540.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___465_540.FStar_TypeChecker_Env.range); + (uu___464_540.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___465_540.FStar_TypeChecker_Env.curmodule); + (uu___464_540.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___465_540.FStar_TypeChecker_Env.gamma); + (uu___464_540.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___465_540.FStar_TypeChecker_Env.gamma_sig); + (uu___464_540.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___465_540.FStar_TypeChecker_Env.gamma_cache); + (uu___464_540.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___465_540.FStar_TypeChecker_Env.modules); + (uu___464_540.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___465_540.FStar_TypeChecker_Env.expected_typ); + (uu___464_540.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___465_540.FStar_TypeChecker_Env.sigtab); + (uu___464_540.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___465_540.FStar_TypeChecker_Env.attrtab); + (uu___464_540.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___465_540.FStar_TypeChecker_Env.is_pattern); + (uu___464_540.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___465_540.FStar_TypeChecker_Env.instantiate_imp); + (uu___464_540.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___465_540.FStar_TypeChecker_Env.effects); + (uu___464_540.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___465_540.FStar_TypeChecker_Env.generalize); + (uu___464_540.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___465_540.FStar_TypeChecker_Env.letrecs); + (uu___464_540.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___465_540.FStar_TypeChecker_Env.top_level); + (uu___464_540.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___465_540.FStar_TypeChecker_Env.check_uvars); + (uu___464_540.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___465_540.FStar_TypeChecker_Env.use_eq); + (uu___464_540.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___465_540.FStar_TypeChecker_Env.is_iface); + (uu___464_540.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___465_540.FStar_TypeChecker_Env.admit); - FStar_TypeChecker_Env.lax = (uu___465_540.FStar_TypeChecker_Env.lax); + (uu___464_540.FStar_TypeChecker_Env.admit); + FStar_TypeChecker_Env.lax = (uu___464_540.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___465_540.FStar_TypeChecker_Env.lax_universes); + (uu___464_540.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___465_540.FStar_TypeChecker_Env.phase1); + (uu___464_540.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___465_540.FStar_TypeChecker_Env.failhard); + (uu___464_540.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___465_540.FStar_TypeChecker_Env.nosynth); + (uu___464_540.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___465_540.FStar_TypeChecker_Env.uvar_subtyping); + (uu___464_540.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___465_540.FStar_TypeChecker_Env.tc_term); + (uu___464_540.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___465_540.FStar_TypeChecker_Env.type_of); + (uu___464_540.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___465_540.FStar_TypeChecker_Env.universe_of); + (uu___464_540.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___465_540.FStar_TypeChecker_Env.check_type_of); + (uu___464_540.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___465_540.FStar_TypeChecker_Env.use_bv_sorts); + (uu___464_540.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___465_540.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___464_540.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___465_540.FStar_TypeChecker_Env.normalized_eff_names); + (uu___464_540.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___465_540.FStar_TypeChecker_Env.fv_delta_depths); + (uu___464_540.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___465_540.FStar_TypeChecker_Env.proof_ns); + (uu___464_540.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___465_540.FStar_TypeChecker_Env.synth_hook); + (uu___464_540.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___465_540.FStar_TypeChecker_Env.splice); + (uu___464_540.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = FStar_Tactics_Interpreter.postprocess; FStar_TypeChecker_Env.is_native_tactic = - (uu___465_540.FStar_TypeChecker_Env.is_native_tactic); + (uu___464_540.FStar_TypeChecker_Env.is_native_tactic); FStar_TypeChecker_Env.identifier_info = - (uu___465_540.FStar_TypeChecker_Env.identifier_info); + (uu___464_540.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___465_540.FStar_TypeChecker_Env.tc_hooks); + (uu___464_540.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___465_540.FStar_TypeChecker_Env.dsenv); - FStar_TypeChecker_Env.nbe = (uu___465_540.FStar_TypeChecker_Env.nbe) + (uu___464_540.FStar_TypeChecker_Env.dsenv); + FStar_TypeChecker_Env.nbe = (uu___464_540.FStar_TypeChecker_Env.nbe) } in let env4 = - let uu___466_542 = env3 in + let uu___465_542 = env3 in { FStar_TypeChecker_Env.solver = - (uu___466_542.FStar_TypeChecker_Env.solver); + (uu___465_542.FStar_TypeChecker_Env.solver); FStar_TypeChecker_Env.range = - (uu___466_542.FStar_TypeChecker_Env.range); + (uu___465_542.FStar_TypeChecker_Env.range); FStar_TypeChecker_Env.curmodule = - (uu___466_542.FStar_TypeChecker_Env.curmodule); + (uu___465_542.FStar_TypeChecker_Env.curmodule); FStar_TypeChecker_Env.gamma = - (uu___466_542.FStar_TypeChecker_Env.gamma); + (uu___465_542.FStar_TypeChecker_Env.gamma); FStar_TypeChecker_Env.gamma_sig = - (uu___466_542.FStar_TypeChecker_Env.gamma_sig); + (uu___465_542.FStar_TypeChecker_Env.gamma_sig); FStar_TypeChecker_Env.gamma_cache = - (uu___466_542.FStar_TypeChecker_Env.gamma_cache); + (uu___465_542.FStar_TypeChecker_Env.gamma_cache); FStar_TypeChecker_Env.modules = - (uu___466_542.FStar_TypeChecker_Env.modules); + (uu___465_542.FStar_TypeChecker_Env.modules); FStar_TypeChecker_Env.expected_typ = - (uu___466_542.FStar_TypeChecker_Env.expected_typ); + (uu___465_542.FStar_TypeChecker_Env.expected_typ); FStar_TypeChecker_Env.sigtab = - (uu___466_542.FStar_TypeChecker_Env.sigtab); + (uu___465_542.FStar_TypeChecker_Env.sigtab); FStar_TypeChecker_Env.attrtab = - (uu___466_542.FStar_TypeChecker_Env.attrtab); + (uu___465_542.FStar_TypeChecker_Env.attrtab); FStar_TypeChecker_Env.is_pattern = - (uu___466_542.FStar_TypeChecker_Env.is_pattern); + (uu___465_542.FStar_TypeChecker_Env.is_pattern); FStar_TypeChecker_Env.instantiate_imp = - (uu___466_542.FStar_TypeChecker_Env.instantiate_imp); + (uu___465_542.FStar_TypeChecker_Env.instantiate_imp); FStar_TypeChecker_Env.effects = - (uu___466_542.FStar_TypeChecker_Env.effects); + (uu___465_542.FStar_TypeChecker_Env.effects); FStar_TypeChecker_Env.generalize = - (uu___466_542.FStar_TypeChecker_Env.generalize); + (uu___465_542.FStar_TypeChecker_Env.generalize); FStar_TypeChecker_Env.letrecs = - (uu___466_542.FStar_TypeChecker_Env.letrecs); + (uu___465_542.FStar_TypeChecker_Env.letrecs); FStar_TypeChecker_Env.top_level = - (uu___466_542.FStar_TypeChecker_Env.top_level); + (uu___465_542.FStar_TypeChecker_Env.top_level); FStar_TypeChecker_Env.check_uvars = - (uu___466_542.FStar_TypeChecker_Env.check_uvars); + (uu___465_542.FStar_TypeChecker_Env.check_uvars); FStar_TypeChecker_Env.use_eq = - (uu___466_542.FStar_TypeChecker_Env.use_eq); + (uu___465_542.FStar_TypeChecker_Env.use_eq); FStar_TypeChecker_Env.is_iface = - (uu___466_542.FStar_TypeChecker_Env.is_iface); + (uu___465_542.FStar_TypeChecker_Env.is_iface); FStar_TypeChecker_Env.admit = - (uu___466_542.FStar_TypeChecker_Env.admit); - FStar_TypeChecker_Env.lax = (uu___466_542.FStar_TypeChecker_Env.lax); + (uu___465_542.FStar_TypeChecker_Env.admit); + FStar_TypeChecker_Env.lax = (uu___465_542.FStar_TypeChecker_Env.lax); FStar_TypeChecker_Env.lax_universes = - (uu___466_542.FStar_TypeChecker_Env.lax_universes); + (uu___465_542.FStar_TypeChecker_Env.lax_universes); FStar_TypeChecker_Env.phase1 = - (uu___466_542.FStar_TypeChecker_Env.phase1); + (uu___465_542.FStar_TypeChecker_Env.phase1); FStar_TypeChecker_Env.failhard = - (uu___466_542.FStar_TypeChecker_Env.failhard); + (uu___465_542.FStar_TypeChecker_Env.failhard); FStar_TypeChecker_Env.nosynth = - (uu___466_542.FStar_TypeChecker_Env.nosynth); + (uu___465_542.FStar_TypeChecker_Env.nosynth); FStar_TypeChecker_Env.uvar_subtyping = - (uu___466_542.FStar_TypeChecker_Env.uvar_subtyping); + (uu___465_542.FStar_TypeChecker_Env.uvar_subtyping); FStar_TypeChecker_Env.tc_term = - (uu___466_542.FStar_TypeChecker_Env.tc_term); + (uu___465_542.FStar_TypeChecker_Env.tc_term); FStar_TypeChecker_Env.type_of = - (uu___466_542.FStar_TypeChecker_Env.type_of); + (uu___465_542.FStar_TypeChecker_Env.type_of); FStar_TypeChecker_Env.universe_of = - (uu___466_542.FStar_TypeChecker_Env.universe_of); + (uu___465_542.FStar_TypeChecker_Env.universe_of); FStar_TypeChecker_Env.check_type_of = - (uu___466_542.FStar_TypeChecker_Env.check_type_of); + (uu___465_542.FStar_TypeChecker_Env.check_type_of); FStar_TypeChecker_Env.use_bv_sorts = - (uu___466_542.FStar_TypeChecker_Env.use_bv_sorts); + (uu___465_542.FStar_TypeChecker_Env.use_bv_sorts); FStar_TypeChecker_Env.qtbl_name_and_index = - (uu___466_542.FStar_TypeChecker_Env.qtbl_name_and_index); + (uu___465_542.FStar_TypeChecker_Env.qtbl_name_and_index); FStar_TypeChecker_Env.normalized_eff_names = - (uu___466_542.FStar_TypeChecker_Env.normalized_eff_names); + (uu___465_542.FStar_TypeChecker_Env.normalized_eff_names); FStar_TypeChecker_Env.fv_delta_depths = - (uu___466_542.FStar_TypeChecker_Env.fv_delta_depths); + (uu___465_542.FStar_TypeChecker_Env.fv_delta_depths); FStar_TypeChecker_Env.proof_ns = - (uu___466_542.FStar_TypeChecker_Env.proof_ns); + (uu___465_542.FStar_TypeChecker_Env.proof_ns); FStar_TypeChecker_Env.synth_hook = - (uu___466_542.FStar_TypeChecker_Env.synth_hook); + (uu___465_542.FStar_TypeChecker_Env.synth_hook); FStar_TypeChecker_Env.splice = - (uu___466_542.FStar_TypeChecker_Env.splice); + (uu___465_542.FStar_TypeChecker_Env.splice); FStar_TypeChecker_Env.postprocess = - (uu___466_542.FStar_TypeChecker_Env.postprocess); + (uu___465_542.FStar_TypeChecker_Env.postprocess); FStar_TypeChecker_Env.is_native_tactic = FStar_Tactics_Native.is_native_tactic; FStar_TypeChecker_Env.identifier_info = - (uu___466_542.FStar_TypeChecker_Env.identifier_info); + (uu___465_542.FStar_TypeChecker_Env.identifier_info); FStar_TypeChecker_Env.tc_hooks = - (uu___466_542.FStar_TypeChecker_Env.tc_hooks); + (uu___465_542.FStar_TypeChecker_Env.tc_hooks); FStar_TypeChecker_Env.dsenv = - (uu___466_542.FStar_TypeChecker_Env.dsenv); - FStar_TypeChecker_Env.nbe = (uu___466_542.FStar_TypeChecker_Env.nbe) + (uu___465_542.FStar_TypeChecker_Env.dsenv); + FStar_TypeChecker_Env.nbe = (uu___465_542.FStar_TypeChecker_Env.nbe) } in (env4.FStar_TypeChecker_Env.solver).FStar_TypeChecker_Env.init env4; env4 @@ -1010,11 +1010,11 @@ let (store_module_to_cache : uenv -> Prims.string -> tc_result -> unit) = match digest with | FStar_Pervasives_Native.Some hashes -> let tc_result1 = - let uu___467_1706 = tc_result in + let uu___466_1706 = tc_result in { - checked_module = (uu___467_1706.checked_module); - extracted_iface = (uu___467_1706.extracted_iface); - mii = (uu___467_1706.mii); + checked_module = (uu___466_1706.checked_module); + extracted_iface = (uu___466_1706.extracted_iface); + mii = (uu___466_1706.mii); tc_time = (Prims.parse_int "0"); extraction_time = (Prims.parse_int "0") } in @@ -1392,8 +1392,8 @@ let rec (tc_fold_interleave : = fun acc -> fun remaining -> - let as_list uu___458_2950 = - match uu___458_2950 with + let as_list uu___457_2950 = + match uu___457_2950 with | FStar_Pervasives_Native.None -> [] | FStar_Pervasives_Native.Some l -> [l] in match remaining with diff --git a/src/parser/FStar.Parser.Dep.fs b/src/parser/FStar.Parser.Dep.fs index 19e599045e1..ccc367e38cc 100644 --- a/src/parser/FStar.Parser.Dep.fs +++ b/src/parser/FStar.Parser.Dep.fs @@ -765,6 +765,83 @@ let collect_one_cache : ref<(smap<(list * list * bool)>) let set_collect_one_cache (cache: smap<(list * list * bool)>) : unit = collect_one_cache := cache +let dep_graph_copy dep_graph = + let (Deps g) = dep_graph in + Deps (BU.smap_copy g) + +let topological_dependences_of + file_system_map + dep_graph + interfaces_needing_inlining + root_files + for_extraction + : list + * bool = + let rec all_friend_deps_1 + dep_graph + (cycle:list) + (all_friends, all_files) + filename = + let direct_deps, color = must (deps_try_find dep_graph filename) in + match color with + | Gray -> + failwith "Impossible: cycle detected after cycle detection has passed" + | Black -> + (* If the element has been visited already, then the map contains all its + * dependencies. Otherwise, the map only contains its direct dependencies. *) + all_friends, all_files + | White -> + (* Unvisited. Compute. *) + deps_add_dep dep_graph filename (direct_deps, Gray); + let all_friends, all_files = + all_friend_deps + dep_graph cycle (all_friends, all_files) + (dependences_of file_system_map + dep_graph + root_files + filename) + in + (* Mutate the graph to mark the node as visited *) + deps_add_dep dep_graph filename (direct_deps, Black); + (* Also build the topological sort (Tarjan's algorithm). *) + List.filter (function FriendImplementation _ -> true | _ -> false) direct_deps + @all_friends, + filename :: all_files + and all_friend_deps dep_graph cycle all_friends filenames = + List.fold_left + (fun all_friends k -> + all_friend_deps_1 dep_graph (k :: cycle) all_friends k) + all_friends + filenames + in + let friends, _ = + all_friend_deps (dep_graph_copy dep_graph) [] ([], []) root_files + in + let widened = BU.mk_ref false in + let widen_deps friends deps = + deps |> List.map (fun d -> + match d with + | PreferInterface f + when Options.cmi() && for_extraction -> + if has_implementation file_system_map f + && List.contains f interfaces_needing_inlining + then (widened := true; UseImplementation f) + else PreferInterface f + | PreferInterface f + when List.contains (FriendImplementation f) friends -> + FriendImplementation f + | _ -> d) + in + let _, all_files = + let (Deps dg) = dep_graph in + let (Deps dg') = deps_empty() in + BU.smap_fold dg (fun filename (dependences, color) () -> + BU.smap_add dg' filename (widen_deps friends dependences, color)) (); + all_friend_deps (Deps dg') [] ([], []) root_files + in + all_files, + !widened + (** Collect the dependencies for a list of given files. And record the entire dependence graph in the memoized state above **) let collect (all_cmd_line_files: list) @@ -822,10 +899,6 @@ let collect (all_cmd_line_files: list) List.iter discover_one all_cmd_line_files; (* At this point, dep_graph has all the (immediate) dependency graph of all the files. *) - let dep_graph_copy dep_graph = - let (Deps g) = dep_graph in - Deps (BU.smap_copy g) - in let cycle_detected dep_graph cycle filename = Util.print1 "The cycle contains a subset of the modules in:\n%s \n" (String.concat "\n`used by` " cycle); print_graph dep_graph; @@ -891,73 +964,12 @@ let collect (all_cmd_line_files: list) let m = lowercase_module_name f in Options.add_verify_module m); - let topological_dependences_of all_command_line_files = - let rec all_friend_deps_1 - dep_graph - (cycle:list) - (all_friends, all_files) - filename = - let direct_deps, color = must (deps_try_find dep_graph filename) in - match color with - | Gray -> - cycle_detected dep_graph cycle filename; all_friends, all_files - | Black -> - (* If the element has been visited already, then the map contains all its - * dependencies. Otherwise, the map only contains its direct dependencies. *) - all_friends, all_files - | White -> - (* Unvisited. Compute. *) - deps_add_dep dep_graph filename (direct_deps, Gray); - let all_friends, all_files = - all_friend_deps - dep_graph cycle (all_friends, all_files) - (dependences_of file_system_map - dep_graph - all_command_line_files - filename) - in - (* Mutate the graph to mark the node as visited *) - deps_add_dep dep_graph filename (direct_deps, Black); - (* Also build the topological sort (Tarjan's algorithm). *) - List.filter (function FriendImplementation _ -> true | _ -> false) direct_deps - @all_friends, - filename :: all_files - and all_friend_deps dep_graph cycle all_friends filenames = - List.fold_left - (fun all_friends k -> - all_friend_deps_1 dep_graph (k :: cycle) all_friends k) - all_friends - filenames - in - let friends, _ = - all_friend_deps (dep_graph_copy dep_graph) [] ([], []) all_command_line_files - in - let widen_deps friends deps = - deps |> List.map (fun d -> - match d with - | PreferInterface f - when Options.cmi() && Options.codegen() <> None -> - if has_implementation file_system_map f - && List.contains f (!interfaces_needing_inlining) - then UseImplementation f - else PreferInterface f - | PreferInterface f - when List.contains (FriendImplementation f) friends -> - FriendImplementation f - | _ -> d) - in - let _, all_files = - let (Deps dg) = dep_graph in - let (Deps dg') = deps_empty() in - BU.smap_fold dg (fun filename (dependences, color) () -> - BU.smap_add dg' filename (widen_deps friends dependences, color)) (); - all_friend_deps (Deps dg') [] ([], []) all_command_line_files - in - all_files + let inlining_ifaces = !interfaces_needing_inlining in + let all_files, _ = + topological_dependences_of file_system_map dep_graph inlining_ifaces all_cmd_line_files (Options.codegen()<>None) in - let all_files = topological_dependences_of all_cmd_line_files in all_files, - mk_deps dep_graph file_system_map all_cmd_line_files all_files (!interfaces_needing_inlining) + mk_deps dep_graph file_system_map all_cmd_line_files all_files inlining_ifaces let deps_of deps (f:file_name) : list = @@ -1118,12 +1130,12 @@ let print_full (deps:deps) : unit = let cache_file f = norm_path (cache_file_name f) in let transitive_krml = smap_create 41 in keys |> List.iter - (fun f -> - let f_deps, _ = deps_try_find deps.dep_graph f |> Option.get in + (fun file_name -> + let f_deps, _ = deps_try_find deps.dep_graph file_name |> Option.get in let iface_deps = - if is_interface f + if is_interface file_name then None - else match interface_of deps.file_system_map (lowercase_module_name f) with + else match interface_of deps.file_system_map (lowercase_module_name file_name) with | None -> None | Some iface -> @@ -1134,7 +1146,7 @@ let print_full (deps:deps) : unit = (List.filter (fun iface_dep -> not (BU.for_some (dep_subsumed_by iface_dep) f_deps))) in - let norm_f = norm_path f in + let norm_f = norm_path file_name in let files = List.map (file_of_dep_aux true deps.file_system_map deps.cmd_line_files) f_deps in let files = match iface_deps with @@ -1152,103 +1164,100 @@ let print_full (deps:deps) : unit = //this one prints: // a.fst.checked: b.fst.checked c.fsti.checked a.fsti Util.print3 "%s: %s \\\n\t%s\n\n" - (cache_file f) + (cache_file file_name) norm_f files; // for building an executable from a given module: // foo.exe: dep1.krml dep2.krml etc. let already_there = - match smap_try_find transitive_krml (norm_path (output_file ".krml" f)) with + match smap_try_find transitive_krml (norm_path (output_file ".krml" file_name)) with | Some (_, already_there, _) -> already_there | None -> [] in smap_add transitive_krml - (norm_path (output_file ".krml" f)) - (norm_path (output_file ".exe" f), + (norm_path (output_file ".krml" file_name)) + (norm_path (output_file ".exe" file_name), List.unique (already_there @ List.map (fun x -> norm_path (output_file ".krml" x)) - (deps_of deps f)), + (deps_of deps file_name)), false); //And, if this is not an interface, we also print out the dependences among the .ml files // excluding files in ulib, since these are packaged in fstarlib.cmxa let all_fst_files_dep, widened = - let impl_dep = function - | PreferInterface f when Options.cmi() -> - if has_implementation deps.file_system_map f - && List.contains f deps.interfaces_with_inlining - then UseImplementation f, true - else PreferInterface f, false - | d -> d, false - in - let maybe_widen_deps (f_deps:dependences) = - List.fold_right - (fun dep (out, widened) -> - let dep, widened' = impl_dep dep in - file_of_dep_aux false deps.file_system_map deps.cmd_line_files dep::out, - widened || widened') - f_deps - ([], false) - in - let fst_files, widened = maybe_widen_deps f_deps in - let fst_files_from_iface, widened_iface = - match iface_deps with - | None -> [], false - | Some iface_deps -> maybe_widen_deps iface_deps - in - BU.remove_dups (fun x y -> x = y) (fst_files @ fst_files_from_iface), - widened || widened_iface + if Options.cmi() + then topological_dependences_of + deps.file_system_map + deps.dep_graph + deps.interfaces_with_inlining + [file_name] + true + else + let maybe_widen_deps (f_deps:dependences) = + List.map + (fun dep -> + file_of_dep_aux false deps.file_system_map deps.cmd_line_files dep) + f_deps + in + let fst_files = maybe_widen_deps f_deps in + let fst_files_from_iface = + match iface_deps with + | None -> [] + | Some iface_deps -> maybe_widen_deps iface_deps + in + BU.remove_dups (fun x y -> x = y) (fst_files @ fst_files_from_iface), + false in let all_checked_fst_files = List.map cache_file all_fst_files_dep in - if is_implementation f then ( + if is_implementation file_name then ( if Options.cmi() && widened then begin Util.print3 "%s: %s \\\n\t%s\n\n" - (output_ml_file f) - (cache_file f) + (output_ml_file file_name) + (cache_file file_name) (String.concat " \\\n\t" all_checked_fst_files); Util.print3 "%s: %s \\\n\t%s\n\n" - (output_krml_file f) - (cache_file f) + (output_krml_file file_name) + (cache_file file_name) (String.concat " \\\n\t" all_checked_fst_files) end else begin Util.print2 "%s: %s \n\n" - (output_ml_file f) - (cache_file f); + (output_ml_file file_name) + (cache_file file_name); Util.print2 "%s: %s\n\n" - (output_krml_file f) - (cache_file f) + (output_krml_file file_name) + (cache_file file_name) end; let cmx_files = let extracted_fst_files = all_fst_files_dep |> List.filter (fun df -> - lowercase_module_name df <> lowercase_module_name f //avoid circular deps on f's own cmx + lowercase_module_name df <> lowercase_module_name file_name //avoid circular deps on f's own cmx && Options.should_extract (lowercase_module_name df)) in extracted_fst_files |> List.map output_cmx_file in - if Options.should_extract (lowercase_module_name f) + if Options.should_extract (lowercase_module_name file_name) then Util.print3 "%s: %s \\\n\t%s\n\n" - (output_cmx_file f) - (output_ml_file f) + (output_cmx_file file_name) + (output_ml_file file_name) (String.concat "\\\n\t" cmx_files) - ) else if not(has_implementation deps.file_system_map (lowercase_module_name f)) - && is_interface f then ( + ) else if not(has_implementation deps.file_system_map (lowercase_module_name file_name)) + && is_interface file_name then ( // .krml files can be produced using just an interface, unlike .ml files if Options.cmi() && widened then Util.print3 "%s: %s \\\n\t%s\n\n" - (output_krml_file f) - (cache_file f) + (output_krml_file file_name) + (cache_file file_name) (String.concat " \\\n\t" all_checked_fst_files) else Util.print2 "%s: %s \n\n" - (output_krml_file f) - (cache_file f) + (output_krml_file file_name) + (cache_file file_name) )); let all_fst_files = keys |> List.filter is_implementation |> Util.sort_with String.compare in let all_ml_files = diff --git a/src/parser/parse.fsy b/src/parser/parse.fsy index ccf8c22a263..40aeff298f7 100644 --- a/src/parser/parse.fsy +++ b/src/parser/parse.fsy @@ -2974,3 +2974,5 @@ in %% + + diff --git a/src/syntax/FStar.Syntax.Print.fsi b/src/syntax/FStar.Syntax.Print.fsi index 57617e7be62..9a7d4b575c4 100644 --- a/src/syntax/FStar.Syntax.Print.fsi +++ b/src/syntax/FStar.Syntax.Print.fsi @@ -36,6 +36,7 @@ val term_to_string' : DsEnv.env -> term -> string val uvar_to_string : uvar -> string val comp_to_string : comp -> string val comp_to_string' : DsEnv.env -> comp -> string +val lbs_to_string : list -> letbindings -> string val tag_of_term : term -> string val lbname_to_string : lbname -> string val pat_to_string : pat -> string diff --git a/src/syntax/FStar.Syntax.Syntax.fs b/src/syntax/FStar.Syntax.Syntax.fs index 0c3fc6ccfd9..e566f8b482c 100644 --- a/src/syntax/FStar.Syntax.Syntax.fs +++ b/src/syntax/FStar.Syntax.Syntax.fs @@ -143,7 +143,8 @@ and ctx_uvar = { (* (G |- ?u : t ctx_uvar_typ:typ; (* t *) ctx_uvar_reason:string; ctx_uvar_should_check:should_check_uvar; - ctx_uvar_range:Range.range + ctx_uvar_range:Range.range; + ctx_uvar_meta: option<(dyn * term)>; (* the dyn is an FStar.TypeChecker.Env.env *) } and ctx_uvar_and_subst = ctx_uvar * subst_ts and uvar = Unionfind.p_uvar> * version diff --git a/src/syntax/FStar.Syntax.Syntax.fsi b/src/syntax/FStar.Syntax.Syntax.fsi index e08f1c9e465..ac0d30150ed 100644 --- a/src/syntax/FStar.Syntax.Syntax.fsi +++ b/src/syntax/FStar.Syntax.Syntax.fsi @@ -126,7 +126,8 @@ and ctx_uvar = { (* (G |- ?u : t ctx_uvar_typ:typ; (* t *) ctx_uvar_reason:string; ctx_uvar_should_check:should_check_uvar; - ctx_uvar_range:Range.range + ctx_uvar_range:Range.range; + ctx_uvar_meta: option<(dyn * term)>; (* the dyn is an FStar.TypeChecker.Env.env *) } and ctx_uvar_and_subst = ctx_uvar * subst_ts and uvar = Unionfind.p_uvar> * version diff --git a/src/tactics/FStar.Tactics.Basic.fs b/src/tactics/FStar.Tactics.Basic.fs index bc47a619fff..df3a78ca121 100644 --- a/src/tactics/FStar.Tactics.Basic.fs +++ b/src/tactics/FStar.Tactics.Basic.fs @@ -445,7 +445,7 @@ let replace_cur (g:goal) : tac = let new_uvar (reason:string) (env:env) (typ:typ) : tac<(term * ctx_uvar)> = //typ.pos should really never be a FStar.Range.range ... can it? - let u, ctx_uvar, g_u = Env.new_implicit_var_aux reason typ.pos env typ Allow_untyped in + let u, ctx_uvar, g_u = Env.new_implicit_var_aux reason typ.pos env typ Allow_untyped None in bind (add_implicits g_u.implicits) (fun _ -> ret (u, fst (List.hd ctx_uvar))) diff --git a/src/tactics/boot/FStar.Tactics.Interpreter.fs b/src/tactics/boot/FStar.Tactics.Interpreter.fs index 42ae7edb48b..337b47ee309 100644 --- a/src/tactics/boot/FStar.Tactics.Interpreter.fs +++ b/src/tactics/boot/FStar.Tactics.Interpreter.fs @@ -487,8 +487,8 @@ let run_tactic_on_typ s | EExn t -> "uncaught exception: " ^ (Print.term_to_string t) - | _ -> - "uncaught internal exception: " ^ (BU.message_of_exn e) + | e -> + raise e in Err.raise_error (Err.Fatal_UserTacticFailure, BU.format1 "user tactic failed: %s" (texn_to_string e)) @@ -779,7 +779,7 @@ let splice (env:Env.env) (tau:term) : list = let postprocess (env:Env.env) (tau:term) (typ:term) (tm:term) : term = if env.nosynth then tm else begin tacdbg := Env.debug env (Options.Other "Tac"); - let uvtm, _, g_imp = Env.new_implicit_var_aux "postprocess RHS" tm.pos env typ Allow_untyped in + let uvtm, _, g_imp = Env.new_implicit_var_aux "postprocess RHS" tm.pos env typ Allow_untyped None in let u = env.universe_of env typ in let goal = U.mk_squash u (U.mk_eq2 u typ tm uvtm) in diff --git a/src/typechecker/FStar.TypeChecker.Env.fs b/src/typechecker/FStar.TypeChecker.Env.fs index 39bdf6e15d8..195ef63cd4d 100644 --- a/src/typechecker/FStar.TypeChecker.Env.fs +++ b/src/typechecker/FStar.TypeChecker.Env.fs @@ -203,7 +203,6 @@ and implicit = { imp_uvar : ctx_uvar; // The ctx_uvar representing it imp_tm : term; // The term, made up of the ctx_uvar imp_range : Range.range; // Position where it was introduced - imp_meta : option<(env * term)>; // An optional metaprogram to try to fill it } and implicits = list and tcenv_hooks = @@ -1634,7 +1633,7 @@ let close_guard env binders g = (* ------------------------------------------------*) (* Generating new implicit variables *) -let new_implicit_var_aux reason r env k should_check = +let new_implicit_var_aux reason r env k should_check meta = match U.destruct k FStar.Parser.Const.range_of_lid with | Some [_; (tm, _)] -> let t = S.mk (S.Tm_constant (FStar.Const.Const_range tm.pos)) None tm.pos in @@ -1650,7 +1649,8 @@ let new_implicit_var_aux reason r env k should_check = ctx_uvar_typ=k; ctx_uvar_reason=reason; ctx_uvar_should_check=should_check; - ctx_uvar_range=r + ctx_uvar_range=r; + ctx_uvar_meta=meta; } in check_uvar_ctx_invariant reason r true gamma binders; let t = mk (Tm_uvar (ctx_uvar, ([], NoUseRange))) None r in @@ -1658,7 +1658,7 @@ let new_implicit_var_aux reason r env k should_check = ; imp_tm = t ; imp_uvar = ctx_uvar ; imp_range = r - ; imp_meta = None } in + } in let g = {trivial_guard with implicits=[imp]} in t, [(ctx_uvar, r)], g diff --git a/src/typechecker/FStar.TypeChecker.Env.fsi b/src/typechecker/FStar.TypeChecker.Env.fsi index f2c0b3f26ac..ac4c74ef9b9 100644 --- a/src/typechecker/FStar.TypeChecker.Env.fsi +++ b/src/typechecker/FStar.TypeChecker.Env.fsi @@ -21,6 +21,7 @@ open FStar open FStar.Syntax.Syntax open FStar.Ident open FStar.TypeChecker.Common + module BU = FStar.Util type step = @@ -173,7 +174,6 @@ and implicit = { imp_uvar : ctx_uvar; // The ctx_uvar representing it imp_tm : term; // The term, made up of the ctx_uvar imp_range : Range.range; // Position where it was introduced - imp_meta : option<(env * term)>; // An optional metaprogram to try to fill it } and implicits = list and tcenv_hooks = @@ -368,6 +368,6 @@ val def_check_closed_in_env : Range.range -> msg:string -> env -> term -> unit val def_check_guard_wf : Range.range -> msg:string -> env -> guard_t -> unit val close_forall : env -> binders -> term -> term -val new_implicit_var_aux : string -> Range.range -> env -> typ -> should_check_uvar -> (term * list<(ctx_uvar * Range.range)> * guard_t) +val new_implicit_var_aux : string -> Range.range -> env -> typ -> should_check_uvar -> option<(FStar.Dyn.dyn * term)> -> (term * list<(ctx_uvar * Range.range)> * guard_t) val print_gamma : gamma -> string diff --git a/src/typechecker/FStar.TypeChecker.PatternUtils.fs b/src/typechecker/FStar.TypeChecker.PatternUtils.fs index 6d06a345f36..c107ec56d6c 100644 --- a/src/typechecker/FStar.TypeChecker.PatternUtils.fs +++ b/src/typechecker/FStar.TypeChecker.PatternUtils.fs @@ -131,7 +131,7 @@ let pat_as_exp (introduce_bv_uvars:bool) if not introduce_bv_uvars then {x with sort=S.tun}, Env.trivial_guard, env else let t, _ = U.type_u() in - let t_x, _, guard = new_implicit_var_aux "pattern bv type" (S.range_of_bv x) env t Allow_untyped in + let t_x, _, guard = new_implicit_var_aux "pattern bv type" (S.range_of_bv x) env t Allow_untyped None in let x = {x with sort=t_x} in x, guard, Env.push_bv env x in @@ -156,9 +156,9 @@ let pat_as_exp (introduce_bv_uvars:bool) | Pat_dot_term(x, _) -> let k, _ = U.type_u () in - let t, _, g = new_implicit_var_aux "pat_dot_term type" (S.range_of_bv x) env k Allow_untyped in + let t, _, g = new_implicit_var_aux "pat_dot_term type" (S.range_of_bv x) env k Allow_untyped None in let x = {x with sort=t} in - let e, _, g' = new_implicit_var_aux "pat_dot_term" (S.range_of_bv x) env t Allow_untyped in + let e, _, g' = new_implicit_var_aux "pat_dot_term" (S.range_of_bv x) env t Allow_untyped None in let p = {p with v=Pat_dot_term(x, e)} in ([], [], [], env, e, conj_guard g g', p) diff --git a/src/typechecker/FStar.TypeChecker.Rel.fs b/src/typechecker/FStar.TypeChecker.Rel.fs index c83100afa46..54acad016d5 100644 --- a/src/typechecker/FStar.TypeChecker.Rel.fs +++ b/src/typechecker/FStar.TypeChecker.Rel.fs @@ -67,7 +67,7 @@ type worklist = { (* --------------------------------------------------------- *) (* Generating new unification variables/patterns *) (* --------------------------------------------------------- *) -let new_uvar reason wl r gamma binders k should_check : ctx_uvar * term * worklist = +let new_uvar reason wl r gamma binders k should_check meta : ctx_uvar * term * worklist = let ctx_uvar = { ctx_uvar_head=UF.fresh(); ctx_uvar_gamma=gamma; @@ -75,7 +75,8 @@ let new_uvar reason wl r gamma binders k should_check : ctx_uvar * term * workli ctx_uvar_typ=k; ctx_uvar_reason=reason; ctx_uvar_should_check=should_check; - ctx_uvar_range=r + ctx_uvar_range=r; + ctx_uvar_meta=meta; } in check_uvar_ctx_invariant reason r true gamma binders; let t = mk (Tm_uvar (ctx_uvar, ([], NoUseRange))) None r in @@ -83,15 +84,14 @@ let new_uvar reason wl r gamma binders k should_check : ctx_uvar * term * workli ; imp_tm = t ; imp_uvar = ctx_uvar ; imp_range = r - ; imp_meta = None } in ctx_uvar, t, {wl with wl_implicits=imp::wl.wl_implicits} let copy_uvar u (bs:binders) t wl = let env = {wl.tcenv with gamma = u.ctx_uvar_gamma } in let env = Env.push_binders env bs in - new_uvar u.ctx_uvar_reason wl u.ctx_uvar_range env.gamma - (Env.all_binders env) t u.ctx_uvar_should_check + new_uvar ("copy:"^u.ctx_uvar_reason) wl u.ctx_uvar_range env.gamma + (Env.all_binders env) t u.ctx_uvar_should_check u.ctx_uvar_meta (* --------------------------------------------------------- *) (* *) @@ -290,7 +290,7 @@ let mk_eq2 wl env prob t1 t2 : term * worklist = *) let t_type, u = U.type_u () in let binders = Env.all_binders env in - let _, tt, wl = new_uvar "eq2" wl t1.pos env.gamma binders t_type Allow_unresolved in + let _, tt, wl = new_uvar "eq2" wl t1.pos env.gamma binders t_type Allow_unresolved None in U.mk_eq2 u tt t1 t2, wl let p_invert = function @@ -317,6 +317,7 @@ let mk_problem wl scope orig lhs rel rhs elt reason = bs U.ktype0 Allow_untyped + None in let prob = //logical guards are always squashed; @@ -364,6 +365,7 @@ let new_problem wl env lhs rel rhs (subject:option) loc reason = (Env.all_binders env) lg_ty Allow_untyped + None in let lg = match subject with @@ -619,6 +621,7 @@ let destruct_flex_t t wl : flex_t * worklist = (new_gamma |> List.collect (function Binding_var x -> [S.mk_binder x] | _ -> []) |> List.rev) (U.arrow dom_binders (S.mk_Total uv.ctx_uvar_typ)) uv.ctx_uvar_should_check + uv.ctx_uvar_meta in let args_sol = List.map (fun (x, i) -> S.bv_to_name x, i) dom_binders in let sol = S.mk_Tm_app t_v args_sol None t.pos in @@ -763,7 +766,7 @@ let gamma_until (g:gamma) (bs:binders) = let restrict_ctx (tgt:ctx_uvar) (src:ctx_uvar) wl = let pfx, _ = maximal_prefix tgt.ctx_uvar_binders src.ctx_uvar_binders in let g = gamma_until src.ctx_uvar_gamma pfx in - let _, src', wl = new_uvar src.ctx_uvar_reason wl src.ctx_uvar_range g pfx src.ctx_uvar_typ src.ctx_uvar_should_check in + let _, src', wl = new_uvar ("restrict:"^src.ctx_uvar_reason) wl src.ctx_uvar_range g pfx src.ctx_uvar_typ src.ctx_uvar_should_check src.ctx_uvar_meta in Unionfind.change src.ctx_uvar_head src'; wl @@ -2086,7 +2089,8 @@ and solve_t_flex_flex env orig wl (lhs:flex_t) (rhs:flex_t) : solution = ^"\tlhs=" ^u_lhs.ctx_uvar_reason ^ "\trhs=" ^u_rhs.ctx_uvar_reason) wl range gamma_w ctx_w (U.arrow zs (S.mk_Total t_res_lhs)) - Strict in + Strict + None in let w_app = S.mk_Tm_app w (List.map (fun (z, _) -> S.as_arg (S.bv_to_name z)) zs) None w.pos in let _ = if Env.debug env <| Options.Other "Rel" @@ -3348,9 +3352,22 @@ let teq_nosmt (env:env) (t1:typ) (t2:typ) : option = | Some g -> discharge_guard' None env g false let resolve_implicits' env must_total forcelax g = - let unresolved ctx_u = + let rec unresolved ctx_u = match (Unionfind.find ctx_u.ctx_uvar_head) with - | Some _ -> false + | Some r -> + begin match ctx_u.ctx_uvar_meta with + | None -> false + (* If we have a meta annotation, we recurse to see if the uvar + * is actually solved, instead of being resolved to yet another uvar. + * In that case, while we are keeping track of that uvar, we must not + * forget the meta annotation in case this second uvar is not solved. + * See #1561. *) + | Some _ -> + begin match (SS.compress r).n with + | Tm_uvar (ctx_u', _) -> unresolved ctx_u' + | _ -> false + end + end | None -> true in let rec until_fixpoint (acc: Env.implicits * bool) (implicits:Env.implicits) : Env.implicits = @@ -3362,10 +3379,11 @@ let resolve_implicits' env must_total forcelax g = if ctx_u.ctx_uvar_should_check = Allow_unresolved then until_fixpoint(out, true) tl else if unresolved ctx_u - then begin match hd.imp_meta with + then begin match ctx_u.ctx_uvar_meta with | None -> until_fixpoint (hd::out, changed) tl - | Some (env, tau) -> + | Some (env_dyn, tau) -> + let env : Env.env = FStar.Dyn.undyn env_dyn in if Env.debug env (Options.Other "Tac") then BU.print1 "Running tactic for meta-arg %s\n" (Print.ctx_uvar_to_string ctx_u); let t = env.synth_hook env hd.imp_uvar.ctx_uvar_typ tau in @@ -3375,7 +3393,8 @@ let resolve_implicits' env must_total forcelax g = | None -> failwith "resolve_implicits: unifying with an unresolved uvar failed?" | Some g -> g.implicits in - let hd = { hd with imp_meta = None } in + let ctx_u = { ctx_u with ctx_uvar_meta = None } in + let hd = { hd with imp_uvar = ctx_u } in until_fixpoint (out, true) (hd :: (extra @ tl)) end else if ctx_u.ctx_uvar_should_check = Allow_untyped diff --git a/src/typechecker/FStar.TypeChecker.TcTerm.fs b/src/typechecker/FStar.TypeChecker.TcTerm.fs index 67be36ce1cf..e464f8c6038 100644 --- a/src/typechecker/FStar.TypeChecker.TcTerm.fs +++ b/src/typechecker/FStar.TypeChecker.TcTerm.fs @@ -30,6 +30,7 @@ open FStar.Syntax.Syntax open FStar.Syntax.Subst open FStar.Syntax.Util open FStar.Const +open FStar.Dyn open FStar.TypeChecker.Rel open FStar.TypeChecker.Common module S = FStar.Syntax.Syntax @@ -1558,12 +1559,7 @@ and check_application_args env head chead ghead args expected_topt : term * lcom let tau, _, g_tau = tc_tactic env tau in let t = SS.subst subst x.sort in let t, g_ex = check_no_escape (Some head) env fvs t in - let varg, _, implicits = TcUtil.new_implicit_var "Instantiating meta argument in application" head.pos env t in //new_uvar env t in - // There's only one implicit, but oh well - let mark_meta_implicits tau g = - { g with implicits = - List.map (fun imp -> { imp with imp_meta = Some (env, tau) }) g.implicits } in - let implicits = mark_meta_implicits tau implicits in + let varg, _, implicits = new_implicit_var_aux "Instantiating meta argument in application" head.pos env t Strict (Some (mkdyn env, tau)) in let subst = NT(x, varg)::subst in let arg = varg, as_implicit true in let guard = List.fold_right Env.conj_guard [g_ex; g; g_tau] implicits in diff --git a/src/typechecker/FStar.TypeChecker.Util.fs b/src/typechecker/FStar.TypeChecker.Util.fs index 34d6cb517ad..c7d8a846452 100644 --- a/src/typechecker/FStar.TypeChecker.Util.fs +++ b/src/typechecker/FStar.TypeChecker.Util.fs @@ -32,8 +32,7 @@ open FStar.Ident open FStar.Syntax.Subst open FStar.TypeChecker.Common open FStar.Syntax -open FStar.Syntax -open FStar.Syntax +open FStar.Dyn type lcomp_with_binder = option * lcomp @@ -54,7 +53,7 @@ let report env errs = (* Unification variables *) (************************************************************************) let new_implicit_var reason r env k = - new_implicit_var_aux reason r env k Strict + new_implicit_var_aux reason r env k Strict None let close_guard_implicits env (xs:binders) (g:guard_t) : guard_t = if not <| Options.eager_subtyping() then g else @@ -1200,14 +1199,12 @@ let maybe_instantiate (env:Env.env) e t = | _, (x, Some (Meta tau))::rest -> let t = SS.subst subst x.sort in - let v, _, g = new_implicit_var "Instantiation of meta argument" e.pos env t in + let v, _, g = new_implicit_var_aux "Instantiation of meta argument" + e.pos env t Strict + (Some (mkdyn env, tau)) in if Env.debug env Options.High then BU.print1 "maybe_instantiate: Instantiating meta argument with %s\n" (Print.term_to_string v); - let mark_meta_implicits tau g = - { g with implicits = - List.map (fun imp -> { imp with imp_meta = Some (env, tau) }) g.implicits } in - let g = mark_meta_implicits tau g in let subst = NT(x, v)::subst in let args, bs, subst, g' = aux subst (decr_inst inst_n) rest in (v, Some S.imp_tag)::args, bs, subst, Env.conj_guard g g' @@ -1381,8 +1378,8 @@ let gen env (is_rec:bool) (lecs:list<(lbname * term * comp)>) : option) = - let fail k = + let gen_types (uvs:list) : list<(bv * aqual)> = + let fail k : unit = let lbname, e, c = lec_hd in raise_error (Errors.Fatal_FailToResolveImplicitArgument, BU.format3 "Failed to resolve implicit argument of type '%s' in the type of %s (%s)" diff --git a/ulib/FStar.List.Pure.Properties.fst b/ulib/FStar.List.Pure.Properties.fst index e336431f6ae..5f30eeb13c3 100644 --- a/ulib/FStar.List.Pure.Properties.fst +++ b/ulib/FStar.List.Pure.Properties.fst @@ -52,3 +52,209 @@ let rec splitAt_length_total (#a:Type) (l:list a) match l with | [] -> () | x :: xs -> splitAt_length_total xs + + +(** If we [append] the two lists produced using a [splitAt], then we + get back the original list *) +let rec lemma_splitAt_append (#a:Type) (n:nat) (l:list a) : + Lemma + (requires n <= length l) + (ensures (let l1, l2 = splitAt n l in + append l1 l2 == l /\ length l1 = n)) = + match n with + | 0 -> () + | _ -> + match l with + | [] -> () + | x :: xs -> lemma_splitAt_append (n-1) xs + + +(** If we [splitAt] the point at which two lists have been [append]ed, then we + get back the original lists. *) +let rec lemma_append_splitAt (#t:Type) (l1 l2:list t) : + Lemma + (ensures (splitAt (length l1) (append l1 l2) == (l1, l2))) = + match l1 with + | [] -> () + | _ -> lemma_append_splitAt (tl l1) l2 + + +(** Fully characterize behavior of [splitAt] in terms of more standard list concepts *) +let rec lemma_splitAt (#t: Type) (l l1 l2:list t) (n:nat{n <= length l}) : + Lemma (splitAt n l == (l1, l2) <==> l == l1 @ l2 /\ length l1 = n) = + lemma_splitAt_append n l; + lemma_append_splitAt l1 l2 + + +(** The [hd] of the second list returned via [splitAt] is the [n]th element of + the original list *) +let rec lemma_splitAt_index_hd (#t:Type) (n:nat) (l:list t) : + Lemma + (requires (n < length l)) + (ensures (let l1, l2 = splitAt n l in + splitAt_length n l; + length l2 > 0 /\ hd l2 == index l n)) = + let x :: xs = l in + match n with + | 0 -> () + | _ -> lemma_splitAt_index_hd (n - 1) (tl l) + + +(** If two lists have the same left prefix, then shorter left prefixes are + also the same. *) +let rec lemma_splitAt_shorten_left + (#t:Type) (l1 l2:list t) (i:nat{i <= length l1 /\ i <= length l2}) (j:nat{j <= i}) : + Lemma + (requires (fst (splitAt i l1) == fst (splitAt i l2))) + (ensures (fst (splitAt j l1) == fst (splitAt j l2))) = + match j with + | 0 -> () + | _ -> + lemma_splitAt_shorten_left (tl l1) (tl l2) (i-1) (j-1) + +(** Doing an [index] on the left-part of a [splitAt] is same as doing it on + the original list *) +let rec lemma_splitAt_reindex_left (#t:Type) (i:nat) (l:list t) (j:nat) : + Lemma + (requires i <= length l /\ j < i) + (ensures ( + let left, right = splitAt i l in + splitAt_length i l; + j < length left /\ index left j == index l j)) = + match i, j with + | 1, _ | _, 0 -> () + | _ -> lemma_splitAt_reindex_left (i - 1) (tl l) (j - 1) + + +(** Doing an [index] on the right-part of a [splitAt] is same as doing it on + the original list, but shifted *) +let rec lemma_splitAt_reindex_right (#t:Type) (i:nat) (l:list t) (j:nat) : + Lemma + (requires i <= length l /\ j + i < length l) + (ensures ( + let left, right = splitAt i l in + splitAt_length i l; + j < length right /\ index right j == index l (j + i))) = + match i with + | 0 -> () + | _ -> lemma_splitAt_reindex_right (i - 1) (tl l) j + + +(** Properties of split3 *) + + +(** The 3 pieces returned via [split3] can be joined together via an + [append] and a [cons] *) +let rec lemma_split3_append (#t:Type) (l:list t) (n:nat{n < length l}) : + Lemma + (requires True) + (ensures ( + let a, b, c = split3 l n in + l == append a (b :: c))) = + lemma_splitAt_append n l + + +(** The middle element returned via [split3] is the [n]th [index]ed element *) +let rec lemma_split3_index (#t:Type) (l:list t) (n:nat{n < length l}) : + Lemma + (requires True) + (ensures ( + let a, b, c = split3 l n in + b == index l n)) = + lemma_splitAt_index_hd n l + + +(** The lengths of the left and right parts of a [split3] are as expected. *) +let rec lemma_split3_length (#t:Type) (l:list t) (n:nat{n < length l}) : + Lemma + (requires True) + (ensures ( + let a, b, c = split3 l n in + length a = n /\ length c = length l - n - 1)) = + splitAt_length n l + + +(** If we [split3] on lists with the same left prefix, we get the same + element and left prefix. *) +let lemma_split3_on_same_leftprefix + (#t:Type) (l1 l2:list t) (n:nat{n < length l1 /\ n < length l2}) : + Lemma + (requires (fst (splitAt (n+1) l1) == fst (splitAt (n+1) l2))) + (ensures (let a1, b1, c1 = split3 l1 n in + let a2, b2, c2 = split3 l2 n in + a1 == a2 /\ b1 == b2)) = + let a1, b1, c1 = split3 l1 n in + let a2, b2, c2 = split3 l2 n in + lemma_split3_append l1 n; + lemma_split3_append l2 n; + lemma_split3_length l1 n; + lemma_split3_length l2 n; + append_l_cons b1 c1 a1; + append_l_cons b2 c2 a2; + // assert ((a1 @ [b1]) @ c1 == l1); + // assert ((a2 @ [b2]) @ c2 == l2); + let x1, y1 = splitAt (n+1) l1 in + let x2, y2 = splitAt (n+1) l2 in + lemma_splitAt_append (n+1) l1; + lemma_splitAt_append (n+1) l2; + splitAt_length (n+1) l1; + splitAt_length (n+1) l2; + // assert (x1 @ y1 == (a1 @ [b1]) @ c1); + // assert (x2 @ y2 == (a2 @ [b2]) @ c2); + append_length_inv_head x1 y1 (append a1 [b1]) c1; + append_length_inv_head x2 y2 (append a2 [b2]) c2; + // assert (a1 @ [b1] == a2 @ [b2]); + append_length_inv_tail a1 [b1] a2 [b2]; + // assert (a1 == a2 /\ b1 == b2); + () + + +(** If we perform an [unsnoc] on a list, then the left part is the same + as an [append]+[cons] on the list after [split3]. *) +let rec lemma_split3_unsnoc (#t:Type) (l:list t) (n:nat{n < length l}) : + Lemma + (requires (n <> length l - 1)) + (ensures ( + let a, b, c = split3 l n in + lemma_split3_length l n; + length c > 0 /\ ( + let xs, x = unsnoc l in + let ys, y = unsnoc c in + append a (b :: ys) == xs))) = + match n with + | 0 -> () + | _ -> lemma_split3_unsnoc (tl l) (n-1) + + +(** Doing [unsnoc] and [split3] in either order leads to the same left + part, and element. *) +let rec lemma_unsnoc_split3 (#t:Type) (l:list t) (i:nat{i < length l}) : + Lemma + (requires (i <> length l - 1)) + (ensures ( + let xs, x = unsnoc l in + i < length xs /\ ( + let a0, b0, c0 = split3 l i in + let a1, b1, c1 = split3 xs i in + a0 == a1 /\ b0 == b1))) = + let xs, x = unsnoc l in + lemma_unsnoc_length l; + let a0, b0, c0 = split3 l i in + let a1, b1, c1 = split3 xs i in + splitAt_length_total xs; + // assert (fst (splitAt (length xs) xs) == xs); + // assert (fst (splitAt (length xs) xs) == fst (splitAt (length xs) l)); + // assert (i+1 <= length xs); + lemma_splitAt_shorten_left xs l (length xs) (i+1); + // assert (fst (splitAt (i+1) xs) == fst (splitAt (i+1) l)); + lemma_split3_on_same_leftprefix l xs i + +(** The head of the right side of a [split3] can be [index]ed from original list. *) +let rec lemma_split3_r_hd (#t:Type) (l:list t) (i:nat{i < length l}) : + Lemma + (ensures (let a, b, c = split3 l i in + lemma_split3_length l i; + length c > 0 ==> i + 1 < length l /\ hd c == index l (i + 1))) = + match i with + | 0 -> () + | _ -> lemma_split3_r_hd (tl l) (i - 1) diff --git a/ulib/FStar.List.Tot.Base.fst b/ulib/FStar.List.Tot.Base.fst index b7a8c750c09..85355873ee7 100644 --- a/ulib/FStar.List.Tot.Base.fst +++ b/ulib/FStar.List.Tot.Base.fst @@ -123,6 +123,13 @@ let rec append x y = match x with (** Defines notation [@] for [append], as in OCaml, F# . *) let op_At x y = append x y +(** [snoc (l, x)] adds [x] to the end of the list [l]. + + Note: We use an uncurried [snoc (l, x)] instead of the curried + [snoc l x]. *) +val snoc: (list 'a * 'a) -> Tot (list 'a) +let snoc (l, x) = append l [x] + (** [flatten l], where [l] is a list of lists, returns the list of the elements of the lists in [l], preserving their order. Named as in: OCaml, Coq. *) @@ -431,6 +438,33 @@ let rec splitAt (#a:Type) (n:nat) (l:list a) : list a * list a = | [] -> [], l | x :: xs -> let l1, l2 = splitAt (n-1) xs in x :: l1, l2 +let rec lemma_splitAt_snd_length (#a:Type) (n:nat) (l:list a) : + Lemma + (requires (n <= length l)) + (ensures (length (snd (splitAt n l)) = length l - n)) = + match n, l with + | 0, _ -> () + | _, [] -> () + | _, _ :: l' -> lemma_splitAt_snd_length (n - 1) l' + +(** [unsnoc] is an inverse of [snoc]. It splits a list into + all-elements-except-last and last element. *) +val unsnoc: #a:Type -> l:list a{length l > 0} -> Tot (list a * a) +let unsnoc #a l = + let l1, l2 = splitAt (length l - 1) l in + lemma_splitAt_snd_length (length l - 1) l; + l1, hd l2 + +(** [split3] splits a list into 3 parts. This allows easy access to + the part of the list before and after the element, as well as the + element itself. *) +val split3: #a:Type -> l:list a -> i:nat{i < length l} -> Tot (list a * a * list a) +let split3 #a l i = + let a, as = splitAt i l in + lemma_splitAt_snd_length i l; + let b :: c = as in + a, b, c + (** Sorting (implemented as quicksort) **) (** [partition] splits a list [l] into two lists, the sum of whose diff --git a/ulib/FStar.List.Tot.Properties.fst b/ulib/FStar.List.Tot.Properties.fst index f7b95f2d936..541d5dfef63 100644 --- a/ulib/FStar.List.Tot.Properties.fst +++ b/ulib/FStar.List.Tot.Properties.fst @@ -214,6 +214,16 @@ let append_length_inv_tail append_length left2 right2; append_length_inv_head left1 right1 left2 right2 +(** The [last] element of a list remains the same, even after that list is + [append]ed to another list. *) +let rec lemma_append_last (#a:Type) (l1 l2:list a) : + Lemma + (requires (length l2 > 0)) + (ensures (last (l1 @ l2) == last l2)) = + match l1 with + | [] -> () + | _ :: l1' -> lemma_append_last l1' l2 + (** Properties mixing rev and append **) val rev': list 'a -> Tot (list 'a) @@ -258,6 +268,12 @@ val rev_involutive : l:list 'a -> (ensures (rev (rev l) == l)) let rev_involutive l = rev_rev' l; rev_rev' (rev' l); rev'_involutive l +(** Properties about snoc *) + +val lemma_snoc_length : (lx:(list 'a * 'a)) -> + Lemma (requires True) + (ensures (length (snoc lx) = length (fst lx) + 1)) +let lemma_snoc_length (l, x) = append_length l [x] (** Reverse induction principle **) @@ -285,6 +301,134 @@ let rec map_lemma f l = | [] -> () | h::t -> map_lemma f t +(** Properties about unsnoc *) + +(** [unsnoc] is the inverse of [snoc] *) +val lemma_unsnoc_snoc: #a:Type -> l:list a{length l > 0} -> + Lemma (requires True) + (ensures (snoc (unsnoc l) == l)) + [SMTPat (snoc (unsnoc l))] +let lemma_unsnoc_snoc #a l = + let l', x = unsnoc l in + let l1, l2 = l', [x] in + lemma_splitAt_snd_length (length l - 1) l; + // assert ((l1, l2) == splitAt (length l - 1) l); + let rec aux (l:list a{length l > 0}) : + Lemma (let l1, l2 = splitAt (length l - 1) l in + append l1 l2 == l) = + if length l = 1 then () else aux (tl l) in + aux l + +(** [snoc] is the inverse of [unsnoc] *) +val lemma_snoc_unsnoc: #a:Type -> lx:(list a * a) -> + Lemma (requires True) + (ensures (unsnoc (snoc lx) == lx)) + (decreases (length (fst (lx)))) + [SMTPat (unsnoc (snoc lx))] +let rec lemma_snoc_unsnoc #a lx = + let l, x = lx in + match l with + | [] -> () + | _ -> lemma_snoc_unsnoc (tl l, x) + +(** Doing an [unsnoc] gives us a list that is shorter in length by 1 *) +val lemma_unsnoc_length: #a:Type -> l:list a{length l > 0} -> + Lemma (requires True) + (ensures (length (fst (unsnoc l)) == length l - 1)) +let lemma_unsnoc_length #a l = + lemma_snoc_length (unsnoc l) + +(** [unsnoc] followed by [append] can be connected to the same vice-versa. *) +let rec lemma_unsnoc_append (#a:Type) (l1 l2:list a) : + Lemma + (requires (length l2 > 0)) // the [length l2 = 0] is trivial + (ensures ( + let as, a = unsnoc (l1 @ l2) in + let bs, b = unsnoc l2 in + as == l1 @ bs /\ a == b)) = + match l1 with + | [] -> () + | _ :: l1' -> lemma_unsnoc_append l1' l2 + +(** [unsnoc] gives you [last] element, which is [index]ed at [length l - 1] *) +let rec lemma_unsnoc_is_last (#t:Type) (l:list t) : + Lemma + (requires (length l > 0)) + (ensures (snd (unsnoc l) == last l /\ snd (unsnoc l) == index l (length l - 1))) = + match l with + | [_] -> () + | _ -> lemma_unsnoc_is_last (tl l) + +(** [index]ing on the left part of an [unsnoc]d list is the same as indexing + the original list. *) +let rec lemma_unsnoc_index (#t:Type) (l:list t) (i:nat) : + Lemma + (requires (length l > 0 /\ i < length l - 1)) + (ensures ( + i < length (fst (unsnoc l)) /\ + index (fst (unsnoc l)) i == index l i)) = + match i with + | 0 -> () + | _ -> lemma_unsnoc_index (tl l) (i - 1) + +(** Definition and properties about [split_using] *) + +(** [split_using] splits a list at the first instance of finding an + element in it. + + NOTE: Uses [strong_excluded_middle] axiom. *) +let rec split_using (#t:Type) (l:list t) (x:t{x `memP` l}) : + GTot (r:(list t * list t)) = + match l with + | [_] -> [], l + | a :: as -> + if FStar.StrongExcludedMiddle.strong_excluded_middle (a == x) then ( + [], l + ) else ( + let l1', l2' = split_using as x in + a :: l1', l2' + ) + +let rec lemma_split_using (#t:Type) (l:list t) (x:t{x `memP` l}) : + Lemma + (ensures ( + let l1, l2 = split_using l x in + length l2 > 0 /\ + ~(x `memP` l1) /\ + hd l2 == x /\ + append l1 l2 == l)) = + match l with + | [_] -> () + | a :: as -> + let goal = + let l1, l2 = split_using l x in + length l2 > 0 /\ + ~(x `memP` l1) /\ + hd l2 == x /\ + append l1 l2 == l + in + FStar.Classical.or_elim + #_ #_ + #(fun () -> goal) + (fun (_:squash (a == x)) -> ()) + (fun (_:squash (x `memP` as)) -> lemma_split_using as x) + +(** Definition of [index_of] *) + +(** [index_of l x] gives the index of the leftmost [x] in [l]. + + NOTE: Uses [strong_excluded_middle] axiom. *) +let rec index_of (#t:Type) (l:list t) (x:t{x `memP` l}) : + GTot (i:nat{i < length l /\ index l i == x}) = + match l with + | [_] -> 0 + | a :: as -> + if FStar.StrongExcludedMiddle.strong_excluded_middle (a == x) then ( + 0 + ) else ( + 1 + index_of as x + ) + (** Properties about partition **) (** If [partition f l = (l1, l2)], then for any [x], [x] is in [l] if @@ -426,6 +570,15 @@ let rec mem_memP | [] -> () | a :: q -> mem_memP x q +(** If an element can be [index]ed, then it is a [memP] of the list. *) +let rec lemma_index_memP (#t:Type) (l:list t) (i:nat{i < length l}) : + Lemma + (ensures (index l i `memP` l)) + [SMTPat (index l i `memP` l)] = + match i with + | 0 -> () + | _ -> lemma_index_memP (tl l) (i - 1) + (** The empty list has no elements. *) val memP_empty : #a: Type -> x:a -> Lemma (requires (memP x [])) diff --git a/ulib/FStar.ModifiesGen.fsti b/ulib/FStar.ModifiesGen.fsti index a45b047c6fc..fdde08ea1ed 100644 --- a/ulib/FStar.ModifiesGen.fsti +++ b/ulib/FStar.ModifiesGen.fsti @@ -8,7 +8,6 @@ module HST = FStar.HyperStack.ST (* NOTE: aloc cannot be a member of the class, because of OCaml extraction. So it must be a parameter of the class instead. *) -inline_for_extraction type aloc_t = HS.rid -> nat -> Tot Type noeq diff --git a/ulib/FStar.Tactics.Typeclasses.fst b/ulib/FStar.Tactics.Typeclasses.fst index 7f1d3cda1e3..ddb0bb24753 100644 --- a/ulib/FStar.Tactics.Typeclasses.fst +++ b/ulib/FStar.Tactics.Typeclasses.fst @@ -25,7 +25,7 @@ let rec tcresolve' (seen:list term) (fuel:int) : Tac unit = if FStar.List.Tot.Base.existsb (term_eq g) seen then fail "loop"; let seen = g :: seen in - local seen fuel `or_else` (fun () -> global seen fuel `or_else` (fun () -> fail "could not solve constraint")) + local seen fuel `or_else` (fun () -> global seen fuel `or_else` (fun () -> fail ("could not solve constraint: " ^ term_to_string g))) and local (seen:list term) (fuel:int) () : Tac unit = let bs = binders_of_env (cur_env ()) in first (fun b -> trywith seen fuel (pack (Tv_Var (bv_of_binder b)))) bs