- 13 Apr, 2013 2 commits
-
-
MARCHE Claude authored
-
MARCHE Claude authored
-
- 11 Apr, 2013 3 commits
-
-
Jean-Christophe Filliâtre authored
-
Jean-Christophe Filliâtre authored
-
Jean-Christophe Filliâtre authored
-
- 10 Apr, 2013 2 commits
-
-
Jean-Christophe Filliâtre authored
-
Jean-Christophe Filliâtre authored
-
- 09 Apr, 2013 6 commits
-
-
Jean-Christophe Filliâtre authored
-
François Bobot authored
-
Jean-Christophe Filliâtre authored
-
Jean-Christophe Filliâtre authored
-
Jean-Christophe Filliâtre authored
-
François Bobot authored
-
- 08 Apr, 2013 3 commits
-
-
Andrei Paskevich authored
-
Andrei Paskevich authored
-
Jean-Christophe Filliâtre authored
-
- 07 Apr, 2013 4 commits
-
-
Andrei Paskevich authored
-
Andrei Paskevich authored
Now that ghost writes are checked via e_syms.syms_pv, there is no use for read effects anymore.
-
Andrei Paskevich authored
This fixes one bug and several deficiencies in the previous implementation, which was based on read effects. One caveat about the current version is that we treat all type variables in a polymorphic type as visible (= non-ghost) even if they only occur in the ghost fields. For example, the following code is rejected: type strange 'a = { ghost contents : 'a } let test () = let x = { contents = ref 0 } in x.contents := 42 Even though the field [contents] is ghost and cannot be reached from the real-world code, the type of x is [strange (ref int)] and the region of the reference is considered to be visible. Thus the last assignment is seen as an illicit ghost write. On the other hand, type strange 'a = { ghost contents : ref 'a } and type strange 'a = { ghost mutable contents : 'a } permit ghost writes into [contents] without problem. Ghost writes into ghost variables are also okay.
-
Andrei Paskevich authored
-
- 06 Apr, 2013 8 commits
-
-
Andrei Paskevich authored
keep the word reserved, though
-
Andrei Paskevich authored
-
Andrei Paskevich authored
-
Andrei Paskevich authored
this commit changes the way of tracking occurrences of regions and type variables for the purposes of generalization, effect filtering, and effect checks. It restricts the previous implementation in two aspects: - a psymbol p can be monomorphic (= non-generalizable) in an effect only if p depends (= is defined via) a pvsymbol whose type contains the affected region. See bench/programs/bad-typing/recfun.mlw for an example. This restriction is required for soundness. - an argument of a psymbol cannot contain a region shared with another argument or an external pvsymbol. However, we do not require (so far) that the argument's type doesn't contain the same region twice and we allow the result type to contain known regions. This restriction is not necessary for soundness, and is introduced only to avoid some unintentional user errors and reduce the gap between the types that can be implemented in a "let" and the types that can be declared in a "val".
-
Andrei Paskevich authored
-
Jean-Christophe Filliâtre authored
-
Jean-Christophe Filliâtre authored
-
Jean-Christophe Filliâtre authored
-
- 05 Apr, 2013 1 commit
-
-
Jean-Christophe Filliâtre authored
-
- 03 Apr, 2013 1 commit
-
-
Jean-Christophe Filliâtre authored
[GTK sourceview] why.lang renamed to why3.lang
-
- 28 Mar, 2013 4 commits
-
-
MARCHE Claude authored
-
MARCHE Claude authored
-
Jean-Christophe Filliâtre authored
-
Andrei Paskevich authored
-
- 27 Mar, 2013 3 commits
-
-
Andrei Paskevich authored
Submitted by Johannes Kanig
-
Andrei Paskevich authored
This makes unnecessary all checks for ghost exceptions escaping into the non-ghost code.
-
Andrei Paskevich authored
-
- 26 Mar, 2013 3 commits
-
-
Andrei Paskevich authored
-
Andrei Paskevich authored
In this case, we break the encapsulation and prove the global exception postcondition directly from the code under "abstract".
-
MARCHE Claude authored
-