Skip to content
Snippets Groups Projects
Commit 017f3334 authored by Andrei Paskevich's avatar Andrei Paskevich
Browse files

Vc: another attempt at (slightly) improving termination checking

parent 22eea516
Branches
No related tags found
No related merge requests found
...@@ -279,14 +279,12 @@ let decrease_def env loc old_t t = ...@@ -279,14 +279,12 @@ let decrease_def env loc old_t t =
let decrease env loc attrs expl olds news = let decrease env loc attrs expl olds news =
if olds = [] && news = [] then t_true else if olds = [] && news = [] then t_true else
let rec decr olds news = match olds, news with let rec decr olds news = match olds, news with
| (old_t, Some old_r)::olds, (t, Some r)::news | (old_t, Some old_r)::olds, (t, Some r)::news when ls_equal old_r r ->
when oty_equal old_t.t_ty t.t_ty && ls_equal old_r r -> if t_equal old_t t then decr olds news else
let dt = t_and (ps_app r [t; old_t]) (acc env r old_t) in let dt = t_and (ps_app r [t; old_t]) (acc env r old_t) in
t_or_simp dt (t_and_simp (t_equ_simp old_t t) (decr olds news)) t_or_simp dt (t_and_simp (t_equ old_t t) (decr olds news))
| (old_t, None)::olds, (t, None)::news | (old_t, None)::olds, (t, None)::news when oty_equal old_t.t_ty t.t_ty ->
when oty_equal old_t.t_ty t.t_ty -> if t_equal old_t t then decr olds news else
if t_equal old_t t then decr olds news
else
let dt = decrease_def env loc old_t t in let dt = decrease_def env loc old_t t in
t_or_simp dt (t_and_simp (t_equ old_t t) (decr olds news)) t_or_simp dt (t_and_simp (t_equ old_t t) (decr olds news))
| (old_t, None)::_, (t, None)::_ -> | (old_t, None)::_, (t, None)::_ ->
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment