summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAseem Rastogi <aseemr@microsoft.com>2020-01-24 04:08:14 (GMT)
committerAseem Rastogi <aseemr@microsoft.com>2020-01-24 04:08:14 (GMT)
commit3b80ad30a11c82b1fe2c8e0bde5890bf919bc54d (patch)
treeb0f68ce9957c3c0cd65f872ea6641ea6f5162151
parent88960d715b85bfd6e834c9371c9c4e997bb8e13a (diff)
downloadFStar-3b80ad30a11c82b1fe2c8e0bde5890bf919bc54d.zip
FStar-3b80ad30a11c82b1fe2c8e0bde5890bf919bc54d.tar.gz
FStar-3b80ad30a11c82b1fe2c8e0bde5890bf919bc54d.tar.bz2
make is_uvar better, noticed from a failure in HoareDiv
-rw-r--r--src/typechecker/FStar.TypeChecker.Rel.fs17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/typechecker/FStar.TypeChecker.Rel.fs b/src/typechecker/FStar.TypeChecker.Rel.fs
index 3bbbc2d..8a0c445 100644
--- a/src/typechecker/FStar.TypeChecker.Rel.fs
+++ b/src/typechecker/FStar.TypeChecker.Rel.fs
@@ -3021,16 +3021,21 @@ and solve_c (env:Env.env) (problem:problem<comp>) (wl:worklist) : solution =
//sub problems for uvar indices in c1
let is_sub_probs, wl =
- let is_uvar t =
+ let rec is_uvar t =
match (SS.compress t).n with
- | Tm_uvar _
- | Tm_uinst ({ n = Tm_uvar _ }, _)
- | Tm_app ({ n = Tm_uvar _ }, _) -> true
+ | Tm_uvar _ -> true
+ | Tm_uinst (t, _) -> is_uvar t
+ | Tm_app (t, _) -> is_uvar t
| _ -> false in
List.fold_right2 (fun (a1, _) (a2, _) (is_sub_probs, wl) ->
if is_uvar a1
- then let p, wl = sub_prob wl a1 EQ a2 "l.h.s. effect index uvar" in
- p::is_sub_probs, wl
+ then begin
+ if Env.debug env <| Options.Other "LayeredEffects" then
+ BU.print2 "solve_layered_sub: adding index equality for %s and %s (since a1 uvar)\n"
+ (Print.term_to_string a1) (Print.term_to_string a2);
+ let p, wl = sub_prob wl a1 EQ a2 "l.h.s. effect index uvar" in
+ p::is_sub_probs, wl
+ end
else is_sub_probs, wl
) c1.effect_args c2.effect_args ([], wl) in