Dear Jean-Jacques,

very late and very partial answer:

On Wed, 10 Apr 2019 at 17:38, Jean-Jacques Levy <jean-jacques.l...@inria.fr>
wrote:

> 1- ide: stop pop-up menus. No reason for them, or make them optional. It
> makes a shaky behaviour. When thinking on a proof, it’s very bad to see
> sparkling menus. Furthermore, the macOS X-window handles them strangely
> when on border of a window.
>

Do you mean contextual menus that appear upon the right mouse click? Or do
you mean error/warning messages that appear in popup windows?


> 2- ide: stop fancy moves. Jumping to next unproved goal is very confusing,
> when you prove goals in non sequential order. Same to jump to a new Emacs
> window when choosing Coq as prover.
>

There is a recenly added option (in the master branch) that makes this
behaviour optional. In the IDE, menu "File", line "Preferences", tab
"General", option "jump to the next unproved goal".


> 3- ide: I loved the display of times on goals. This feature vanished at
> top level !!
>

It is still there, the third column in the session tree window. However, if
the second column "Theory/Goal" becomes too large, it pushes the third
column "Time" too far right, out of visibility.


> 7- I still have difficulties with the new treatment of ghost variables.
> This end with strange text as the sketchy one which follows:
> -------------------------------
> type vertex
> let ghost function (!) (s: S.t) = s.contents
> val (=) (x y: vertex) : bool ensures { result <-> x = y }
>
> clone import appmap.Appmap as M with type key = vertex
> clone import appset.Appset as S with type elt = vertex
>
> val constant vertices: S.t
>
> type env = {ghost black: set vertex; ghost gray: set vertex;
>     stack: list vertex; sccs: set (set vertex); sn: int; num: M.t int}
>
> let rec dfs1 x e  =
> requires {mem x !vertices}
> ...
> with  dfs roots e =
> requires {subset !roots !vertices}
> returns {(_, e') -> subset !roots (union e'.black e'.gray)}
>
>   if S.is_empty roots then (infty(), e) else
>   let x = S.choose roots in
>   let roots' = S.remove x roots in
>   let (n1, e1) =
>     if e.num[x] <> -1 then (e.num[x], e) else dfs1 x e in
>   let (n2, e2) = dfs roots' e1 in (min n1 n2, e2)
> ------------------------------
> I thanks Andreij for giving me hints about equality but I dislike my (!),
> which could conflict later with references !! Maybe there is smarter way
> for distinguishing test-for-emptyness or others in program text ? Maybe
> another analysis of ghost variables is feasible ?
>

Sorry, I don't understand the example or the question. What do you mean by
"distinguishing test-for-emptyness"?

Best,
Andrei
_______________________________________________
Why3-club mailing list
Why3-club@lists.gforge.inria.fr
https://lists.gforge.inria.fr/mailman/listinfo/why3-club

Reply via email to