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
122
Issues
122
List
Boards
Labels
Service Desk
Milestones
Merge Requests
15
Merge Requests
15
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
a4ddea0c
Commit
a4ddea0c
authored
Mar 25, 2010
by
Jean-Christophe Filliâtre
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
make bench verifie aussi les programmes dans examples/programs/
parent
f6a9c830
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
62 additions
and
45 deletions
+62
-45
Makefile.in
Makefile.in
+2
-2
bench/bench.in
bench/bench.in
+18
-1
src/parser/typing.ml
src/parser/typing.ml
+6
-11
src/parser/typing.mli
src/parser/typing.mli
+14
-13
src/programs/pgm_ttree.mli
src/programs/pgm_ttree.mli
+2
-2
src/programs/pgm_typing.ml
src/programs/pgm_typing.ml
+20
-16
No files found.
Makefile.in
View file @
a4ddea0c
...
...
@@ -244,8 +244,8 @@ WHYVO=lib/coq/Why.vo
bench/bench
:
bench/bench.in config.status
./config.status
--file
bench/bench
bench
::
$(BINARY) bench/bench $(TOOLS)
sh bench/bench
"
$(BINARY)
-I theories/"
bench
::
$(BINARY)
$(BINARYL)
bench/bench $(TOOLS)
sh bench/bench
"
$(BINARY)
-I theories/"
"
$(BINARYL)
-I theories"
BENCH_PLUGINS_CMO
:=
helloworld.cmo simplify_array.cmo
BENCH_PLUGINS_CMO
:=
$(
addprefix
bench/plugins/,
$(BENCH_PLUGINS_CMO)
)
...
...
bench/bench.in
View file @
a4ddea0c
...
...
@@ -5,7 +5,7 @@
export
WHYLIB
=
../lib
pgm
=
$1
option
=
$2
pgml
=
$2
goods
()
{
for
f
in
$1
/
*
.why
;
do
...
...
@@ -47,6 +47,19 @@ drivers () {
done
}
programs
()
{
for
f
in
$1
/
*
.mlw
;
do
echo
-n
" "
$f
"... "
if
!
$pgml
$f
>
/dev/null 2>&1
;
then
echo
"
$pgml
$2
$f
"
echo
"FAILED!"
exit
1
else
echo
"ok"
fi
done
}
# 1. Syntax
echo
"=== Parsing good files ==="
goods bench/typing/bad
--parse-only
...
...
@@ -69,3 +82,7 @@ echo "=== Checking drivers ==="
drivers drivers
echo
""
echo
"=== Type-checking programs ==="
programs examples/programs
echo
""
src/parser/typing.ml
View file @
a4ddea0c
...
...
@@ -787,22 +787,17 @@ let add_logics dl th =
let
dl
=
List
.
map
type_decl
dl
in
List
.
fold_left
add_decl
th
(
create_logic_decls
dl
)
let
env_of_denv
denv
=
Mstr
.
mapi
(
fun
x
dty
->
create_vsymbol
(
id_fresh
x
)
(
ty_of_dty
dty
))
denv
.
dvars
let
type_term
denv
t
=
let
type_term
denv
env
t
=
let
t
=
dterm
denv
t
in
term
(
env_of_denv
denv
)
t
term
env
t
let
term
uc
=
type_term
(
create_denv
uc
)
let
term
uc
=
type_term
(
create_denv
uc
)
Mstr
.
empty
let
type_fmla
denv
f
=
let
type_fmla
denv
env
f
=
let
f
=
dfmla
denv
f
in
fmla
(
env_of_denv
denv
)
f
fmla
env
f
let
fmla
uc
=
type_fmla
(
create_denv
uc
)
let
fmla
uc
=
type_fmla
(
create_denv
uc
)
Mstr
.
empty
let
add_prop
k
loc
s
f
th
=
let
f
=
fmla
th
f
in
...
...
src/parser/typing.mli
View file @
a4ddea0c
...
...
@@ -19,6 +19,7 @@
(** Typing environments *)
open
Util
open
Ty
open
Term
open
Theory
...
...
@@ -35,19 +36,6 @@ val read_channel : env -> string -> in_channel -> theory Mnm.t
val
add_decl
:
env
->
theory
Mnm
.
t
->
theory_uc
->
Ptree
.
decl
->
theory_uc
type
denv
val
create_denv
:
theory_uc
->
denv
val
find_user_type_var
:
string
->
denv
->
Denv
.
type_var
val
mem_var
:
string
->
denv
->
bool
val
find_var
:
string
->
denv
->
Denv
.
dty
val
add_var
:
string
->
Denv
.
dty
->
denv
->
denv
val
type_term
:
denv
->
Ptree
.
lexpr
->
term
val
type_fmla
:
denv
->
Ptree
.
lexpr
->
fmla
(** error reporting *)
type
error
...
...
@@ -61,3 +49,16 @@ val report : Format.formatter -> error -> unit
val
specialize_fsymbol
:
Ptree
.
qualid
->
theory_uc
->
lsymbol
*
Denv
.
dty
list
*
Denv
.
dty
type
denv
val
create_denv
:
theory_uc
->
denv
val
find_user_type_var
:
string
->
denv
->
Denv
.
type_var
val
mem_var
:
string
->
denv
->
bool
val
find_var
:
string
->
denv
->
Denv
.
dty
val
add_var
:
string
->
Denv
.
dty
->
denv
->
denv
val
type_term
:
denv
->
vsymbol
Mstr
.
t
->
Ptree
.
lexpr
->
term
val
type_fmla
:
denv
->
vsymbol
Mstr
.
t
->
Ptree
.
lexpr
->
fmla
src/programs/pgm_ttree.mli
View file @
a4ddea0c
...
...
@@ -66,10 +66,10 @@ type expr = {
and
expr_desc
=
|
Econstant
of
constant
|
Elocal
of
string
|
Elocal
of
Term
.
vsymbol
|
Eglobal
of
Term
.
lsymbol
|
Eapply
of
expr
*
expr
|
Elet
of
string
*
expr
*
expr
|
Elet
of
Term
.
vsymbol
*
expr
*
expr
|
Esequence
of
expr
*
expr
|
Eif
of
expr
*
expr
*
expr
...
...
src/programs/pgm_typing.ml
View file @
a4ddea0c
...
...
@@ -19,6 +19,7 @@
open
Format
open
Util
open
Ident
open
Term
open
Theory
open
Denv
...
...
@@ -154,52 +155,55 @@ and expr_desc env loc = function
(* phase 2: typing annotations *)
let
rec
expr
e
=
let
d
=
expr_desc
e
.
dexpr_denv
e
.
dexpr_desc
in
let
rec
expr
e
nv
e
=
let
d
=
expr_desc
e
nv
e
.
dexpr_denv
e
.
dexpr_desc
in
let
ty
=
Denv
.
ty_of_dty
e
.
dexpr_type
in
{
expr_desc
=
d
;
expr_type
=
ty
;
expr_loc
=
e
.
dexpr_loc
}
and
expr_desc
denv
=
function
and
expr_desc
env
denv
=
function
|
DEconstant
c
->
Econstant
c
|
DElocal
x
->
Elocal
x
Elocal
(
Mstr
.
find
x
env
)
|
DEglobal
ls
->
Eglobal
ls
|
DEapply
(
e1
,
e2
)
->
Eapply
(
expr
e
1
,
expr
e2
)
Eapply
(
expr
e
nv
e1
,
expr
env
e2
)
|
DElet
(
x
,
e1
,
e2
)
->
Elet
(
x
,
expr
e1
,
expr
e2
)
let
e1
=
expr
env
e1
in
let
v
=
create_vsymbol
(
id_fresh
x
)
e1
.
expr_type
in
let
env
=
Mstr
.
add
x
v
env
in
Elet
(
v
,
e1
,
expr
env
e2
)
|
DEsequence
(
e1
,
e2
)
->
Esequence
(
expr
e
1
,
expr
e2
)
Esequence
(
expr
e
nv
e1
,
expr
env
e2
)
|
DEif
(
e1
,
e2
,
e3
)
->
Eif
(
expr
e
1
,
expr
e2
,
expr
e3
)
Eif
(
expr
e
nv
e1
,
expr
env
e2
,
expr
env
e3
)
|
DEwhile
(
e1
,
la
,
e2
)
->
let
la
=
{
loop_invariant
=
option_map
(
Typing
.
type_fmla
denv
)
la
.
Pgm_ptree
.
loop_invariant
;
option_map
(
Typing
.
type_fmla
denv
env
)
la
.
Pgm_ptree
.
loop_invariant
;
loop_variant
=
option_map
(
Typing
.
type_term
denv
)
la
.
Pgm_ptree
.
loop_variant
;
}
option_map
(
Typing
.
type_term
denv
env
)
la
.
Pgm_ptree
.
loop_variant
;
}
in
Ewhile
(
expr
e
1
,
la
,
expr
e2
)
Ewhile
(
expr
e
nv
e1
,
la
,
expr
env
e2
)
|
DElazy
(
op
,
e1
,
e2
)
->
Elazy
(
op
,
expr
e
1
,
expr
e2
)
Elazy
(
op
,
expr
e
nv
e1
,
expr
env
e2
)
|
DEskip
->
Eskip
|
DEassert
(
k
,
f
)
->
let
f
=
Typing
.
type_fmla
denv
f
in
let
f
=
Typing
.
type_fmla
denv
env
f
in
Eassert
(
k
,
f
)
|
DEghost
e1
->
Eghost
(
expr
e1
)
Eghost
(
expr
e
nv
e
1
)
|
DElabel
(
s
,
e1
)
->
Elabel
(
s
,
expr
e1
)
Elabel
(
s
,
expr
e
nv
e
1
)
let
code
uc
id
e
=
let
env
=
create_denv
uc
in
let
e
=
dexpr
env
e
in
ignore
(
expr
e
)
ignore
(
expr
Mstr
.
empty
e
)
(*
Local Variables:
...
...
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