Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
why3
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
126
Issues
126
List
Boards
Labels
Service Desk
Milestones
Merge Requests
16
Merge Requests
16
Operations
Operations
Incidents
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Why3
why3
Commits
489937bd
Commit
489937bd
authored
Mar 28, 2011
by
MARCHE Claude
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
new gmain using generic session manager
parent
6fd96b9c
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
2544 additions
and
814 deletions
+2544
-814
Makefile.in
Makefile.in
+1
-1
ROADMAP
ROADMAP
+14
-0
src/ide/newmain.ml
src/ide/newmain.ml
+2096
-0
src/ide/session.ml
src/ide/session.ml
+387
-771
src/ide/session.mli
src/ide/session.mli
+46
-42
No files found.
Makefile.in
View file @
489937bd
...
...
@@ -420,7 +420,7 @@ install_local: bin/why3config
ifeq
(@enable_ide@,yes)
IDE_FILES
=
gconfig db
gmain
IDE_FILES
=
gconfig db
session gmain
IDEMODULES
=
$(
addprefix
src/ide/,
$(IDE_FILES)
)
...
...
ROADMAP
View file @
489937bd
...
...
@@ -10,6 +10,10 @@
* Jessie3
* traceability: Partially done
(Claude)
TODO: traceability des hyp comme path dans le prog (depuis
Frama-C en particulier)
afficher les explications dans les outils en ligne de
commande why3 et why3bench + le path
* Coq plugin
* Coq realization of theories
(Andrei)
...
...
@@ -28,6 +32,14 @@
(?)
* BD : se passer de sqlite3
(Claude)
Solution: un unique fichier XML, qui est ecrit mais pas
tres souvent (pas plus d'une fois par seconde)
ne pas oublier neanmoins de mettre une action dans Timeout
qui enregistre au bout d'un moment
pb: n'est pas independant de l'IDE, peut-on faire un module
independant de l'IDE ? qui serait utilisé par why3bench ?
* IDE: avoir des transformations non codees en dur
(Claude d'abord)
...
...
@@ -68,6 +80,8 @@
* IDE: debug "hide proved goals" feature
** suggested solution: replace model + filter_model by a custom model
* IDE: debug "remove" et "clean" qui provoquent des segfaults !!
* IDE: ajouter "invalid" comme cas de resultats de preuve
(utiliser call_provers.proof_result dans gmain)
DONE
...
...
src/ide/newmain.ml
0 → 100644
View file @
489937bd
This diff is collapsed.
Click to expand it.
src/ide/session.ml
View file @
489937bd
This diff is collapsed.
Click to expand it.
src/ide/session.mli
View file @
489937bd
...
...
@@ -18,13 +18,35 @@
(**************************************************************************)
open
Why3
open
Why
type
prover_data
=
private
{
prover_id
:
string
;
prover_name
:
string
;
prover_version
:
string
;
command
:
string
;
driver_name
:
string
;
driver
:
Driver
.
driver
;
mutable
editor
:
string
;
}
type
proof_attempt_status
=
private
|
Undone
|
Scheduled
(** external proof attempt is scheduled *)
|
Running
(** external proof attempt is in progress *)
|
Done
of
Call_provers
.
prover_result
(** external proof done *)
|
InternalFailure
of
exn
(** external proof aborted by internal error *)
module
type
OBSERVER
=
sig
type
key
val
create
:
?
parent
:
key
->
unit
->
key
val
notify
:
key
->
unit
val
remove
:
key
->
unit
val
timeout
:
ms
:
int
->
(
unit
->
bool
)
->
unit
val
idle
:
(
unit
->
bool
)
->
unit
end
module
Make
(
O
:
OBSERVER
)
:
sig
...
...
@@ -35,13 +57,6 @@ module Make(O: OBSERVER) : sig
(* *)
(*****************************)
type
proof_attempt_status
=
|
Undone
|
Scheduled
(** external proof attempt is scheduled *)
|
Running
(** external proof attempt is in progress *)
|
Done
of
Call_provers
.
prover_result
(** external proof done *)
|
InternalFailure
of
exn
(** external proof aborted by internal error *)
type
proof_attempt
=
private
{
prover
:
prover_data
;
proof_goal
:
goal
;
...
...
@@ -52,11 +67,12 @@ module Make(O: OBSERVER) : sig
}
and
goal_parent
=
|
T
heory
of
theory
|
T
ransf
of
transf
|
Parent_t
heory
of
theory
|
Parent_t
ransf
of
transf
and
goal
=
private
{
goal_name
:
string
;
goal_expl
:
string
option
;
parent
:
goal_parent
;
task
:
Task
.
task
;
goal_key
:
O
.
key
;
...
...
@@ -108,22 +124,6 @@ module Make(O: OBSERVER) : sig
Opening a session must be done prior to any other actions.
And it cannot be done twice.
TODO: some scheduling functions might be needed as argument, e.g
add_idle: (unit -> bool) -> unit
that will allow to install a handler when context is idle
add_timeout: ms:int -> (unit -> bool) -> unit
that will allow to install a handler when a timeout of ms
milliseconds occurs
in both cases, the bool returned indicates whether the handler
should be removed or not
the parameter OBSERVER could also be used for that purpose
*)
(*
...
...
@@ -132,13 +132,16 @@ module Make(O: OBSERVER) : sig
this is not necessary since the session manager handles this itself
using add_timeout *)
val
add_file
:
string
->
unit
(** adds a new file in the proof session
*)
val
add_file
:
string
->
Theory
.
theory
Theory
.
Mnm
.
t
->
unit
(** [add_file f ths] adds a new file in the proof session, that is
a collection of name [f] of theories [ths] *)
val
reload_files
:
unit
->
unit
(** reloads all the files in the state, and performs the proper
mergind of old proof attemps and transformations *)
(*
val reload_files : unit -> unit
(** reloads all the files in the state, and performs the proper
merging of old proof attemps and transformations *)
*)
(*****************************)
(* *)
...
...
@@ -146,25 +149,26 @@ module Make(O: OBSERVER) : sig
(* *)
(*****************************)
(* attempt a new proof using an external prover *)
val
add_proof_attempt
:
goal
->
unit
(** TODO: proper arguments missing *)
val
run_prover
:
context_unproved_goals_only
:
bool
->
prover_data
->
any
->
unit
(** [run_prover p a] runs prover [p] on all goals under [a] *)
val
add_transformation
:
goal
->
unit
(**
TODO: proper arguments missing
*)
val
replay
:
context_unproved_goals_only
:
bool
->
any
->
unit
(**
[replay a] reruns all valid but obsolete proofs under [a]
*)
val
remove_proof_attempf
:
proof_attempt
->
unit
(*
val remove_proof_attempt : proof_attempt -> unit
val remove_transformation : transf -> unit
val clean : any -> unit
(** [clean a] removes failed attempts below [a] where
other successful attempts exist *)
val
redo_obsolete
:
any
->
unit
(** [redo_obsolete a] rerun obsolete proofs below [a] *)
there at least one successful attempt or transformation *)
*)
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment