aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/float64.ml13
-rw-r--r--kernel/reduction.ml6
-rw-r--r--kernel/vars.ml3
-rw-r--r--kernel/vars.mli3
4 files changed, 14 insertions, 11 deletions
diff --git a/kernel/float64.ml b/kernel/float64.ml
index 299f53e8ab..53fc13b04b 100644
--- a/kernel/float64.ml
+++ b/kernel/float64.ml
@@ -21,12 +21,19 @@ let is_neg_infinity f = f = neg_infinity
(* Printing a binary64 float in 17 decimal places and parsing it again
will yield the same float. We assume [to_string_raw] is not given a
- [nan] as input. *)
+ [nan] or an infinity as input. *)
let to_string_raw f = Printf.sprintf "%.17g" f
(* OCaml gives a sign to nan values which should not be displayed as
- all NaNs are considered equal here *)
-let to_string f = if is_nan f then "nan" else to_string_raw f
+ all NaNs are considered equal here.
+ OCaml prints infinities as "inf" (resp. "-inf")
+ but we want "infinity" (resp. "neg_infinity"). *)
+let to_string f =
+ if is_nan f then "nan"
+ else if is_infinity f then "infinity"
+ else if is_neg_infinity f then "neg_infinity"
+ else to_string_raw f
+
let of_string = float_of_string
(* Compiles a float to OCaml code *)
diff --git a/kernel/reduction.ml b/kernel/reduction.ml
index 469d5ccaa2..7574d7b21e 100644
--- a/kernel/reduction.ml
+++ b/kernel/reduction.ml
@@ -354,7 +354,8 @@ and eqappr cv_pb l2r infos (lft1,st1) (lft2,st2) cuniv =
(match kind a1, kind a2 with
| (Sort s1, Sort s2) ->
if not (is_empty_stack v1 && is_empty_stack v2) then
- anomaly (Pp.str "conversion was given ill-typed terms (Sort).");
+ (* May happen because we convert application right to left *)
+ raise NotConvertible;
sort_cmp_universes (info_env infos.cnv_inf) cv_pb s1 s2 cuniv
| (Meta n, Meta m) ->
if Int.equal n m
@@ -471,7 +472,8 @@ and eqappr cv_pb l2r infos (lft1,st1) (lft2,st2) cuniv =
| (FProd (x1, c1, c2, e), FProd (_, c'1, c'2, e')) ->
if not (is_empty_stack v1 && is_empty_stack v2) then
- anomaly (Pp.str "conversion was given ill-typed terms (FProd).");
+ (* May happen because we convert application right to left *)
+ raise NotConvertible;
(* Luo's system *)
let el1 = el_stack lft1 v1 in
let el2 = el_stack lft2 v2 in
diff --git a/kernel/vars.ml b/kernel/vars.ml
index 4c66f1574f..a4465c293b 100644
--- a/kernel/vars.ml
+++ b/kernel/vars.ml
@@ -169,9 +169,6 @@ let subst_of_rel_context_instance sign l =
| _ -> CErrors.anomaly (Pp.str "Instance and signature do not match.")
in aux [] (List.rev sign) l
-let adjust_subst_to_rel_context sign l =
- List.rev (subst_of_rel_context_instance sign l)
-
let adjust_rel_to_rel_context sign n =
let rec aux sign =
let open RelDecl in
diff --git a/kernel/vars.mli b/kernel/vars.mli
index 52a6159f0a..0aac5ed4ce 100644
--- a/kernel/vars.mli
+++ b/kernel/vars.mli
@@ -72,9 +72,6 @@ type substl = constr list
[c₁], as if usable for [substl]. *)
val subst_of_rel_context_instance : Constr.rel_context -> constr list -> substl
-(** For compatibility: returns the substitution reversed *)
-val adjust_subst_to_rel_context : Constr.rel_context -> constr list -> constr list
-
(** Take an index in an instance of a context and returns its index wrt to
the full context (e.g. 2 in [x:A;y:=b;z:C] is 3, i.e. a reference to z) *)
val adjust_rel_to_rel_context : ('a, 'b) Context.Rel.pt -> int -> int