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
125
Issues
125
List
Boards
Labels
Service Desk
Milestones
Merge Requests
17
Merge Requests
17
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
38a30582
Commit
38a30582
authored
Sep 09, 2015
by
MARCHE Claude
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
try Why3: using specific file names for the config file and the alt-ergo driver
parent
d1f5eae2
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
46 additions
and
31 deletions
+46
-31
Makefile.in
Makefile.in
+2
-2
src/trywhy3/try_alt_ergo.drv
src/trywhy3/try_alt_ergo.drv
+7
-11
src/trywhy3/trywhy3.conf
src/trywhy3/trywhy3.conf
+1
-1
src/trywhy3/trywhy3.ml
src/trywhy3/trywhy3.ml
+36
-17
No files found.
Makefile.in
View file @
38a30582
...
...
@@ -1430,8 +1430,8 @@ JSOCAMLC=ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml.syntax \
-syntax
camlp4o
-I
src/trywhy3
src/trywhy3/trywhy3.js
:
src/trywhy3/trywhy3.byte
js_of_ocaml
--extern-fs
-I
src/trywhy3
-I
.
--file
=
why3.conf:/
\
--file
=
alt_ergo.drv:/
\
js_of_ocaml
--extern-fs
-I
.
-I
src/trywhy3
--file
=
try
why3.conf:/
\
--file
=
try_
alt_ergo.drv:/
\
--file
=
drinkers.why:/
\
--file
=
simplearith.why:/
\
--file
=
isqrt.mlw:/
\
...
...
src/trywhy3/alt_ergo.drv
→
src/trywhy3/
try_
alt_ergo.drv
View file @
38a30582
(* Driver for Alt-Ergo version >= 0.95 *)
(* Driver for Alt-Ergo, specific variant for Try Why3 *)
(* FIXME: it would be better to share the common parts with the regular
Alt-Ergo driver *)
prelude "(* this is the prelude for Alt-Ergo,
any versions
*)"
prelude "(* this is the prelude for Alt-Ergo,
version for Try Why3
*)"
printer "alt-ergo"
filename "%f-%t-%g.why"
(* Try Why3 doesn't need these
valid "Valid"
invalid "Invalid"
unknown "I don't know" ""
...
...
@@ -13,17 +16,11 @@ steplimitexceeded "Steps limit reached"
outofmemory "Fatal error: out of memory"
outofmemory "Fatal error: exception Stack_overflow"
fail "typing error:\\(.*\\)$" "Failure : File generation error : \\1"
(*
time "Valid (%s)"
time "Valid (%s)"
steps "Valid (\\([0-9]+.?[0-9]*\\)) (\\([0-9]+.?[0-9]*\\))" 2
steps "Valid (\\([0-9]+.?[0-9]*\\)) (\\([0-9]+.?[0-9]*\\) steps)" 2
time "why3cpulimit time : %s s"
*)
(* À discuter *)
transformation "inline_trivial"
(* FIXME: remaining of this file should be shared with regular Alt-Ergo driver *)
transformation "inline_trivial"
transformation "eliminate_builtin"
transformation "eliminate_recursion"
transformation "eliminate_inductive"
...
...
@@ -31,7 +28,6 @@ transformation "eliminate_algebraic"
transformation "eliminate_epsilon"
transformation "eliminate_if"
transformation "eliminate_let"
transformation "split_premise_right"
transformation "simplify_formula"
(*transformation "simplify_trivial_quantification_in_goal"*)
...
...
src/trywhy3/why3.conf
→
src/trywhy3/
try
why3.conf
View file @
38a30582
...
...
@@ -10,7 +10,7 @@ timelimit = 5
[
prover
]
command
=
"%l/why3-cpulimit %T %m -s alt-ergo-0.99.1 -timelimit %t %f"
command_steps
=
"%l/why3-cpulimit %U %m -s alt-ergo-0.99.1 -steps-bound %S %f"
driver
=
"/alt_ergo.drv"
driver
=
"/
try_
alt_ergo.drv"
editor
=
"altgr-ergo"
in_place
=
false
interactive
=
false
...
...
src/trywhy3/trywhy3.ml
View file @
38a30582
(*
small helpers
*)
let
get_opt
o
=
Js
.
Opt
.
get
o
(
fun
()
->
assert
false
)
let
log
s
=
Firebug
.
console
##
log
(
Js
.
string
s
)
(*
module for generating HTML elements
...
...
@@ -30,17 +43,13 @@ let ul nl =
end
let
get_opt
o
=
Js
.
Opt
.
get
o
(
fun
()
->
assert
false
)
(*
let
log
s
=
Firebug
.
console
##
log
(
Js
.
string
s
)
Interface to Why3 and Alt-Ergo
let
temp_file_name
=
"/input.mlw"
let
why3_conf_file
=
"/why3.conf"
*)
let
()
=
Sys_js
.
register_file
~
name
:
temp_file_name
~
content
:
""
let
why3_conf_file
=
"/trywhy3.conf"
open
Why3
open
Format
...
...
@@ -63,7 +72,6 @@ let alt_ergo : Whyconf.config_prover =
(* builds the environment from the [loadpath] *)
let
env
:
Env
.
env
=
Env
.
create_env
(
Whyconf
.
loadpath
main
)
let
alt_ergo_driver
:
Driver
.
driver
=
try
Printexc
.
record_backtrace
true
;
...
...
@@ -74,7 +82,6 @@ let alt_ergo_driver : Driver.driver =
Exn_printer
.
exn_printer
e
s
;
exit
1
let
run_alt_ergo_on_task
t
=
(* printing the task in a string *)
Driver
.
print_task
alt_ergo_driver
str_formatter
t
;
...
...
@@ -181,6 +188,18 @@ let why3_execute (modules,_theories) =
*)
(*
Connecting why3 calls to the interface
*)
let
temp_file_name
=
"/input.mlw"
let
()
=
Sys_js
.
register_file
~
name
:
temp_file_name
~
content
:
""
let
run_why3
f
lang
global
text
=
let
ch
=
open_out
temp_file_name
in
output_string
ch
text
;
...
...
@@ -190,13 +209,6 @@ let run_why3 f lang global text =
let
theories
=
Env
.
read_file
lang
env
temp_file_name
in
f
theories
with
(*
| Loc.Located(loc,Parser.Error) ->
let (_,l,b,e) = Loc.get loc in
Html.par
[Html.of_string
(Pp.sprintf "syntax error line %d, columns %d-%d" l b e)]
*)
|
Loc
.
Located
(
loc
,
e'
)
->
let
(
_
,
l
,
b
,
e
)
=
Loc
.
get
loc
in
ignore
(
Js
.
Unsafe
.
meth_call
global
"highlightError"
...
...
@@ -240,6 +252,13 @@ let () =
add_why3_cmd
"prove"
why3_prove
Env
.
base_language
;
add_why3_cmd
"run"
why3_execute
Mlw_module
.
mlw_language
(*
Predefined examples
*)
let
add_file_example
buttonname
file
=
let
handler
=
Dom
.
handler
(
fun
_ev
->
...
...
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