FStar icon indicating copy to clipboard operation
FStar copied to clipboard

Steel definition fails in dependency loading

Open 857b opened this issue 2 years ago • 1 comments

The following Steel definition is accepted in normal and in lax mode but not when loaded as a dependency:

module A
open Steel.Effect

noeq
type fsteel (pre : pre_t) (post : post_t unit) : Type =
  | FSteel : (f : (unit -> SteelT unit pre post)) -> fsteel pre post

let foo (f : unit -> SteelT unit emp (fun () -> emp))
  : fsteel emp (fun () -> emp)
  = FSteel (fun () -> f ()) (*Error here*)
module B
open A

When checking B.fst in the ide without a .checked file for A.fst, the following error is reported:

(Error 228) Error while computing or loading dependencies:
user tactic failed: ‘Could not make progress, no solvable goal found‘

The error is raised by Steel.Effect.Common.fsti(2220,2221) https://github.com/FStarLang/FStar/blob/808657bb7b9657b37be1aa14efd770da7f2cb065/ulib/experimental/Steel.Effect.Common.fsti#L2220

The workaround is to generate A.fst.checked

857b avatar Jun 07 '22 09:06 857b

Trying to debug this further, it seems that lax-checking A.fst from Emacs does indeed succeed, but running fstar.exe --lax A.fst from the command-line leads to the same error as when trying to load A. I'm not sure yet what the exact issue is, I'll keep poking at it

R1kM avatar Jun 09 '22 13:06 R1kM