Dear Andrei, I’m also slow because of travelling to Nice...
> Le 28 mai 2019 à 15:27, Andrei Paskevich <andrei.paskev...@lri.fr> a écrit : > > 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 > <mailto: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? I mean contextual menus. It remind me the Xerox Dorado. When thinking of a (difficult) proof, you want a stable screen. X-window on MacOs clip pop-up menus when you are at bottom of screen, enforcing you to reduce the height of the window and acting again the pop-up menu. Maybe x-window on Linux has not same behavior? > 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 ». ok so it’s better, but I’m not in favour of jumping to next release, because I want my proofs first be stable. > 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. and with new way of having more interactive proofs + treatment of post-conditions (ie not splitting them on conditional branches) the goals are more pushed to the right. > 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 »? I mean that the program text is uglier. One good point of Hoare logic is that the logic values are nearly same as the program text values. Now for capturing a problem due to the soundness analysis of ghost values, one spoils program text and distinguish between program values and logic values! That’s exactly what I do not like with denotational semantics and now in beautiful Why3, you have similar problems :-( :-( :-( ... > > Best, > Andrei
_______________________________________________ Why3-club mailing list Why3-club@lists.gforge.inria.fr https://lists.gforge.inria.fr/mailman/listinfo/why3-club