diff options
author | Chantal Keller <Chantal.Keller@lri.fr> | 2021-05-05 16:06:38 +0200 |
---|---|---|
committer | Chantal Keller <Chantal.Keller@lri.fr> | 2021-05-05 16:06:38 +0200 |
commit | 907cb562f511e3bbd3f84011e5d3e101f00c4252 (patch) | |
tree | dd2ddb5ecf838a1090cc51714760b043590aa520 /src/trace/smtAtom.ml | |
parent | d99b3aa7027a6d05d238f387fa2a629b91690ea9 (diff) | |
download | smtcoq-907cb562f511e3bbd3f84011e5d3e101f00c4252.tar.gz smtcoq-907cb562f511e3bbd3f84011e5d3e101f00c4252.zip |
Reify applied polymorphic terms with compdec
Diffstat (limited to 'src/trace/smtAtom.ml')
-rw-r--r-- | src/trace/smtAtom.ml | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/trace/smtAtom.ml b/src/trace/smtAtom.ml index ff6db6a..f0a907a 100644 --- a/src/trace/smtAtom.ml +++ b/src/trace/smtAtom.ml @@ -1338,10 +1338,16 @@ module Atom = | _ -> assert false and mk_unknown c args ty = + (* Collecting types and CompDec allows to reify applied + polymorphic functions *) let rec collect_types = function | [] -> ([],[]) | x::xs as l -> - if Constr.iskind (Structures.retyping_get_type_of env sigma x) then + let ty = Structures.retyping_get_type_of env sigma x in + if Constr.iskind ty || + let c, _ = Structures.decompose_app ty in + Structures.eq_constr c (Lazy.force cCompDec) + then let (l1, l2) = collect_types xs in (x::l1, l2) else |