You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm getting back into the swing of things and identifying blockers for Cobb(Coverage Type synthesis). The following is a program that Poirot typechecks incorrectly using
letrec unique_list_gen (s: int) : int list =if sizecheck s then[]elselet (l : int list) = unique_list_gen (subs s) inlet (x : int) = int_gen ()inif list_mem l x thenErrelse x :: Nillet[@assert] unique_list_gen =let s = (v >=0 : [%v: int]) [@over] in
(len v s && uniq v : [%v: int list]) [@under]
Note that the branch with the mem check does seem relevant, though l can be assigned to Nil without issue.
Ideally this is just a simple issue around the axioms for len/uniq predicates or messing with the measure
The text was updated successfully, but these errors were encountered:
I'm getting back into the swing of things and identifying blockers for Cobb(Coverage Type synthesis). The following is a program that Poirot typechecks incorrectly using
dune exec -- bin/main.exe type-check meta-config.json data/issue/singleton_unique.ml
Note that the branch with the mem check does seem relevant, though
l
can be assigned toNil
without issue.Ideally this is just a simple issue around the axioms for
len
/uniq
predicates or messing with the measureThe text was updated successfully, but these errors were encountered: